Friday, June 14, 2024
2 changes · saas-17.1
Resolved issues and error corrections
This fixes incorrect test data for Mexican POS electronic invoices involving discounts and partial refunds. It helps ensure discount handling is validated correctly and prevents similar invoicing issues from slipping through automated checks.
Original PR description
A bad fw-port caused the xml to be changed wrongly. The test class was deactivated, so it got merged without being seen. runbot-68044
Fixes an error that could occur when a Field Service user removed the planned date from a task while the same assignee had overlapping tasks. This prevents an unexpected crash and lets scheduling changes be saved normally.
Original PR description
When task assignees have more than one task at the same time in field service, and tries to remove the planned date from one of the tasks, A traceback will appear. Steps to reproduce the error: - Go…
When task assignees have more than one task at the same time in field service,
and tries to remove the planned date from one of the tasks,
A traceback will appear.
Steps to reproduce the error:
- Go to Field Service > Create a new task with the planned date and Assignees
- Create another task with the same planned date and Assignees > Save
- Now try to remove the planned date
Traceback:
```
AttributeError: 'bool' object has no attribute 'tzinfo'
File "odoo/http.py", line 2254, in __call__
response = request._serve_db()
File "odoo/http.py", line 1829, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1849, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1827, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1834, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2059, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 740, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/web/models/models.py", line 1011, in onchange
todo = [
File "addons/web/models/models.py", line 1014, in <listcomp>
if field_name not in done and snapshot0.has_changed(field_name)
File "addons/web/models/models.py", line 1127, in has_changed
return self[field_name] != self.record[field_name]
File "odoo/models.py", line 6608, in __getitem__
return self._fields[key].__get__(self, self.env.registry[self._name])
File "odoo/fields.py", line 1261, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1443, in compute_value
records._compute_field_value(self)
File "addons/mail/models/mail_thread.py", line 416, in _compute_field_value
return super()._compute_field_value(field)
File "odoo/models.py", line 4934, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 100, in determine
return needle(*args)
File "home/odoo/src/enterprise/saas-17.2/project_enterprise/models/project_task.py", line 227, in _compute_planning_overlap
absolute_min_start = utc.localize(self[0].planned_date_begin)
File "__init__.py", line 257, in localize
if dt.tzinfo is not None:
```
https://github.com/odoo/enterprise/blob/74e8fa829cf17677ddcb29d91a0521d5d5b9a1b6/project_enterprise/models/project_task.py#L229-L230 When the user removes the planned date,
"planned_date_begin" and "date_deadline" will be False.
So it will lead to the above traceback.
sentry-5444639133