2017-11-08 3 views
0

xlwt를 사용하여 Excel 보고서를 개발하려고했습니다. 불행히도 다음과 같은 오류가 발생합니다. 즉, "AttributeError : 'NoneType'객체에 'fields_view_get'속성이 없습니다."AttributeError : 'NoneType'객체에 'fields_view_get'속성이 없습니다." Odoo에서이 오류를 해결하는 방법은 무엇입니까?

odoo v8의 Xlwt 보고서 코드입니다.

xlwt를 사용하여 Excel 파일 생성. 행 번호를

Traceback (most recent call last): 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/http.py", line 537, in _handle_exception 
    return super(JsonRequest, self)._handle_exception(exception) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/http.py", line 574, in dispatch 
    result = self._call_function(**self.params) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/http.py", line 310, in _call_function 
    return checked_call(self.db, *args, **kwargs) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/service/model.py", line 118, in wrapper 
    return f(dbname, *args, **kwargs) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/http.py", line 307, in checked_call 
    return self.endpoint(*a, **kw) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/http.py", line 803, in __call__ 
    return self.method(*args, **kw) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/http.py", line 403, in response_wrap 
    response = f(*args, **kw) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/addons/web/controllers/main.py", line 944, in call_kw 
    return self._call_kw(model, method, args, kwargs) 
    File "/home/administrator/odoo_ext/apps/odoo/lib/odoo-8.0.post20151126-py2.7.egg/openerp/addons/web/controllers/main.py", line 936, in _call_kw 
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) 
AttributeError: 'NoneType' object has no attribute 'fields_view_get' 

불행하게도 흔적 :

import xlwt 
from StringIO import StringIO 
import base64 
from datetime import datetime 
from xlwt import Workbook,easyxf 
from openerp import models, fields, api 

