Wednesday, June 18, 2025
5 changes · saas-18.3
Enhancements to existing features
The bank reconciliation widget has been adjusted to work better on mobile devices, including allowing users to edit reconciled entries by tapping them. The mobile view is also cleaner by hiding foreign-currency values and improving text alignment for long entry names.
Original PR description
- Enabled editing of reconciled entries in mobile view on-click. - Foreign-currency values are now omitted from the mobile display. Task ID: 4749337
The self-order and kiosk experiences now share an improved layout, reducing duplicate work and making the interface more consistent. Product details can also show clearer visual tags, such as allergen indicators with colors or images, helping customers make choices more confidently.
Original PR description
This commit makes the new kiosk layout available in both self-order and kiosk modes to avoid code duplication between both. The product info popup now displays tags with colors or images, providing clearer information, such as allergens. task.4724527
Resolved issues and error corrections
This fixes a communication issue with the Belgian POS blackbox where repeated status messages could interfere with later requests. It improves reliability for certified point-of-sale operations by ensuring the system receives the expected device response instead of stale status information.
Original PR description
We did not send an `ACK` after asking for blackbox status, leading in BlackBox sending it again. This lead to situations where we sent requests to the BlackBox, and received the status instead of the actual response. In addition, the repeated status responses were missing the leading `ACK`, resulting in our log: `sent 1 NACKS without receiving response, giving up.` More, if we sent a command too soon to the BlackBox (before it finished instanciating), we were receiving its `certified ref` instead of the actual response, due to the `_push_status` method called from the `run` method of the BlackBox Driver parent class. This `run` method is now overridden by the BlackBox driver Task: 4750435
The bank reconciliation search dialog now avoids loading every matching accounting line when it opens. This improves performance and responsiveness, especially for companies with large accounting datasets, while preserving the ability to calculate remaining amounts for selected lines.
Original PR description
Before this commit, when entering the search view dialog a searchRead was done to create a dict of displayed move line per id. This dict is useful to compute the residual amount when selecting a line. The problem is that we don't have any limit on the search which is bad perf wise. no task id
Bank reconciliation no longer fails when Odoo tries to automatically create a reconciliation rule and cannot find a shared text pattern in previous payments. This prevents an RPC error and lets users continue assigning expense accounts without interruption.
Original PR description
When we set an expense account in Bank reconciliation, we get a RPC error followed by a traceback In this commit we fix the following trackback when there is no common substring is matched Traceback-…
When we set an expense account in Bank reconciliation, we get a RPC
error followed by a traceback
In this commit we fix the following trackback when there is no common substring is matched
Traceback-
```py
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.3/odoo/http.py", line 2167, in _transactioning
return service_model.retrying(func, env=self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-18.3/odoo/service/model.py", line 165, in retrying
result = func()
^^^^^^
File "/home/odoo/src/odoo/saas-18.3/odoo/http.py", line 2134, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-18.3/odoo/http.py", line 2396, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-18.3/odoo/addons/base/models/ir_http.py", line 349, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-18.3/odoo/http.py", line 758, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-18.3/addons/web/controllers/dataset.py", line 32, in call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-18.3/odoo/service/model.py", line 84, in call_kw
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/saas-18.3/account_accountant/models/account_bank_statement.py", line 617, in set_account_bank_statement_line
new_rule = self._check_and_create_reconciliation_rule(account_id, self.env.company.id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/saas-18.3/account_accountant/models/account_bank_statement.py", line 660, in _check_and_create_reconciliation_rule
rule_data = self._prepare_reconciliation_rule_data(previous_statement_lines, account_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/saas-18.3/account_accountant/models/account_bank_statement.py", line 676, in _prepare_reconciliation_rule_data
common_substring = self._get_common_substring(payment_refs).strip()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'strip'
```