Tuesday, April 8, 2025
17 changes · 17.0
Resolved issues and error corrections
The Point of Sale test setup was corrected so automated checks no longer reference a missing product category. This helps keep the validation pipeline stable and reduces delays caused by false test failures.
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
The demo product “Drawer” now uses lot tracking to match the sample inventory records already linked to a lot. This prevents confusion when reviewing demo inventory data and keeps product settings consistent with existing stock examples.
Original PR description
The demo product 'Drawer' was initially configured to be tracked by quantity, but a lot was incorrectly created, and the stock quant was subsequently created for the 'Drawer' with lot. Steps to reproduce =============== - Install the 'stock' module with demo data. - Navigate to Inventory > Products > Products and search for 'Drawer'. - Observe that 'Drawer' is set to track by quantity (Tracking field). - Check Inventory > Operations > Physical Inventory and locate the stock quant for 'Drawer'. - Note that a lot exists and is linked to the product 'Drawer', despite the quantity tracking setting. This commit modifies the demo data to enable lot tracking for the product, aligning its configuration with the existing lot and stock quant data for consistency.
The Nilvera unit code mapping has been moved into the shared Turkish Nilvera module so both e-invoice and e-despatch processes can use it. This helps ensure consistent document data across Nilvera integrations and avoids duplicate logic in separate document features.
Original PR description
The UNECE code mapping for Nilvera was done in l10n_tr_nilvera_einvoice. here at #193030 However later that was needed in l10n_tr_nilvera_edespatch and that too in stock_move. This PR moves the mapping from l10n_tr_nilvera_einvoice to l10n_tr_nilvera so that it can be used by both einvoice and edespatch. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes an internal stock module test that could fail unpredictably because product records were checked in an inconsistent order. It helps keep automated builds reliable without changing day-to-day user behavior.
Original PR description
### Issue:
The test `test_orderpoint_replenishment_view_3` is failling its assertRecordValues on the replenishments since these are created using the `set` of product ids. However, when the ids are 191, 192 and 193, `list(set(191, 192, 193)) == [192, 193, 191]`. In addition the sorted('product_id') added in the assertion does not change the order by a yota since the `product_id` is a relational field so that the order used in the sorted method is the order `__lt__` of Base model that is the order of record inclusion (and hence is False in each comparaisons).
runbot-162792
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prText entered into website editor tables now wraps within table cells instead of spilling over nearby content. This improves readability and editing reliability on both small and large screens when users add tables with long content.
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
Closing a production order from the shop floor no longer sends users to the backend when backorders are set to always be created. This keeps shop floor workers in the right screen and avoids workflow interruptions.
Original PR description
### Before this PR If the backorder is "always", on the shopfloor when clicking "close production" on the "production overview", it redirects to the backend ### After this PR Clicking on close production it does not redirect to backend
This fixes a missing permission so purchasing users can read the Kenya OSCU stock compliance data needed by the system. It helps prevent related automated checks and workflows from failing due to insufficient access.
Original PR description
adding missing access rule (read permission to the group_purchase_user) for the test that checks it build_error-70728
This fixes Spanish translations for Peruvian stock operation types so they match official SUNAT terminology. Users working with Peruvian inventory documents will see the correct regulated labels, reducing confusion and reporting errors.
Original PR description
Some keys were not correclty translated Steps to reproduce: ------------------- * Install l10n_pe_reports_stock * Switch to PE Company and Spanish language * In Stock create a new operation * Open the dropdown Type of Operation (PE) > Observation: Why the fix: ------------ Based on official values https://www.sunat.gob.pe/legislacion/superin/2015/anexo3-rs169-2015.pdf Tabla 12 opw-4653572
This fixes an issue where Amazon order synchronization could fail when it encountered older offer records stored in a legacy format. These unused references are now ignored during order sync, allowing sales operations to continue while regular stock synchronization handles any future updates.
Original PR description
Following commit 6b5acdde9998fb1ee0d4d4aee0ab2375e50d7703 we ensured that we stopped the stock synchronization when there was a discrepancy between an offer fulfilment channel and an order fulfilment channel. This bugfix didn't consider the cases of offers that were synced once then never updated with the changes of the new API, thus not being the string of a dictionary, but instead, being the string of an int. Thus raising an attribute error, and not a JSON error nor a TypeError. These offers, though, don't need that safety net, and can thus just be ignored. If their stock needs to be sync someday, the stock cron will take care of these. opw-4684657 opw-4684605
Miscellaneous changes
When an image is added in a website page by using the `/image` command of the Powerbox, it is not optimized like when the media dialog is used to replace an image. Also, when an image is replaced, the auto-optimization is not always included in the last history step - which makes operations like inserting a new paragraph remove the optimization. This commit makes sure that the `image_changed` event is: - triggered after the new image is inside the DOM - completed before considering we
Original PR description
When an image is added in a website page by using the `/image` command of the Powerbox, it is not optimized like when the media dialog is used to replace an image. Also, when an image is replaced,…
When an image is added in a website page by using the `/image` command of the Powerbox, it is not optimized like when the media dialog is used to replace an image. Also, when an image is replaced, the auto-optimization is not always included in the last history step - which makes operations like inserting a new paragraph remove the optimization. This commit makes sure that the `image_changed` event is: - triggered after the new image is inside the DOM - completed before considering we are done - included in the same history step that applied the media dialog's change. It also avoids recomputing the auto-optimization several times for a single trigger of the event. Steps to reproduce: Scenario 1: - Drop a three columns snippet - Put your cursor after "Feature 1" - Press ENTER - Use the "/image" Powerbox command to add an image that should be resized by the auto-optimization => Image was the original uploaded image. Scenario 2: - Drop a three columns snippet - Double click on an image - Upload/select an image that will be resized by the auto-optimization - Put your cursor after "Feature 1" - Press ENTER => Image's optimization was lost because it happened after the history step was completed. task-4129429 Forward-Port-Of: odoo/odoo#177433
Steps to reproduce ================== - In 18, go to a view with an always invisible many2one field - Enable debug mode - In the debug menu, click on "Set defaults" => Cannot read properties of undefined (reading 'length') Cause of the issue ================== We only fetch the display name for many2one that are not always invisible https://github.com/odoo/odoo/blob/6a1c38a83a1a9108ae4cbfe36bf787bef02de063/addons/web/static/src/model/relational_model/utils.js#L383-L384 In t
Original PR description
Steps to reproduce ================== - In 18, go to a view with an always invisible many2one field - Enable debug mode - In the debug menu, click on "Set defaults" => Cannot read properties of undefined (reading 'length') Cause of the issue ================== We only fetch the display name for many2one that are not always invisible https://github.com/odoo/odoo/blob/6a1c38a83a1a9108ae4cbfe36bf787bef02de063/addons/web/static/src/model/relational_model/utils.js#L383-L384 In that case, `displayed` will be undefined. a0732ec87edbb7fee6ebc76ea093bc8a52fd3fad didn't check if displayed was defined. It also checked the length of non-string values. While it doesn't cause an error, it doesn't make sense. A comparison of `typeof displayed === "string"` is not enough, because we also need to handle Markup elements. opw-4572496 Forward-Port-Of: odoo/odoo#204816
* When checking model coherency for sms, if choose transient model -> raise ValidationError message but the message seem not follow with the code so much 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#188760
Original PR description
* When checking model coherency for sms, if choose transient model -> raise ValidationError message but the message seem not follow with the code so much 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#188760
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
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#166962Partial 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
Backport of https://github.com/odoo/enterprise/pull/82930 Profit and loss from previous year was not well calculated on the balance sheet. With this commit, we change the date scope for the `Net profit/loss for the year` line from `normal` to `from_fiscalyear`. We also change the way we calculate `Profit carried forward/loss carried forward` and `Net income/loss for the year` lines. opw-3663626 Forward-Port-Of: odoo/enterprise#54186
Original PR description
Backport of https://github.com/odoo/enterprise/pull/82930 Profit and loss from previous year was not well calculated on the balance sheet. With this commit, we change the date scope for the `Net profit/loss for the year` line from `normal` to `from_fiscalyear`. We also change the way we calculate `Profit carried forward/loss carried forward` and `Net income/loss for the year` lines. opw-3663626 Forward-Port-Of: odoo/enterprise#54186
This fix aims to increase the operation timeout to reduce the risk of timeouts when sending documents. If a timeout occurs when sending a document, Odoo will consider it an error and allow the resend, even though the document will have been successfully accepted by the Carvajal service. opw-4608647 Forward-Port-Of: odoo/enterprise#82715
Original PR description
This fix aims to increase the operation timeout to reduce the risk of timeouts when sending documents. If a timeout occurs when sending a document, Odoo will consider it an error and allow the resend, even though the document will have been successfully accepted by the Carvajal service. opw-4608647 Forward-Port-Of: odoo/enterprise#82715