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
1- check payslip.date_from Value then
2- check fields.Date.from_string(payslip.date_from) Value
what do these 2 points return ?
@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.