Skip to Content
Menu
This question has been flagged
1 Reply
11707 Views

I get this error message when I try to run a report in odoo 8.

Traceback (most recent call last):

File "/opt/openerp-8.0/openerp/http.py", line 530, in _handle_exception return super(JsonRequest, self)._handle_exception(exception)

File "/opt/openerp-8.0/openerp/http.py", line 567, in dispatch result = self._call_function(**self.params)

File "/opt/openerp-8.0/openerp/http.py", line 303, in _call_function return checked_call(self.db, *args, **kwargs) File "/opt/openerp-8.0/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs)

File "/opt/openerp-8.0/openerp/http.py", line 300, in checked_call return self.endpoint(*a, **kw) File "/opt/openerp-8.0/openerp/http.py", line 796, in __call__ return self.method(*args, **kw)

File "/opt/openerp-8.0/openerp/http.py", line 396, in response_wrap response = f(*args, **kw)

File "/opt/openerp-8.0/openerp/addons/web/controllers/main.py", line 939, in call_button action = self._call_kw(model, method, args, {}) File "/opt/openerp-8.0/openerp/addons/web/controllers/main.py", line 927, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)

File "/opt/openerp-8.0/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs)

File "/opt/openerp-8.0/openerp/addons/bluspiral_sche/bluspiral_sche_report_wizard.py", line 23, in print_payroll_schedule_report data = self.read(cr, uid, ids)[0]

IndexError: list index out of range


My report wizard code is 

import time

from datetime import datetime

from dateutil import relativedelta

from openerp.osv import fields, osv


class ReportWizard(osv.osv_memory):

    _name = 'bluspiral.sche.schedule'

    _description = 'Cash Payroll Schedule'

    _columns = {

        'date_from': fields.date('Date From', required=True),

        'date_to': fields.date('Date To', required=True),

         }

    _defaults = {

        'date_from': lambda *a: time.strftime('%Y-%m-01'),

        'date_to': lambda *a: str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10],

     }


    def print_payroll_schedule_report(self, cr, uid, ids, context=None):

         if context is None:

             context = {}

         data = self.read(cr, uid, ids)[0]

         ids = []

         if context.get('active_id',False):

                ids.append(context.get('active_id',False))

         datas = {

             'ids': context.get('active_ids', []),

             'model': 'bluspiral.report.template',

             'form': self.read(cr, uid, ids, context=context)[0]

         }

         return self.pool['report'].get_action(

            cr, uid, [], 'bluspiral_sche.cash_report', data=datas, context=context

         )

         

Avatar
Discard
Best Answer

Hi,

Check the output type of this line "self.read(cr, uid, ids)[0]". It may return False or [].

To solve this replace it with this line:

data = isinstance(ids, type([])) and self.read(cr,uid, ids)[0] or self.read(cr,uid, ids)

Best regards.

Avatar
Discard
Author

Manxy thanks Bejaoui.

I got an error that says global name 'a' is not defined

sorry,

I updated the answer.