Thursday, March 13, 2025
17 changes · 17.0
Resolved issues and error corrections
Factur-X electronic invoices now use the invoice’s actual delivery date instead of defaulting to the current date. This helps ensure exchanged invoice data matches the business document and avoids incorrect delivery information for customers or partners.
Original PR description
- Create an invoice and set its delivery date to a date other than today. - Generate the cii facturx xml. Under <ram:ActualDeliverySupplyChainEvent>, the date is incorrectly set to today instead of the invoice's delivery date. This commit applies the same treatment as https://github.com/odoo/odoo/commit/dda560005b2372ed8f6fa0cf3fd6c6f7ca0d1fe3 but for account_edi_xml_cii_facturx. opw-4531928 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
The attendance kiosk now displays employee badges correctly even when an employee has no profile picture. This prevents a broken badge display during check-in and keeps the kiosk experience smooth for employees.
Original PR description
- if employee has no avatar his badge was broke in the kisok mode Task: 4629546 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The stock app now handles product route searches correctly instead of returning no results in some cases. This helps users find products by their assigned routes more reliably, reducing confusion during inventory and logistics work.
Original PR description
Currently the search on total_route_ids always returns `[('id', 'in', [])]` as filtered_domain on
an empty recordset returns False.
This PR fixes that by first searching on the categories before filtering using the domain
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fix prevents an error when users mark an activity as done and schedule the next one without setting a due date. It keeps the activity workflow running smoothly instead of interrupting users with a crash.
Original PR description
Currently, a traceback is occurring when the user clicks the `Done & Schedule Next` button without having the due date. To reproduce this issue: 1) Install Sales 2) Open any sale order and in the…
Currently, a traceback is occurring when the user clicks the `Done & Schedule Next` button without having the due date. To reproduce this issue: 1) Install Sales 2) Open any sale order and in the chatter, schedule an activity 3) Remove the `Due date` and click the `Done & Schedule Next` button Error:- ``` TypeError: unsupported operand type(s) for +: 'NoneType' and 'relativedelta' ``` This traceback is occurring because `date_deadline` is not a required field. So the user can remove it. If there is no `date_deadline`, the context contains key with no value from the line below. https://github.com/odoo/odoo/blob/da7f89d5683c0718644b5ca9fdf5adb86b54fb81/addons/mail/models/mail_activity.py#L510 But here we are only checking the presence of the key in the context; If yes, the base is calculated based on the context value(None in this case). https://github.com/odoo/odoo/blob/da7f89d5683c0718644b5ca9fdf5adb86b54fb81/addons/mail/models/mail_activity.py#L204-L208 This will lead to the above traceback. sentry-6347875218
This update fixes an incorrect Dutch translation in Odoo's Mail app, helping Dutch-speaking users see clearer and more accurate messaging. It also adds a corporate CLA document for contributor compliance, with no expected impact on day-to-day product use.
Original PR description
Description of the issue/feature this PR addresses: Correcting a translation error in NL 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 moves an Israeli localization accounting update to the final migration stage, after all related modules are loaded. This prevents warning messages during upgrades and helps the chart of accounts update more reliably.
Original PR description
We faced a [warning](https://github.com/odoo/odoo/pull/186467/files#diff-f4c0e9f9d6736a6c5313479e63a48eee140d0e3249932cdcf82d69d0bb7865b1R144) because this update doing a try_loading is called in `post-` scripts (after the module is loaded) and not in `end-` scripts (when all modules are loaded). All l10n_* modules were changed in this PR: https://github.com/odoo/odoo/pull/183359 Regarding the changes in this PR related to Registry: https://github.com/odoo/odoo/pull/186467 see: https://github.com/odoo/odoo/pull/191749 upg-2436225 **Reference Image**  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a failing HR test by safely handling cases where the profile toolbar has no menu actions. It helps keep automated checks reliable without changing employee-facing functionality.
Original PR description
version 17.0
Issue:
- test_access_my_profile_toolbar test case fail
reason:
- could not find the action from the toolbar menu because toolbar menu is empty
fix
- get empty dictionary using .get('action', {})The HR test for accessing a user's own profile was updated to match the toolbar options actually available to that user. This helps keep automated checks reliable without changing day-to-day HR functionality.
Original PR description
Before this commit the test `test_access_my_profile_toolbar` was failing because there was no `action` available to the user in the toolbar. This commit changes the test to adapt to this situation. Runbot Error: https://runbot.odoo.com/odoo/error/159894 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a user clicks a breadcrumb for a record that has already been deleted, Odoo now removes that breadcrumb instead of leaving a confusing stale link behind. This prevents users from repeatedly selecting an invalid record and keeps navigation labels accurate.
Original PR description
In commit [1], when clicking on a deleted record in the breadcrumb was handled correctly, a notification was displayed, and the previous controller was restored. However, the deleted record remained in the breadcrumb, and the name was changed after the click (it took the same name as the previously restored controller). This led to some confusion, and the possibility of clicking on the deleted record again. This commit, removes the deleted record from the breadcrumb. [1]: https://github.com/odoo/odoo/commit/a7a7c150aa9bb6c3e36f3842d6df6f7316fe8e95 opw-4630624
Removing an analytic distribution during bank reconciliation now persists after the page is reloaded. This prevents reconciled transaction details from unexpectedly reverting and helps keep accounting records accurate.
Original PR description
How to reproduce the issue: - Create an analytic distribution model. - In the bank reconciliation, create a new transaction. In manual operations, remove the analytic. If you reload the reconciliation, the analytic distribution is not deleted. In the `bank_rec_widget` of account_accountant, the method `_line_value_changed_analytic_distribution` is triggered when the analytic field is modified. However it does not save the new value of the analytic on the account.move.line. opw-4460079
Financial report generation now refreshes pending data earlier in the process. This helps ensure warning messages from custom report logic are based on the latest information, reducing the risk of outdated alerts appearing in reports.
Original PR description
When using a custom engine, and defining warnings that should be displayed on the report, it has been detected that data were not up to date since the only flush made in the report generation is in the _get_lines() function. The existing flush_all() is therefore called 'too late' when generating a report. To solve it, another flush_all() is called at the beginning of the report generation.
The shop floor quality check screen now preserves the capitalization entered for units of measure. This prevents important measurement meanings from changing, such as confusing megawatts with milliwatts.
Original PR description
Steps fo reproduce : - create a product (in the inventory tab, the route should be 'Manufacture') - click on the smart button 'bill of materials' - create a BOM for this product with at least one…
Steps fo reproduce : - create a product (in the inventory tab, the route should be 'Manufacture') - click on the smart button 'bill of materials' - create a BOM for this product with at least one operation - in the quality app navigate to Quality Control/Control Points - create a new control point - in the field product select the product that you created - in the operations field select "YourCompany: Manufacturing" - in the work order operation field select the operation that you wrote in the BOM you created (if multiple operations with the same name make sure that you selected the one linked with the BOM) - in the type field select "Measure" - in the norm field enter a unit of measure with at least an upper case - create a manufacturing order for this product - open the shop floor app and on the manufacturing order you created select the quality check point Current Behavior: The unit of measure appears in lower case. This could change its meaning for instance form MW (mega-watt) to mw (mili-watt) Expected Behavior: The unit of measure string should respect the letter case wrote by the user Cause of the issue: In the xml file, inside the <span> tag the class was "text-lowercase" Fix: I removed this class from the span https://github.com/odoo/enterprise/blob/43e7aec36ddee8a3ff3de8793427a183dfd29b30/mrp_workorder/static/src/mrp_display/dialog/mrp_quality_check_confirmation_dialog.xml#L47 opw-4584509
This update corrects an internal test so it checks stock moves against the current user's default warehouse. It helps ensure warehouse-related behavior is validated accurately when multiple warehouses exist for a company.
Original PR description
Before this commit, if the `property_warehouse_id` field is set on the current user inside the test, the expected warehouse could not be found with the search made on the test (if more than one warehouse exists on the second company used in the test). This commit makes sure the test expects the right warehouse by calling the `_get_default_warehouse_id` defined in `res.users` model to assert the stock move is done in the default warehouse of the current user.
Miscellaneous changes
Scenario: - create marketing email in 17.0 or above - use the Cover widget - change the cover image to get a base64 endoded image - send the mail Result: no image is sent Cause: commit 1605b81b12e0dee78905e6eb3526fdb7e4908050 could have issue when parsing the CSS because of having inside a CSS value eg. url("data:image/webp;base64,..."), then when the CSS was modified, the background image would be broken (with a :undefined after the value). Fix: instead of replacing all the style to change t
Original PR description
Scenario:
- create marketing email in 17.0 or above
- use the Cover widget
- change the cover image to get a base64 endoded image
- send the mail
Result: no image is sent
Cause: commit 1605b81b12e0dee78905e6eb3526fdb7e4908050 could have issue
when parsing the CSS because of having inside a CSS value eg.
url("data:image/webp;base64,..."), then when the CSS was modified, the
background image would be broken (with a :undefined after the value).
Fix: instead of replacing all the style to change the border-style,
update it with regex.
opw-4613524
Forward-Port-Of: odoo/odoo#201394To reproduce: - Install delivery_fedex (for example) and sale_management. - Open Fedex US shipping method and set invoicing to real cost, margin on rate to 93.47 (for example). - New SO to Azure Interior, 1x product 5555, Add shipping Fedex US and get the rate before adding to the SO. Current behaviour: Estimated cost on SO line description is not rounded according to the currency conventions. Expected behaviour: Estimated cost on SO line description is rounded, according to the curre
Original PR description
To reproduce: - Install delivery_fedex (for example) and sale_management. - Open Fedex US shipping method and set invoicing to real cost, margin on rate to 93.47 (for example). - New SO to Azure Interior, 1x product 5555, Add shipping Fedex US and get the rate before adding to the SO. Current behaviour: Estimated cost on SO line description is not rounded according to the currency conventions. Expected behaviour: Estimated cost on SO line description is rounded, according to the currency conventions. opw-4543605 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201510
**Issue** Re-installing Project is not possible if the Project Share Wizard has been used shortly before the module uninstallation. **Cause** The `project_share_wizard_res_partner_rel` table for the `partner_ids` field of the `project.share.wizard` is not dropped at uninstall (this is a known ORM limitation) and if it contains rows, restoring the foreign keys constraint for the `project_share_wizard_id` column will fail. **Solution** Ensure the table is empty after uninstall. **Steps
Original PR description
**Issue** Re-installing Project is not possible if the Project Share Wizard has been used shortly before the module uninstallation. **Cause** The `project_share_wizard_res_partner_rel` table for the…
**Issue** Re-installing Project is not possible if the Project Share Wizard has been used shortly before the module uninstallation. **Cause** The `project_share_wizard_res_partner_rel` table for the `partner_ids` field of the `project.share.wizard` is not dropped at uninstall (this is a known ORM limitation) and if it contains rows, restoring the foreign keys constraint for the `project_share_wizard_id` column will fail. **Solution** Ensure the table is empty after uninstall. **Steps to reproduce** - Project Kanban View > 3 dots > Share - Add a recipient and Send: this should add a row to the `project_share_wizard_res_partner_rel` table. - Uninstall Project shortly after (before the row is deleted by the auto-vacuum). - Try to re-install Project: ``` The operation cannot be completed: another model requires the record being deleted. If possible, archive it instead. Model: Unknown (unknown) Constraint: project_share_wizard_res_partner_r_project_share_wizard_id_fkey ``` opw-4593125 Forward-Port-Of: odoo/odoo#200555
Versions -------- - 16.0+ Steps ----- 1. Have a product with a "No variant" or customer attribute; 2. add product to a sales order. Issue ----- There is a blank line between the product name & attribute descriptor. Cause ----- The `_get_sale_order_line_multiline_description_variants` method returns either an empty string, or a string that starts with 2 newlines. Solution -------- Start with only 1 newline. opw-4585174 Forward-Port-Of: odoo/odoo#201011
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Have a product with a "No variant" or customer attribute; 2. add product to a sales order. Issue ----- There is a blank line between the product name & attribute descriptor. Cause ----- The `_get_sale_order_line_multiline_description_variants` method returns either an empty string, or a string that starts with 2 newlines. Solution -------- Start with only 1 newline. opw-4585174 Forward-Port-Of: odoo/odoo#201011