Tuesday, April 1, 2025
49 changes · saas-18.1
Enhancements to existing features
Basic Point of Sale receipts no longer show the unit price for each item, making them cleaner and easier for customers to read. Unit prices remain available where they are still operationally useful, such as the cart after a manual price change and the standard receipt.
Original PR description
In this commit, ===== Removed the unit price from the basic receipt. It will only be visible in two scenarios: 1. In the pos cart (If we change the price manually) 2. In standard receipt task - 4643039 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
The inventory quantity list and kanban views no longer use an unnecessary unit-of-measure display widget. This simplifies the interface slightly without changing business workflows or data.
Original PR description
Remove the use of this widget in quant list and kanban views where it is useless. Enterprise PR: odoo/enterprise#82640
Miscellaneous changes
Steps to reproduce: 1. Create a new storable product 2. In the product's description, insert a base64 image - Pasting a (big) image from the clipboard insert it as base64 in <16.3 - Or do it manually by modifying the HTML 3. Create a Sale Order with the product 4. Validate the sale order ### Before this commit: During the Stock Picking creation, the picking's description is taken from the product's description and converted into plaintext. It replaces the images by some tex
Original PR description
Steps to reproduce:
1. Create a new storable product
2. In the product's description, insert a base64 image
- Pasting a (big) image from the clipboard insert it as base64 in <16.3
- Or do it manually by modifying the HTML
3. Create a Sale Order with the product
4. Validate the sale order
### Before this commit:
During the Stock Picking creation, the picking's description is taken from the product's description and converted into plaintext. It replaces the images by some text, but the Regex searching for a name in the src attribute, has a terrible backtracking (due to the lookahead).
### After this commit:
Searching for the filename does not make sense when dealing with base64; therefore, this commit skips this feature to prevent intensive CPU usage.
opw-4674295
Forward-Port-Of: odoo/odoo#204044
Forward-Port-Of: odoo/odoo#203738The Barcode app no longer crashes when users reopen a receipt line on mobile after adding a product with existing stock. The change removes an unnecessary unit-of-measure control from a read-only mobile stock display, improving reliability for warehouse operations.
Original PR description
Issue ===== When displaying the Barcode move line form view on mobile, a traceback can happen. How to reproduce ================ - Open the Barcode app on a mobile device (or use devtools to simulate a mobile device;) - Create a new receipt; - Click on "Add Product" and select a product with an existing quant; - Confirm then re-open the move line's form view -> Traceback. Cause of the issue ================== In mobile view, the product's quants displayed in the move line form view are displayed as kanban record. This kanban view template use the `many2one_uom` widget but doesn't include the `product_id` field which make this widget not usable. By the way, those records are not editable so it makes no sense to use this widget in this case. To fix the issue, remove the widget where it is not needed/not usable. Community PR: odoo/odoo#204252
Versions -------- - 16.0+ Steps ----- 1. Create a promotion program; 2. add a reward that offers a discount on a specific product; 3. specify a specific product; 4. archive the specified specific product; 5. create a sales order with a random product; 6. apply applicable rewards. Issue ----- The reward's specific discount has become applicable to all products. Cause ----- After archiving a product, the reward's `discount_product_ids` becomes empty unless `active_test=False`
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Create a promotion program; 2. add a reward that offers a discount on a specific product; 3. specify a specific product; 4. archive the specified specific product; 5. create a sales order with a random product; 6. apply applicable rewards. Issue ----- The reward's specific discount has become applicable to all products. Cause ----- After archiving a product, the reward's `discount_product_ids` becomes empty unless `active_test=False` is added to the context. With this field empty, and no otherwise specified product domain, the discount can be applied to any product. Solution -------- Prevent archiving products that have an active program applying a specific discount to them. opw-4246768 Forward-Port-Of: odoo/odoo#204175 Forward-Port-Of: odoo/odoo#203241
The default [`_phone_get_number_fields`](https://github.com/odoo/odoo/blob/e8bbb6e9d99bdf6a31290e0d41cc9abff376938a/addons/phone_validation/models/models.py#L16-L21) returns `mobile` and `phone` fields if they exist on the model, but they do not exist for `hr.candidate`, leading to [errors](https://github.com/odoo/odoo/blob/ddbc09607f23b0e9dd9e721bceeaee250e6339bd/addons/phone_validation/models/mail_thread_phone.py#L217) when asserting phone fields in the `mail.thread.phone` mixin. The only fiel
Original PR description
The default [`_phone_get_number_fields`](https://github.com/odoo/odoo/blob/e8bbb6e9d99bdf6a31290e0d41cc9abff376938a/addons/phone_validation/models/models.py#L16-L21) returns `mobile` and `phone` fields if they exist on the model, but they do not exist for `hr.candidate`, leading to [errors](https://github.com/odoo/odoo/blob/ddbc09607f23b0e9dd9e721bceeaee250e6339bd/addons/phone_validation/models/mail_thread_phone.py#L217) when asserting phone fields in the `mail.thread.phone` mixin. The only field that holds a phone number for this model is `partner_phone`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201545
Scenario: - install website, event - add a form in website with action "Create Event Registration" - add a field Event in that form - send the form with an event that would accept registration Result: the registration is saved but you see "An error has occured, the form has not been sent." and server side you see this traceback: File "addons/website/controllers/form.py", line 45, in website_form with request.env.cr.savepoint(): … File "/Users/odoo/src/odoo/18.0/odoo/sql_db.py", line
Original PR description
Scenario: - install website, event - add a form in website with action "Create Event Registration" - add a field Event in that form - send the form with an event that would accept registration…
Scenario:
- install website, event
- add a form in website with action "Create Event Registration"
- add a field Event in that form
- send the form with an event that would accept registration
Result: the registration is saved but you see "An error has occured, the
form has not been sent." and server side you see this traceback:
File "addons/website/controllers/form.py", line 45, in website_form
with request.env.cr.savepoint():
…
File "/Users/odoo/src/odoo/18.0/odoo/sql_db.py", line 119, in _close
self._cr.execute('RELEASE SAVEPOINT "%s"' % self.name)
…
psycopg2.errors.InvalidSavepointSpecification: savepoint "…" does not
exist
Cause: creating an event.registration calls
event.registration()._update_mail_schedulers which depending on
configurations might end up sending mail after which we commit the
transaction (probably to avoid sending an email two times) but this
deletes all the current savepoints. So even if everything is commited,
successfully, the __exit__ method of the savepoint will raise an error
when trying to close a savepoint that is already deleted.
Fix: ignore cases where there has not been any error, but the savepoint
has been deleted before being released.
opw-4599918
Forward-Port-Of: odoo/odoo#200362When submitting the new address, the `post` method from the `http` service is called. This method expects a response in JSON. The problem arises when a redirection occurs during that call, then the returned content might be of another type which triggers an error. For example, it is possible to be redirected to the `/shop/cart` page if the cart is not valid. Steps to reproduce: - Add a product to your cart - Then head over to the address form during checkout. - Before confirming your addre
Original PR description
When submitting the new address, the `post` method from the `http` service is called. This method expects a response in JSON. The problem arises when a redirection occurs during that call, then the…
When submitting the new address, the `post` method from the `http` service is called. This method expects a response in JSON. The problem arises when a redirection occurs during that call, then the returned content might be of another type which triggers an error. For example, it is possible to be redirected to the `/shop/cart` page if the cart is not valid.
Steps to reproduce:
- Add a product to your cart
- Then head over to the address form during checkout.
- Before confirming your address, in another tab, open the backend and remove every order line in your cart.
- Then back on the previous tab, confirm your address.
- You can observe an error in the console:
```
SyntaxError: Unexpected token '<', ..."
<!DOCTYPE "... is not valid JSON
```
This commit fixes this issue by sending the redirection URL in the result of `shop_address_submit` and lets the client handle the redirection.
This commit also renames the `successUrl` value to `redirectUrl` to make it more clear that it is not necessarily a success URL any more, but the next location URL for the user, ie. redirect.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#201755Upgrade scripts are run only when there is an update of the module version. This is not flexible enough. After a major upgrade developers need to upgrade their custom modules. Unfortunately the tools in `upgrade-util` repo that modify modules (`merge_module`, `rename_module`, ...) should be done before loading base module. The latter is already upgraded after a major upgrade thus no upgrade scripts are run for it. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com
Original PR description
Upgrade scripts are run only when there is an update of the module version. This is not flexible enough. After a major upgrade developers need to upgrade their custom modules. Unfortunately the tools in `upgrade-util` repo that modify modules (`merge_module`, `rename_module`, ...) should be done before loading base module. The latter is already upgraded after a major upgrade thus no upgrade scripts are run for it. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203387 Forward-Port-Of: odoo/odoo#202014
Before this commit, when muting all conversations in the menu Configuration > Notification settings of Discuss app, the turn back until item had the option "Select duration". This item was intended as the default option, to let user know this is a widget to select an item. However, the option is pre-selected to "Until I turn it back on", and the widget is visually very obvious it can be changed to another option. Therefore the "Select duration" has no reason to exist, thus this is simply r
Original PR description
Before this commit, when muting all conversations in the menu Configuration > Notification settings of Discuss app, the turn back until item had the option "Select duration". This item was intended as the default option, to let user know this is a widget to select an item. However, the option is pre-selected to "Until I turn it back on", and the widget is visually very obvious it can be changed to another option. Therefore the "Select duration" has no reason to exist, thus this is simply removed in this commit, Task-4208113 Before <img width="654" alt="Screenshot 2025-03-31 at 15 49 10" src="https://github.com/user-attachments/assets/0f642940-d42f-43e2-a48e-ac50bde3528e" /> After <img width="654" alt="Screenshot 2025-03-31 at 15 48 48" src="https://github.com/user-attachments/assets/1fcbbd4d-ae19-445c-afee-b18f894943b2" /> Forward-Port-Of: odoo/odoo#204163
Before this commit, if you defined a record rule on products, none of the products would be loaded in the POS. This commit fixes this issue by using search over browse because search automatically applies access rights filtering, returning only products the current user has access. This approach avoids the previous all-or-nothing behavior where a single inaccessible product would prevent all products from loading. opw-4662433 --- I confirm I have signed the CLA and read the PR guidelines
Original PR description
Before this commit, if you defined a record rule on products, none of the products would be loaded in the POS. This commit fixes this issue by using search over browse because search automatically applies access rights filtering, returning only products the current user has access. This approach avoids the previous all-or-nothing behavior where a single inaccessible product would prevent all products from loading. opw-4662433 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202954
If prevent zero sale is active, prices should be hidden from the page opw-4650460 See also: https://github.com/odoo/enterprise/pull/82082 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203451 Forward-Port-Of: odoo/odoo#202867
Original PR description
If prevent zero sale is active, prices should be hidden from the page opw-4650460 See also: https://github.com/odoo/enterprise/pull/82082 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203451 Forward-Port-Of: odoo/odoo#202867
Description of the issue/feature this PR addresses: This commit addresses translations not being exposed to the frontend for the survey module. Current behavior before PR: For surveys, no translatable terms existing in JavaScript are being translated. This mainly concerns `survey_form.js`. Lack of translations there easily results in a mix of languages being shown to a user answering a survey. Desired behavior after PR is merged: Translatable terms defined in JavaScript are trans
Original PR description
Description of the issue/feature this PR addresses: This commit addresses translations not being exposed to the frontend for the survey module. Current behavior before PR: For surveys, no translatable terms existing in JavaScript are being translated. This mainly concerns `survey_form.js`. Lack of translations there easily results in a mix of languages being shown to a user answering a survey. Desired behavior after PR is merged: Translatable terms defined in JavaScript are translated to the user's language. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204077
**Problem**: When destroying the link tool, if an `<a>` tag with `btn` classes has no `href`, it gets unwrapped. This visually removes the button, leaving only its text content. While this has no effect on normal links, it makes buttons appear to disappear when closing the tool. **Solution**: Prevent unwrapping buttons (`<a>` with `btn` classes) when the link tool is destroyed. **Steps to Reproduce**: 1. Open the website editor. 2. Add "Blocks" > "Features" > "Items". 3. Click inside
Original PR description
**Problem**: When destroying the link tool, if an `<a>` tag with `btn` classes has no `href`, it gets unwrapped. This visually removes the button, leaving only its text content. While this has no effect on normal links, it makes buttons appear to disappear when closing the tool. **Solution**: Prevent unwrapping buttons (`<a>` with `btn` classes) when the link tool is destroyed. **Steps to Reproduce**: 1. Open the website editor. 2. Add "Blocks" > "Features" > "Items". 3. Click inside a button to show the link tool. 4. Click outside the editable area. 5. Click inside the button again. - **Issue**: The button disappears, leaving only text. **opw-4574401** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203107 Forward-Port-Of: odoo/odoo#202453
This commit targets to add the necessary demo data for testing Mexican payroll localization target: saas-17.4 -> master task-4486643 Linked PR: [odoo/enterprise#80451](https://github.com/odoo/enterprise/pull/80451) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199888
Original PR description
This commit targets to add the necessary demo data for testing Mexican payroll localization target: saas-17.4 -> master task-4486643 Linked PR: [odoo/enterprise#80451](https://github.com/odoo/enterprise/pull/80451) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199888
Before this commit: The product snippet with filter "Latest Viewed Product" selected showed products in a random order. This was caused by a `search([('id', 'in', ids)])` which does not enforce the order of `ids` in the returned set. After this commit: The order returned follows the intended "Last Viewed Product" order. task-3916458 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203982 Forward-Port-Of: odoo/odoo#2
Original PR description
Before this commit:
The product snippet with filter "Latest Viewed Product" selected showed products in a random order. This was caused by a
`search([('id', 'in', ids)])` which does not enforce the order of `ids` in the returned set.
After this commit:
The order returned follows the intended "Last Viewed Product" order.
task-3916458
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#203982
Forward-Port-Of: odoo/odoo#200196### Steps to reproduce: - Enable Customer Ratings in general settings - Uninstall Documents module - Navigate to any project's settings and customer rating option - Notice the whole option got disappeared instead of just hiding the child options ### Cause: This is happening because after this commit https://github.com/odoo-dev/odoo/commit/16ca5b73646749d1a9341bbc02c6ca048feb66c2#diff-54a713792b3dba141af5416c4b89973ddf662cfad2bb65c642ad4534dddec626 we removed allow_rating and we are u
Original PR description
### Steps to reproduce: - Enable Customer Ratings in general settings - Uninstall Documents module - Navigate to any project's settings and customer rating option - Notice the whole option got…
### Steps to reproduce: - Enable Customer Ratings in general settings - Uninstall Documents module - Navigate to any project's settings and customer rating option - Notice the whole option got disappeared instead of just hiding the child options ### Cause: This is happening because after this commit https://github.com/odoo-dev/odoo/commit/16ca5b73646749d1a9341bbc02c6ca048feb66c2#diff-54a713792b3dba141af5416c4b89973ddf662cfad2bb65c642ad4534dddec626 we removed allow_rating and we are using rating_active which is the setting field for each project separately for showing both divs or not https://github.com/odoo/odoo/blob/c68ec0aaed70973f65d46d75875c59f5bc10f23b/addons/project/views/project_project_views.xml#L129 https://github.com/odoo/odoo/blob/c68ec0aaed70973f65d46d75875c59f5bc10f23b/addons/project/views/project_project_views.xml#L134 ### Fix: For the parent div we will be using the groups attribute instead of invisible attribute opw-4633771 Forward-Port-Of: odoo/odoo#202946
An internal server error happened when trying to acces json from the url in the employees app Steps to reproduce: ------------------- * Open employees app * Change /odoo/ for /json/ in the url > Observation: ValueError: NameError("name allowed_company_ids is not defined") while evaluating "[(company_id, in, allowed_company_ids)]" Why the fix: ------------ With the odoo web route allowed_company_ids is added to the context here https://github.com/odoo/odoo/blob/648956b75bdd09396bae
Original PR description
An internal server error happened when trying to acces json from the url in the employees app
Steps to reproduce:
-------------------
* Open employees app
* Change /odoo/ for /json/ in the url
> Observation:
ValueError: NameError("name allowed_company_ids is not defined") while evaluating
"[(company_id, in, allowed_company_ids)]"
Why the fix:
------------
With the odoo web route allowed_company_ids is added to the context here https://github.com/odoo/odoo/blob/648956b75bdd09396bae3b7162f236236fccae23/addons/web/static/src/webclient/actions/action_service.js#L346 from user.context.
With the json route we need to add it manually as it's not in the env
opw-4601689
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#201226**Problem**: Sometimes, due to fast image changes and reloads, the attachment is saved, but the `o_modified_image_to_save` class is not removed. **Solution**: Before saving an image, check if it has already been saved. If so, simply remove the `o_modified_image_to_save` class. **opw-4406195** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204150 Forward-Port-Of: odoo/odoo#203283
Original PR description
**Problem**: Sometimes, due to fast image changes and reloads, the attachment is saved, but the `o_modified_image_to_save` class is not removed. **Solution**: Before saving an image, check if it has already been saved. If so, simply remove the `o_modified_image_to_save` class. **opw-4406195** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204150 Forward-Port-Of: odoo/odoo#203283
When there are none or more than 1 partner that have the same subcontracting location setup, then any procurement made to this subcontracting location will be removed, even if another configuration is applicable. ## How to reproduce: https://drive.google.com/file/d/1jvT1pmCqY0JNAinvqmbonX0CDYYysoJz/view?usp=sharing - Activate Routes, Subcontracting, Dropshipping - Create custom subcontracting location - Create partners "Partner 1" & "Partner 2", with custom sub loc setup - Create cus
Original PR description
When there are none or more than 1 partner that have the same subcontracting location setup, then any procurement made to this subcontracting location will be removed, even if another configuration…
When there are none or more than 1 partner that have the same subcontracting location setup, then any procurement made to this subcontracting location will be removed, even if another configuration is applicable. ## How to reproduce: https://drive.google.com/file/d/1jvT1pmCqY0JNAinvqmbonX0CDYYysoJz/view?usp=sharing - Activate Routes, Subcontracting, Dropshipping - Create custom subcontracting location - Create partners "Partner 1" & "Partner 2", with custom sub loc setup - Create custom route 'Resupply Subcontractor', with rule: - action: Pull From - operation: delivery - source: Stock - dest: custom sub loc - method: take from stock - Partner Address: Partner 1 - Create product with reordering rule: - manual, min 0, max 0, custom sub loc, custom route - In Replenishment -> Find custom reordering rule -> set Order Qty to 1 -> Order Once - Created Transfer does not have any partner address - Cancel created transfer - Remove subcontracting loc for "Partner 2" - In Replenishment -> Find custom reordering rule -> set Order Qty to 1 -> Order Once - Created Transfer has the partner address OPW-4576260 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203961 Forward-Port-Of: odoo/odoo#200169
ImmutableOrderedMultiDict was deprecated in Werkzeug 3.1.0. As the upcoming Debian Trixie provides Werkzeug 3.1.3 we need to fix that in Odoo supoprted versions. See: - https://packages.debian.org/trixie/python3-werkzeug - pallets/werkzeug#2968 - pallets/werkzeug#2975 A less intrusive way would be to ignore the deprecation warning 🤔 Forward-Port-Of: odoo/odoo#203537 Forward-Port-Of: odoo/odoo#203461
Original PR description
ImmutableOrderedMultiDict was deprecated in Werkzeug 3.1.0. As the upcoming Debian Trixie provides Werkzeug 3.1.3 we need to fix that in Odoo supoprted versions. See: - https://packages.debian.org/trixie/python3-werkzeug - pallets/werkzeug#2968 - pallets/werkzeug#2975 A less intrusive way would be to ignore the deprecation warning 🤔 Forward-Port-Of: odoo/odoo#203537 Forward-Port-Of: odoo/odoo#203461
Steps: 1. Create a Storable product and update quantity to 1 2. Buy the product in shop and go to checkout page 3. Select pick up in store and pay Issue: - "Some products are not available in the selected store" error on payment validate page Cause: - `_get_shop_payment_error` check for product's availability on shop_payment and shop_payment_validate page where in former stock is available but in later since the order is confirmed stock is unavailable Fix: - `_get_shop_payment_err
Original PR description
Steps: 1. Create a Storable product and update quantity to 1 2. Buy the product in shop and go to checkout page 3. Select pick up in store and pay Issue: - "Some products are not available in the selected store" error on payment validate page Cause: - `_get_shop_payment_error` check for product's availability on shop_payment and shop_payment_validate page where in former stock is available but in later since the order is confirmed stock is unavailable Fix: - `_get_shop_payment_error` will only check for stock related errors on confirmed orders opw-4647225 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202898
Steps to reproduce: -------------------------- - Install the pos_loyalty module. - Open register & add physical giftcard to the cart. - On configuration popup don't set the expiry date & click on Add Balance. Issue: -------- - There is a tb instead of adding the balance to giftcard. - The selected expiration date is not set on the backend. Cause: --------- - Trying to serialize null expiration date value. - Not set from the correct variable. Fix: ----- - Expiration date shou
Original PR description
Steps to reproduce: -------------------------- - Install the pos_loyalty module. - Open register & add physical giftcard to the cart. - On configuration popup don't set the expiry date & click on Add Balance. Issue: -------- - There is a tb instead of adding the balance to giftcard. - The selected expiration date is not set on the backend. Cause: --------- - Trying to serialize null expiration date value. - Not set from the correct variable. Fix: ----- - Expiration date should be serialized only if selected. - Correctly mapped the value of expiration date from right variable. Task: 4664094 Forward-Port-Of: odoo/odoo#203046
If user edited sale quotation, part of the template with span tag would disapear. opw-4563470 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#200558
Original PR description
If user edited sale quotation, part of the template with span tag would disapear. opw-4563470 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#200558
Description of the issue this PR addresses: Current behavior before PR: Firefox triggered a mutation when setting `textContent` to the same value, causing unnecessary dirty state updates in the editor. Desired behavior after PR is merged: Such mutations are now detected and ignored to prevent false positives. task-4629669 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200668
Original PR description
Description of the issue this PR addresses: Current behavior before PR: Firefox triggered a mutation when setting `textContent` to the same value, causing unnecessary dirty state updates in the editor. Desired behavior after PR is merged: Such mutations are now detected and ignored to prevent false positives. task-4629669 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200668
Description of the issue/feature this PR addresses: Steps to reproduce: - Setup a POS - Enable online payment (e.g Demo) - Activate discount, promotion & loyalty in configuration - Place an order in the POS until receipt screen Alternatively, take look at the recording: https://github.com/user-attachments/assets/471e06ae-45d6-4440-a287-7c2433845c26 Current behavior before PR: Odoo will throw an error because the existing field of server_id is not exists anymore, error occurs when po
Original PR description
Description of the issue/feature this PR addresses: Steps to reproduce: - Setup a POS - Enable online payment (e.g Demo) - Activate discount, promotion & loyalty in configuration - Place an order in the POS until receipt screen Alternatively, take look at the recording: https://github.com/user-attachments/assets/471e06ae-45d6-4440-a287-7c2433845c26 Current behavior before PR: Odoo will throw an error because the existing field of server_id is not exists anymore, error occurs when post processing loyalty.  Desired behavior after PR is merged: This PR is expected to solve the issue by changing the old server_id with the current id field opw-4584152 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198515
An error occurs when a simplified invoice contains an OSS with a non-Spanish partner, and the Bizkaia tax agency is selected. This causes the B4_2000027 error to be returned by Bizkaia. Steps to reproduce: - Install l10n_es_edi_tbai and l10n_eu_oss - Set the Tax Agency to Bizkaia - Create a simplified invoice - Set fiscal position to OSS B2C - Poland - Use a Polish partner - Add a product - Validate the invoice - Attempt to send to Bizkaia The error raised is: `B4_
Original PR description
An error occurs when a simplified invoice contains an OSS with a non-Spanish partner, and the Bizkaia tax agency is selected. This causes the B4_2000027 error to be returned by Bizkaia. Steps to…
An error occurs when a simplified invoice contains an OSS with a non-Spanish partner, and the Bizkaia tax agency is selected. This causes the B4_2000027 error to be returned by Bizkaia.
Steps to reproduce:
- Install l10n_es_edi_tbai and l10n_eu_oss
- Set the Tax Agency to Bizkaia
- Create a simplified invoice
- Set fiscal position to OSS B2C - Poland
- Use a Polish partner
- Add a product
- Validate the invoice
- Attempt to send to Bizkaia
The error raised is:
`B4_1000002: Todos los registros incluidos en la petición son incorrectos.
B4_2000027: La factura contiene un Tipo de desglose incorrecto. Ha de ser a nivel de operación cuando la factura es completa y, además, existe destinatario extranjero (tipo IDOtro o que sea NIF que empiece por N) o la Clave de IVA es 02.`
After investigation, it appears this issue occurs only with Bizkaia. This fix ensures that `DesgloseFactura` is used instead of `DesgloseTipoOperacion` for this specific case.
Reference:
https://sede.agenciatributaria.gob.es/static_files/Sede/Procedimiento_ayuda/G417/FicherosSuministros/V_1_1/SII_Descripcion_ServicioWeb_v1.1_en_gb.pdf?utm_source=chatgpt.com
Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4464223)
opw-4464223
Forward-Port-Of: odoo/odoo#203018
Forward-Port-Of: odoo/odoo#200391Step to reproduce: - Open the Sales application on a small screen such as a mobile phone. - Remove "My Quotations" to show all quotations. - Scroll down to hide the control panel. - Scroll up to show the control panel => Bug The control panel is shown but immediately "hidden" when we stop scrolling and the user has to scroll up to the top screen to see it. task-4466063 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odo
Original PR description
Step to reproduce: - Open the Sales application on a small screen such as a mobile phone. - Remove "My Quotations" to show all quotations. - Scroll down to hide the control panel. - Scroll up to show the control panel => Bug The control panel is shown but immediately "hidden" when we stop scrolling and the user has to scroll up to the top screen to see it. task-4466063 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203897
In this commit, `position` has been replaced with `tooltipPosition`, as explained in the commit message. https://github.com/odoo/enterprise/commit/b7fc47fec39885ed1f9f99040ceaabefa539bc7b Forward-Port-Of: odoo/enterprise#82672
Original PR description
In this commit, `position` has been replaced with `tooltipPosition`, as explained in the commit message. https://github.com/odoo/enterprise/commit/b7fc47fec39885ed1f9f99040ceaabefa539bc7b Forward-Port-Of: odoo/enterprise#82672
**Issue** When mergring two records with a chatter (e.g. Tasks), no log note appears in the chatter of the destination or source records. **Cause** The template changed modules when `data_cleaning` and `data_merge` were merged in 4fc497861fbefee7f4761c3341a3c2bd289edb31 opw-4513322 Forward-Port-Of: odoo/enterprise#82468 Forward-Port-Of: odoo/enterprise#81136
Original PR description
**Issue** When mergring two records with a chatter (e.g. Tasks), no log note appears in the chatter of the destination or source records. **Cause** The template changed modules when `data_cleaning` and `data_merge` were merged in 4fc497861fbefee7f4761c3341a3c2bd289edb31 opw-4513322 Forward-Port-Of: odoo/enterprise#82468 Forward-Port-Of: odoo/enterprise#81136
In some cases, Amazon can confirm the delivery of a FBM order before the user confirm the picking. In these cases, 2 problems arise: - The synchronization of the picking will fail because Amazon will return an error, since the picking was already delivered. - If the user doesn't fill the Amazon required fields, there will be a user error, even if the carrier reference and tracking numbers are already available in Amazon's backend. To solve this, as we know when an order was successfully deliv
Original PR description
In some cases, Amazon can confirm the delivery of a FBM order before the user confirm the picking. In these cases, 2 problems arise: - The synchronization of the picking will fail because Amazon will return an error, since the picking was already delivered. - If the user doesn't fill the Amazon required fields, there will be a user error, even if the carrier reference and tracking numbers are already available in Amazon's backend. To solve this, as we know when an order was successfully delivered, we won't consider these pickings as being needed for Amazon any more. task-4524195 Forward-Port-Of: odoo/enterprise#78188
The partena code on work entry type should be 5 characters long and not 3. task-4658021 Forward-Port-Of: odoo/enterprise#81738
Original PR description
The partena code on work entry type should be 5 characters long and not 3. task-4658021 Forward-Port-Of: odoo/enterprise#81738
Before this commit, compare_amount could be called with nonetype taskid: 4671141 Forward-Port-Of: odoo/enterprise#82098
Original PR description
Before this commit, compare_amount could be called with nonetype taskid: 4671141 Forward-Port-Of: odoo/enterprise#82098
### Issue When using the `Send HR Documents Access Link` action, Odoo always assumes that the company has set a `documents_hr_folder` already. However, this can easily not be the case if the customer has never activated `documents_hr_setting` and chosen a Workspace. If this is the case, we'll encounter an error when creating the `document.share` record, since `folder_id` is required. ### Solution Display an error directing the customer to activate an HR Workspace folder so they can properly
Original PR description
### Issue When using the `Send HR Documents Access Link` action, Odoo always assumes that the company has set a `documents_hr_folder` already. However, this can easily not be the case if the customer has never activated `documents_hr_setting` and chosen a Workspace. If this is the case, we'll encounter an error when creating the `document.share` record, since `folder_id` is required. ### Solution Display an error directing the customer to activate an HR Workspace folder so they can properly use the feature. opw-4559772 Forward-Port-Of: odoo/enterprise#81523
`prevent_zero_price_sale` was not set according to the right prices for `website_sale_renting` and `website_sale_subscription` opw-4650460 See also: https://github.com/odoo/odoo/pull/202867 Forward-Port-Of: odoo/enterprise#82183 Forward-Port-Of: odoo/enterprise#82082
Original PR description
`prevent_zero_price_sale` was not set according to the right prices for `website_sale_renting` and `website_sale_subscription` opw-4650460 See also: https://github.com/odoo/odoo/pull/202867 Forward-Port-Of: odoo/enterprise#82183 Forward-Port-Of: odoo/enterprise#82082
This commit modifies Elvera and Roque demo data for hr mexican localization target: 17.0 -> master task-4486643 Forward-Port-Of: odoo/enterprise#80451 Forward-Port-Of: odoo/enterprise#78048
Original PR description
This commit modifies Elvera and Roque demo data for hr mexican localization target: 17.0 -> master task-4486643 Forward-Port-Of: odoo/enterprise#80451 Forward-Port-Of: odoo/enterprise#78048
Same logic as: https://github.com/odoo/enterprise/pull/81763 https://github.com/odoo/enterprise/pull/79947 rb-145524 Forward-Port-Of: odoo/enterprise#82433
Original PR description
Same logic as: https://github.com/odoo/enterprise/pull/81763 https://github.com/odoo/enterprise/pull/79947 rb-145524 Forward-Port-Of: odoo/enterprise#82433
An error is encountered in the `Modify Asset` wizard when resuming `Asset Depreciation` after manually increasing `Non Depreciable Amount`. The system attempts to record the change as a gain, requiring a `Depreciation Account`. However, this field is hidden, preventing users from fixing the problem, so they are blocked. Steps to reproduce: - Create a running asset - Click `Modify Depreciation` > `Pause` - Click `Resume Depreciation` and open the `asset.modify` wizard. - Increase `Not Depr
Original PR description
An error is encountered in the `Modify Asset` wizard when resuming `Asset Depreciation` after manually increasing `Non Depreciable Amount`. The system attempts to record the change as a gain, requiring a `Depreciation Account`. However, this field is hidden, preventing users from fixing the problem, so they are blocked. Steps to reproduce: - Create a running asset - Click `Modify Depreciation` > `Pause` - Click `Resume Depreciation` and open the `asset.modify` wizard. - Increase `Not Depreciable Amount`, realizing a gain - Press the `Resume` button Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4472309) opw-4472309 Forward-Port-Of: odoo/enterprise#82512 Forward-Port-Of: odoo/enterprise#79181
- Fix the problem of company information that was not diplayed in the libro giornale report task-4502158 Forward-Port-Of: odoo/enterprise#82528
Original PR description
- Fix the problem of company information that was not diplayed in the libro giornale report task-4502158 Forward-Port-Of: odoo/enterprise#82528
Amazon SP-API is dropping support for the `POST_INVENTORY_AVAILABILITY_DATA` feed type. This was previously used in Odoo to synchronize the stock level with Amazon. This commit upgrades the feed api to use the new `JSON_LISTINGS_FEED` as a replacement. This new feed needs new informations that were not stored previously. Since this is a fix targeting stable versions of Odoo, it was decided to store this new inforamtion as a json dictionary in the `amazon.offer.amazon_feed_ref` field.
Original PR description
Amazon SP-API is dropping support for the `POST_INVENTORY_AVAILABILITY_DATA` feed type. This was previously used in Odoo to synchronize the stock level with Amazon. This commit upgrades the feed api to use the new `JSON_LISTINGS_FEED` as a replacement. This new feed needs new informations that were not stored previously. Since this is a fix targeting stable versions of Odoo, it was decided to store this new inforamtion as a json dictionary in the `amazon.offer.amazon_feed_ref` field. task-3820591 Forward-Port-Of: odoo/enterprise#82416 Forward-Port-Of: odoo/enterprise#78897
Since we are changing the parent view in https://github.com/odoo/odoo/pull/202946/commits/5430b209c6f968108e0e43f9ff7fc6166239833a we are gonna need to adjust the inherited view in documents_project to use the groups attribute instead of invisible attribute opw-4633771 Forward-Port-Of: odoo/enterprise#82530
Original PR description
Since we are changing the parent view in https://github.com/odoo/odoo/pull/202946/commits/5430b209c6f968108e0e43f9ff7fc6166239833a we are gonna need to adjust the inherited view in documents_project to use the groups attribute instead of invisible attribute opw-4633771 Forward-Port-Of: odoo/enterprise#82530
The calendar view of appointment booking in smaller screens is overflowing the screen with some columns in the calendar not appearing and cut. Steps to reproduce: - install website and appointment - go to website and go to mobile mode - open an appointment to book The change is tested on all screen sizes supported by google chrome inspect tool. opw-4487796 Forward-Port-Of: odoo/enterprise#79198
Original PR description
The calendar view of appointment booking in smaller screens is overflowing the screen with some columns in the calendar not appearing and cut. Steps to reproduce: - install website and appointment - go to website and go to mobile mode - open an appointment to book The change is tested on all screen sizes supported by google chrome inspect tool. opw-4487796 Forward-Port-Of: odoo/enterprise#79198
# HOW TO REPRODUCE: - Create products FNS & CMP - Set available quantity of CMP to 2 - Create MO of 1 FNS and 2 CMP -> Confirm - Open MO in barcode - Set FNS quantity to 1 - Set CMP quantity to 1 (1/2 of the demand) -> Produce MO => The CMP move has 2 lines of 1 unit, so 2 unit have been consumed instead of the 1 put on the barcode. https://github.com/user-attachments/assets/237c81bc-f342-4293-bc76-008b5c7cf876 OPW-4517284 Forward-Port-Of: odoo/enterprise#81953 Forward-Port-Of
Original PR description
# HOW TO REPRODUCE: - Create products FNS & CMP - Set available quantity of CMP to 2 - Create MO of 1 FNS and 2 CMP -> Confirm - Open MO in barcode - Set FNS quantity to 1 - Set CMP quantity to 1 (1/2 of the demand) -> Produce MO => The CMP move has 2 lines of 1 unit, so 2 unit have been consumed instead of the 1 put on the barcode. https://github.com/user-attachments/assets/237c81bc-f342-4293-bc76-008b5c7cf876 OPW-4517284 Forward-Port-Of: odoo/enterprise#81953 Forward-Port-Of: odoo/enterprise#81343
Steps to reproduce the bug: - Create a quality point: - Operations: Receipt - Control per: Product - Control frequency: All - Type: Worksheet - Template: Select any one - Success conditions: Match all the following rules - Created by: Is set - Create a receipt order: - Product: Select any product - Confirm the receipt → A quality check is created - Click on the "Quality Check" smart button - Open the Worksheet" - Complete the worksheet Pro
Original PR description
Steps to reproduce the bug: - Create a quality point: - Operations: Receipt - Control per: Product - Control frequency: All - Type: Worksheet - Template: Select any one - Success conditions: Match…
Steps to reproduce the bug:
- Create a quality point:
- Operations: Receipt
- Control per: Product
- Control frequency: All
- Type: Worksheet
- Template: Select any one
- Success conditions: Match all the following rules
- Created by: Is set
- Create a receipt order:
- Product: Select any product
- Confirm the receipt → A quality check is created
- Click on the "Quality Check" smart button
- Open the Worksheet"
- Complete the worksheet
Problem:
The quality check is not being automatically marked as passed or failed.
When accessing the worksheet through the quality check view, the
function “action_quality_worksheet” is called instead of
“action_open_quality_check_wizard” , which means that the key
“quality_wizard_id” is not added to the context:
https://github.com/odoo/enterprise/blob/d7cb885c93876259e9e72d7254f4a2e614abbe0d/quality_control_worksheet/models/quality.py#L64
However, when clicking on save, the function “action_worksheet_check”
is triggered:
https://github.com/odoo/enterprise/blob/b51da60213232ccbc537c399e1c007d6051e40ae/quality_control_worksheet/static/src/views/quality_worksheet_fromview.js#L19
At this point, the system checks whether “quality_wizard_id” is present
in the context to proceed with the quality check; otherwise, it simply
closes the wizard:
https://github.com/odoo/enterprise/blob/d7cb885c93876259e9e72d7254f4a2e614abbe0d/quality_control_worksheet/models/quality.py#L95-L97
https://github.com/odoo/enterprise/blob/d7cb885c93876259e9e72d7254f4a2e614abbe0d/quality_control_worksheet/models/quality.py#L98-L100
Opw-4652268
Forward-Port-Of: odoo/enterprise#82225https://www.awesomescreenshot.com/image/53270541?key=2bf6f954c641f8dcfc8d0a524bb6e0e0 How to reproduce: - Make comment on any of the post under any social media. Just one condition, make sure to include any of the following characters (&, <, >, ', , `). - Post the comment. - Now try to edit the comment. - You will see that the special characters which I have mentioned above have been replaced with their HTML entities. Issue: - When we click on edit, we first `escape()` the conte
Original PR description
https://www.awesomescreenshot.com/image/53270541?key=2bf6f954c641f8dcfc8d0a524bb6e0e0 How to reproduce: - Make comment on any of the post under any social media. Just one condition, make sure to include any of the following characters (&, <, >, ', , `). - Post the comment. - Now try to edit the comment. - You will see that the special characters which I have mentioned above have been replaced with their HTML entities. Issue: - When we click on edit, we first `escape()` the contents of the message and then display it in the `textarea`. Fix: - We now display the comment through the value attribute of the `textarea` element, which by default displays the contents as plaintext. Hence, eliminating the need to escape it. Task-4184968 Forward-Port-Of: odoo/enterprise#82414
When importing an ofx bank statement, we try to parse the raw attachment value, in case of UnicodeDecodeError, we try to get an encoding declaration in the file, and fallback on 'utf-8'. But we can still face a file that is not well encoded and we end up with a traceback. With this commit, we display a UserError instead of the ugly traceback. opw-4526766 Forward-Port-Of: odoo/enterprise#82482 Forward-Port-Of: odoo/enterprise#81561
Original PR description
When importing an ofx bank statement, we try to parse the raw attachment value, in case of UnicodeDecodeError, we try to get an encoding declaration in the file, and fallback on 'utf-8'. But we can still face a file that is not well encoded and we end up with a traceback. With this commit, we display a UserError instead of the ugly traceback. opw-4526766 Forward-Port-Of: odoo/enterprise#82482 Forward-Port-Of: odoo/enterprise#81561
Fix an issue with the formula of the Other gain (loss) line. It was "-57 + -59" which in theory is a correct formula, but in practice it is not handled well by the report engine and the + will match many other accounts that we don't want. It is corrected to be "-57 - 59". Forward-Port-Of: odoo/enterprise#82387
Original PR description
Fix an issue with the formula of the Other gain (loss) line. It was "-57 + -59" which in theory is a correct formula, but in practice it is not handled well by the report engine and the + will match many other accounts that we don't want. It is corrected to be "-57 - 59". Forward-Port-Of: odoo/enterprise#82387
The tests for assets are lacking a freeze_time, and so, fail beginning 31st of March runbot-162150 Forward-Port-Of: odoo/enterprise#82520
Original PR description
The tests for assets are lacking a freeze_time, and so, fail beginning 31st of March runbot-162150 Forward-Port-Of: odoo/enterprise#82520
Currently a ParseError is arising when the user installs the `hr_referral` module after deleting all Stages in Recruitment/Configuration. Steps to reproduce: --- - Install `hr_recruitment` application (without demo data). - Delete all `Stages` in Recruitment > Configuration - Now install `hr_referral` module Traceback: --- ``` Exception: Cannot update missing record 'hr_recruitment.stage_job3' ParseError while parsing /home/odoo/src/enterprise/saas-18.1/hr_referral/data/data.xml
Original PR description
Currently a ParseError is arising when the user installs the `hr_referral` module after deleting all Stages in Recruitment/Configuration. Steps to reproduce: --- - Install `hr_recruitment`…
Currently a ParseError is arising when the user installs the `hr_referral` module after deleting all Stages in Recruitment/Configuration.
Steps to reproduce:
---
- Install `hr_recruitment` application (without demo data).
- Delete all `Stages` in Recruitment > Configuration
- Now install `hr_referral` module
Traceback:
---
```
Exception: Cannot update missing record 'hr_recruitment.stage_job3'
ParseError
while parsing /home/odoo/src/enterprise/saas-18.1/hr_referral/data/data.xml:93, somewhere inside <record model="hr.recruitment.stage" id="hr_recruitment.stage_job3">
<field name="use_in_referral">True</field>
</record>
```
The error occurs because the user deleted all `Stages` in Recruitment, and then tried to install the other module.
This commit solves the above issue by using `forcecreate` False to bypass record creation if it violates checks.
https://github.com/odoo/odoo/blob/f5378fadf910d193cbb44a4d1c10a5a15d8b9a51/odoo/tools/convert.py#L364
sentry-5731062091
Forward-Port-Of: odoo/enterprise#80139