Navigate
Branch
Monday, December 30, 2024
42 changes
6 changes
Miscellaneous changes
### Issue: Certain carrier's API processes validity checks and parcels generation one picking at a time so that on our end we are forced to send requests one at a time at the end of the the `_action_done`: https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/stock/models/stock_picking.py#L918 https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/delivery/models/stock_picking.py#L192-L196 However, since a UserError of any of the picking
Original PR description
### Issue: Certain carrier's API processes validity checks and parcels generation one picking at a time so that on our end we are forced to send requests one at a time at the end of the the…
### Issue: Certain carrier's API processes validity checks and parcels generation one picking at a time so that on our end we are forced to send requests one at a time at the end of the the `_action_done`: https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/stock/models/stock_picking.py#L918 https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/delivery/models/stock_picking.py#L192-L196 However, since a UserError of any of the picking will cause a rollback of the entire batch on Odoo's side, pikcings might end up being processed on the carrier side but non validated on Odoo's side during batch validation. ### Steps to reproduce: - Configure sendcloud shipping method + website + payment providers - In your sendcloud configuration select sendcloud shipping product to not be able to handle products with a weight exceeding 10 kg e.g; bpost @home (0-10kg). - Create 2 storable products with respective weigth 1 and 100 kg. - Publish them on the website for sale. - Open a private window, make an order via the website for the 1kg product by filling your cart and use sendcloud as carrier. - Repeat the operation with the other product to generate a seconde SO. - Back to your main window > Inventory Overview > Delivery Orders - Select both deliveries > Action > Validate (in batch) #### > While the first delivery order was processed on carrier side (can be checked on sendcloud's website) #### > the UserError of the second DO rollbacked its validation in Odoo. ### Fix: As such, and since the carrier requests needs to happen after we have validated the pickings in Odoo, we should avoid any rollback of the transaction once any requests has already been successfully treated on the carrier side. ### Note: It is not possible restructure the code to use `senf.env.cr.savepoint` in a loop in order to reset the validation of pickings that are not valid on the carrier side because savepoints can't be used more than 64 times before the server crashes and hence can't be used in record loops. enterprise: https://github.com/odoo/enterprise/pull/75502 opw-4357325 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191235 Forward-Port-Of: odoo/odoo#190320
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div` elements for the first and last columns (or sometimes only one of them). This occurs because the columns are partially selected (content but not container). **Solution**: To ensure `range.extractContents` removes the columns completely, extend the selection to encompass the entire content of the
Original PR description
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div`…
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div` elements for the first and last columns (or sometimes only one of them). This occurs because the columns are partially selected (content but not container). **Solution**: To ensure `range.extractContents` removes the columns completely, extend the selection to encompass the entire content of the `o_text_columns` element when the selection starts at the first leaf and ends at the last leaf within the columns. **Steps to reproduce**: 1. Open the editor. 2. Create columns (any number). 3. Select all content (e.g., with `Ctrl+A`). 4. Press `Backspace` to delete the content. 5. Observe that the DOM still contains `o_text_columns` and `row` elements, even though the content appears deleted. opw-4350486 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191671 Forward-Port-Of: odoo/odoo#189978
Previously, the "Images Subtitles" template in the Megamenu had an issue where the images were stretching vertically to fill the container's height. Adding an additional class to the container fixes the styling and maintains the images' correct aspect ratio. task-4203427  Forward-Port-Of: odoo/odoo#191932 Forward-Port-Of: odoo/odoo#182903
Original PR description
Previously, the "Images Subtitles" template in the Megamenu had an issue where the images were stretching vertically to fill the container's height. Adding an additional class to the container fixes the styling and maintains the images' correct aspect ratio. task-4203427  Forward-Port-Of: odoo/odoo#191932 Forward-Port-Of: odoo/odoo#182903
Before this fix it was not possible to reconcile the stock valuation lines created from PoS as one of them was missing the partner_id Steps to reproduce: ------------------- * Activate automatic stock valuation for the `All` category * Sell a product and ship it later * Close the session and go to the accounting entries > Observation: 2 of them are not reconciled, when clicking on reconcile it was not finding the good one to reconcile with opw-4395468 Forward-Port-Of: odoo/odoo#190
Original PR description
Before this fix it was not possible to reconcile the stock valuation lines created from PoS as one of them was missing the partner_id Steps to reproduce: ------------------- * Activate automatic stock valuation for the `All` category * Sell a product and ship it later * Close the session and go to the accounting entries > Observation: 2 of them are not reconciled, when clicking on reconcile it was not finding the good one to reconcile with opw-4395468 Forward-Port-Of: odoo/odoo#190519
Issue: In the task action view of the sale order, the task ID is passed in the action domain, which results in showing only old tasks. Newly created tasks are not visible because their IDs are not included in the domain. Solution: Instead of passing task ids, we now check for project_id, sale_order_id, or sale_line_id to ensure the new tasks are properly displayed. Steps to Reproduce: - Install the sale_project module. - Create a Sale Order (SO). - Add a product con
Original PR description
Issue: In the task action view of the sale order, the task ID is passed in the action domain, which results in showing only old tasks. Newly created tasks are not visible because their IDs are not included in the domain. Solution: Instead of passing task ids, we now check for project_id, sale_order_id, or sale_line_id to ensure the new tasks are properly displayed. Steps to Reproduce: - Install the sale_project module. - Create a Sale Order (SO). - Add a product configured to create a project with tasks. - Click on the "Tasks" smart button from the SO. - Go to the Kanban view. - Create a new task and give a name. - Reload the page. - Check if the task is visible (the issue was that new tasks were not visible). Affected PR: https://github.com/odoo/odoo/pull/135771/files task-4224564 Forward-Port-Of: odoo/odoo#191586 Forward-Port-Of: odoo/odoo#184879
Before this commit, even if no foldable link items were present in the navbar of a website header, the function to check if items needed to be hidden was still executed. After this commit, if no foldable items are present in the navbar, the function is not executed. Running the function when no items are present can, in rare cases, cause errors (e.g., starting from version 17.0, if the "sales 1" header template contains no links and the page is zoomed). This is why we addressed this issue
Original PR description
Before this commit, even if no foldable link items were present in the navbar of a website header, the function to check if items needed to be hidden was still executed. After this commit, if no foldable items are present in the navbar, the function is not executed. Running the function when no items are present can, in rare cases, cause errors (e.g., starting from version 17.0, if the "sales 1" header template contains no links and the page is zoomed). This is why we addressed this issue in this commit. opw-4390661 Forward-Port-Of: odoo/odoo#191793 Forward-Port-Of: odoo/odoo#191233
10 changes
Resolved issues and error corrections
This fix ensures customers requesting Mexican POS invoices must provide their RFC/VAT and zip code, preventing invoices from being incorrectly issued to the generic public customer. It also corrects portal billing field handling so the required information is validated consistently.
Original PR description
Manual forward port of https://github.com/odoo/odoo/pull/187674 In the l10n_mx localization, the field RFC(VAT) and zipcode should be required to prevent the field from being defaulted to "public en…
Manual forward port of https://github.com/odoo/odoo/pull/187674 In the l10n_mx localization, the field RFC(VAT) and zipcode should be required to prevent the field from being defaulted to "public en general". How to reproduce: -Install l10n_mx and pos -Activate the option "Generate a code on ticket" -Go to POS and sell an article to generate the ticket -Go to the POS portal to request an invoice (/pos/ticket/) -Fill all the fields except for RFC -Odoo does not request this field and allows the client to submit the information -The invoice will be generated to "public en general" and not to the client requesting the invoice (Expected when there is no RFC) In addons/portal/views/portal_templates.xml, zip was used which was not part of OPTIONAL_BILLING_FIELDS in addons/portal/controllers/portal.py. This forces us to manually inject data['zipcode'] to data['zip'] in `details_form_validate` opw-4332357 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Refreshing the Inventory Replenishment page now restores the correct menu context. This prevents the top navigation from disappearing, helping users continue their work without confusion or extra navigation steps.
Original PR description
**Problem**: In saas-17.2, the new URL structure no longer includes `menu_id`, which was previously used to set the current menu upon page refresh: https://github.com/odoo/odoo/blob/1443e5503c7396512a078f9f52fd4cb31b62e202/addons/web/static/src/webclient/webclient.js#L76 This change causes issues for actions like `action_orderpoint_replenish`, which are not directly tied to any `ir.ui.menu` and lack a `menu_id` in the URL: https://github.com/odoo/odoo/blob/535a02565f9e9142f0ef1fe9f44d1935f7b42075/addons/web/static/src/webclient/webclient.js#L59-L65 As a result, the menuId becomes `undefined`, leading to the top menu not being loaded properly. **Solution**: Add a path to action to ensure that it is properly reloaded. **Steps to reproduce**: 1. Navigate to *Inventory > Replenishment*. 2. Refresh the page. 3. Observe that the top menu disappears. opw-4350871
Miscellaneous changes
**Problem**: After this commit: https://github.com/odoo/odoo/commit/cf8f0ff7ba4bb33425003399bc4e5b33d3d5629a the toolbar is hidden when it overflows (`this.toolbar.classList.toggle('d-none', distToScrollContainer < OFFSET / 2);`). This behavior is not suitable for selections containing elements with a height that exceeds the viewport, as the toolbar becomes inaccessible. **Solution**: Ensure the toolbar is always visible, even when overflowing. In such cases, reposition the toolbar to alig
Original PR description
**Problem**: After this commit: https://github.com/odoo/odoo/commit/cf8f0ff7ba4bb33425003399bc4e5b33d3d5629a the toolbar is hidden when it overflows (`this.toolbar.classList.toggle('d-none',…
**Problem**:
After this commit:
https://github.com/odoo/odoo/commit/cf8f0ff7ba4bb33425003399bc4e5b33d3d5629a the toolbar is hidden when it overflows (`this.toolbar.classList.toggle('d-none', distToScrollContainer < OFFSET / 2);`). This behavior is not suitable for selections containing elements with a height that exceeds the viewport, as the toolbar becomes inaccessible.
**Solution**:
Ensure the toolbar is always visible, even when overflowing. In such cases, reposition the toolbar to align with the top of the selection, providing consistent accessibility.
**Picture before fix**
***top***

***bottom***

**Picture after fix**
***top***

***bottom***

**Steps to reproduce**:
1. Add an image to the editor that overflows the viewport.
2. Select the image.
3. Observe that the toolbar does not appear.
opw-4398551
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#190465Previously, the "Images Subtitles" template in the Megamenu had an issue where the images were stretching vertically to fill the container's height. Adding an additional class to the container fixes the styling and maintains the images' correct aspect ratio. task-4203427  Forward-Port-Of: odoo/odoo#191932 Forward-Port-Of: odoo/odoo#182903
Original PR description
Previously, the "Images Subtitles" template in the Megamenu had an issue where the images were stretching vertically to fill the container's height. Adding an additional class to the container fixes the styling and maintains the images' correct aspect ratio. task-4203427  Forward-Port-Of: odoo/odoo#191932 Forward-Port-Of: odoo/odoo#182903
Before this fix it was not possible to reconcile the stock valuation lines created from PoS as one of them was missing the partner_id Steps to reproduce: ------------------- * Activate automatic stock valuation for the `All` category * Sell a product and ship it later * Close the session and go to the accounting entries > Observation: 2 of them are not reconciled, when clicking on reconcile it was not finding the good one to reconcile with opw-4395468 Forward-Port-Of: odoo/odoo#190
Original PR description
Before this fix it was not possible to reconcile the stock valuation lines created from PoS as one of them was missing the partner_id Steps to reproduce: ------------------- * Activate automatic stock valuation for the `All` category * Sell a product and ship it later * Close the session and go to the accounting entries > Observation: 2 of them are not reconciled, when clicking on reconcile it was not finding the good one to reconcile with opw-4395468 Forward-Port-Of: odoo/odoo#190519
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div` elements for the first and last columns (or sometimes only one of them). This occurs because the columns are partially selected (content but not container). **Solution**: To ensure `range.extractContents` removes the columns completely, extend the selection to encompass the entire content of the
Original PR description
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div`…
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div` elements for the first and last columns (or sometimes only one of them). This occurs because the columns are partially selected (content but not container). **Solution**: To ensure `range.extractContents` removes the columns completely, extend the selection to encompass the entire content of the `o_text_columns` element when the selection starts at the first leaf and ends at the last leaf within the columns. **Steps to reproduce**: 1. Open the editor. 2. Create columns (any number). 3. Select all content (e.g., with `Ctrl+A`). 4. Press `Backspace` to delete the content. 5. Observe that the DOM still contains `o_text_columns` and `row` elements, even though the content appears deleted. opw-4350486 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191671 Forward-Port-Of: odoo/odoo#189978
Step to Reproduce: 1. Enter the edit mode of Homepage 2. click on drop zone area having "Drag building blocks here" message. -> sometime the "drag and drop a building block here" unexpectedly moves up. which should stay as it is. Before this commit, all `<p>` and `<div>` elements were considered as potential PowerBox elements, making them editable using the `/` command. This occurred even when the elements had the `o_not_editable` class or `contenteditable="false"` attribute. For
Original PR description
Step to Reproduce: 1. Enter the edit mode of Homepage 2. click on drop zone area having "Drag building blocks here" message. -> sometime the "drag and drop a building block here" unexpectedly moves…
Step to Reproduce: 1. Enter the edit mode of Homepage 2. click on drop zone area having "Drag building blocks here" message. -> sometime the "drag and drop a building block here" unexpectedly moves up. which should stay as it is. Before this commit, all `<p>` and `<div>` elements were considered as potential PowerBox elements, making them editable using the `/` command. This occurred even when the elements had the `o_not_editable` class or `contenteditable="false"` attribute. For example, in the case of the `#wrap` element, it has the `o_editable` class along with `contenteditable="false"`. This caused PowerBox element or placeholders to be added unnecessarily, even though no text editing was allowed. In this commit, we adapted the solution merged[1] in master and specify the selector to make sure that no command hint shown on div while having `o_not_editable` class or `contenteditable=false` attribute. [1] https://github.com/odoo/odoo/commit/302250cdde936a47048b8f3403e024e2e617ace7 Before this PR :  Desired behavior after PR is merged: No hint/placeholder is added to contenteditable false block, resulting in data editor message to stay on its place. task-3443430 Forward-Port-Of: odoo/odoo#153001
### Issue: Certain carrier's API processes validity checks and parcels generation one picking at a time so that on our end we are forced to send requests one at a time at the end of the the `_action_done`: https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/stock/models/stock_picking.py#L918 https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/delivery/models/stock_picking.py#L192-L196 However, since a UserError of any of the picking
Original PR description
### Issue: Certain carrier's API processes validity checks and parcels generation one picking at a time so that on our end we are forced to send requests one at a time at the end of the the…
### Issue: Certain carrier's API processes validity checks and parcels generation one picking at a time so that on our end we are forced to send requests one at a time at the end of the the `_action_done`: https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/stock/models/stock_picking.py#L918 https://github.com/odoo/odoo/blob/e4f68fc6eb2a666a07b6627b9dc0ec575b79d1e3/addons/delivery/models/stock_picking.py#L192-L196 However, since a UserError of any of the picking will cause a rollback of the entire batch on Odoo's side, pikcings might end up being processed on the carrier side but non validated on Odoo's side during batch validation. ### Steps to reproduce: - Configure sendcloud shipping method + website + payment providers - In your sendcloud configuration select sendcloud shipping product to not be able to handle products with a weight exceeding 10 kg e.g; bpost @home (0-10kg). - Create 2 storable products with respective weigth 1 and 100 kg. - Publish them on the website for sale. - Open a private window, make an order via the website for the 1kg product by filling your cart and use sendcloud as carrier. - Repeat the operation with the other product to generate a seconde SO. - Back to your main window > Inventory Overview > Delivery Orders - Select both deliveries > Action > Validate (in batch) #### > While the first delivery order was processed on carrier side (can be checked on sendcloud's website) #### > the UserError of the second DO rollbacked its validation in Odoo. ### Fix: As such, and since the carrier requests needs to happen after we have validated the pickings in Odoo, we should avoid any rollback of the transaction once any requests has already been successfully treated on the carrier side. ### Note: It is not possible restructure the code to use `senf.env.cr.savepoint` in a loop in order to reset the validation of pickings that are not valid on the carrier side because savepoints can't be used more than 64 times before the server crashes and hence can't be used in record loops. enterprise: https://github.com/odoo/enterprise/pull/75502 opw-4357325 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191235 Forward-Port-Of: odoo/odoo#190320
- Implemented proper validation logic for Uruguayan VAT numbers (RUT). - Now supports VAT numbers starting with '22', addressing previous validation issues. - Corrections in l10n_uy tests due to changes in logic. Task: 1292 adhoc-task-side: 45613 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191780 Forward-Port-Of: odoo/odoo#191066
Original PR description
- Implemented proper validation logic for Uruguayan VAT numbers (RUT). - Now supports VAT numbers starting with '22', addressing previous validation issues. - Corrections in l10n_uy tests due to changes in logic. Task: 1292 adhoc-task-side: 45613 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191780 Forward-Port-Of: odoo/odoo#191066
Issue: ====== We can't insert a link with `/url` in mass mailing Steps to reproduce the issue: ============================= - Install website and email marketing - Create a new mass mailing - Add a button using `/button` - Add a label - Write `/` in url and choose any option make sure to click on it using the mouse - Save - The link isn't inserted Origin of the issue: ==================== When we click to select an item, the event `mousedown` is triggered on the document which
Original PR description
Issue: ====== We can't insert a link with `/url` in mass mailing Steps to reproduce the issue: ============================= - Install website and email marketing - Create a new mass mailing - Add a button using `/button` - Add a label - Write `/` in url and choose any option make sure to click on it using the mouse - Save - The link isn't inserted Origin of the issue: ==================== When we click to select an item, the event `mousedown` is triggered on the document which will force a wysiwyg blur. So the selection is no more in the editable and we can't insert the link. Solution: ========= To avoid the blur, we add the selector of the autocomplete to the selectors that delay the blur. opw-4283325 Forward-Port-Of: odoo/odoo#186638
9 changes
Enhancements to existing features
The payroll dashboard warning now counts only employees from the companies currently selected. This makes the warning more relevant and avoids misleading employee totals when working across multiple companies.
Original PR description
This PR improves the employee count displayed in the payroll dashboard warning. The count is now restricted to employees belonging to the selected companies. task-4334476
VoIP users now see an “In call” status when the widget is closed during an active call, so they know the call is still ongoing. If an incoming call is dismissed by closing the widget, the ringing stops while the VoIP icon gives a subtle vibration to keep the user aware of the call.
Original PR description
1. When you close the VoIP widget while you are in a call, it won't hang up but there is nothing to show that you are still in a call. So, this commit solves this by adding an "In call" status next to the voip icon when you are in a call. 2. When someone is calling you and you are busy, you close the widget, the call will stop ringing and a small vibration is added to the voip icon to show that there's an incoming call. Task-4398564 Subtask-4416855
The shop floor now uses one consistent manual consumption flow when operators register consumed components. This reduces confusion between separate consumption methods, improves the consumed component wizard, and adds barcode scanning support for faster shop floor entry.
Original PR description
In this commit: ===================== - Currently, there are two ways of registering component consumption in the shop floor interface: component moves (manual consumption) and component consumption steps. - Now we use the move mechanism (manual consumption) for the register component consumption type step. task-3976734
IoT Boxes now avoid re-downloading device handlers when they already have the latest version. They also receive only the handlers relevant to their platform, reducing unnecessary data transfer and startup work.
Original PR description
We currently download handlers from db on every restart of odoo service, even if they are up to date. We now compute the sha256 hash of the handlers, compare it with the one the IoT Box saved the first time it downloaded it and return a 304 (Not Modified) if they are already the latest version. We now also avoid sending handlers not corresponding to the platform (we don't send Windows drivers to physical IoT Box or Linux drivers to Windows IoT Box anymore). Community PR: [https://github.com/odoo/odoo/pull/190245](https://github.com/odoo/odoo/pull/190245) Task: 4107538
This change removes tracking from a Belgian payroll accounting test area so the related HR behavior is no longer recorded where it should not be. It helps reduce unnecessary tracking noise and aligns the payroll process with the intended privacy or operational expectations.
Original PR description
This should not be tracked. Task: 4384436
Resolved issues and error corrections
The point of sale receipt screen now prevents sending the same receipt multiple times to the same WhatsApp number. This reduces accidental duplicate messages to customers and helps keep receipt communication cleaner.
Original PR description
Previously, it was possible to send a receipt to the same whatsapp number multiple times from the receipt screen. This update addresses that issue by restricting users to send the receipt to each whatsapp number only once. related: https://github.com/odoo/odoo/pull/180602
Miscellaneous changes
Google recently updated the Firebase API and deprecated support for the version we are currently using (v6.3.4). As a result, Odoo push notifications are no longer functional. This PR updates the dependencies and API calls to align with the latest Firebase API, ensuring that push notifications can once again be sent from Odoo. see: https://firebase.google.com/docs/cloud-messaging/migrate-v1 task-4247811 Forward-Port-Of: odoo/enterprise#76266 Forward-Port-Of: odoo/enterprise#73390
Original PR description
Google recently updated the Firebase API and deprecated support for the version we are currently using (v6.3.4). As a result, Odoo push notifications are no longer functional. This PR updates the dependencies and API calls to align with the latest Firebase API, ensuring that push notifications can once again be sent from Odoo. see: https://firebase.google.com/docs/cloud-messaging/migrate-v1 task-4247811 Forward-Port-Of: odoo/enterprise#76266 Forward-Port-Of: odoo/enterprise#73390
Remove patches around tax calculations. Use the accounting calculations natively. As a result, there will be a limitation to use the `l10n_it_pos` properly. The taxes should be price-included when selling products in pos, otherwise, the system's calculations will deviate from the connected fiscal printer's calculations. The accounting team is looking for a native solution to make the fiscal printer work with price-excluded taxes. A workaround for the limitation is to introduce pricelist and f
Original PR description
Remove patches around tax calculations. Use the accounting calculations natively. As a result, there will be a limitation to use the `l10n_it_pos` properly. The taxes should be price-included when selling products in pos, otherwise, the system's calculations will deviate from the connected fiscal printer's calculations. The accounting team is looking for a native solution to make the fiscal printer work with price-excluded taxes. A workaround for the limitation is to introduce pricelist and fiscal position. The pricelist maps the originally tax-excluded price to tax-included price, and the fiscal position maps the price-excluded tax to price-included equivalent. Forward-Port-Of: odoo/enterprise#76184 Forward-Port-Of: odoo/enterprise#75426
- adapt the `copy_data` to not override the name set by another module Task: 4391527 Forward-Port-Of: odoo/enterprise#75524
Original PR description
- adapt the `copy_data` to not override the name set by another module Task: 4391527 Forward-Port-Of: odoo/enterprise#75524
13 changes
Resolved issues and error corrections
This fix ensures copied databases using Indian localization settings are neutralized so they do not contact live government or production services. It helps support teams investigate issues safely without risking real-world effects on customers or production records.
Original PR description
Since [1], the filed `l10n_in_edi_production_env` has been moved from module `l10n_in_edi` to `l10n_in`. `l10n_in_gstin_status` needs to be neutralized to not hit the production servers, but it does…
Since [1], the filed `l10n_in_edi_production_env` has been moved from module `l10n_in_edi` to `l10n_in`. `l10n_in_gstin_status` needs to be neutralized to not hit the production servers, but it does not depend on the `l1on_in_edi` module which holds the neutralization script. Even if the `l10n_in_gstin_status` does not end up performing operation that require a strict neutralization, future modules that also depend solely on `l10n_in` might not be so lucky, rendering this change absolutely necessary. The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/odoo/pull/175290
The HTML editor color picker now correctly shows which text or background color is already applied when users open it. This makes formatting clearer and avoids duplicate or missing custom color entries, reducing confusion while editing content.
Original PR description
**Current behavior before PR:** When there is a text having a text-color or background color, opening color selector doesn't highlight the button matching with that selected color in solid color tab. **Desired behavior before PR is merged:** Opening color selector highlights the button matching with that selected color in solid color tab. task-4341528 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix updates an automated test for the self-ordering point-of-sale feature so it selects the intended product directly. This makes test results more reliable and avoids failures caused by products appearing in a different order.
Original PR description
**Problem**: The product created during the tour test was not explicitly selected. It was selected implicitly because it appeared first in the product list. **Solution**: Explicitly select the product created during the test in the tour to ensure proper functionality and remove dependency on list order. runbot-110904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Reloading the Colombian DIAN configuration no longer crashes when a required certificate is missing. Instead, users receive a clear validation message so they can add or restore the certificate and continue configuration.
Original PR description
Currently, An error occurs when reloading the DIAN configuration in an account journal to obtain the security token of a certificate, if no certificate is available. Step to produce: - Install the `l10n_co_dian` module. - Navigate to Settings and click on Certificates under the Certificates and Keys section. - And delete a 'Demo DIAN Certificate'. - Open any Journals and click on a 'Reload DIAN configuration'. `IndexError: tuple index out of range` The error occurs because the system attempts to access the certificate's token from a company at [1], but it is not available. Link [1]: https://github.com/odoo/enterprise/blob/a354a19060338084df35a14ed7f21defc3c05c11/l10n_co_dian/xml_utils.py#L123 To resolve this issue, Raise a validation error if a certificate is not found when the system attempts to retrieve its security token. Sentry-6165073693
Miscellaneous changes
Previously, the "Images Subtitles" template in the Megamenu had an issue where the images were stretching vertically to fill the container's height. Adding an additional class to the container fixes the styling and maintains the images' correct aspect ratio. task-4203427  Forward-Port-Of: odoo/odoo#191932 Forward-Port-Of: odoo/odoo#182903
Original PR description
Previously, the "Images Subtitles" template in the Megamenu had an issue where the images were stretching vertically to fill the container's height. Adding an additional class to the container fixes the styling and maintains the images' correct aspect ratio. task-4203427  Forward-Port-Of: odoo/odoo#191932 Forward-Port-Of: odoo/odoo#182903
Tax included in price were not taken into account when using a loyalty program applying on the cheapest product. Steps to reproduce: ------------------- * Create a loyalty program that apply 10% reward on cheapest product * Create a product A that has 10% tax included in price * Open PoS and add this product to the order (make sure this is the cheapest in the order) > Observation: The discount is not taking the tax into account opw-4243827 Forward-Port-Of: odoo/odoo#191678 Forward
Original PR description
Tax included in price were not taken into account when using a loyalty program applying on the cheapest product. Steps to reproduce: ------------------- * Create a loyalty program that apply 10% reward on cheapest product * Create a product A that has 10% tax included in price * Open PoS and add this product to the order (make sure this is the cheapest in the order) > Observation: The discount is not taking the tax into account opw-4243827 Forward-Port-Of: odoo/odoo#191678 Forward-Port-Of: odoo/odoo#189612
Before this fix it was not possible to reconcile the stock valuation lines created from PoS as one of them was missing the partner_id Steps to reproduce: ------------------- * Activate automatic stock valuation for the `All` category * Sell a product and ship it later * Close the session and go to the accounting entries > Observation: 2 of them are not reconciled, when clicking on reconcile it was not finding the good one to reconcile with opw-4395468 Forward-Port-Of: odoo/odoo#190
Original PR description
Before this fix it was not possible to reconcile the stock valuation lines created from PoS as one of them was missing the partner_id Steps to reproduce: ------------------- * Activate automatic stock valuation for the `All` category * Sell a product and ship it later * Close the session and go to the accounting entries > Observation: 2 of them are not reconciled, when clicking on reconcile it was not finding the good one to reconcile with opw-4395468 Forward-Port-Of: odoo/odoo#190519
When using MultiRecordSelector with domain, the domain will not automatically apply to SelectCreateDialog. See odoo/enterprise#68484 closes odoo/odoo#176850 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#191322 Forward-Port-Of: odoo/odoo#191125
Original PR description
When using MultiRecordSelector with domain, the domain will not automatically apply to SelectCreateDialog. See odoo/enterprise#68484 closes odoo/odoo#176850 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#191322 Forward-Port-Of: odoo/odoo#191125
Before this commit, even if no foldable link items were present in the navbar of a website header, the function to check if items needed to be hidden was still executed. After this commit, if no foldable items are present in the navbar, the function is not executed. Running the function when no items are present can, in rare cases, cause errors (e.g., starting from version 17.0, if the "sales 1" header template contains no links and the page is zoomed). This is why we addressed this issue
Original PR description
Before this commit, even if no foldable link items were present in the navbar of a website header, the function to check if items needed to be hidden was still executed. After this commit, if no foldable items are present in the navbar, the function is not executed. Running the function when no items are present can, in rare cases, cause errors (e.g., starting from version 17.0, if the "sales 1" header template contains no links and the page is zoomed). This is why we addressed this issue in this commit. opw-4390661 Forward-Port-Of: odoo/odoo#191793 Forward-Port-Of: odoo/odoo#191233
### Issue: - In 16.0 only, When sending a POS receipt by email, the receipt displays correctly in the preview within the POS app. However, the attached receipt in the email appears cropped, and the company logo is not centered. ### Steps to reproduce: 1. On runbot, go to the POS app. 2. Start a session. add a product, a customer and pay. 3. Click on send by email arrow button. 4. check receipt on mailhog. ### Solution: - I've wrapped the receipt content with a #receipt-wrapper div, a
Original PR description
### Issue: - In 16.0 only, When sending a POS receipt by email, the receipt displays correctly in the preview within the POS app. However, the attached receipt in the email appears cropped, and the company logo is not centered. ### Steps to reproduce: 1. On runbot, go to the POS app. 2. Start a session. add a product, a customer and pay. 3. Click on send by email arrow button. 4. check receipt on mailhog. ### Solution: - I've wrapped the receipt content with a #receipt-wrapper div, allowing you to add a padding (margin). opw-[4140950](https://www.odoo.com/web#id=4140950&view_type=form&model=project.task)  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191288 Forward-Port-Of: odoo/odoo#186852
**Problem**: After this commit: https://github.com/odoo/odoo/commit/cf8f0ff7ba4bb33425003399bc4e5b33d3d5629a the toolbar is hidden when it overflows (`this.toolbar.classList.toggle('d-none', distToScrollContainer < OFFSET / 2);`). This behavior is not suitable for selections containing elements with a height that exceeds the viewport, as the toolbar becomes inaccessible. **Solution**: Ensure the toolbar is always visible, even when overflowing. In such cases, reposition the toolbar to alig
Original PR description
**Problem**: After this commit: https://github.com/odoo/odoo/commit/cf8f0ff7ba4bb33425003399bc4e5b33d3d5629a the toolbar is hidden when it overflows (`this.toolbar.classList.toggle('d-none',…
**Problem**:
After this commit:
https://github.com/odoo/odoo/commit/cf8f0ff7ba4bb33425003399bc4e5b33d3d5629a the toolbar is hidden when it overflows (`this.toolbar.classList.toggle('d-none', distToScrollContainer < OFFSET / 2);`). This behavior is not suitable for selections containing elements with a height that exceeds the viewport, as the toolbar becomes inaccessible.
**Solution**:
Ensure the toolbar is always visible, even when overflowing. In such cases, reposition the toolbar to align with the top of the selection, providing consistent accessibility.
**Picture before fix**
***top***

***bottom***

**Picture after fix**
***top***

***bottom***

**Steps to reproduce**:
1. Add an image to the editor that overflows the viewport.
2. Select the image.
3. Observe that the toolbar does not appear.
opw-4398551
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#190465pos*: pos_restaurant, pos_preparation_display Before this commit: ============== - Splitting an order caused the loss of ordered and unordered quantity information for the order lines. After this commit: ============== - Ordered and unordered quantity information is preserved for all order lines. - Preparation display quantities remain unaffected. Task - 4114041 Forward-Port-Of: odoo/odoo#179481
Original PR description
pos*: pos_restaurant, pos_preparation_display Before this commit: ============== - Splitting an order caused the loss of ordered and unordered quantity information for the order lines. After this commit: ============== - Ordered and unordered quantity information is preserved for all order lines. - Preparation display quantities remain unaffected. Task - 4114041 Forward-Port-Of: odoo/odoo#179481
## Issue: - Uploading a Mexican XML file with an 8% tax results in the addition of an extra 8% tax. ## Steps to reproduce: - Create a new invoice and add a line with an 8% tax. - Validate the invoice and export it as XML. - Upload the XML file as a vendor bill. - The vendor bill incorrectly shows two "8% taxes" instead of one. ## Solution: - The issue stems from a forward-port error from `saas-16.4` https://github.com/odoo/enterprise/commit/5681a8d5abee3a8787f3ee8612a8c3b18ed63ee6 to
Original PR description
## Issue: - Uploading a Mexican XML file with an 8% tax results in the addition of an extra 8% tax. ## Steps to reproduce: - Create a new invoice and add a line with an 8% tax. - Validate the invoice…
## Issue: - Uploading a Mexican XML file with an 8% tax results in the addition of an extra 8% tax. ## Steps to reproduce: - Create a new invoice and add a line with an 8% tax. - Validate the invoice and export it as XML. - Upload the XML file as a vendor bill. - The vendor bill incorrectly shows two "8% taxes" instead of one. ## Solution: - The issue stems from a forward-port error from `saas-16.4` https://github.com/odoo/enterprise/commit/5681a8d5abee3a8787f3ee8612a8c3b18ed63ee6 to `17.0` https://github.com/odoo/enterprise/commit/56a2b66d84d8398ea870d559cd55cfeae44019d8 - In `17.0` we introduced this Extract method `_l10n_mx_edi_import_cfdi_get_tax_from_node` to refactor the `_l10n_mx_edi_import_cfdi_fill_invoice_line`. - We should have add the Exento checks in the new method however we mistakenly pushed code from `saas-16.4` to `17.0` without adapting it. - I removed the extra code introduced during the forward-porting. - Refactored the related code to ensure compatibility with the new changes in `17.0`. OPW-4198016 Forward-Port-Of: odoo/enterprise#76078 Forward-Port-Of: odoo/enterprise#74602
4 changes
Resolved issues and error corrections
A technical issue preventing users from printing session reports has been resolved. The problem stemmed from outdated, unused code related to pro forma orders. This update removes the problematic code, ensuring the session report printing function works correctly.
Original PR description
Issue: ==================== - A traceback occurred when attempting to print the session report from the reporting menu. - The issue was caused by unused code related to pro forma orders left over from the refactoring in version 17.0. Fix: ==================== - Removed the unused code related to pro forma orders. - Ensured the session report can be printed without errors. Task-4438550
This update resolves a display issue where the Timesheets grid would show a 'No Timesheets Found' banner and disable navigation when viewing older timesheets. The fix ensures users can seamlessly browse and navigate through their timesheet data, regardless of age.
Original PR description
Issue:
- When an employee has timesheets older than 2 weeks, opening timesheets for a new week displays a "No Timesheets Found" banner, and the ability to navigate the grid to the previous week or display a month is disabled.
Steps To Reproduce:
1. Go to the Timesheets app.
2. Ensure there are only timesheets older than 2 weeks.
3. Exit the Timesheets app and reopen it.
5. Notice the "No Timesheets Found" banner is displayed.
6. Observe that the ability to navigate to previous weeks or display a month is disabled.
Solution:
- this issue was fixed here: https://github.com/odoo/enterprise/pull/64792/commits/1f2ef9fd9200045b556a6dbcefd2dd3f57098cc8 this is a simple backport of the fix to the 17.0 branch.
opw-4238024This update resolves an issue preventing users from exporting tax reports as PDFs. The previous fix introduced a widespread update requirement, now it's reverted to its original state, ensuring PDF export functionality is restored for all users. This allows for easier report generation and distribution.
Original PR description
**Issue:** Tax reports can't be exported as PDFs.  **Expected:** Users…
**Issue:** Tax reports can't be exported as PDFs.  **Expected:** Users should be able to generate tax reports PDFs. **Steps to reproduce:** - Activate Accounting app; - Install the Argentina localization; - Move to the Argentine company; - Go to `Accounting` > `Reporting` > `Tax Report`; - Change selection to display some lines (or add invoice lines); - Print PDF report. **Cause:** A fix (https://github.com/odoo/enterprise/commit/4c45cd704a7ddd46c93a1d8b8f5f3cf6934215a4#diff-8eb5e11a8f74f533b8999b3a5382c0d750bc87d2acc16ff5b4225775ba3ddd86L50) badly backports a correction for Argentine reports. This implies all Odoo users need to update their `account_reports` module to update the report view. **Fix:** Revert backport and keep useless currencies' display removal in subheaders only.  opw-4431015 opw-4430982 opw-4427336 opw-4430855 opw-4430735
This update resolves an issue where document filters wouldn't apply after archiving a document. The fix ensures that the correct filter criteria are used when loading documents, guaranteeing that users only see documents matching their selected activity filters. This improves the reliability and accuracy of the Documents app.
Original PR description
To reproduce ============ - Go to Documents app - schedule some activities on different documents for Mitchel Admin and Marc Demo - Go to the activity view, and set filter to Activities assigned to Mitchel Admin - only documents with activities assigned to Mitchel Admin should be shown - select one of them and move it to the trash -> the filter won't be applied anymore, and all documents with activities will be shown Problem ======= after archiving a document, the `load` method is called without `searchParams` where `domain` should be defined, so a default domain is used. Solution ======== set the `searchParams` in the `load` method with domain of the current filter opw-4354175