Ir al contenido
Menú
Se marcó esta pregunta
3 Respuestas
5632 Vistas

I have installed the following module:

https://apps.odoo.com/apps/modules/12.0/l10n_ch_payroll/

When I try to create a new payslip, the following error happens (unfortunately, I did not get any feedback from the author yet):

Here is the code

class HrPayslip(models.Model):

_inherit = 'hr.payslip'

is_correction_final_payslip = fields.Boolean(string="Bulletin final de correction")
other_year_payslip_ids = fields.Many2many('hr.payslip', string="Autres salaires de l'années", compute="_get_other_payslips")

@api.multi
def _get_other_payslips(self):
for payslip in self:
current_year = fields.Date.from_string(payslip.date_from).year
date_from = "%s-01-01" % current_year
date_to = "%s-12-31" % current_year
other_payslips = self.search([
('employee_id', '=', payslip.employee_id.id),
('id', '!=', payslip.id),
('date_from', '>=', date_from),
('date_to', '<=', date_to)
])
payslip.other_year_payslip_ids = other_payslips

Here the field definition payslip.date_from:

    date_from = fields.Date(string='Date From', readonly=True, required=True,default=lambda self:fields.Date.to_string(date.today().replace(day=1)), states={'draft': [('readonly', False)]})
      
      
        

      
       

And this is the traceback:

Odoo Server ErrorTraceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 1049, in get
    value = self._data[key][field][record._ids[0]]
KeyError: <odoo.models.NewId object at 0x7f1b49640ca8>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1005, in __get__
    value = record.env.cache.get(record, self)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 1051, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('hr.payslip(<odoo.models.NewId object at 0x7f1b49640ca8>,).other_year_payslip_ids', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 656, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 314, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 698, in dispatch
    result = self._call_function(**self.params)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 346, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 339, in checked_call
    result = self.endpoint(*a, **kw)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 941, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 519, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 962, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 759, in call_kw
    return _call_kw_multi(method, model, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 746, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 5492, in onchange
    record = self.new(values)
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4954, in new
    record._cache.update(record._convert_to_cache(values, update=True))
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4824, in _convert_to_cache
    for name, value in values.items()
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4825, in <dictcomp>
    if name in fields
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 2278, in convert_to_cache
    ids = OrderedSet(record[self.name]._ids)
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 5134, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1011, in __get__
    self.determine_draft_value(record)
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1133, in determine_draft_value
    self._compute_value(record)
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1067, in _compute_value
    getattr(records, self.compute)()
  File "/usr/lib/python3/dist-packages/odoo/custom/addons/l10n_ch_payroll/models/hr_payslip.py", line 24, in _get_other_payslips
    current_year = fields.Date.from_string(payslip.date_from).year
AttributeError: 'NoneType' object has no attribute 'year'

Any help is appreciated, thanks

Avatar
Descartar

1- check payslip.date_from Value then

2- check fields.Date.from_string(payslip.date_from) Value

what do these 2 points return ?

Autor

@Ibrahim

Thanks for your feedback. I'm not a developer and have no developing environment, so I do not know how to get this information. But I have amended my question and have added the module, which produces the error when trying to create a new payslip.

Mejor respuesta

Hi Ermin, 
Thank you for the link to the module. I have installed it to debug the code. Actually the solution is simple. 

The problem occurs because the field date_from is empty. 

Solution: 

Add if payslip.date_from to the function that computes the field other_year_payslip_ids.
So it does compute the field only if date_from exists.

I'll try to contact the author to fix this bug. 

Regards.

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
1
dic 22
13560
1
may 22
6622
3
mar 20
2888
1
mar 20
2248
3
mar 20
4570