Tuesday, April 8, 2025
14 changes · saas-17.4
Resolved issues and error corrections
Fixed an issue where emails sent to a vehicle's driver did not properly display the intended subject and message body. This helps ensure drivers receive clear, complete communications from the fleet app.
Original PR description
With this commit, the mail's body and subject is rendered when it was sent to the vehicle's driver. task-4671895 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix removes country-based installation triggers from certain localization add-ons so they are not installed automatically by mistake. It helps businesses avoid unexpected modules appearing in their Odoo setup after selecting a country localization.
Original PR description
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the `countries` key defined in their manifest. The issue happens because `countries` key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this problem to avoid the issue. Also in https://github.com/odoo/odoo/pull/201526 a linting test is proposed to avoid having the same issue in the future. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix removes a setting that could cause country-specific add-ons to install automatically when they were not intended. It helps prevent unexpected modules from appearing for customers using localized payroll, reporting, tax, or compliance features.
Original PR description
The Argentine localization now uses the correct stored invoice currency rate field for newer Odoo versions. This prevents errors or incorrect electronic invoicing data when working with foreign-currency documents.
Original PR description
PR https://github.com/odoo/enterprise/pull/82924 makes use of the field l10n_ar_currency_rate. But that field is not present in Odoo versions above 17.0 This field was removed in favor of invoice_currecy_rate from account_move, that stores the currency rate used for a document in Odoo 17 and above. This fix adapts the l10n_ar module to use that field instead. opw-4708505
Miscellaneous changes
Commit f494e9d addressed an issue with an edge case of move/picking state conflicts. But in v16 this has the adverse effect of breaking valuation for scrap actions by generating additional corrective SVLs during the confirmation of a stock scrap. We should revert the change for v16, as the original use-case is very non-critical and the more changes made in this version, the higher chances of inadvertently breaking other things. opw-4574728 Forward-Port-Of: odoo/odoo#203945 Forward-Port
Original PR description
Commit f494e9d addressed an issue with an edge case of move/picking state conflicts. But in v16 this has the adverse effect of breaking valuation for scrap actions by generating additional corrective SVLs during the confirmation of a stock scrap. We should revert the change for v16, as the original use-case is very non-critical and the more changes made in this version, the higher chances of inadvertently breaking other things. opw-4574728 Forward-Port-Of: odoo/odoo#203945 Forward-Port-Of: odoo/odoo#203478
After https://github.com/odoo/odoo/pull/144586, the modules other than base localization module should not have the countries key defined in their manifest. The issue happens because countries key works similar to auto-install and it can lead to unwanted installation of the module. As there was no check implemented, for some modules this key was used accidentally and caused issues with auto-install. This commit removes this field from the manifest of the modules that could have this problem to avoid the issue. Also in https://github.com/odoo/odoo/pull/201526 a linting test is proposed to avoid having the same issue in the future. Runbot Errors: https://runbot.odoo.com/odoo/error/159875 https://runbot.odoo.com/odoo/error/159877
### Issue: Currently, the default route set on an automatically created RR might not be set on the product. ### Steps to reproduce: - In the settings: enable Multi-Steps Routes - On your warehouse set Manufacture in 3 steps - Create a storable product without any set route - Create a need for that product, for instance by creating and confirming an SO for 1 unit. - Inventory > Operations > Procurement > Replenishment #### > A reordering rule was automatically created for your prod
Original PR description
### Issue: Currently, the default route set on an automatically created RR might not be set on the product. ### Steps to reproduce: - In the settings: enable Multi-Steps Routes - On your warehouse…
### Issue: Currently, the default route set on an automatically created RR might not be set on the product. ### Steps to reproduce: - In the settings: enable Multi-Steps Routes - On your warehouse set Manufacture in 3 steps - Create a storable product without any set route - Create a need for that product, for instance by creating and confirming an SO for 1 unit. - Inventory > Operations > Procurement > Replenishment #### > A reordering rule was automatically created for your product but the manufacture route is set by default. ### Cause of the issue: Entering the replenishment tab will create orderpoints and set their default routes: https://github.com/odoo/odoo/blob/884130330b600b4356c640cb679c2bb8fdb833a0/addons/stock/models/stock_orderpoint.py#L478-L481 However, the `_set_default_route_id` does not check that the route found to match a given orderpoint is actually selected on the product of the orderpoint: https://github.com/odoo/odoo/blob/884130330b600b4356c640cb679c2bb8fdb833a0/addons/stock/models/stock_orderpoint.py#L323-L336 opw-4681202 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204449
Avoid using a set when loading server-wide modules to ensure a deterministic and consistent module loading order. This change ensures 'base' and 'web' are always loaded in that specific order, improving predictability. Forward-Port-Of: odoo/odoo#204967
Original PR description
Avoid using a set when loading server-wide modules to ensure a deterministic and consistent module loading order. This change ensures 'base' and 'web' are always loaded in that specific order, improving predictability. Forward-Port-Of: odoo/odoo#204967
Versions -------- - 17.0+ Steps ----- 1. Configure website to prevent sale of zero-priced products; 2. add a zero-priced product as an alternative product to a product; 3. open the product in eCommerce. Issue ----- The alternative products block with the zero-priced product isn't shown. Cause ----- The `_get_products_alternative_products` method filters out zero-priced products out of its end result. It is the only snippet filter to do this. Solution -------- Don't filter
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Configure website to prevent sale of zero-priced products; 2. add a zero-priced product as an alternative product to a product; 3. open the product in eCommerce. Issue ----- The alternative products block with the zero-priced product isn't shown. Cause ----- The `_get_products_alternative_products` method filters out zero-priced products out of its end result. It is the only snippet filter to do this. Solution -------- Don't filter out zero-priced products, as users may still want those products to be visible, even if not available for sale. opw-4443410 Forward-Port-Of: odoo/odoo#204777
When you add a table via "/table" when you're in editing mode, and if there's a lot of content, then the content overlaps. This is noticable in the small devices as well as bigger devices. We'll stop the overflow by using overflow-wrap: break-word. Steps To Reproduce on Runbot: 1. Go to editor via website/elearning. 2. Add table via command "/table" 4. Make the table like size 11*2, and keep typing on a cell, eventually the text will start overflowing. opw-4317744 Forward-Port-Of:
Original PR description
When you add a table via "/table" when you're in editing mode, and if there's a lot of content, then the content overlaps. This is noticable in the small devices as well as bigger devices. We'll stop the overflow by using overflow-wrap: break-word. Steps To Reproduce on Runbot: 1. Go to editor via website/elearning. 2. Add table via command "/table" 4. Make the table like size 11*2, and keep typing on a cell, eventually the text will start overflowing. opw-4317744 Forward-Port-Of: odoo/odoo#192128
Fix tests that were using unexisting category in runbot. Removing the category from the product since categ_id isn't necessary in PoS tests. runbot error: 162900 Forward-Port-Of: odoo/odoo#205133
Original PR description
Fix tests that were using unexisting category in runbot. Removing the category from the product since categ_id isn't necessary in PoS tests. runbot error: 162900 Forward-Port-Of: odoo/odoo#205133
This traceback occurs when the user schedules a mail without a `Mail Body` in email marketing. To reproduce this issue: 1) Install `mass_mail` 2) Create new mailings with `contact_list_ids` and make sure to give the value for `preview` in the settings page. 3) Don't select any `Mail Body` templates. 4) Schedule the record with the `previous day`. 5) An Error was encountered in the terminal. Error:- ``` TypeError: expected string or bytes-like object ``` A corn job runs w
Original PR description
This traceback occurs when the user schedules a mail without a `Mail Body` in email marketing. To reproduce this issue: 1) Install `mass_mail` 2) Create new mailings with `contact_list_ids` and make…
This traceback occurs when the user schedules a mail without a `Mail Body` in email marketing.
To reproduce this issue:
1) Install `mass_mail`
2) Create new mailings with `contact_list_ids` and make sure to give
the value for `preview` in the settings page.
3) Don't select any `Mail Body` templates.
4) Schedule the record with the `previous day`.
5) An Error was encountered in the terminal.
Error:-
```
TypeError: expected string or bytes-like object
```
A corn job runs when the user `schedules` a mail, in which `action_send_mail` triggers.
In that method while composing values, `body` is used to get values from `mail.body_html`.
https://github.com/odoo/odoo/blob/e37c393d415d686584487f9ad92f062279504cf8/addons/mass_mailing/models/mailing.py#L1043-L1046
Because when the user doesn't select the body template its value will be `false` which leads to the above traceback,
as the `re.search` method is used between preview and body.
https://github.com/odoo/odoo/blob/e37c393d415d686584487f9ad92f062279504cf8/odoo/tools/mail.py#L500
This commit will resolve the issue by giving a fallback value of empty string when the user doesn't select the body template.
sentry-5983589884
Forward-Port-Of: odoo/odoo#204167
Forward-Port-Of: odoo/odoo#166962Discounts on non recurring products were being recomputed every time the subscription was paused and resumed. Added a protecting similar to action_confirm in order to prevent this behavior. opw-4440500 Forward-Port-Of: odoo/enterprise#82858
Original PR description
Discounts on non recurring products were being recomputed every time the subscription was paused and resumed. Added a protecting similar to action_confirm in order to prevent this behavior. opw-4440500 Forward-Port-Of: odoo/enterprise#82858
Partial revert of the odoo/enterprise#78827 fix. The payment due date is in facts the payment date itself. This way we are able to handle different lines each with a different due date. The user will have to put it correctly manually in the Register Payment wizard even if the Payment Terms are specified on the invoice. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4703520) opw-4703520 Forward-Port-Of: odoo/enterprise#82950
Original PR description
Partial revert of the odoo/enterprise#78827 fix. The payment due date is in facts the payment date itself. This way we are able to handle different lines each with a different due date. The user will have to put it correctly manually in the Register Payment wizard even if the Payment Terms are specified on the invoice. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4703520) opw-4703520 Forward-Port-Of: odoo/enterprise#82950
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have 2 accounts like 702.XXX. One should have the credit tag and the other one the debit one. 8. Go to reports and select Trial Balance. 9. Click on the download drop list and select COA SAT ## Issue: Up to now we have just intentionally marked this accounts as no valid, we can see that
Original PR description
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have…
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have 2 accounts like 702.XXX. One should have the credit tag and the other one the debit one. 8. Go to reports and select Trial Balance. 9. Click on the download drop list and select COA SAT ## Issue: Up to now we have just intentionally marked this accounts as no valid, we can see that inside trial_balance.py for l10n_mx_reports at L201 this was a known limitation. ## Solution: As we can see from the technical anex in the mexican goverment site https://www.gob.mx/sat/documentos/contabilidad-en-medios-electronicos-anexo-tecnico we can see that there are asset, liability and equity accounts which, by their nature, can be presented as debit or credit. ### Example Scenario: Let's say we have two hypothetical accounts, 701.01.01 and 701.01.02: Account 701.01.01 (perhaps an asset account) would be a Deudora (D). Account 701.01.02 (perhaps a liability account) would be Acreedora (A). The nature (D or A) depends on the type of account according to the categorization provided in the document. So, - Accounts related to Assets, Costs, and Expenses should generally be Deudora (D). - Accounts related to Liabilities, Equity, and Income should generally be Acreedora (A). - Some special accounts may vary and can be both Deudora (D) and Acreedora (A). opw-4185713 Forward-Port-Of: odoo/enterprise#82363 Forward-Port-Of: odoo/enterprise#70113