Tuesday, December 26, 2023
17 changes · 17.0
Resolved issues and error corrections
This fix improves internal test error messages so they show the actual required field name when a required value is missing. It helps developers identify issues faster during testing, reducing time spent diagnosing failed tests.
Original PR description
Prior to this commit, when an empty required field triggered an error, the message was: AssertionError: {fname!r} is a required field.
After this commit, the error message specifies the name of the required field: AssertionError: my_field_name is a required field.
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-prThis change fixes an unreliable automated test in the messaging area so it consistently checks that channel subscriptions renew correctly. It helps prevent false test results in the development pipeline without changing user-facing behavior.
Original PR description
The "Channel subscription is renewed when channel is left" test ensures the bus subscription is renewed when the user leaves the channel. In order to do so, the test relies on a patch of the bus service and awaits the `waitUntilSubscribe` helper. This is not correct: the subscription will never be triggered since the bus service method is patched to only call `assert.step`. This test passes most of the time by luck: `waitUntilSubscribe` detects the first subscription (the one that is triggered when starting the bus service) and the delay is most of the time enough for the step to be ready. This PR fixes the issue by: - waiting the first subscription to ensure it does not interfere with the test. - removing the bus service patch: waiting for the subscription is enough. fixes runbot-46941
This update fixes a display issue where the Q keyboard shortcut label overlapped with the filter removal button when shortcuts were shown. Users can now view shortcuts in the Field Service task list without confusing or cluttered controls.
Original PR description
Steps to reproduce: - go to field service > my tasks - press Alt to display keyboard shortcuts Observed behavior: the Q shortcut and the x button overlap Expected behavior: the x button should be hidden by the Q shortcut Task-3635644
This update fixes automated tests in the Stock Barcode module that were affected by a system-level change to how inventory movement records are ordered. The tests have been adjusted to ensure they continue to work correctly without changing what they actually test. This is a routine maintenance update to keep the system functioning properly.
Original PR description
odoo/odoo#143570 changes the default order on the `stock.move.line` model. Which means that some tests using this order as index references won't be aligned anymore and needs some adjustments. In order to avoid changing the meaning of the test, only had a `sorted()` before the comparisons to simulate the old default order. Forward-Port-Of: odoo/enterprise#52893 Forward-Port-Of: odoo/enterprise#52795
Documentation and clarification updates
This update refreshes the corporate contributor license agreement record for 26house. It helps keep Odoo's legal contributor documentation current and properly tracked, with no expected impact on product features or users.
Original PR description
updated list 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
Miscellaneous changes
Steps to reproduce: - Install Project module - Login as admin - Create a task an assign it to admin - Go to 'My Tasks' page (`example.com/my/tasks`) Issue: The avatar of assignee is not displayed. Cause: Using a row over two elements that are already in a table. Solution: Add `px-0` bootstrap CSS class to the avatar. opw-3592972 Forward-Port-Of: odoo/odoo#147220
Original PR description
Steps to reproduce: - Install Project module - Login as admin - Create a task an assign it to admin - Go to 'My Tasks' page (`example.com/my/tasks`) Issue: The avatar of assignee is not displayed. Cause: Using a row over two elements that are already in a table. Solution: Add `px-0` bootstrap CSS class to the avatar. opw-3592972 Forward-Port-Of: odoo/odoo#147220
**steps to reproduce:** - as admin, go to /shop and add a storable product to cart - disable all delivery methods - use a coupon to set the price to 0 **before this commit:** - the payment button is clickable even if there is a big red error message saying "Sorry, we are unable to ship your order" **after this commit:** - the payment button is hidden if an error is displayed and the route /shop/payment/validate is blocked if there is an error displayed opw-3582207-nda --- I con
Original PR description
**steps to reproduce:** - as admin, go to /shop and add a storable product to cart - disable all delivery methods - use a coupon to set the price to 0 **before this commit:** - the payment button is clickable even if there is a big red error message saying "Sorry, we are unable to ship your order" **after this commit:** - the payment button is hidden if an error is displayed and the route /shop/payment/validate is blocked if there is an error displayed opw-3582207-nda --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#145143 Forward-Port-Of: odoo/odoo#142401
Unit price is recomputed on non groupable order line instead of being the same as its sale order line counterpart. Steps to reproduce: - make sure unit measure category are not groupable - create a sale order and add a line with a product with UOM unit (ex: acoustic bloc screens) and quantity 3 - change the default unit price (100$ instead of 295$) - open the point of sale - open the SO and click on settle the order => price is 295$ instead of 100$ on each of the 3 lines --- I
Original PR description
Unit price is recomputed on non groupable order line instead of being the same as its sale order line counterpart. Steps to reproduce: - make sure unit measure category are not groupable - create a sale order and add a line with a product with UOM unit (ex: acoustic bloc screens) and quantity 3 - change the default unit price (100$ instead of 295$) - open the point of sale - open the SO and click on settle the order => price is 295$ instead of 100$ on each of the 3 lines --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#147406 Forward-Port-Of: odoo/odoo#143266
Current behavior: When a quotation is modified and the order is settled in the same time, you get an error when trying to pay for the order. Steps to reproduce: - Create a quotation with 3 lines - Settle the order in the PoS - Modify the quotation (remove one line) - Go back to PoS, and try to pay for the order opw-3614770 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#147286
Original PR description
Current behavior: When a quotation is modified and the order is settled in the same time, you get an error when trying to pay for the order. Steps to reproduce: - Create a quotation with 3 lines - Settle the order in the PoS - Modify the quotation (remove one line) - Go back to PoS, and try to pay for the order opw-3614770 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#147286
Steps to reproduce: - Create a product with AVCO that you invoice on Ordered quantities in the Vendor tab. - Create a PO with a value of 200 - Create an invoice and change the price to 100. Then cancel the Invoice. - Create a new invoice and confirm it without changing anything (so price is 200) - Receive the product - The valuation will be 150, the average of the 2 invoices. Bug: all linked invoices are taken into account Fix: only consider posted ones opw-3633051 Forward-Port
Original PR description
Steps to reproduce: - Create a product with AVCO that you invoice on Ordered quantities in the Vendor tab. - Create a PO with a value of 200 - Create an invoice and change the price to 100. Then cancel the Invoice. - Create a new invoice and confirm it without changing anything (so price is 200) - Receive the product - The valuation will be 150, the average of the 2 invoices. Bug: all linked invoices are taken into account Fix: only consider posted ones opw-3633051 Forward-Port-Of: odoo/odoo#146644
Configure a product having category set with: - Costing Method: Average Cost (AVCO) - Inventory Valuation: Manual Create a purchase order with the product Confirm Receive Products Create bill (do not set date) Confirm Traceback will appear: 'AssertionError: convert amount from unknown date' It occurs because of an attempted currency conversion without a date As the bill is without date it should raise an UserError instead opw-3628295 Description of the issue/feature this PR a
Original PR description
Configure a product having category set with: - Costing Method: Average Cost (AVCO) - Inventory Valuation: Manual Create a purchase order with the product Confirm Receive Products Create bill (do not set date) Confirm Traceback will appear: 'AssertionError: convert amount from unknown date' It occurs because of an attempted currency conversion without a date As the bill is without date it should raise an UserError instead opw-3628295 Description of the issue/feature this PR addresses: Forward-Port-Of: odoo/odoo#145592
Steps to reproduce: - Inventory -> Delivery -> New Planned transfer - Add two lines with two different products and save - Set different scheduled dates for each move - Set the earliest move quantity_done to the demand - Validate and create a backorder Issue: The done picking scheduled date will be changed to the latest move (that is moved to the backorder). This is due to a recompute of the picking's scheduled_date *before* the remaining moves are assigned to the backorder. opw-3
Original PR description
Steps to reproduce: - Inventory -> Delivery -> New Planned transfer - Add two lines with two different products and save - Set different scheduled dates for each move - Set the earliest move quantity_done to the demand - Validate and create a backorder Issue: The done picking scheduled date will be changed to the latest move (that is moved to the backorder). This is due to a recompute of the picking's scheduled_date *before* the remaining moves are assigned to the backorder. opw-3346598 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#146513 Forward-Port-Of: odoo/odoo#143377
Befoer this commit, duplicating a POS payment method led to automatic assignment to the source payment method's POS configs. This behavior caused issues, particularly when the POS session was open. opw-3635647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#146192
Original PR description
Befoer this commit, duplicating a POS payment method led to automatic assignment to the source payment method's POS configs. This behavior caused issues, particularly when the POS session was open. opw-3635647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#146192
Before this commit, the value displayed on the dashboard for an allocation was the value computed as "virtual_remaining_leaves". However, this value is computed to take into account the remaining time before the allocation expiration date. Reproduce the issue: - have a given time off type without allocation - create for any employee an allocation on that time off type - have an end date for that allocation so that the remaining time before the end of the allocation is inferior to the numbe
Original PR description
Before this commit, the value displayed on the dashboard for an allocation was the value computed as "virtual_remaining_leaves". However, this value is computed to take into account the remaining time before the allocation expiration date. Reproduce the issue: - have a given time off type without allocation - create for any employee an allocation on that time off type - have an end date for that allocation so that the remaining time before the end of the allocation is inferior to the number of days given - go on that employee's time off dashboard Current result: The given value for that time off type is the time remaining before the end of the allocation What's expected: We should see the remaining time off of the employee regardless of when the allocation ends. Fix: What's displayed is now the max leaves minus the virtual taken leaves, so that the virtual remaining leaves is left unmodified for other usages. task-3650007 Forward-Port-Of: odoo/odoo#147099
Since [1] when the `Colorpicker` template cache was moved from `ColorPalette` to `getColorPickerTemplateService`, the custom buttons fill color cannot be set as a gradient anymore. This happens because the needed `getTemplate` props is injected for the font and background colors, for the `we-colorpicker` but not for the link tools color palettes. This commit restores the gradient color selection for custom buttons by linking the `getColorPickerTemplateService` to the link tools color palette
Original PR description
Since [1] when the `Colorpicker` template cache was moved from `ColorPalette` to `getColorPickerTemplateService`, the custom buttons fill color cannot be set as a gradient anymore. This happens because the needed `getTemplate` props is injected for the font and background colors, for the `we-colorpicker` but not for the link tools color palettes. This commit restores the gradient color selection for custom buttons by linking the `getColorPickerTemplateService` to the link tools color palettes. Steps to reproduce: - Edit Home page. - Click on "Contact Us" link in header. - Select link style "Custom" in link tools. - Open "Fill Color" palette. => Gradient tab was not shown in palette. [1]: https://github.com/odoo/odoo/commit/1d2e54088b0f0e28464ab6aa884fb2e1110e8e04 task-3641914 Forward-Port-Of: odoo/odoo#146485
A anchor menu in the mobile offcanvas related to an element in the current page doesn't work in offcanvas. This is because the menu anchor navigation is hooked to use our own scrolling behavior instead of the browser one. Doing so, we preventDefault, which prevent the offcanvas menu to close itself when clicking on a anchor menu. This commit simply manually close the offcanvas and once the closing animation is complete, starts our own smooth scrolling. Another possibility would h
Original PR description
A anchor menu in the mobile offcanvas related to an element in the current page doesn't work in offcanvas. This is because the menu anchor navigation is hooked to use our own scrolling behavior instead of the browser one. Doing so, we preventDefault, which prevent the offcanvas menu to close itself when clicking on a anchor menu. This commit simply manually close the offcanvas and once the closing animation is complete, starts our own smooth scrolling. Another possibility would have been to just close manually the offcanvas without a preventDefault and without a call to our custom scrolling method. Doing so, the browser would naturally scroll to the element while we close the offcanvas but it would be less elegant as you wouldn't see the scrolling animation. Note that the offcanvas was introduced with commit [1]. [1]: https://github.com/odoo/odoo/commit/bc13176de8d66bbdc1c536017b1f046c5fd31a86 opw-3604963 Forward-Port-Of: odoo/odoo#146132
Since the action buttons are not field nodes, the 'invisible' attribute doesn't do anything. The only way to make them invisible is to have an 'invisible' key in attrs/modifiers. The 'states' attribute was removed, since ir_ui_view overwrites the 'invisible' item in the modifiers dict if 'states' exists in the node. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#126812
Original PR description
Since the action buttons are not field nodes, the 'invisible' attribute
doesn't do anything. The only way to make them invisible is to have an
'invisible' key in attrs/modifiers.
The 'states' attribute was removed, since ir_ui_view overwrites the
'invisible' item in the modifiers dict if 'states' exists in the node.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#126812