Thursday, June 19, 2025
8 changes · saas-18.3
Resolved issues and error corrections
This fixes an issue where attachments added to reconciled bank statement lines were not visibly indicated with the paper clip icon. Users can now see when supporting documents are attached, reducing the chance of missed documentation during bank reconciliation.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/13d527b2f940d2215a3bba578e47f180a0b7126e We wrongly removed the move_attachment_ids from the model params. Meaning that when putting an attachment on the reconciled line, the paper clip for the attachments was not visible on the statement line no task id
This fix updates performance test expectations after changes that automatically remove obsolete activities when records are deleted. It helps keep business data cleaner by preventing leftover activity records that no longer refer to anything useful.
Original PR description
Mail now override unlink of all models to remove hanging activities. Indeed notably with server actions activities may be added on models not inheriting from mail.thread or mail.activity.mixin e.g. users. They should be removed when removing records otherwise they lead to void records, and do not mean anything business wise anyway. See community PR for more details.
Bank statement reconciliation now uses stricter matching rules to avoid linking payments to the wrong statement lines. The update also fixes transaction filtering when fetching bank data and ensures CSV-imported statements can trigger automatic matching correctly.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/c0f8c5d17b9d78b640d744d8bfb6a2bb4002776a, we changed the way payment are matched with statement lines. Before, we were splitting the aml.ref based on ' ', then check for each word if there is an equivalent in the st_line label. But this is not restrictive enough. So now, there is the rules we apply, in the right order : 1 - Check if there is a payment ref like SO|INV|BILL|...xxxx/xxx-yy in the aml.ref 2 - Check for full match with aml.ref 3 - Check if there is a word more than 16 characters long who match with aml.ref 4 - Check for full match with aml.move_name 5 - Check for full match with move.payment_reference If we have any multiple match, we don't reconcile. no-task
This fixes bank reconciliation matching so very short shared text between two transaction labels is no longer treated as a meaningful match. It helps reduce incorrect automatic matching suggestions and makes reconciliation behavior more reliable.
Original PR description
The [_get_common_substring](https://github.com/odoo/enterprise/blob/e8f7975659f3bfea42acdc7495efeccbffe183bc/account_accountant/models/account_bank_statement.py#L708-L782) method ought to return None if the substring is shorter than 10. The check is only done while looping through the normalised labels, but the loop is [skipped](https://github.com/odoo/enterprise/blob/e8f7975659f3bfea42acdc7495efeccbffe183bc/account_accountant/models/account_bank_statement.py#L777) if we have exactly 2 labels, thus returning the substring irrespective of its length. Instead, we should do the actual length check (and substitute with None as needed) right before returning. The phrasing of the method's docstring is also updated to clarify that in the case of identical normalised labels, the _normalised_ label is returned rather than its original form.
This fix ensures the receivable and payable buttons in bank reconciliation update properly after account changes. It restores expected screen feedback so accounting users can continue reconciliation with accurate button states.
Original PR description
During this commit:https://github.com/odoo/enterprise/commit/8419a92ae4697656da5b18325a5cc653a87e3ab5 we moved the reload of the statement line from the _setAccountOnReconcileLine function but by doing so the receivable and payable button are not reloaded anymore no task id
This update removes an unintended file that was accidentally introduced during a previous code update. It is a housekeeping fix with no expected impact on users or business workflows.
Original PR description
Forward-port odoo/enterprise#87064 wrongly introduced a tash file, this commit removes it
Payroll administrators can now change the status of Hong Kong rental records used in payroll. This fixes a permissions mismatch where the right people could view the records but were blocked from completing the related payroll workflow.
Original PR description
Since the access rights to see the hk rental is given to the payroll officer and the rights to modify the status is given to the employee administrator, you have payroll adminsitrator that cannot change the status and employee administrator that cannot access the model. As the model seems to be dedicated to Payroll and you need to be payroll officer to techniaclly change the status, we modify the view to allow this operation to payroll Adminsitrator.
Fixes an issue where Accounting could crash while users assigned the same account across multiple bank statement lines. This makes bank transaction reconciliation more reliable and prevents interruptions during routine bookkeeping work.
Original PR description
The system will crash when we try to set the account for statement lines. And at [1], we can see that this fetches the `previous_statement_lines`. [1]…
The system will crash when we try to set the account for statement lines. And at [1], we can see that this fetches the `previous_statement_lines`. [1] https://github.com/odoo/enterprise/blob/e8f7975659f3bfea42acdc7495efeccbffe183bc/account_accountant/models/account_bank_statement.py#L654-L656 After that, it calls the `_prepare_reconciliation_rule_data` method. and try to find a `common substring`. https://github.com/odoo/enterprise/blob/e8f7975659f3bfea42acdc7495efeccbffe183bc/account_accountant/models/account_bank_statement.py#L676 In the `_get_common_substring` method, when [2] is executed, and if we have the below `payment_ref` ``` [ 'PRLV SEPA VROOMLY STR16NASUC4VSCWSRGTVURANBFJQM4LJU9 VROOMLY', 'PRLV SEPA AMAZON PAYMENTS EUROP 450X4WSOR73LFYYL 171-6087599-8440309 AMZN MKTP FR 45 0X4WSOR73LFYYL', 'PRLV SEPA VROOMLY STR16NASTLNFBLLPVADQPRANTXVPUDYDFY VROOMLY', 'VIR STRIPE VROOMLY-6NXKKON62EKBHVFLXZ3T9PTDOP5 VROOMLY', 'PRLV SEPA VROOMLY STR16NAST8PLKGEKOLWOLRANIEPSODZENR VROOMLY' ] ``` (means our len(substring) is less than 10), Then it returns `None` from line [3]. [2] https://github.com/odoo/enterprise/blob/e8f7975659f3bfea42acdc7495efeccbffe183bc/account_accountant/models/account_bank_statement.py#L777-L781 [3] https://github.com/odoo/enterprise/blob/e8f7975659f3bfea42acdc7495efeccbffe183bc/account_accountant/models/account_bank_statement.py#L780 **Steps to produce:-** 1. Install the `Accounting` module. 2. Set up the `Odoo demo bank`. 3. Click on `Transactions` under Bank. 4. Set account as `Cash Discount Loss` for `Monthly Office Rent ` and `Annual Public liability insurance`. 5. For `Deposit on the invoice 784`, set the account as other than `Cash Discount Loss` and then delete that, and again set the account as `Cash Discount Loss`. **Error:-** `AttributeError: 'NoneType' object has no attribute 'strip'` **Solution:-** - In this commit, we handle the case where `_get_common_substring` returns `None` by checking it before calling .strip(). - This prevents the system from crashing without changing the function’s return value. **Sentry - 6682820343**