Friday, May 2, 2025
16 changes · saas-18.1
Resolved issues and error corrections
This fix makes mobile website submenus and mega menu controls remain visible when a dark header background is used. It improves the visitor editing and preview experience by ensuring menu text and icons adapt correctly to the selected theme colors.
Original PR description
Steps to reproduce: - Install the "Website" app. - Go to the homepage. - Click on "Site > Menu Editor" in the backend navbar. - Create a submenu. - Add a "Mega Menu Item" to the menu. - Save the dialog. - Enter edit mode. - Click on the header. - Choose a dark background in the header options. - Click the "Mobile Preview" button to switch to mobile view. - Click the toggler button to open the menu. - Open the "Mega Menu". - Bug 1: The "close" and "back" icons are not visible. - Close the "Mega Menu". - Open the submenu. - Bug 2: The submenu is not visible because the background and text have the same light color, so nothing can be seen. The bug was introduced by commit [1], which made visual improvements to the menu. This commit fixes it by making sure the colors of the problematic elements adapt to the theme colors. [1]: https://github.com/odoo/odoo/commit/dc1a15539227c4c21837a7bce3fc4d81858d60b9 opw-4716573
Miscellaneous changes
Versions -------- - 16.0+ Steps ----- 1. Enable Paypal as payment provider; 2. have a US-based partner; 3. sent them a payment link; 4. pay using Paypal; 5. open transaction on Paypal backend. Issue ----- No delivery address is registered, making the merchant ineligible for seller protection. Cause ----- Commit 00259dc44a981 added the `no_shipping: '1'` value to the form sent to Paypal to prevent buyers from changing their shipping address on Paypal's end. A side-effect is t
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Enable Paypal as payment provider; 2. have a US-based partner; 3. sent them a payment link; 4. pay using Paypal; 5. open transaction on Paypal backend. Issue…
Versions -------- - 16.0+ Steps ----- 1. Enable Paypal as payment provider; 2. have a US-based partner; 3. sent them a payment link; 4. pay using Paypal; 5. open transaction on Paypal backend. Issue ----- No delivery address is registered, making the merchant ineligible for seller protection. Cause ----- Commit 00259dc44a981 added the `no_shipping: '1'` value to the form sent to Paypal to prevent buyers from changing their shipping address on Paypal's end. A side-effect is that it doesn't even register the address provided with the transaction. Solution (16.0 up to saas-17.4) ------------------------------- Use the `address_override: '1'` value instead, which prevents buyers from changing the address while still registering the address on the transaction. In stable, keep the `no_shipping: '1'` value in the rendering values so that user's cannot suddenly change the address again if template hasn't been updated yet. Solution (18.0+) ---------------- Change the `shipping_preference` value from `NO_SHIPPING` to `SET_PROVIDED_ADDRESS`[^1]. opw-4681336 [^1]: https://developer.paypal.com/docs/checkout/standard/customize/shipping-module/#:~:text=Configuring%20shipping%20preferences Forward-Port-Of: odoo/odoo#205972 Forward-Port-Of: odoo/odoo#205686
When a refund order is canceled the refunded quantity was not updated accordingly. Steps to reproduce: ------------------- * Make an order in PoS and pay it * Go in the backend * Go to the order and click on "Refund" * Cancel the order * Go back to the PoS and try to refund the order > Observation: There will already be 1 qty refunded opw-4750645 Forward-Port-Of: odoo/odoo#208150
Original PR description
When a refund order is canceled the refunded quantity was not updated accordingly. Steps to reproduce: ------------------- * Make an order in PoS and pay it * Go in the backend * Go to the order and click on "Refund" * Cancel the order * Go back to the PoS and try to refund the order > Observation: There will already be 1 qty refunded opw-4750645 Forward-Port-Of: odoo/odoo#208150
### Steps to reproduce: - In the settings enable: Click & Collect, Multi Steps Routes - Set up a a demo payment provider - Create a second warehouse for the company of your website - Create a storable product, put units in stock for WH2 and publish it on the website - As an anonymous portal user, add one unit to your chart using the "pickup in store" button > select warehouse 2 - Click on checkout fill the form and pay #### > The sale order was attached to the warehouse 1 and the associ
Original PR description
### Steps to reproduce: - In the settings enable: Click & Collect, Multi Steps Routes - Set up a a demo payment provider - Create a second warehouse for the company of your website - Create a…
### Steps to reproduce: - In the settings enable: Click & Collect, Multi Steps Routes - Set up a a demo payment provider - Create a second warehouse for the company of your website - Create a storable product, put units in stock for WH2 and publish it on the website - As an anonymous portal user, add one unit to your chart using the "pickup in store" button > select warehouse 2 - Click on checkout fill the form and pay #### > The sale order was attached to the warehouse 1 and the associated delivery is therefore erroneous. ### Cause of the issue: Once a product is added to the chart, the sale order is created and since you added it using the pick up in store option, the sale order's warehouse_id and pickup location will be correcty updated by these calls: https://github.com/odoo/odoo/blob/785ea79c9ccd655079abeb4b13806e8174968dc3/addons/website_sale_collect/controllers/delivery.py#L22-L36 https://github.com/odoo/odoo/blob/785ea79c9ccd655079abeb4b13806e8174968dc3/addons/website_sale_collect/models/sale_order.py#L34-L36 However, during the checkout you will set a `partner_id` on the SO this will mark the `warhouse_id` field as a field to recompute because of the chain of dependencies of its compute methods: https://github.com/odoo/odoo/blob/785ea79c9ccd655079abeb4b13806e8174968dc3/addons/sale/models/sale_order.py#L463-L464 https://github.com/odoo/odoo/blob/785ea79c9ccd655079abeb4b13806e8174968dc3/addons/sale_stock/models/sale_order.py#L185-L186 And, the computed value of the `warehouse_id` will then override the current one.. opw-4737862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208056
The option of "cumulatedStart" was incorrectly infered from the "cumulative" option of an Odoo graph view. However, both options are not specifically linked. Task-4701303 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#206976 Forward-Port-Of: odoo/odoo#204980
Original PR description
The option of "cumulatedStart" was incorrectly infered from the "cumulative" option of an Odoo graph view. However, both options are not specifically linked. Task-4701303 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#206976 Forward-Port-Of: odoo/odoo#204980
This commit fixes wrongly used `isMobileOs` in attachment list. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208232
Original PR description
This commit fixes wrongly used `isMobileOs` in attachment list. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208232
When calculating earnings-based withholdings in company-branch setups, the logic incorrectly referenced accounting entries from the mother company if the user belonged to a branch. This led to incorrect accumulation of taxable base amounts and previously withheld amounts, especially when vendor bills or payments were made in a branch. This fix ensures that: - The accumulation logic in `_tax_compute_all_helper` correctly scopes move line searches using the user's company. As a result, with
Original PR description
When calculating earnings-based withholdings in company-branch setups, the logic incorrectly referenced accounting entries from the mother company if the user belonged to a branch. This led to incorrect accumulation of taxable base amounts and previously withheld amounts, especially when vendor bills or payments were made in a branch. This fix ensures that: - The accumulation logic in `_tax_compute_all_helper` correctly scopes move line searches using the user's company. As a result, withholding retention now behaves correctly in company-branch environments. opw-4581579 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203246
Steps: - Compare 2 views Actual result: - Header text color is dark with dark background  Expected result: - Header text color is light with dark background  Forward-Port-Of: odoo/odoo#206044
Original PR description
Steps: - Compare 2 views Actual result: - Header text color is dark with dark background  Expected result: - Header text color is light with dark background  Forward-Port-Of: odoo/odoo#206044
In this version, the picking type code `dropship` has been introduced to differentiate incoming types from this one (ref: 1547d66585a4b57cd3b747f28b7514dbd9d7bef8), but the search for missing companies without this new type is still being done with the old criteria of the source and target location. Let's change this to use the new picking type code. @Tecnativa Forward-Port-Of: odoo/odoo#201968
Original PR description
In this version, the picking type code `dropship` has been introduced to differentiate incoming types from this one (ref: 1547d66585a4b57cd3b747f28b7514dbd9d7bef8), but the search for missing companies without this new type is still being done with the old criteria of the source and target location. Let's change this to use the new picking type code. @Tecnativa Forward-Port-Of: odoo/odoo#201968
If a plan B has sub plans (C1, C2) already with analytics entries, and then plan B is updated to also have a parent plan A, hence the structure would be A/B/C1 and A/B/C2, the Analytic entries data on the sub plans is cleared off from C1 and C2. opw-4338406 Forward-Port-Of: odoo/odoo#207797
Original PR description
If a plan B has sub plans (C1, C2) already with analytics entries, and then plan B is updated to also have a parent plan A, hence the structure would be A/B/C1 and A/B/C2, the Analytic entries data on the sub plans is cleared off from C1 and C2. opw-4338406 Forward-Port-Of: odoo/odoo#207797
### Steps to reproduce: - In the settings enable Multi-Step routes - Unarchive the MTO route - Create a storable product using the MTO and buy route - Create and confirm a sale order for 100 units of that product - Validate the delivery for only 30 units and backorder the rest #### > The purchase order demand was updated to 170 units ### Cause of the issue: Since the refactoring a72382063ee662010729d983fbf6fb6305b8adf2 the rule of the MTO route is purely MTO. Furthermore, the moves
Original PR description
### Steps to reproduce: - In the settings enable Multi-Step routes - Unarchive the MTO route - Create a storable product using the MTO and buy route - Create and confirm a sale order for 100 units of…
### Steps to reproduce: - In the settings enable Multi-Step routes - Unarchive the MTO route - Create a storable product using the MTO and buy route - Create and confirm a sale order for 100 units of that product - Validate the delivery for only 30 units and backorder the rest #### > The purchase order demand was updated to 170 units ### Cause of the issue: Since the refactoring a72382063ee662010729d983fbf6fb6305b8adf2 the rule of the MTO route is purely MTO. Furthermore, the moves creating and running a procurement are added depending solely on their `procure_method` during the `_action_confirm`: https://github.com/odoo/odoo/blob/1dd360658222c0afeb268a5c8cf435defddf55d1/addons/stock/models/stock_move.py#L1485-L1496 https://github.com/odoo/odoo/blob/1dd360658222c0afeb268a5c8cf435defddf55d1/addons/stock/models/stock_move.py#L1503-L1513 In our use case, the delivery move is therefore created as `mto` and then creates and run a procurments creating the PO during its confirmation. However, when it is backordered, the backorder move is also created and confirmed as `mto` by the `_create_backorder` call: https://github.com/odoo/odoo/blob/02a370a7a34a42f2bc9f668eee756fb466db8722/addons/stock/models/stock_move.py#L2071-L2075 It will therefore also automatically create and run a procurment that will in turn modify the current PO. opw-4633920 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205192
**Current behavior before PR:** - When the height option is passed to the editor and the content exceeds that fixed height, the bottom border scrolls along with the content instead of staying anchored at the bottom. - When Enter was pressed at the bottom of a fixed-height editor, the newly inserted block was positioned outside the editable area. As a result, power buttons were also shown outside the editor until the block was scrolled into view. **Desired behavior after PR is merged:**
Original PR description
**Current behavior before PR:** - When the height option is passed to the editor and the content exceeds that fixed height, the bottom border scrolls along with the content instead of staying anchored at the bottom. - When Enter was pressed at the bottom of a fixed-height editor, the newly inserted block was positioned outside the editable area. As a result, power buttons were also shown outside the editor until the block was scrolled into view. **Desired behavior after PR is merged:** - The bottom border now remains fixed at the bottom of the editor when the height option is set, even if the content overflows and becomes scrollable. - Power buttons are no longer displayed while the block is outside the visible editable area. task: 4718217 Forward-Port-Of: odoo/odoo#206081
<b>Steps to reproduce:</b> 1. Setting > Navigate to Configure Document layout > layout : DIN 5008. 2. Accounting > invoice > PDF without Payment. Note :Ensure the address has at least 33 characters without spaces to trigger the issue. <b>Issue:</b> The footer of the invoice is not displaying correctly — the company name in the bottom left corner is overlapping and not aligned properly. <b>Cause:</b> An upstream PR modified the footer text sizing, leading to layout issues
Original PR description
<b>Steps to reproduce:</b> 1. Setting > Navigate to Configure Document layout > layout : DIN 5008. 2. Accounting > invoice > PDF without Payment. Note :Ensure the address has at least 33 characters…
<b>Steps to reproduce:</b> 1. Setting > Navigate to Configure Document layout > layout : DIN 5008. 2. Accounting > invoice > PDF without Payment. Note :Ensure the address has at least 33 characters without spaces to trigger the issue. <b>Issue:</b> The footer of the invoice is not displaying correctly — the company name in the bottom left corner is overlapping and not aligned properly. <b>Cause:</b> An upstream PR modified the footer text sizing, leading to layout issues when fields contain long values. <b>Solution:</b> Removed the `text-nowrap` class from the company details in the footer section. Improved section alignment using `colspan` and made minor adjustments to footer text sizing. These changes prevent content overlap in the company information section of reports, ensuring proper display regardless of content length. <b>opw: 4731515</b> Before changes applied:  After changes applied:  Forward-Port-Of: odoo/odoo#206774
When tryin to sell a combo product in a PoS using blackbox you get an error saying that the product has no tax. Steps to reproduce: * Install the module pos_blackbox_be * Create a combo product * Open PoS and try to sell it opw-4347147 Forward-Port-Of: odoo/enterprise#84415 Forward-Port-Of: odoo/enterprise#77595
Original PR description
When tryin to sell a combo product in a PoS using blackbox you get an error saying that the product has no tax. Steps to reproduce: * Install the module pos_blackbox_be * Create a combo product * Open PoS and try to sell it opw-4347147 Forward-Port-Of: odoo/enterprise#84415 Forward-Port-Of: odoo/enterprise#77595
We never took the 'cumulated_start' option of an Odoo chart into account and instead relied on 'cumulative' but the options are not linked neither one implied by the other. Task-4701303 Forward-Port-Of: odoo/enterprise#83901 Forward-Port-Of: odoo/enterprise#82954
Original PR description
We never took the 'cumulated_start' option of an Odoo chart into account and instead relied on 'cumulative' but the options are not linked neither one implied by the other. Task-4701303 Forward-Port-Of: odoo/enterprise#83901 Forward-Port-Of: odoo/enterprise#82954
A traceback occurs when attempting to view the 'Hierarchy and Subtotals' of an Account Group with a Financial Budget set in the 'Profit and Loss' report. Steps to reproduce: ------------------- * Open Accounting in debug mode * In Configuration > Accounting > Financial Budgets create a new budget * In Configuration > Accounting > Account Groups create a new group * Open Reporting > Statement Report > Profit and Loss * Select the budget and Hierarchy and Subtotals * Click on Revenues
Original PR description
A traceback occurs when attempting to view the 'Hierarchy and Subtotals' of an Account Group with a Financial Budget set in the 'Profit and Loss' report. Steps to reproduce: ------------------- *…
A traceback occurs when attempting to view the 'Hierarchy and Subtotals' of an
Account Group with a Financial Budget set in the 'Profit and Loss' report.
Steps to reproduce:
-------------------
* Open Accounting in debug mode
* In Configuration > Accounting > Financial Budgets create a new budget
* In Configuration > Accounting > Account Groups create a new group
* Open Reporting > Statement Report > Profit and Loss
* Select the budget and Hierarchy and Subtotals
* Click on Revenues
* Traceback
> Observation:
File '/home/odoo/src/enterprise/18.0/account_reports/models/account_report.py', line 1035, in compute_group_totals
hierarchy_total + (column.get('no_format') or 0.0) if isinstance(hierarchy_total, float) else hierarchy_total
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for +: 'float' and 'str'
Why the fix:
------------
Add float verification to ensure valid operation in the hierarchy.
opw-4628498
Forward-Port-Of: odoo/enterprise#83302