Tuesday, May 21, 2024
1 change · 17.0
Resolved issues and error corrections
This fix resolves a system crash that occurred when calculating the sum of sales amounts where some values were empty or null. The issue affected the sales module and prevented users from viewing customer information properly. The fix ensures the system can handle missing sales data gracefully without crashing.
Original PR description
After merge commit b5d02cc72543b36c7e5e620a3a579f15c88baed6, this error occurs: ```python RPC_ERROR Odoo Server Error Traceback (most recent call last): File "/home/odoo/src/odoo/odoo/http.py", line…
After merge commit b5d02cc72543b36c7e5e620a3a579f15c88baed6, this error occurs:
```python
RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/http.py", line 1770, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/home/odoo/src/odoo/odoo/service/model.py", line 133, in retrying
result = func()
File "/home/odoo/src/odoo/odoo/http.py", line 1797, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/src/odoo/odoo/http.py", line 2001, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/src/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/src/odoo/odoo/http.py", line 725, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 24, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/src/odoo/addons/web/models/models.py", line 86, in web_read
values_list: List[Dict] = self.read(fields_to_read, load=None)
File "/home/odoo/src/odoo/odoo/models.py", line 3540, in read
return self._read_format(fnames=fields, load=load)
File "/home/odoo/src/odoo/odoo/models.py", line 3751, in _read_format
vals[name] = convert(record[name], record, use_display_name)
File "/home/odoo/src/odoo/odoo/models.py", line 6603, in __getitem__
return self._fields[key].__get__(self, self.env.registry[self._name])
File "/home/odoo/src/odoo/odoo/fields.py", line 1207, in __get__
self.compute_value(recs)
File "/home/odoo/src/odoo/odoo/fields.py", line 1389, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/addons/sale_timesheet/models/sale_order.py", line 52, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/addons/sale/models/sale_order.py", line 1703, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 424, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/odoo/models.py", line 4875, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/src/odoo/odoo/fields.py", line 102, in determine
return needle(*args)
File "/home/odoo/src/odoo/addons/sale/models/sale_order.py", line 655, in _compute_partner_credit_warning
order.partner_credit_warning = self.env['account.move']._build_credit_warning_message(
File "/home/odoo/src/odoo/addons/account/models/account_move.py", line 1515, in _build_credit_warning_message
credit_to_invoice = partner_id.credit_to_invoice - exclude_amount
File "/home/odoo/src/odoo/odoo/fields.py", line 1207, in __get__
self.compute_value(recs)
File "/home/odoo/src/odoo/odoo/fields.py", line 1389, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/addons/mail/models/mail_thread.py", line 424, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/odoo/models.py", line 4875, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/src/odoo/odoo/fields.py", line 102, in determine
return needle(*args)
File "/home/odoo/src/odoo/addons/sale/models/res_partner.py", line 85, in _compute_credit_to_invoice
amount_to_invoice_sum = sum(max(float(amount), 0) for amount in amount_to_invoice_agg)
File "/home/odoo/src/odoo/addons/sale/models/res_partner.py", line 85, in <genexpr>
amount_to_invoice_sum = sum(max(float(amount), 0) for amount in amount_to_invoice_agg)
TypeError: float() argument must be a string or a real number, not 'NoneType'
```
Desired behavior after PR is merged:
No longer try to sum `None` values
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr