Tuesday, April 29, 2025
14 changes · saas-17.4
Resolved issues and error corrections
This update fixes an automated test walkthrough used when creating project-related sales order lines. It helps ensure the process is tested reliably by selecting the correct item in the popup and saving it properly.
Original PR description
the tour was not working because the sale order item wasn't being selected in the modal and the save button was not being selected because (It is not allowed to do action on an element that's below a modal). build_error-163102
This fix ensures Odoo correctly records model relationships that are created through delegated fields. It improves internal metadata accuracy, helping related system features and developer tools reflect the real model structure.
Original PR description
When we reflect inherit models in the database, we walk through the MRO to have access to the module that added the info. This mean that we skipped the inherits created by delegate fields (the info is in the `_inherits` of the final model in the registry, but we don't process it as we don't know the origin module). 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
This change skips an unreliable internal test for the online shop administration flow in this maintenance version. The underlying issue is already fixed in later versions, so this avoids unnecessary disruption without changing customer-facing behavior.
Original PR description
The following test was fixed in version above 17.4 but it is not worth to fix in thei intermediary version rb-102094
Miscellaneous changes
Steps to reproduce the bug: - Use Edge browser with zoom set to 150% (default zoom on Windows installations). - On a screen with a resolution of 1920px (and the browser window set to full width). - Install the Website app and go to the homepage. - The page is displayed in desktop view. - Enter edit mode by clicking the "Edit" button. - The page width becomes smaller than the mobile breakpoint. As a result , the page switches to mobile view: the navbar turns into a hamburger menu, and the
Original PR description
Steps to reproduce the bug: - Use Edge browser with zoom set to 150% (default zoom on Windows installations). - On a screen with a resolution of 1920px (and the browser window set to full width). -…
Steps to reproduce the bug: - Use Edge browser with zoom set to 150% (default zoom on Windows installations). - On a screen with a resolution of 1920px (and the browser window set to full width). - Install the Website app and go to the homepage. - The page is displayed in desktop view. - Enter edit mode by clicking the "Edit" button. - The page width becomes smaller than the mobile breakpoint. As a result , the page switches to mobile view: the navbar turns into a hamburger menu, and the layout changes to mobile style. This should not happen, as the edit mode is designed to remain in desktop view with 150% zoom on 1920px wide screens. The issue is caused by Edge adding a few pixels of border around the browser window, which leads to this problem specific to Edge. To fix this in the stable version, we reduce the sidebar width in edit mode by 5 pixels to ensure the page stays in desktop view. This change is applied only if the browser is Edge and 150% zoom is used. In all other cases, no changes are made. This fix is temporary. In the next redesign of the edit mode sidebar, the sidebar width will be adjusted accordingly so that this workaround will no longer be necessary. Note: The Arc browser has the same issue, but we haven’t fixed it because there’s currently no way to reliably detect it in JavaScript. Since Arc is much less popular than Edge, it’s less critical. task-4587203 Forward-Port-Of: odoo/odoo#205721
When uninstalling Odoo with the NSIS uninstaller, whole install dir is removed when ngingx is not found which is not the desired behavior. While at it, update the NSIS version. Forward-Port-Of: odoo/odoo#207464
Original PR description
When uninstalling Odoo with the NSIS uninstaller, whole install dir is removed when ngingx is not found which is not the desired behavior. While at it, update the NSIS version. Forward-Port-Of: odoo/odoo#207464
(wrote by LSE) Before this commit: If an error happened when trying to synchronise a PoS order nothing is saved on the backend to inform the user regarding the error. Note: Odoo logs would contain the information, but it is out of reach for certain clients (on odoo online for instance). In theory, we can't lose any information as, if the sync process raise an exception, the order is still on the PoS browser cache that will then try to be resync when another order sync happen. But,
Original PR description
(wrote by LSE) Before this commit: If an error happened when trying to synchronise a PoS order nothing is saved on the backend to inform the user regarding the error. Note: Odoo logs would contain…
(wrote by LSE) Before this commit: If an error happened when trying to synchronise a PoS order nothing is saved on the backend to inform the user regarding the error. Note: Odoo logs would contain the information, but it is out of reach for certain clients (on odoo online for instance). In theory, we can't lose any information as, if the sync process raise an exception, the order is still on the PoS browser cache that will then try to be resync when another order sync happen. But, in practice, the support received some cases of "missing PoS orders". Which can happen as we fully rely on the client browser cache that can be cleared or use another computer/browser/session. After this commit: If an order can not be processed in the backend: - the PoS order data is saved in the PoS session attachments - a scheduled activity is created in the PoS session As an un-synced keep being tried to be sync (and will likely fail each time), we compare it with the already attached one to avoid having the content repeated multiple times. If the order was modified in between, a new attachment with the same name is created. Note: draft orders that will fail to validate are NOT stored The attachment and activity are automatically removed when the order of same reference is validated  opw-3650239 Forward-Port-Of: odoo/odoo#167269 Forward-Port-Of: odoo/odoo#147130
### Steps to reproduce: - Go to Expenses > Expense Reports - Make sure that no expenses are present to make the sample data display - Try clicking on the left panel to change the filter on the status - It doesn't work ### Cause: The display of sample data adds the class "o_view_sample_data" to the `Layout` component containing the control panel, the search panel and the list ([see](https://github.com/odoo/odoo/blob/e1b6f55840c9d5e2c0f6705add8d82a311fb04a7/addons/web/static/src/views/list
Original PR description
### Steps to reproduce: - Go to Expenses > Expense Reports - Make sure that no expenses are present to make the sample data display - Try clicking on the left panel to change the filter on the status…
### Steps to reproduce: - Go to Expenses > Expense Reports - Make sure that no expenses are present to make the sample data display - Try clicking on the left panel to change the filter on the status - It doesn't work ### Cause: The display of sample data adds the class "o_view_sample_data" to the `Layout` component containing the control panel, the search panel and the list ([see](https://github.com/odoo/odoo/blob/e1b6f55840c9d5e2c0f6705add8d82a311fb04a7/addons/web/static/src/views/list/list_controller.xml#L6)). When this class is added, the events are ignored for div with `form-check` ([see](https://github.com/odoo/odoo/blob/e1b6f55840c9d5e2c0f6705add8d82a311fb04a7/addons/web/static/src/views/view.scss#L7-L10)) As the `SearchPanel` component is inside the `Layout` component and contains form-check for the filters on Selection fields (state for example), this filter also gets deactivated. ### Solution: Add the class `o_view_sample_data` in the Renderer and not the Controller component, this way we make sure that only the interactions with the sample data get deactivated. Doing this implies adding a prop in the Renderer to pass the value of `useSampleModel` to the renderer. Fix done for the list and kanban view which are problematic with the Expense Reports page. opw-4707016 Forward-Port-Of: odoo/odoo#206060
When settling an order from the POS, the amount to invoice was not correctly computed. Steps to reproduce: ------------------- * Create a draft sale order with a product * Go to the POS and select the order * Pay for the order * Go to the backend and check the amount to invoice > Observation: The amount to invoice is still the full order amount Why the fix: ------------ We should take into account the PoS payment lines when computing the amount to invoice of an order. opw-460367
Original PR description
When settling an order from the POS, the amount to invoice was not correctly computed. Steps to reproduce: ------------------- * Create a draft sale order with a product * Go to the POS and select the order * Pay for the order * Go to the backend and check the amount to invoice > Observation: The amount to invoice is still the full order amount Why the fix: ------------ We should take into account the PoS payment lines when computing the amount to invoice of an order. opw-4603671 Forward-Port-Of: odoo/odoo#202950
In 80ff2d2 hooks were added so that we can guarantee currency exchange diff journal entries & items in the proper journal & account- but an accountant doesn't necessarily have a group that permits access to the `Stock.valuation.layer` model (which is checked raw, without sudo, when `stock_account` is installed) -> AccessError So we will always allow access to an SVL record in this context via `sudo()`. Forward-Port-Of: odoo/odoo#207897
Original PR description
In 80ff2d2 hooks were added so that we can guarantee currency exchange diff journal entries & items in the proper journal & account- but an accountant doesn't necessarily have a group that permits access to the `Stock.valuation.layer` model (which is checked raw, without sudo, when `stock_account` is installed) -> AccessError So we will always allow access to an SVL record in this context via `sudo()`. Forward-Port-Of: odoo/odoo#207897
**Current behavior:** Scanning a package type in an MO in barcode while having a raw move line (component line) selected will result in a traceback. **Expected behavior:** Put the comp line in a new pack of that package type. **Steps to reproduce:** 1. Make a packge type 2. Make a new MO -> open it in barcode 3. Scan some component, select the new line 4. Scan the barcode of the package type -> traceback **Cause of the issue:** We end up calling `action_put_in_pack` when `
Original PR description
**Current behavior:** Scanning a package type in an MO in barcode while having a raw move line (component line) selected will result in a traceback. **Expected behavior:** Put the comp line in a new pack of that package type. **Steps to reproduce:** 1. Make a packge type 2. Make a new MO -> open it in barcode 3. Scan some component, select the new line 4. Scan the barcode of the package type -> traceback **Cause of the issue:** We end up calling `action_put_in_pack` when `this.resModel` is `MrpProduction` (which does not define this method). **Fix:** We already have the values required to make the new package -> so make it and assign it to the `result_package_id` of the selected move line. opw-4564834 Forward-Port-Of: odoo/enterprise#81374
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#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#77595
Before this commit, the user could have a crash when he tries to create a shift in non-working period because the method to search on the right timezone to use does not take into account the shift could be not linked to a resource. This commit makes sure the timezone is correctly found without any issue when we search on a timezone. Forward-Port-Of: odoo/enterprise#84224
Original PR description
Before this commit, the user could have a crash when he tries to create a shift in non-working period because the method to search on the right timezone to use does not take into account the shift could be not linked to a resource. This commit makes sure the timezone is correctly found without any issue when we search on a timezone. Forward-Port-Of: odoo/enterprise#84224
Currently, when validating multiple deliveries at once for which at least two are from the same sale order, the related shipping labels are getting printed multiple times. Steps to reproduce: ------------------- * Install fedex * In operation types, select Delivery Orders then hardware * In print on validation, enable Carrier Labels * In the shipping methods, select fedex international * Change Label format to ZPL11 * Connect the database to an iot box * Set up the shipping labels to
Original PR description
Currently, when validating multiple deliveries at once for which at least two are from the same sale order, the related shipping labels are getting printed multiple times. Steps to reproduce:…
Currently, when validating multiple deliveries at once for which at least two are from the same sale order, the related shipping labels are getting printed multiple times. Steps to reproduce: ------------------- * Install fedex * In operation types, select Delivery Orders then hardware * In print on validation, enable Carrier Labels * In the shipping methods, select fedex international * Change Label format to ZPL11 * Connect the database to an iot box * Set up the shipping labels to be send on zebra printer * Create a sale order, using fedex international as shipping * Confirm the SO * Select the delivery * Duplicate the delivery * Validate both deliveries delivery > Observation: I have 4 jobs send for printing instead of 2 Why the fix: ------------ Actually the issue has the same explanation as this commit https://github.com/odoo/enterprise/commit/34267c4fa8c9aaa7c0216de13111a81fb53a67f1 as the IoT overrides `message_post` to send printing jobs each time a message is posted in the chatter. https://github.com/odoo/enterprise/blob/8075101192fb81a78f2a984cf2adf67fc77c0194/delivery_iot/models/stock_picking.py#L30-L46 opw-4526013 Forward-Port-Of: odoo/enterprise#82091
When the user tries to reply a whatsapp message, a traceback will appear. Steps to reproduce the Error: - Install ``whatsapp`` and ``contacts`` module - Go to WhatsApp > Configuration > WhatsApp Business Account > create a new account > Default Users: Mitchell Admin > Save - Go to Contacts > Open Mitchell Admin > Set Phone > Click on Whatsapp > Send a message with any template - Contact will receive the message > Reply to that whatsapp message Traceback: ``` UniqueViolation d
Original PR description
When the user tries to reply a whatsapp message, a traceback will appear. Steps to reproduce the Error: - Install ``whatsapp`` and ``contacts`` module - Go to WhatsApp > Configuration > WhatsApp…
When the user tries to reply a whatsapp message, a traceback will appear. Steps to reproduce the Error: - Install ``whatsapp`` and ``contacts`` module - Go to WhatsApp > Configuration > WhatsApp Business Account > create a new account > Default Users: Mitchell Admin > Save - Go to Contacts > Open Mitchell Admin > Set Phone > Click on Whatsapp > Send a message with any template - Contact will receive the message > Reply to that whatsapp message Traceback: ``` UniqueViolation duplicate key value violates unique constraint "discuss_channel_member_partner_unique" DETAIL: Key (channel_id, partner_id)=(84, 175) already exists. ``` https://github.com/odoo/enterprise/blob/daac4da302e63f87fe3f244099e26b47d08d7cfb/whatsapp/models/discuss_channel.py#L250 At lines [1] and [2], the same partner(s) (e.g., Mitchell Admin) are added to ``partners_to_notify`` multiple times. Channel members should be unique. So, when it tries to create ``channel_member_ids`` with same partners, It will lead to the above traceback. 1- https://github.com/odoo/enterprise/blob/daac4da302e63f87fe3f244099e26b47d08d7cfb/whatsapp/models/discuss_channel.py#L219 2- https://github.com/odoo/enterprise/blob/daac4da302e63f87fe3f244099e26b47d08d7cfb/whatsapp/models/discuss_channel.py#L249 sentry-6252537579 Forward-Port-Of: odoo/enterprise#83908