Tuesday, March 11, 2025
20 changes · master
Enhancements to existing features
This update adjusts how dropdown state is handled in the Gantt view, helping the interface behave more consistently. It is a small usability improvement for teams using planning or scheduling views.
Employees can now mark bank accounts as trusted from their employee record without requiring the account to follow IBAN formatting. This makes payroll bank account handling consistent across screens and better supports countries where non-IBAN accounts are common, such as the US.
Original PR description
When trusting a bank account from the employee's form view, a check was performed to verify that the bank account has a valid IBAN. This check is not performed on the bank account form view as a bank account (e.g. in the US) does not necessarily follow the IBAN format. This commits remove the IBAN validity check on the employee form view for consistency with the bank account view. task-4613593
Updated WhatsApp-related tests to match the latest message payload format, helping ensure the system continues to validate messaging behavior correctly. This is an internal quality improvement with no expected change for day-to-day users.
Original PR description
PR community: https://github.com/odoo/odoo/pull/180745 PR upgrade: https://github.com/odoo/upgrade/pull/6722
This update streamlines how Kenya OSCU e-invoicing information is handled for products that have only one variant. It reduces duplicated setup work and helps keep product reporting data more consistent.
Original PR description
Related to: - https://github.com/odoo/odoo/pull/189001
Resolved issues and error corrections
This fixes internal template names so they correctly match the spreadsheet editing module they belong to. It reduces the risk of confusion or loading issues when maintaining or using spreadsheet-related screens.
Original PR description
Some templates were named as if they belonged to `documents_spreadsheet` while actually being part of the `spreadsheet_edition` module. Task-4624479
This update corrects two small issues in the employee appraisal workflow. It helps keep appraisal goals and appraisal campaign actions working as expected, reducing minor disruptions for HR users.
Miscellaneous changes
During the introduction of the Kanban's selection feature (cf. commit [1]), the extraction of the SelectionBox component left some `nbSelected` getters' references while it actually was renamed `hasSelectedRecords`. This commit adapts them properly. [1]: https://github.com/odoo/odoo/commit/877895cc10b1218396f77f995dc7c87a9d22f585 Forward-Port-Of: odoo/enterprise#80246
Original PR description
During the introduction of the Kanban's selection feature (cf. commit [1]), the extraction of the SelectionBox component left some `nbSelected` getters' references while it actually was renamed `hasSelectedRecords`. This commit adapts them properly. [1]: https://github.com/odoo/odoo/commit/877895cc10b1218396f77f995dc7c87a9d22f585 Forward-Port-Of: odoo/enterprise#80246
### Before Codabox used to require a fiduciary VAT and the VAT of a company (managed by the fiduciary) in order to connect to their services. - Access to Codabox was limited to companies with an accounting firm with a VAT number assigned ### Now Codabox gives the opportunity for companies to directly connect (without being a fiduciary/ being managed by one). This is through the same port as before, just receiving two identical VAT numbers. - Module summary, descriptions and ot
Original PR description
### Before Codabox used to require a fiduciary VAT and the VAT of a company (managed by the fiduciary) in order to connect to their services. - Access to Codabox was limited to companies with an accounting firm with a VAT number assigned ### Now Codabox gives the opportunity for companies to directly connect (without being a fiduciary/ being managed by one). This is through the same port as before, just receiving two identical VAT numbers. - Module summary, descriptions and other texts are updated to generalize - Companies without an accounting firm can access the Codabox configuration settings task - 4460499 Forward-Port-Of: odoo/enterprise#80907 Forward-Port-Of: odoo/enterprise#77240
Overrides xml and xlsx export for Estonia intrastat because the current columns of the default intrastat report don't match with estonian government requirements. More information can be found at those addresses: - Arrivals: https://www.stat.ee/en/questionnaires/intrastat-arrivals-2024-month - Dispatches: https://www.stat.ee/en/questionnaires/intrastat-dispatches-2024-month task-3989930 Forward-Port-Of: odoo/enterprise#80990 Forward-Port-Of: odoo/enterprise#71114
Original PR description
Overrides xml and xlsx export for Estonia intrastat because the current columns of the default intrastat report don't match with estonian government requirements. More information can be found at those addresses: - Arrivals: https://www.stat.ee/en/questionnaires/intrastat-arrivals-2024-month - Dispatches: https://www.stat.ee/en/questionnaires/intrastat-dispatches-2024-month task-3989930 Forward-Port-Of: odoo/enterprise#80990 Forward-Port-Of: odoo/enterprise#71114
New purchases/sales ledger tax report for Bulgaria. In additional, we add few fields on account_journal and account_move, to deal with the 2 new reports. task-4280578 linked:https://github.com/odoo/odoo/pull/187779 Forward-Port-Of: odoo/enterprise#74258
Original PR description
New purchases/sales ledger tax report for Bulgaria. In additional, we add few fields on account_journal and account_move, to deal with the 2 new reports. task-4280578 linked:https://github.com/odoo/odoo/pull/187779 Forward-Port-Of: odoo/enterprise#74258
This commit fixes the style of the pin counter on the map view. The counter didn't display the number correctly. task-4544732 Forward-Port-Of: odoo/enterprise#80352
Original PR description
This commit fixes the style of the pin counter on the map view. The counter didn't display the number correctly. task-4544732 Forward-Port-Of: odoo/enterprise#80352
This commit introduces an easy way to recognize "orders" which are intended to settle customer accounts. opw-4185144 Community PR: https://github.com/odoo/odoo/pull/183682 Forward-Port-Of: odoo/enterprise#80791 Forward-Port-Of: odoo/enterprise#71958
Original PR description
This commit introduces an easy way to recognize "orders" which are intended to settle customer accounts. opw-4185144 Community PR: https://github.com/odoo/odoo/pull/183682 Forward-Port-Of: odoo/enterprise#80791 Forward-Port-Of: odoo/enterprise#71958
Purpose ======= In the Facebook settings, a user can ask an application (eg Social) to remove his data. If the deletion is not implemented, it should be done manually for each user, and so we want to automate that process. Technical ========= The deletion process is done in that order: 1. The user go to his settings and ask Odoo to remove the data we have 2. Facebook will hit an endpoint in IAP, with a signature, and the Facebook user id 3. IAP will reach the database, (with a shar
Original PR description
Purpose ======= In the Facebook settings, a user can ask an application (eg Social) to remove his data. If the deletion is not implemented, it should be done manually for each user, and so we want to…
Purpose
=======
In the Facebook settings, a user can ask an application (eg Social) to remove his data.
If the deletion is not implemented, it should be done manually for each user, and so we want to automate that process.
Technical
=========
The deletion process is done in that order:
1. The user go to his settings and ask Odoo to remove the data we have
2. Facebook will hit an endpoint in IAP, with a signature, and the Facebook user id
3. IAP will reach the database, (with a shared secret to authenticate itself) and that endpoint will remove the social accounts, and also the social posts / templates if the account is selected
We do it that way, instead of having a CRON on the client database, because we are able to know if the user uninstalled social, or if he already removed the account.
If the database is not reachable from the internet, we will have it's dbuuid, and so, we will be able to take an action.
Authentication
==============
IAP needs to authenticate to the Odoo database,
so both need to share a secret.
That secret can not be the extended token,
because we don't store it on the Odoo side.
That secret is derived from the database secret, and sent when we ask the Facebook URL (in python, without a browser redirection), so the social user can not see it (otherwise, he will be able to bypass company access rules, and delete the social accounts of different company).
Setup
=====
1. Start Odoo and IAP instances
2. Start ngrok on the IAP port
3. In the Facebook settings ("Facebook Login For Business" -> Settings)
- Add <ngrok_url>/api/social/facebook/1/callback in the Facebook settings
- Add <ngrok_url>/api/social_facebook/1/deletion_callback in the Facebook settings
4. Add the Facebook credentials in the IAP settings
5. In the Odoo db, add the system parameter `social.social_iap_endpoint` with the ngrok url
6. In the IAP db, change the system parameter `web.base.url` with the ngrok url
7. In the IAP code, in `facebook_controller.py`, comment the dbuid check `_check_has_access`
8. Add your accounts
9. Go to `https://www.facebook.com/settings/?tab=business_tools`, and remove the app
10. Go to the "Removed" tab, then "View Details" and click on "Send Request"
Task-4350697
Forward-Port-Of: odoo/enterprise#79992
Forward-Port-Of: odoo/enterprise#74865This commit improves the tool tip and the presentation of the quality control random view. When you set a quality point to "random" with a percentage of 20% and process a transfer of 100 units, it does not mean that exactly 20% of the transfer will be inspected. Instead, each unit has a 20% probability of being checked. For example, if you process ten transfers of 100 units each, you might get 18 quality checks in one transfer, 10 in another, 25 in the next, and so on. The key point is tha
Original PR description
This commit improves the tool tip and the presentation of the quality control random view. When you set a quality point to "random" with a percentage of 20% and process a transfer of 100 units, it does not mean that exactly 20% of the transfer will be inspected. Instead, each unit has a 20% probability of being checked. For example, if you process ten transfers of 100 units each, you might get 18 quality checks in one transfer, 10 in another, 25 in the next, and so on. The key point is that, statistically, approximately 20% of your total quantities will be inspected over multiple transfers. opw-4527413 Forward-Port-Of: odoo/enterprise#80884 Forward-Port-Of: odoo/enterprise#80482
Problem ---------- Missing account code "223100" for the SHIF Objective ---------- Add the new account code Forward-Port-Of: odoo/enterprise#81025
Original PR description
Problem ---------- Missing account code "223100" for the SHIF Objective ---------- Add the new account code Forward-Port-Of: odoo/enterprise#81025
This commit restores the position of the working schedule dropdown to be just below the label in the salary configurator, like in previous versions.  The cause of the issue is that the SelectMenuWrapper component is attached just after the invisible select element: https://github.com/odoo/enterprise/blob/9f6a4f0697edcc9330ad7976c6602d892e7b6ef9/hr_contract_salary/static/src/js/hr_contract_salary.js#L69-L71
Original PR description
This commit restores the position of the working schedule dropdown to be just below the label in the salary configurator, like in previous versions.…
This commit restores the position of the working schedule dropdown to be just below the label in the salary configurator, like in previous versions.  The cause of the issue is that the SelectMenuWrapper component is attached just after the invisible select element: https://github.com/odoo/enterprise/blob/9f6a4f0697edcc9330ad7976c6602d892e7b6ef9/hr_contract_salary/static/src/js/hr_contract_salary.js#L69-L71 But before other elements are placed in the DOM between them. A solution is to add a wrapper div around the selection, ensuring the `SelectMenuWrapper` component is attached inside that div, and further elements placed in the DOM after the wrapper div. **Steps to reproduce** - Install hr_contract_salary_payroll - Select any employee contract > Generate offer > Salary configurator - Add `part?=80` (any value != 100) at the end of URL opw-4496279 Forward-Port-Of: odoo/enterprise#79966
Versions: ----------- - 17.0 Steps to reproduce: ------------------------- - go to timesheet module - click on grid cell Issue: ------- The action helper in web grid was resulting in only the web content being displayed in the timesheet grid and so helper was missing Cause: --------- The action helper was being called from web_grid, causing a lack of content in the timesheet_grid. Solution: ----------- Create a dedicated function to retrieve the no-content helper, enhanc
Original PR description
Versions: ----------- - 17.0 Steps to reproduce: ------------------------- - go to timesheet module - click on grid cell Issue: ------- The action helper in web grid was resulting in only the web content being displayed in the timesheet grid and so helper was missing Cause: --------- The action helper was being called from web_grid, causing a lack of content in the timesheet_grid. Solution: ----------- Create a dedicated function to retrieve the no-content helper, enhancing portability for easy customization. task-3429403 Forward-Port-Of: odoo/enterprise#80784 Forward-Port-Of: odoo/enterprise#56158
Before this commit, the map view removed the routes after reordering the items. Now, the routes are kept and the path recalculated. task-4493063 Forward-Port-Of: odoo/enterprise#80359
Original PR description
Before this commit, the map view removed the routes after reordering the items. Now, the routes are kept and the path recalculated. task-4493063 Forward-Port-Of: odoo/enterprise#80359
Since odoo/enterprise#80074, the test `appointment status pill colors` randomly fails on runbot. The reasons are not clear yet, but to prevent that error from randomly popping on builds and potentially from slowing down the merge process, this commit simply reverts the changes to come back to the version of this test file as it was before odoo/enterprise#80074 Runbot error-159865 Forward-Port-Of: odoo/enterprise#81030
Original PR description
Since odoo/enterprise#80074, the test `appointment status pill colors` randomly fails on runbot. The reasons are not clear yet, but to prevent that error from randomly popping on builds and potentially from slowing down the merge process, this commit simply reverts the changes to come back to the version of this test file as it was before odoo/enterprise#80074 Runbot error-159865 Forward-Port-Of: odoo/enterprise#81030
Since 18.0, the name field of draft invoice is false instead of "/", this causes an issue in the name replace as we try to use the replace() method on a False boolean. Forward-Port-Of: odoo/enterprise#80922
Original PR description
Since 18.0, the name field of draft invoice is false instead of "/", this causes an issue in the name replace as we try to use the replace() method on a False boolean. Forward-Port-Of: odoo/enterprise#80922