Monday, December 15, 2025
21 changes · master
Resolved issues and error corrections
POS receipts now show customer information only once instead of repeating it in loyalty-related receipt sections. This makes receipts cleaner and avoids confusion for customers and cashiers.
Original PR description
pos_*: pos_loyalty, l10n_in_pos ### Before this commit: - The `pos_loyalty` module added an extra customer information block. - Since the POS receipt already displays customer details in the receipt header, this resulted in the same information appearing twice. ### After this commit: - The additional customer info block is removed from the `pos_loyalty` receipt. - The receipt header now shows customer details only once, avoiding duplication for receipts. Task - 5353203 Related PR: - Enterprise: https://github.com/odoo/enterprise/pull/100698
Fixes an error that could stop Chilean companies from confirming invoices when the invoice total is zero and a foreign currency is used. This helps users complete valid invoice workflows without unexpected system failures.
Original PR description
Steps to reproduce:
--------------------
1. Install l10n_cl and switch to the CL company
2. Create a new invoice:
- Change the currency to a value different from the company currency
(e.g., from CLP to USD)
- Add an invoice line with a price value of 0
- Remove the default tax value
3. Try to confirm the invoice
Issue:
------
A traceback occurs:
`ZeroDivisionError: float division by zero`
Cause:
------
Since the price value is 0, the `amount_total` of the move becomes 0.
When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError.
Solution:
---------
Add a conditional check before division to ensure the `amount_total` is non-zero
Related enterprise PR: https://github.com/odoo/enterprise/pull/99518
opw-5247058
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#239247
Forward-Port-Of: odoo/odoo#235252Fixed an issue that prevented the CTEP driver from downloading on Windows because the system was looking in the wrong location. This helps Windows IoT Service setups install the required driver reliably.
Original PR description
On Windows CTEP driver could not be downloaded do to an incorrect file path resolution. We fixed this using the IoT `file_path` helper resolving from the root of the IoT Service.
Odoo now includes confirmation dialog titles in translation files, so text such as email campaign confirmation prompts can be localized. This helps users see more complete translations in the interface once translators add the missing text.
Original PR description
Description of the issue/feature this PR addresses: The texts from the "confirm-title" attribute of a tag are missing from the POT files. Current behavior before PR: In this line there is a text (the caption of the confirmation window): https://github.com/odoo/odoo/blob/19.0/addons/mass_mailing/views/mailing_mailing_views.xml#L66 "Ready to unleash emails?" - This text is missing from the POT file. Desired behavior after PR is merged: * These texts will apeear in POT files * Someone needs to translated them * It will show up as translated texts in UI --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239328 Forward-Port-Of: odoo/odoo#239034
This fixes an access issue when checking whether users have two-factor authentication enabled. It helps ensure related user searches work correctly without exposing or changing user-facing functionality.
Original PR description
Missing sudo to access the field. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change corrects how the database manager is called so it receives the right information when launched. It helps prevent avoidable errors in database management flows, improving reliability for administrators.
Original PR description
Fine-tunning of b86c060c9d5ba03ac13e8ad59cf55731fa50ed59 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 website/page builder no longer saves a number input value after every key press. This prevents premature changes while users are typing and keeps edits more predictable.
Original PR description
Following odoo#232383, there was an issue where the input was always committed on every keydown event. This was due to the onKeydown props behing called even on non arrow inputs.
This fixes a crash that could occur when a live chat window is closed after its chat channel has already been deleted. It helps keep the website chat experience stable in edge cases where conversations are removed unexpectedly.
Original PR description
It's not clear how to reproduce the issue, but it is known that chat window flows are very sensitive to channel being deleted.
This fixes a missing internal definition for public employee records in the HR app. It helps keep related HR screens and integrations consistent with the underlying employee data model, reducing the risk of development errors.
Original PR description
This model was added without updating the type definitions. https://github.com/odoo/enterprise/pull/102115
This fixes Spanish TicketBAI invoice exports so the operation date is included when required, even if the invoice and delivery dates match but are earlier than the XML issue date. This helps businesses produce compliant electronic invoice files and avoid missing date information in tax reporting.
Original PR description
With l10n_es_tbai: - Create an invoice with an `invoice_date` and `delivery_date` that are the same and earlier than today. - In the generated TBAI XML, `FechaOperacion` is missing. In the TBAI XML, `FechaExpedicionFactura` corresponds to the date on which the XML is generated. `FechaOperacion` corresponds to the `delivery_date` and should appear whenever it differs from the issue date. The TicketBAI specs define `FechaOperacion` as: > “Date on which the transaction was carried out, whenever it differs from the issue date.” So when the invoice date and delivery date are equal but set in the past, `FechaOperacion` is not generated, even though it should be. opw-4477135 opw-4477135 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#239189
Users without Point of Sale access can now archive products that are not tied to an open POS session without being blocked by an access error. This keeps product maintenance and related stock workflows working correctly while preserving checks for products actually used in POS.
Original PR description
### Steps to reproduce: - With Admin open a pos session - With an other user without pos access rights archive a product unrelated to pos (e.g. not used in the session) #### > Access error: You are…
### Steps to reproduce: - With Admin open a pos session - With an other user without pos access rights archive a product unrelated to pos (e.g. not used in the session) #### > Access error: You are not allowed to access 'Point of Sale Session' (pos.session) records. This operation is allowed for the following groups: - Point of Sale/User ### Cause of the issue: Since 985fd5821fe1e8633503d713f1f1c3650bcf0c91 the `action_archive` of products, check that the product is not used by an order of any opened `pos.session` before allowing the user to archive it: https://github.com/odoo/odoo/blob/2011885246f5473ddc16fe5bd17db98ebff712f3/addons/point_of_sale/models/product_product.py#L51-L53 https://github.com/odoo/odoo/blob/2011885246f5473ddc16fe5bd17db98ebff712f3/addons/point_of_sale/models/product_template.py#L313-L320 However, if the user does not have any pos access rights he can not access the pos session to check if the product is used which raises an access error even if the product is un-used. ### Note: This is notably problematic as it makes it impossible to archive products via the `action_archive` in unrelated stock tests relying on a non-admin user. opw-stock-tests --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239723 Forward-Port-Of: odoo/odoo#239490
The Inventory Valuation report now sends dates in the expected server format when users choose an ending stock date. This prevents an error that could block access to the report after selecting certain dates or locales.
Original PR description
Steps to reproduce: - Create a PO for a product with some unit price, validate it & its receipt. - Go to Accounting > Review > Inventory Valuation - Pick another date (like one day in the future) - Click on 'Ending stock' Issue: A traceback will appear, as a `to_datetime` will be called on a string containing a timezone. `serializeDate` should be used to serialize datetime to the format used by the server, regardless of the language used, not `toISO`, as this would give an incorrect format. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239595
This update fixes a potential error that could prevent invoices from being confirmed when specific currency and pricing settings are used. The fix adds a check to ensure invoice amounts are non-zero before currency calculations, preventing a division-by-zero error and ensuring smooth invoice processing. This improves the stability of the CL invoicing process.
Original PR description
Steps to reproduce: -------------------- 1. Install l10n_cl and switch to the CL company 2. Create a new invoice: - Change the currency to a value different from the company currency (e.g., from CLP to USD) - Add an invoice line with a price value of 0 - Remove the default tax value 3. Try to confirm the invoice Issue: ------ A traceback occurs: `ZeroDivisionError: float division by zero` Cause: ------ Since the price value is 0, the `amount_total` of the move becomes 0. When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError. Solution: --------- Add a conditional check before division to ensure the `amount_total` is non-zero Related community PR: https://github.com/odoo/odoo/pull/235252 opw-5247058 Forward-Port-Of: odoo/enterprise#101695 Forward-Port-Of: odoo/enterprise#99518
This update addresses a situation where the POS system was incorrectly displaying certification status due to its current version (18.0) being uncertified by the LNE. Until a higher certified version is available, the system will now automatically hide these certification messages to avoid misleading users. This ensures a cleaner and more accurate user experience.
Original PR description
The POS in only certified by the LNE in version 18.0. Until such time that we receive the certification in a higher version, we will disable the certification status messages. task-5386904 Forward-Port-Of: odoo/enterprise#102028
This update resolves an issue where by-products weren't correctly registered during multi-step manufacturing processes. The fix ensures that by-product lines are created with the correct pre-production and production locations, streamlining the manufacturing workflow. This issue is now resolved in version 18.0 and later.
Original PR description
### Steps to reproduce: - In the settings enable By-Products an Multi-step routes - Put your warehouse in manufacturing in 3 steps - Create two storable products: - Final Product (FP) with an empty…
### Steps to reproduce:
- In the settings enable By-Products an Multi-step routes
- Put your warehouse in manufacturing in 3 steps
- Create two storable products:
- Final Product (FP) with an empty bom
- By Product (BP)
- Go to the barcode app > Operations > Manufacturing > New
- Scan FP > Register By-Products
- Scan BP
#### > The line is created with pre-prod as location and prod as destination
### Cause of the issue:
Since no existing line refers to the by product, a new line is created and its `location_id` and `location_dest_id` are provided by the `_getNewLineDefaultValues`:
https://github.com/odoo/enterprise/blob/17fd46b04d87585b7ed46c00d9559414daa17384/stock_barcode/static/src/models/barcode_model.js#L562-L566 However, at this point nothing had set the `params.newByProduct` in the `processBarcode`:
https://github.com/odoo/enterprise/blob/17fd46b04d87585b7ed46c00d9559414daa17384/stock_barcode_mrp/static/src/models/barcode_mrp_model.js#L375-L383 In fact, the only thing indicating that we are creating a by prodcut line at this point is the `displayByProduct`.
### Note:
The issue is no longer reproducible in 18.0+ as this change has already been applied in 2d5dbb93e6b33c2be786f9b2361c993f715d1a7f
opw-5350222
Forward-Port-Of: odoo/enterprise#101861
Forward-Port-Of: odoo/enterprise#101087A recent test was failing due to timing issues when switching users and updating shop floor records. This fix introduces a two-step process, first verifying the user switch and then confirming the presence of the expected records, ensuring the test's reliability.
Original PR description
The test `test_shop_floor_my_wo_filter_with_pin_user` sometimes fails on these steps:…
The test `test_shop_floor_my_wo_filter_with_pin_user` sometimes fails on these steps: https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L177-L190 https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L196-L206 https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L212-L221 This happends since changing the user requires some time to display the related shopfloor records, but the steps check the number of visible records as soon as it has switched rather than when it is sure that the records are displayed. #### Fix: Since switching employees will first empty the recordset and later display the related records, we can split the steps in two. We first check that we switched users, then we check the existence of a record that is not present for the previous user, and only then perform the related checks. #### runbot-226734 Forward-Port-Of: odoo/enterprise#101602 Forward-Port-Of: odoo/enterprise#100746
This update corrects a visual issue where the reschedule button remained visible in projects with task dependencies disabled. The fix ensures the button is hidden when task dependencies are turned off, providing a cleaner and more consistent user experience. This improves project management clarity.
Original PR description
Steps to reproduce: - Install the project_enterprise module. - Go to project configuration and enable task dependencies. - Open project settings and disable task dependencies. Issue: The reschedule button remains visible even when task dependencies are disabled for the project. Cause: The visibility check for the reschedule control did not consider the project’s task dependency. Fix: Hide the reschedule button when task dependencies are disabled at the project. task-5150621 Forward-Port-Of: odoo/enterprise#97088
This update addresses a missing dependency for the l10n_be_intervat module, which handles Belgian VAT reporting. The system now includes the necessary 'PyJWT' library and provides a helpful error message if it's not installed, ensuring the module functions correctly. This prevents potential errors for users.
Original PR description
The l10n_be_intervat module needs `PyJWT`, but it is not listed in external_dependencies. As we cannot change module dependencies in a stable version, this commit adds a try-except block regarding the import. In case the library is not installed, an error is logged to inform the user that they need to install the `PyJWT` module. Additionally, this commit updates the import of ImmatureSignatureError to come from jwt.exceptions instead of jwt. no-task Forward-Port-Of: odoo/enterprise#101583
This update ensures that the total account return balance is always displayed when there's a difference from the current period amount. Previously, this information was only shown if the return amount was lower. This change provides a more complete and accurate view of account return balances.
Original PR description
When this https://github.com/odoo/enterprise/pull/91886 got merged, It removed the accumulation of the balance in the return amount. Showing only the amount of the current period. Additionally, the total amount was shown if the amount was different. But, it was only being shown if it was less than the current period amount. The fix ensures it is always shown if the amount is different. task-5172274 Forward-Port-Of: odoo/enterprise#98150
This update corrects a technical issue where type definitions for the WhatsApp module were not consistently updated alongside recent changes. This ensures that developers have accurate type information, leading to fewer errors and a smoother development process. It's a routine maintenance task to maintain code quality.
Original PR description
Various changes were done without updating the type definitions. https://github.com/odoo/odoo/pull/240002
This update corrects a technical error that prevented Odoo from properly removing IoT records. The fix ensures that all necessary conditions are evaluated during deletion, preventing tracebacks and ensuring data integrity. This improves the stability and reliability of the IoT functionality.
Original PR description
For an unknown reason, when removing an IoT record, Odoo was evaluating only partly an `invisible` tag. The condition was `not version or version[0] == 'W'`. When deleting, `not version` was still false, but `version` in `version[0]` was undefined, resulting in a traceback. This is fixed using `'W' in version` instead. opw-5352092 Forward-Port-Of: odoo/enterprise#102065