Monday, June 16, 2025
30 changes · saas-18.2
Resolved issues and error corrections
The purchase dashboard now labels the Not Acknowledged and Late Receipt tooltip counts as purchase orders instead of requests for quotation. This avoids confusion for users because these indicators track confirmed purchase orders, not RFQs.
Original PR description
**Steps to reproduce:** - Purchase Order > Dashboard > hover on not acknowledged, late receipt and their counts **Issue:** - Tool tips of 'not acknowledged' and 'late receipt' mentions RFQ's instead of PO's. These two kpi are related with PO and filter only Purchase Orders not RFQ's **Solution:** - Update the title of divs to 'POs' opw-4848307
This fixes an issue where Point of Sale guided demo tours failed because their required files loaded in the wrong order. The change helps keep POS demos and automated walkthroughs reliable for training, testing, and demonstrations.
Original PR description
Fake tours were not working in the Point of Sale app because thier assets were loaded before the global assets. This commit ensures that the fake tours are loaded after globals one.
This fix prevents unnecessary warning messages when creating Australian payroll accounting reports in a database without demo data. It ensures the report calculation waits until the related report information is ready, keeping system logs cleaner without changing user-facing payroll behavior.
Original PR description
[FIX] l10n_au_hr_payroll_account: avoid NewId warning in compute steps to reproduce: 1.install l10n_au_hr_payroll_account 2. without demo data 3. run the test test_form_new_record The compute method was being triggered too early, while the record still had a temporary NewId and not a real database ID. This caused a warning when using the field in a domain: Domains don't support NewId. We added a dependency on previous_report_id to make sure the compute only runs after the field is set and the record is saved. This avoids the warning and keeps the logs clean. build_error-115303
This update fixes a small issue in the Urban Piper point of sale integration where the delivery button was missing an expected setup value. It helps prevent potential errors when using delivery-related actions in the point of sale.
Original PR description
Before this commut, the static props of delivery_button was not defined. This commit adds empty static props to the DeliveryButton component.
Features or functions removed from Odoo
The obsolete Mexican payroll localisation module was removed again after being accidentally restored. This keeps the product aligned with the intended module set and avoids confusion from unsupported functionality appearing in the codebase.
Original PR description
Removed the module as it was removed in fe442111dc22b5d0bb9717ff69a5f473e1e81d50, and mistakenly resurrected in 65ed1bddbb2d032f74ef84afc9add85a1503dec5
Miscellaneous changes
Currently, we prevent user to register payment for invoices belonging to different branches. With this commit, when trying to register payments for two invoices belonging to different branches, we register it as parent company. Steps: - Have a main company with 2 branch - Create and confirm one invoice for each branch - Select both branches in company selector - From the invoice list view, select the 2 invoices - Try to register payment -> Error: "You can't create payments for entries belongin
Original PR description
Currently, we prevent user to register payment for invoices belonging to different branches. With this commit, when trying to register payments for two invoices belonging to different branches, we register it as parent company. Steps: - Have a main company with 2 branch - Create and confirm one invoice for each branch - Select both branches in company selector - From the invoice list view, select the 2 invoices - Try to register payment -> Error: "You can't create payments for entries belonging to different branches." opw-4563936 Forward-Port-Of: odoo/odoo#214183 Forward-Port-Of: odoo/odoo#212686
Issue: field `amount_company_currency_signed` does not have the correct sign when the payment is created without an associated move It occurs because we convert the `amount` but we should use the `amount_signed` opw-4656807 Forward-Port-Of: odoo/odoo#213653
Original PR description
Issue: field `amount_company_currency_signed` does not have the correct sign when the payment is created without an associated move It occurs because we convert the `amount` but we should use the `amount_signed` opw-4656807 Forward-Port-Of: odoo/odoo#213653
Before this commit there was a race condition that prevented other DynmaicPlaceholder to be spawned because they waited a Promise that was initiated by a now dead instance of the same class This was because the cached promise was originating from a protected method (orm service, with useService) Also, the cache did not account for failures. After this commit, there is no concurrency failures of that kind. opw-4815802 Description of the issue/feature this PR addresses: Current beha
Original PR description
Before this commit there was a race condition that prevented other DynmaicPlaceholder to be spawned because they waited a Promise that was initiated by a now dead instance of the same class This was because the cached promise was originating from a protected method (orm service, with useService) Also, the cache did not account for failures. After this commit, there is no concurrency failures of that kind. opw-4815802 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213799
the tour was failing because the phone number was not set in the website configuration, which is required for the add to cart snippet tour to pass because it checks the phone number in the billing address form page which is required to be filled in order to proceed with the tour and confirm order is on the next page which is not reached so the tour was failing due to timeout build_error-160894 Forward-Port-Of: odoo/odoo#213870 Forward-Port-Of: odoo/odoo#213178
Original PR description
the tour was failing because the phone number was not set in the website configuration, which is required for the add to cart snippet tour to pass because it checks the phone number in the billing address form page which is required to be filled in order to proceed with the tour and confirm order is on the next page which is not reached so the tour was failing due to timeout build_error-160894 Forward-Port-Of: odoo/odoo#213870 Forward-Port-Of: odoo/odoo#213178
To reproduce: ============= - Create a private project and a task in it - Create a subtask in this task and assign it to Demo - Log in as Demo and go to "My Tasks" - the subtask is listed but opening it gives an access error Problem: ======== the computation of the field `show_display_in_project` requires reading `project_id` from the parent task, which is not allowed for Demo Solution: ========= read through `sudo` opw-4850408 --- I confirm I have signed the CLA and read t
Original PR description
To reproduce: ============= - Create a private project and a task in it - Create a subtask in this task and assign it to Demo - Log in as Demo and go to "My Tasks" - the subtask is listed but opening it gives an access error Problem: ======== the computation of the field `show_display_in_project` requires reading `project_id` from the parent task, which is not allowed for Demo Solution: ========= read through `sudo` opw-4850408 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214051 Forward-Port-Of: odoo/odoo#213755
Follow-up of [1]. - Using `invalidate_model` without giving the related field seems to be causing issues in the master version. Let's just mention what we need only to be sure. - Check the proper update of write_date.s (note that this was already done in some forward-ported versions of [1]). - Use two distinct "new dates" so that potential cache features do not make the test pass by chance, and ease debugging of the test. [1]: https://github.com/odoo/odoo/commit/4df533196d3cfdee34beb
Original PR description
Follow-up of [1]. - Using `invalidate_model` without giving the related field seems to be causing issues in the master version. Let's just mention what we need only to be sure. - Check the proper update of write_date.s (note that this was already done in some forward-ported versions of [1]). - Use two distinct "new dates" so that potential cache features do not make the test pass by chance, and ease debugging of the test. [1]: https://github.com/odoo/odoo/commit/4df533196d3cfdee34beb2ae604f569e67cf4f93 Forward-Port-Of: odoo/odoo#213851 Forward-Port-Of: odoo/odoo#213760
- Ensured that when a group of taxes is selected, the designated label is displayed on the invoice instead of the tax names. Task-4637341 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211077 Forward-Port-Of: odoo/odoo#201308
Original PR description
- Ensured that when a group of taxes is selected, the designated label is displayed on the invoice instead of the tax names. Task-4637341 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211077 Forward-Port-Of: odoo/odoo#201308
When User removes the currency from an invoice, A traceback will appear. Steps to reproduce the error: - Install ``l10n_es`` module and switch to ``ES Company`` - Enable Multiple currency - Create an invoice > Set customer > save - Now, Remove currency and customer from an invoice Traceback: ``` ValueError: Expected singleton: res.currency() ``` https://github.com/odoo/odoo/blob/51fcbd211d2b1abf4b93becedbcbb9e03002cdd6/addons/l10n_es/models/account_move.py#L23 This line causes
Original PR description
When User removes the currency from an invoice, A traceback will appear. Steps to reproduce the error: - Install ``l10n_es`` module and switch to ``ES Company`` - Enable Multiple currency - Create an invoice > Set customer > save - Now, Remove currency and customer from an invoice Traceback: ``` ValueError: Expected singleton: res.currency() ``` https://github.com/odoo/odoo/blob/51fcbd211d2b1abf4b93becedbcbb9e03002cdd6/addons/l10n_es/models/account_move.py#L23 This line causes a traceback with an empty currency when the user removes the currency from the invoice. sentry-6670501631 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214184 Forward-Port-Of: odoo/odoo#213731
**Current behavior before PR:** When the user opened the Favorite category with no favorite GIFs, nothing was shown. This was caused by using `.length` on Map objects (`evenGif.gifs` and `oddGif.gifs`) , which should have been `.size`. (since #131344 ) **Desired behavior after PR is merged:** Help message is correctly displayed when no favorite GIFs are available. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo
Original PR description
**Current behavior before PR:** When the user opened the Favorite category with no favorite GIFs, nothing was shown. This was caused by using `.length` on Map objects (`evenGif.gifs` and `oddGif.gifs`) , which should have been `.size`. (since #131344 ) **Desired behavior after PR is merged:** Help message is correctly displayed when no favorite GIFs are available. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214026 Forward-Port-Of: odoo/odoo#213374
Problem: When the `codeview` option is enabled in the HTML editor, embedded components like videos no longer work and disappear from the content. Cause: The `html_field` overrides `config.resources` entirely when `codeview` is enabled, which prevents other required plugins (e.g., for embedded components) from being loaded. Solution: Move the code view logic into its own dedicated plugin, consistent with how other optional features are handled, to avoid overriding `config.resources`.
Original PR description
Problem: When the `codeview` option is enabled in the HTML editor, embedded components like videos no longer work and disappear from the content. Cause: The `html_field` overrides `config.resources` entirely when `codeview` is enabled, which prevents other required plugins (e.g., for embedded components) from being loaded. Solution: Move the code view logic into its own dedicated plugin, consistent with how other optional features are handled, to avoid overriding `config.resources`. Steps to reproduce: 1. Open an HTML field. 2. Add a video (embedded component). 3. Enable the `codeview` option. 4. Enter debug mode. → The video disappears from the content. opw-4837016 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214163
Help the users by creating filters automatically depending on the hierarchy of analytic plans. This allows to open any standard view (list/pivot/graph) by level of hierarchies. One usecase is, for a plan about localisation: * Main plan: City (i.e. Brussels, New York, Los Angeles) * Level 1 sub plan: Country (i.e. Belgium, USA) * Level 2 sub plan: Continent (i.e. Europe, America) This will generate (or delete) automatically new fields depending on the various levels in the hierarchy bei
Original PR description
Help the users by creating filters automatically depending on the hierarchy of analytic plans. This allows to open any standard view (list/pivot/graph) by level of hierarchies. One usecase is, for a plan about localisation: * Main plan: City (i.e. Brussels, New York, Los Angeles) * Level 1 sub plan: Country (i.e. Belgium, USA) * Level 2 sub plan: Continent (i.e. Europe, America) This will generate (or delete) automatically new fields depending on the various levels in the hierarchy being created or deleted. When the feature is in use, the group by widget becomes a drop-down similar to the groupby selector of dates, allowing to select either the year/month/... task-4763892 Forward-Port-Of: odoo/odoo#213995
Global purpose is to make mail/view controller more resilient by improving redirections when not having access to the record. Notably * correctly route internal users to discuss, portal users to /my and unlogged users to login; * keep original mail/view route when performing redirection after login so that we try the routing again; * fix various issues in redirect computation, such as lost access token parameter or partial reconstruction of URLs; Improve test coverage.
Original PR description
Global purpose is to make mail/view controller more resilient by improving redirections when not having access to the record. Notably * correctly route internal users to discuss, portal users to /my and unlogged users to login; * keep original mail/view route when performing redirection after login so that we try the routing again; * fix various issues in redirect computation, such as lost access token parameter or partial reconstruction of URLs; Improve test coverage. Task-4685166 Forward-Port-Of: odoo/odoo#214119 Forward-Port-Of: odoo/odoo#212545
Users can create a downpayment bill directly from the purchase order or create a bill separately and then associate it with the original purchase order. However, in the latter case, the bill amount won't take into account the currency. Steps to reproduce: - Create a purchase order for a partner in company currency - Create a bill in foreign currency for the same partner - Click "Purchase Matching" smart button - Select PO and BILL > Add to PO > Add Down Payment Issue: Downpayment w
Original PR description
Users can create a downpayment bill directly from the purchase order or create a bill separately and then associate it with the original purchase order. However, in the latter case, the bill amount won't take into account the currency. Steps to reproduce: - Create a purchase order for a partner in company currency - Create a bill in foreign currency for the same partner - Click "Purchase Matching" smart button - Select PO and BILL > Add to PO > Add Down Payment Issue: Downpayment will be added into the PO without taking into account the different currency opw-4716949 Forward-Port-Of: odoo/odoo#212576
## Background In Mexico, all accounts need to follow a pattern XXX.XX.XX or XXX.XX.XXX where additionally the first five digits must belong to a list of prefixes published by the SAT. At the moment, several accounts created by default don't match the CoA pattern: - 999000001 Cash Difference Gain - 999000002 Cash Difference Loss. - 999300000 Cash Discount Loss - 999400000 Cash Discount Gain - 999999 Undistributed Profits/Losses ## Fix Given correct codes to the existing accou
Original PR description
## Background In Mexico, all accounts need to follow a pattern XXX.XX.XX or XXX.XX.XXX where additionally the first five digits must belong to a list of prefixes published by the SAT. At the moment,…
## Background In Mexico, all accounts need to follow a pattern XXX.XX.XX or XXX.XX.XXX where additionally the first five digits must belong to a list of prefixes published by the SAT. At the moment, several accounts created by default don't match the CoA pattern: - 999000001 Cash Difference Gain - 999000002 Cash Difference Loss. - 999300000 Cash Discount Loss - 999400000 Cash Discount Gain - 999999 Undistributed Profits/Losses ## Fix Given correct codes to the existing accounts and modifying data for some records:. | Account | New code | New name | New Account type | |-------------------------------------|-----------|------------------------------------------------------------------------------|------------------| | 999000001 Cash Difference Gain | 403.01.01 | Other Income | ~ | | 999000002 Cash Difference Loss | 601.84.02 | ~ | ~ | | 999300000 Cash Discount Loss | 402.01.01 | Returns, discounts or bonuses over sales and/or services at the general rate | other income | | 999400000 Cash Discount Gain | 503.01.01 | Returns, discounts or bonuses over purchases | ~ | | 999999 Undistributed Profits/Losses | 305.01.01 | Uncut Result | ~ | --- opw-4288080 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#210082 Forward-Port-Of: odoo/odoo#196852
Adds a new module allowing for the support of withholding taxes at the time of registering a payment. task-3614935 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214149
Original PR description
Adds a new module allowing for the support of withholding taxes at the time of registering a payment. task-3614935 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214149
Commit [1] added a compatibility layer when we switched to Bootstrap 4. That compatibility layer actually still exists in master, even though we are now using Bootstrap 5. A specific rule was forcing input-group elements on one row... which conflicts with the fact that invalid feedbacks are supposed to wrap on the next row. This commit fixes that by re-enabling the wrap, when such a feedback is displayed only. In master, the rule should probably be removed, hoping outdated layouts were update
Original PR description
Commit [1] added a compatibility layer when we switched to Bootstrap 4. That compatibility layer actually still exists in master, even though we are now using Bootstrap 5. A specific rule was forcing…
Commit [1] added a compatibility layer when we switched to Bootstrap 4. That compatibility layer actually still exists in master, even though we are now using Bootstrap 5. A specific rule was forcing input-group elements on one row... which conflicts with the fact that invalid feedbacks are supposed to wrap on the next row.
This commit fixes that by re-enabling the wrap, when such a feedback is displayed only. In master, the rule should probably be removed, hoping outdated layouts were updated to Bootstrap 4+ correctly at this point (not even sure what exactly is broken by not forcing the input-group on one row).
Steps to reproduce:
- Add a form in your website page
- Add a date field (this is an input-group)
- Make it required
- Save
- Open the HTML editor(*) and add an invalid-feedback in that field
- Save
- Send your form without filling it => the input-group is broken
(*) starting from 18.4, there is a standard use case on the /my/security
page. There might be unknown usecases between 16.0 and 18.4.
[1]: https://github.com/odoo/odoo/commit/7aa473e09944bc5c1aba2dbcd611097dd36db6c5
Related to task-3959739
Forward-Port-Of: odoo/odoo#214029#Description A total of 6 test were broken after changes(add/removal) in the accounts of the mexican localization in odoo community, the new expected values for the assesments were updated. Related PR #196852. Forward-Port-Of: odoo/enterprise#85581 Forward-Port-Of: odoo/enterprise#81270
Original PR description
#Description A total of 6 test were broken after changes(add/removal) in the accounts of the mexican localization in odoo community, the new expected values for the assesments were updated. Related PR #196852. Forward-Port-Of: odoo/enterprise#85581 Forward-Port-Of: odoo/enterprise#81270
In this commit: ------------ - We are fixing the unknown key "test" runbot error. runbot error-226611 Forward-Port-Of: odoo/enterprise#87482
Original PR description
In this commit: ------------ - We are fixing the unknown key "test" runbot error. runbot error-226611 Forward-Port-Of: odoo/enterprise#87482
**Before this commit:** - If the user had a website with a theme, then exporting from `Studio Export` would fail if no changes were made to the view via `web_studio`. **After this commit:** - The export now completes successfully, even when there are no changes made in the view through `web_studio`. task-4815179 Forward-Port-Of: odoo/enterprise#87655 Forward-Port-Of: odoo/enterprise#86972
Original PR description
**Before this commit:** - If the user had a website with a theme, then exporting from `Studio Export` would fail if no changes were made to the view via `web_studio`. **After this commit:** - The export now completes successfully, even when there are no changes made in the view through `web_studio`. task-4815179 Forward-Port-Of: odoo/enterprise#87655 Forward-Port-Of: odoo/enterprise#86972
Rounding errors may occur when using `int()` on float values. Steps to reproduce: - Create an invoice with a total amount of 256.46 - Create a RIBA payment for this invoice - Add this payment to a batch payment - Export the batch payment file In the exported file, the amount should be 25646, but it is incorrectly 25645 in two places. This happens because in Python: `int(256.46 * 100) → int(25645.999999...) → 25645` To fix this, we use `float_round()` to round correctly the float
Original PR description
Rounding errors may occur when using `int()` on float values. Steps to reproduce: - Create an invoice with a total amount of 256.46 - Create a RIBA payment for this invoice - Add this payment to a batch payment - Export the batch payment file In the exported file, the amount should be 25646, but it is incorrectly 25645 in two places. This happens because in Python: `int(256.46 * 100) → int(25645.999999...) → 25645` To fix this, we use `float_round()` to round correctly the float before applying `int()` to convert the value to an integer. This ensures accurate rounding for exported payment amounts. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4858205) opw-4858205 Forward-Port-Of: odoo/enterprise#87597
…t mail should do Before this commit, in the reportEditor, add a field (by typing "/") There was calls made to the server that are not necessary for the report editor. This commit removes the calls by overriding the corresponding method. opw-4815802 Forward-Port-Of: odoo/enterprise#87425
Original PR description
…t mail should do Before this commit, in the reportEditor, add a field (by typing "/") There was calls made to the server that are not necessary for the report editor. This commit removes the calls by overriding the corresponding method. opw-4815802 Forward-Port-Of: odoo/enterprise#87425
Before this commit, if the module was installed, the delivered quantity for non-rental products in a sale order paid through PoS would be doubled. opw-4805368 Forward-Port-Of: odoo/enterprise#87231 Forward-Port-Of: odoo/enterprise#87175
Original PR description
Before this commit, if the module was installed, the delivered quantity for non-rental products in a sale order paid through PoS would be doubled. opw-4805368 Forward-Port-Of: odoo/enterprise#87231 Forward-Port-Of: odoo/enterprise#87175
Enterprise part of https://github.com/odoo/odoo/pull/213653 opw-4656807 Forward-Port-Of: odoo/enterprise#87478
Original PR description
Enterprise part of https://github.com/odoo/odoo/pull/213653 opw-4656807 Forward-Port-Of: odoo/enterprise#87478
The Libro Giornale report was missing the bank (liquidity) line for payment entries, which caused the report to be unbalanced. This happened because the report is based on the standard journal report, which skips liquidity lines by default. To fix this, the `_get_export_lines_for_journal` method was updated to treat the bank line like a normal journal line, so it now appears in the report. This ensures that payment entries show both the credit and debit sides as required. Return to t
Original PR description
The Libro Giornale report was missing the bank (liquidity) line for payment entries, which caused the report to be unbalanced. This happened because the report is based on the standard journal report, which skips liquidity lines by default. To fix this, the `_get_export_lines_for_journal` method was updated to treat the bank line like a normal journal line, so it now appears in the report. This ensures that payment entries show both the credit and debit sides as required. Return to the default pdf and xml buttons name and remove _custom_options_initializer overwrite function task-4830113 Forward-Port-Of: odoo/enterprise#86984
Steps to reproduce: 1. Install website_sale_renting. 2. Go to the Website -> shop, open the renting product 3. Try to set today's date as start date of the Rental Period Issue: - The default date was always set to the next day with the current time hours. That's making it impossible for users to select today's date without Adjusting the time manually. Solution: - Updated the logic for hourly rentals to set the default date next day with adding one hour from the current time, to allow
Original PR description
Steps to reproduce: 1. Install website_sale_renting. 2. Go to the Website -> shop, open the renting product 3. Try to set today's date as start date of the Rental Period Issue: - The default date was always set to the next day with the current time hours. That's making it impossible for users to select today's date without Adjusting the time manually. Solution: - Updated the logic for hourly rentals to set the default date next day with adding one hour from the current time, to allow customers to select the current date Reference-https://github.com/odoo/enterprise/commit/32b5db6242a0a9cf43002e3723442be7d0cd210a opw-4844754 Forward-Port-Of: odoo/enterprise#86908