class all_invoice_wizard(models.TransientModel): 
    _name = 'all.invoice.wizard' 

    from_date = fields.Date('From Date', help='Select Start Date') 
    to_date = fields.Date('To Date', help='Select End Date') 

    def initialize_report(self, data): 
     '''This method initializes the excel report''' 
     fl = StringIO() 
     wbk = xlwt.Workbook(encoding = 'utf-8') 
     sheet = wbk.add_sheet('Sheet 1',cell_overwrite_ok=True) 
     return fl,wbk,sheet 

    def generate_xlwt_report_file(self, report_name, fl, wbk, sheet): 
      '''This method generates the report file.''' 
      wbk.save(fl) 
      fl.seek(0) 
      buf = base64.encodestring(fl.read()) 
      ctx = dict(self._context) 
      ctx.update({'file': buf, 'report_name': report_name}) 
      try: 
       form_id = self.env['ir.model.data'].get_object_reference('account', 'wiz_excel_file_download_form_view')[1] 
      except ValueError: 
       form_id = False 
      return { 
         'type': 'ir.actions.act_window', 
         'view_type': 'form', 
         'view_mode': 'form', 
         'res_model': 'wizard.excel.report.file', 
         'views': [(form_id, 'form')], 
         'view_id': form_id, 
         'target': 'new', 
         'context': ctx, 
        } 

    @api.multi 
    def print_invoice(self): 
     data = self.read()[0] 
     ctx = self._context 

     #Initialize the Report 
     fl,wbk,sheet = self.initialize_report(data) 

     #Report Formatting 
     bold_center = xlwt.easyxf('font: bold 1; align: vert centre, horiz center') 
     sheet.header_str = 'Invoice Report: '+self.from_date+' - '+self.to_date 

     sheet.col(2).width = 6000 
     sheet.col(3).width = 5000 
     sheet.col(5).width = 7000 
     sheet.col(7).width = 7000 

     #Report Heading 
     sheet.write(0, 0, "Sl No", bold_center) 
     sheet.write(0, 1, "Invoice No.", bold_center) 
     sheet.write(0, 2, "Date", bold_center) 
     sheet.write(0, 3, "Location", bold_center) 
     sheet.write(0, 4, "Taxable Value", bold_center) 
     sheet.write(0, 5, "SGST", bold_center) 
     sheet.write(0, 6, "CGST", bold_center) 
     sheet.write(0, 7, "IGST", bold_center) 
     sheet.write(0, 8, "Total Taxes", bold_center) 
     sheet.write(0, 9, "TCS", bold_center) 
     sheet.write(0, 10, "Total Invoice Value", bold_center) 



     #Report Data 
     invoice_data = self.env['account.invoice'].search([('date_invoice','>=',self.from_date),('date_invoice','<=',self.to_date)]) 
     if invoice_data: 

      bulk_invoice_data = [] 
      for test in invoice_data: 
       single_invoice_data = [] 
       single_invoice_data.append(test.number) 
       single_invoice_data.append(test.date_invoice) 
       single_invoice_data.append(test.issuing.name) 
       single_invoice_data.append(test.amount_untaxed) 
       for invoice_computation_lines in test.tax_line: 
        if 'SGST' in invoice_computation_lines.name: 
         single_invoice_data.append(invoice_computation_lines.amount) 
      else: 
      single_invoice_data.append(0.00) 


      if 'CGST' in invoice_computation_lines.name: 
         single_invoice_data.append(invoice_computation_lines.amount) 
      else: 
      single_invoice_data.append(0.00) 


      if 'IGST' in invoice_computation_lines.name: 
         single_invoice_data.append(invoice_computation_lines.amount) 
      else: 
      single_invoice_data.append(0.00) 

       single_invoice_data.append(test.amount_tax) 
     single_invoice_data.append(test.comment) 
     single_invoice_data.append(test.amount_total) 
       bulk_invoice_data.append(single_invoice_data) 

      row_count = 1 
      for single_invoice in bulk_invoice_data: 
        sheet.write(row_count, 0, row_count) 
        sheet.write(row_count, 1, single_invoice[0]) 
        sheet.write(row_count, 2, single_invoice[1]) 
        sheet.write(row_count, 3, single_invoice[2]) 
      sheet.write(row_count, 4, single_invoice[3]) 
        sheet.write(row_count, 5, single_invoice[4]) 
        sheet.write(row_count, 6, single_invoice[5]) 
        sheet.write(row_count, 7, single_invoice[6]) 
        '''sheet.write(row_count, 8, single_invoice[7]) 
        sheet.write(row_count, 9, single_invoice[8]) 
        sheet.write(row_count, 10, single_invoice[9])''' 

        row_count += 1 
     return self.generate_xlwt_report_file('Invoice Report.xls', fl, wbk, sheet) 

나는 생각이 나는

def generate_xlwt_report_file(self, report_name, fl, wbk, sheet): 
      '''This method generates the report file.''' 
      wbk.save(fl) 
      fl.seek(0) 
      buf = base64.encodestring(fl.read()) 
      ctx = dict(self._context) 
      ctx.update({'file': buf, 'report_name': report_name}) 
      try: 
       form_id = self.env['ir.model.data'].get_object_reference('account', 'wiz_excel_file_download_form_view')[1] 
      except ValueError: 
       form_id = False 
      return { 
         'type': 'ir.actions.act_window', 
         'view_type': 'form', 
         'view_mode': 'form', 
         'res_model': 'wizard.excel.report.file', 
         'views': [(form_id, 'form')], 
         'view_id': form_id, 
         'target': 'new', 
         'context': ctx, 
        } 

오류 추적을 잘못 될 부분입니다.

잘못된 부분을 바로 잡는 데 도움이 될 것입니다.

+0

최소 실무 발췌 문장을 공유 할 수 있습니까? –

+0

@Mahesh, 코드의 작동하지 않는 부분을 의미합니까? –

+0

오류 추적과 함께 작동하지 않는 스 니펫 –

답변

0
  1. 당신은 너무 최초의 브라우저에서 작동하는 경우와 스위치 확인 후 (파이어 폭스와 함께 다음 Crome 스 체크로 전환 FF를 사용하는 경우 시도 Crome 스를 사용하는 경우)
  2. 당신이 브라우저를 전환 할 수 있습니다 브라우저의 캐시 지우기를 시도 할 수 있습니다
  3. 패키지를 올바르게 가져 왔는지 확인하십시오.
관련 문제