Wednesday, August 12, 2026
14 changes · 19.0
Enhancements to existing features
New automated tests were added for the Mollie payment option in Point of Sale. This helps ensure payment flows keep working as expected and reduces the risk of regressions in future updates.
Original PR description
This commit adds both Python and JS unit tests for the Mollie POS payment method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fixes an unstable automated test for marking inbox messages as read in the Mail app. The change improves confidence in test results and reduces false failures in Odoo's validation pipeline, without changing end-user behavior.
Original PR description
Before this commit, the html composer variant of "Opening thread with needaction messages should mark all messages of thread as read" failed at random on runbot: 11. [verifySteps] expected the…
Before this commit, the html composer variant of "Opening thread with needaction messages should mark all messages of thread as read" failed at random on runbot:
11. [verifySteps] expected the following steps
> Expected: [
"mark-all-messages-as-read",
]
> Received: []
This happens because the channel of that variant holds no message, so the test goes to the inbox before the channel is loaded and it keeps scrollUnread set. Opening the channel again then loads its messages around the 0 separator, and that fetch calls set_message_done, which marks the needaction message as read and leaves nothing for mark_all_as_read to mark.
This commit fixes the issue by giving the channel two messages, pointing the separator at the first one and waiting for their display: loading messages around the separator is skipped when that message is already loaded, so opening the channel again fetches nothing, which the closing assertion checks as well.
The text composer variant gets the same fixture, so that both variants read as master does, from commit 8cd330e3e2d5b1d857d3effb80aa8176d60b38f9. It does not fail: it already waits for a message of its own, and a fetch around its non-zero separator leaves the messages alone in the mock.
https://runbot.odoo.com/odoo/error/945744The mail test environment now recognizes a delayed call connection request that can happen during video call scenarios. This prevents false test failures under load and improves confidence in call-related quality checks without changing user-facing behavior.
Original PR description
Before this commit, a call test where a participant card appears while in a call fails with:
Unimplemented server route: /mail/rtc/channel/upgrade_connection
The client sends that request a few seconds later, so only a test still running by then fails, as `Adjust view: switching between Tiled and Spotlight` does on master under load.
This happens because the other participants of a test call are only records, so their peer connection negotiates no transceiver, and asking it to download the video of the card schedules a connection recovery instead. Recovering without a TURN server, which a test never has, asks the server to move the call to an SFU with that route, and the mock server implements join_call and leave_call only.
This commit registers the route with an empty handler, as no test has an SFU server to join.
Forward-Port-Of: odoo/odoo#281736Settling a sales order in Point of Sale now keeps extra product attribute add-ons on the resulting POS order lines. This prevents missing customization details and helps ensure the customer’s order is recorded accurately.
Original PR description
Before this commit: --- - When a sale order line contained extra attribute addons, those values were not transferred to the POS order line while settling the sales order. After this commit: --- - Preserved extra attribute addons when creating POS order lines from SO. task-6204583 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update refreshes the project's automated code quality configuration to match the latest version generated by the internal build system. It helps keep development checks consistent and reduces maintenance issues, with no expected impact on day-to-day users.
Original PR description
Automatically update the ruff config to the latest version generated on runbot
This fix adds safeguards for a rare case where French PDP e-invoicing preparation could fail if expected document details are missing. It reduces the risk of unexpected errors during invoice sending, especially in batch or future workflow changes.
Original PR description
During the backport we discovered a programming error in `_get_peppol_document_params`. The super function can return `None` values for both `edi_user` and `document`. This can lead to a traceback when the variables are used. We do not have any known issues in 18.0 or higher versions. (Probably because the move send was heavily refactored.) But better safe than sorry. It could maybe happen with the batch sending or in case the "surrounding" logic is refactored in the future. task-None Forward-Port-Of: odoo/odoo#279317
This change adds a missing dependency needed by the Windows IoT builder during version upgrades. It helps avoid upgrade checkout issues caused by a moved requirements file, keeping the builder process reliable.
Original PR description
As the `requirements.txt` file path changed from `addons/iot_box_image` to `setup/iot_box_builder` the checkout from 19 to saas-19.4 can't find the file (looking at the former path instead of the new one). As a workaround, we add `sentry_sdk` requirement in v19.0.
French VAT reimbursement declaration 3519 now includes the bank account holder name in the account information section. This helps meet the required declaration details and reduces the risk of reimbursement submissions being rejected or incomplete.
Original PR description
For reimbursement declarations, the name of the holder of the account is required This commits adds holder's name to the account data zone no-task-id Forward-Port-Of: odoo/enterprise#127554
This fixes an internal module dependency so the Belgian POS Blackbox HR integration loads the correct related component. It helps prevent installation or automated test failures without changing day-to-day point-of-sale behavior.
Original PR description
Before this commit, the dependency of the module l10n_be_pos_blackbox_hr_pos_blackbox_be was set to pos_hr, which is not totally correct. The correct dependency should be l10n_be_pos_blackbox_hr. runbot-error: 941561
This fix improves how time-off intervals are calculated for employees using duration-based work schedules. It helps ensure the Gantt planning view shows leave durations correctly, reducing confusion for managers and HR teams.
Original PR description
task-id: 6460078
Account transfer journal entries now stay balanced when destination percentages are below 100%. This prevents one-cent discrepancies caused by rounding across multiple source accounts, reducing posting errors and manual correction needs.
Original PR description
Before this commit, _get_transfer_move_lines_values computed the amount for the last destination line from the global transferred balance, instead of reusing the amount already removed from the source accounts. The two values are rounded independently and can differ by a cent whenever the removed amount comes from more than one rounded source, producing an unbalanced journal entry. Removing that condition the last destination line always absorbs the remainder fixes it. Steps to reproduce: 1. Transfer model with 2 source accounts and 1 destination line at 15%. 2. Post moves for the period: account A balance 395.88, account B balance 252.16 (total 648.04). 3. Run `action_perform_auto_transfer()`. Before: source lines -59.38 (395.88 * 15%) and -37.82 (252.16 * 15%), destination line +97.21 (648.04*15% rounded) -> entry off by 0.01. After: destination line takes the exact remainder, 97.20 -> balanced. OPW-6443928
The Helpdesk Stock workflow now keeps the Replace button visible even when no customer has been selected. This makes the ticket interface more consistent with related actions and reduces confusion for support teams handling stock replacements.
Original PR description
Adjust the `invisible` condition to make the button visible even if no customer is selected, for consistency with other buttons --- task-6103996
This fix prevents Swiss payroll settings from assigning a Swiss contract type to employees or environments that are not Swiss. It avoids test failures and helps ensure payroll contract defaults stay appropriate for the employee context.
Original PR description
[FIX] l10n_ch: fix default contract type This task is runbot error fix that occured from 19.0 to 19.2 Bug reproduction: 1 - Go to version 19.0, install l10n_ch_hr_payroll_account 2 - Execute…
[FIX] l10n_ch: fix default contract type
This task is runbot error fix that occured from 19.0 to 19.2
Bug reproduction:
1 - Go to version 19.0, install l10n_ch_hr_payroll_account 2 - Execute test_version_timeline_auto_save_tour tour test 3 - It fails in .o_arrow_button_wrapper[data-tooltip^='Contract:'] step
Bug cause:
1 - When l10n_ch_hr_payroll_account is installed:
1.1 - contract type becomes "Permanent contract with monthly salary"
1.2 - the employee is not swiss but it has this CH contract type
2 - data-tooltip starts with Permanent contract instead of contract
2.1 - Tour fails
3 - contract_type_id is overwritten in swiss modules
3.1 - Default is assigned without looking to the country of self.env
Bug solution:
1 - If the country is not swiss, the default is assigned as False
1.1 -> fixed in l10n_ch_hr_payroll/hr_version
1.2 instead of assigning swiss contract type to the non-swiss emp.
Note: This is fix from saas-18.4 to master.
task-6392040
runbot error: https://runbot.odoo.com/odoo/runbot.build.error/941358
Forward-Port-Of: odoo/enterprise#126520An accounting test was updated to align with a related platform fix in how grouped data is read. This helps keep automated checks accurate and reduces the risk of false test failures during accounting development.
Original PR description
The fix at https://github.com/odoo/odoo/pull/281911 adds bin_size: tru in the web_read_group. This commit adpats an accounting test as a consequence