Daily updates from Odoo
Thursday, August 14, 2025
16 changes · master
Enhancements to existing features
The Belgian salary package setup now keeps specialized tax-related fields hidden by default, making job position forms cleaner for everyday users. Job position lists are also easier to use because users can click directly into the related form view.
Original PR description
made intellectual property and withholding taxes exemption field hidden by default. made job position list clickable to directly access form view. task-4936345
Appraisal statuses now use the same colors across the progress bar, ribbon, and list view. This makes it easier for users to recognize whether an appraisal is to confirm, confirmed, or done at a glance.
Original PR description
Make colors consistent across appraisal's progress bar, ribbon, list view. Let the colors None/Green/Violet for To Confirm/Confirmed/Done. task-4730368
The referral app now uses updated wording when employees share a job link on Twitter/X. This keeps the shared message aligned with the platform's current branding and improves the candidate-facing sharing experience.
Original PR description
update message when sharing job link in twitter/x. task-4678199
This update organizes web client translations under clearer namespaces across several Odoo Enterprise areas. It helps keep wording consistent and easier to maintain for multilingual users, with no expected change to everyday workflows.
Original PR description
Community: https://github.com/odoo/odoo/pull/220596
The employee form now presents personal documentation details more clearly by combining visa and work permit information, improving labels and tooltips, and adding passport expiration tracking. This helps HR teams review key employee document dates more easily and reduces confusion in the personal information section.
Original PR description
In this PR, we introduced minor enhancements to the personal section in the employee form view, mainly merging Visa & Work permit sections, inhancing the expires on label for visa and work permit, update and adding new tooltip, and adding a new field for the passport expiration date. Community PR: https://github.com/odoo/odoo/pull/216883 Related task: 4911224.
Resolved issues and error corrections
Fixed an issue where opening My Requests in the Approvals app could fail when the same person appeared twice as an approver on one request. The system now safely uses one matching approver record, preventing the error and allowing users to view their approval requests normally.
Original PR description
#### Reproduce Approvals app -> My Approvals -> My Requests (Traceback Error) #### Issue The demo data contains a duplicate record for an approver (the user is set as default approver for the approval category and added again as record in xml data), so the request had 2 approvers with the same user. #### Fix Get the first record of filtered approvers for current user if there are many. task-4984137 Forward-Port-Of: odoo/enterprise#91806
A document sharing email template was corrected so it no longer references unavailable creator information. This prevents errors when document access records are created during upgrades, helping document sharing work reliably after migrations.
Original PR description
As `documents.access` records do not have `create_uid`, it isn't possible to reference it. This only comes up now as we've fixed the upgrade scripts to actually create this record (in odoo/upgrade#7959). Task-4480388 Forward-Port-Of: odoo/enterprise#92291
Portal templates in Field Service Sales were corrected after a recent subsection change caused display issues. This helps ensure customers and users see the intended layout without template errors.
Original PR description
\* industry_fsm_sale This commit fixes templates broken after the introduction of subsection in the section and note field ([1]). We wrote owl like "t-att-class" in python templates. task-5005432 [1]: https://github.com/odoo/enterprise/pull/91411
The default Swiss payroll rate for the contractual 13th month has been adjusted from 8.33% to 8.3333%. This improves payroll calculation precision for Swiss employees and helps avoid small rounding discrepancies.
Original PR description
-changed the default contractual thirteen month rate for Switzerland from 8.33 to 8.3333 Forward-Port-Of: odoo/enterprise#92231 Forward-Port-Of: odoo/enterprise#92095
This fix stops OCR processing from replacing an expense name that a user has already edited after upload. It helps ensure employee-entered expense descriptions are preserved and avoids confusion from unexpected name changes.
Original PR description
This commit https://github.com/odoo/odoo/commit/ca1f644a3c15f17482f56a2ece2a57f0f03098ff introduced the "untitled expense" title for expense when being uploaded. The user can then change manually the name. However, if the OCR is called after, it overrides the name previously set by the user. Therefore, if the name of an expense starts with "Untitled Expense", the OCR should not override the name. task-4653999
Fixes an issue where Mexican POS orders paid with eWallet could be stopped before the payment screen because a tiny tax rounding difference appeared as a negative remaining balance. The system now treats these near-zero amounts correctly, helping cashiers complete affected sales smoothly.
Original PR description
Before this commit, paying an order with eWallet could result in a small negative residual amount (due to tax calculation), instead of zero. This prevented users from proceeding to the payment screen. With this commit, the "lt" function is used to compare amounts while taking rounding precision into account, ensuring the residual is treated as zero when appropriate. opw-4867365 Forward-Port-Of: odoo/enterprise#91756 Forward-Port-Of: odoo/enterprise#88275
This fixes an internal subscription test that could fail when run outside the year 2025. It helps keep automated quality checks stable over time without changing customer-facing subscription behavior.
Original PR description
Before this commit, when test_uninvoiced_upsell_close_log was launched in a year different than 2025, it would fail with the following error: ``` File…
Before this commit, when test_uninvoiced_upsell_close_log was launched in a year different than 2025, it would fail with the following error:
```
File "/data/build/enterprise/sale_subscription/tests/test_sale_subscription.py", line 2085, in test_uninvoiced_upsell_close_log
action = subscription.prepare_upsell_order()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 1042, in prepare_upsell_order
action = self._prepare_renew_upsell_order('7_upsell', upsell_msg_body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 1012, in _prepare_renew_upsell_order
order = self._create_renew_upsell_order(subscription_state, message_body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/test_sale_subscription/models/sale_order.py", line 228, in _create_renew_upsell_order
order = super()._create_renew_upsell_order(subscription_state, message_body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 998, in _create_renew_upsell_order
values = self._prepare_upsell_renew_order_values(subscription_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/project_sale_subscription/models/sale_order.py", line 40, in _prepare_upsell_renew_order_values
res = super()._prepare_upsell_renew_order_values(subscription_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/partner_commission/models/sale_order.py", line 72, in _prepare_upsell_renew_order_values
values = super()._prepare_upsell_renew_order_values(subscription_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 1182, in _prepare_upsell_renew_order_values
raise UserError(_('You cannot create an upsell for this subscription because it :\n'
odoo.exceptions.UserError: You cannot create an upsell for this subscription because it :
- Has not started yet.
- Has no invoiced period in the future.
```
runbot-task-230716
Forward-Port-Of: odoo/enterprise#92307This update corrects access permissions used by automated tests for Australian payroll accounting. It helps ensure payroll and accounting checks run reliably without failing because the test user lacks the right access groups.
Original PR description
[FIX] l10n_au_hr_payroll_account: missing groups The common test file is accessing models in account and hr modules but the user miss groups to have access to them. runbot-230912
Demo employee records in several country-specific payroll modules now use the correct payroll structure type. This helps demo environments show accurate payroll behavior and reduces confusion during evaluations, testing, or training.
Original PR description
Some employees on demo data don't have the correct structure type. This solves this issue. Task: 4890507 Forward-Port-Of: odoo/enterprise#88487
This update adjusts the appointment website test configuration so newly exposed snippet layouts are recognized correctly. It helps keep automated quality checks stable after a related website editor change, with no expected impact on daily users.
Original PR description
Starting from [1], the various dynamic snippet layouts are directly accessible from the snippet selection dialog instead of using the "Templates" option. The goal of this commit is to simply add the new snippets keys in the "sub-snippet templates" config to prevent the snippets drag and drop test from failing. [1]: https://github.com/odoo/odoo/commit/e3b062e5d3820ddfcee2eb669f21edc0c53c3330 runbot-230822 Community PR: https://github.com/odoo/odoo/pull/223010
Code cleanup and technical improvements
This update reorganizes how Belgian payroll determines maximum working hours after a calendar-related refactor. It keeps payroll and attendance-related tests aligned with the updated calendar behavior, reducing the risk of incorrect payroll validation results.
Original PR description
Task-4933223