2017-11-08 12 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. あなたはそれがあまりにも最初のブラウザ上で動作するかどうか、スイッチの確認後(その後、Firefoxで、その後、クロームと確認するために切り替えるFFを使用している場合試すクロームを使用している場合)
  2. はブラウザを切り替えることができ、ブラウザのキャッシュをクリアを試すことができます
  3. あなたが最小非作業スニペットを共有することができ、正しく
関連する問題