Wednesday, April 16, 2025
15 changes · master
Enhancements to existing features
The point-of-sale IoT customer display is now always enabled, so users no longer encounter an unnecessary configuration error. This reduces setup friction and makes the customer display behavior more predictable for stores.
Original PR description
In this commit: ================ Customer display configuration has been removed from res config settings and is always enabled, the user error is no longer needed and has been removed. Task-4604770 Related Community PR:https://github.com/odoo/odoo/pull/201637 Related Upgrade PR:https://github.com/odoo/upgrade/pull/7386
The product version field in PLM has been repositioned into the traceability section of the product form. This makes version information easier to find alongside related tracking details, improving clarity for manufacturing and product lifecycle users.
Original PR description
Task-4441066
The website generator has been updated to stay compatible with recent changes in the main Odoo website platform. This helps ensure the website setup experience continues to work smoothly for users as the broader system evolves.
Original PR description
See also: - https://github.com/odoo/odoo/pull/201410
The spreadsheet test setup no longer loads chart resources that are already included automatically. This reduces duplicated test preparation work and helps keep internal testing simpler without changing business features.
Original PR description
In the helper `prepareWebClientForSpreadsheet`, we would explicitely load some ChartJs assets to ensure their presence but those are already loaded in the tests assets bundle (the test loads spreadsheet.o_spreadsheet which in turn depends on web.chartjs_lib).
Resolved issues and error corrections
Public website visitors now see the intended custom placeholder images for appointment-related products when no product image is set. This avoids fallback to a generic image and keeps appointment and sale pages visually consistent.
Original PR description
Placeholders were introduced in odoo/odoo@c52453f for meta products such as discounts, gift cards, event tickets, and appointments. Previously, access rights prevented public users from viewing these placeholders. Even when no image was linked to a record, access was denied due to read restrictions, defaulting to the generic placeholder instead of the custom one provided by `_get_product_placeholder_filename`. This commit overrides `_can_return_content` in relevant modules to allow proper access for public users, ensuring the intended placeholder is displayed. See also: - https://github.com/odoo/odoo/pull/205693
Code cleanup and technical improvements
The social push notification component was updated to align with Odoo's newer website interaction framework. This is an internal modernization that helps keep the feature maintainable while preserving the existing user experience.
Original PR description
continuation of work continue working on the refactoring introduced by this commit: [1] [1]: odoo/odoo@dd13994 task-4367641
Miscellaneous changes
1/ 1. Select a record in kanban view in a folder with a few records (< page size) 2. Switch to list view 3. The documents should still be selected, some actions are visible, but not all This occurs because the old view is unmounted only after the new view is already mounted, so the service function is set to null. We don't need to clear it when unmounting because no other context (not a documents view) is expected to call this method on the documents service. 2/ 1. Select a pdf re
Original PR description
1/ 1. Select a record in kanban view in a folder with a few records (< page size) 2. Switch to list view 3. The documents should still be selected, some actions are visible, but not all This occurs because the old view is unmounted only after the new view is already mounted, so the service function is set to null. We don't need to clear it when unmounting because no other context (not a documents view) is expected to call this method on the documents service. 2/ 1. Select a pdf record in kanban view 2. Open Split Tools 3. Actions are not shown Task-4702653 Forward-Port-Of: odoo/enterprise#82871
The appointment booking slot selector was reorganized as part of a broader modernization of the website interaction code. This should preserve the same customer-facing booking experience while making the feature easier to maintain and evolve.
https://runbot.odoo.com/odoo/error/163099 This issue became visible as part of the change to test ACLs (removal of demo data, possibly change to groups too) as well as running the "single app tests" on *every module*, not just the apps. The issue is that `self.Requests.user` and `self.employee_user` are unrelated (the amazingly named `self.employee_user` doesn't even have a user). On leave creation, this triggers the rule `hr_leave_rule_employee_update` which checks if: - The current us
Original PR description
https://runbot.odoo.com/odoo/error/163099 This issue became visible as part of the change to test ACLs (removal of demo data, possibly change to groups too) as well as running the "single app tests"…
https://runbot.odoo.com/odoo/error/163099 This issue became visible as part of the change to test ACLs (removal of demo data, possibly change to groups too) as well as running the "single app tests" on *every module*, not just the apps. The issue is that `self.Requests.user` and `self.employee_user` are unrelated (the amazingly named `self.employee_user` doesn't even have a user). On leave creation, this triggers the rule `hr_leave_rule_employee_update` which checks if: - The current user is the employee's, which is not the case because the employee doesn't have a user. - Or the current user is the employee's leave manager, which is also not the case because the employee does not have a leaves manager. As a result the creation of the leaves fails immediately. Fix in 17.4 as the test was introduced in #53940 which was merged in (what would become) 17.3, even though the test setup means it might not be possible to trigger there because of all the demo messing with groups. Forward-Port-Of: odoo/enterprise#83427
pos*: l10n_ec_edi_pos, l10n_ke_edi_oscu_code, l10n_ke_edi_oscu_pos l10n_mx_edi_pos, pos_blackbox_be, pos_settle_due Before this commit, when wanting to synchronize a record from the server to a pos via websocket, we were only reading the record without post_processing it as we do when we load the data from the server at the opening of the pos. This would lead to error when synching the data as some data were lost when replacing old records with new ones. Community PR: odoo/odoo#200992 For
Original PR description
pos*: l10n_ec_edi_pos, l10n_ke_edi_oscu_code, l10n_ke_edi_oscu_pos l10n_mx_edi_pos, pos_blackbox_be, pos_settle_due Before this commit, when wanting to synchronize a record from the server to a pos via websocket, we were only reading the record without post_processing it as we do when we load the data from the server at the opening of the pos. This would lead to error when synching the data as some data were lost when replacing old records with new ones. Community PR: odoo/odoo#200992 Forward-Port-Of: odoo/enterprise#81052
Previously, the intrastat_code_id was filtered by checking against a large list that is sent to the frontend. This caused huge memory usage due to the list being used in many objects and the list itself being large, around 10k items. This memory leak caused slowness in the frontend while going through the product form views. Currently, the list is not being sent. The domain itself is evaluated from the frontend without sending a list. This reduces memory footprint and slowness. Forward-Port-
Original PR description
Previously, the intrastat_code_id was filtered by checking against a large list that is sent to the frontend. This caused huge memory usage due to the list being used in many objects and the list itself being large, around 10k items. This memory leak caused slowness in the frontend while going through the product form views. Currently, the list is not being sent. The domain itself is evaluated from the frontend without sending a list. This reduces memory footprint and slowness. Forward-Port-Of: odoo/enterprise#82239
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Go to "Settings / Technical / Database Structure / Decimal Accuracy" - Set 4 digits for "Product Price" - Create a product with a lower price than 0.01 (e.g. 0.0045) - Create an invoice: * Customer: [a Peruvian customer] (e.g. Comercial Constructora los Patitos S.A.) * Product: [the created product] * Quantity: 100 - Confirm the invoice - Process the invoice by the E-i
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Go to "Settings / Technical / Database Structure / Decimal Accuracy" - Set 4 digits for…
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Go to "Settings / Technical / Database Structure / Decimal Accuracy" - Set 4 digits for "Product Price" - Create a product with a lower price than 0.01 (e.g. 0.0045) - Create an invoice: * Customer: [a Peruvian customer] (e.g. Comercial Constructora los Patitos S.A.) * Product: [the created product] * Quantity: 100 - Confirm the invoice - Process the invoice by the E-invoicing service **Issue:** An error is triggered because "PriceTypeCode" is set to "02", which is the code used to declare that it is free. But in this case, it is not free. **Cause:** "PriceTypeCode" is computed by using "is_zero" method of the currency on the unit price. As the decimal accuracy of the currency is set to 2 and the unit price is 0.0045, "is_zero" is returning True. **Solution:** Compute "PriceTypeCode" from the line subtotal instead of the unit price. This is not perfect as it can also be lower than 0.01, but it's less probable. opw-4608671 Forward-Port-Of: odoo/enterprise#83401 Forward-Port-Of: odoo/enterprise#82019
Commits fc49984a and 2644a63b introduced changes to: - Prevent rejections for invoices older than 72 hours (error 301). - Use the correct partner/branch timezone when generating the CFDI. However, these changes also cause each re-stamping attempt to use the current timestamp, resulting in duplicates on the SAT if the first attempt times out or is lost (e.g., due to a disconnection). The PAC sees each request as a distinct CFDI if there is even a slight difference in the timestamp. This f
Original PR description
Commits fc49984a and 2644a63b introduced changes to: - Prevent rejections for invoices older than 72 hours (error 301). - Use the correct partner/branch timezone when generating the CFDI. However,…
Commits fc49984a and 2644a63b introduced changes to:
- Prevent rejections for invoices older than 72 hours (error 301).
- Use the correct partner/branch timezone when generating the CFDI.
However, these changes also cause each re-stamping attempt to use the current timestamp, resulting in duplicates on the SAT if the first attempt times out or is lost (e.g., due to a disconnection). The PAC sees each request as a distinct CFDI if there is even a slight difference in the timestamp.
This fix ensures that the same emission timestamp (stored in `l10n_mx_edi_post_time`) is reused for subsequent stamping attempts, producing an identical XML and preventing duplicates on the SAT.
Steps to reproduce the original issue:
1. Create and confirm an invoice.
2. Stamp the invoice.
3. Manually set the EDI status to “to_send”: ```python record.edi_document_ids.write({"state": "to_send"}) ```
4. Stamp again without persisting the emission timestamp => a new CFDI is generated.
Expected result after the fix:
- The system reuses the same emission timestamp (l10n_mx_edi_post_time) for each attempt, preventing duplicate CFDIs on the SAT.
According to the [SAT
documentation](http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Anexo_20_Guia_de_llenado_CFDI.pdf)
the attribute `Fecha` must be the expedition date.
Forward-Port-Of: odoo/enterprise#83319
Forward-Port-Of: odoo/enterprise#81882Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican localization and switch to one of the company * Create a new contact of type "Company" * Create an invoice for that contact so that he has a due amount set * Open session * Select the customer and settle due amount * Select any payment method > Observation: Blank screen Why the fix: -------
Original PR description
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican…
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican localization and switch to one of the company * Create a new contact of type "Company" * Create an invoice for that contact so that he has a due amount set * Open session * Select the customer and settle due amount * Select any payment method > Observation: Blank screen Why the fix: ------------ Same issue addressed here but at a different place: https://github.com/odoo/enterprise/commit/e1e1abdd23cead2bcd7b8170da28161c3f5b2e15 Cause by the fact that when a customer of type "company" is selected we automatically invoice orders. https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 Instead of going in the same direction of the first fix, we never set `to_invoice` to true when we are settling customer accounts. It's pointless to set invoice to true when settling accounts as it's impossible to create an invoice without any product. This should also benefit localizations that invoice by default every order by bypassing the invoice in that case. opw-4685842 Forward-Port-Of: odoo/enterprise#83172 Forward-Port-Of: odoo/enterprise#82785
When a company partner is selected for an order, the commit https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 automatically sets the order to invoice. This causes the order to miss required localization fields, leading to an error during payment. opw-4670131 Forward-Port-Of: odoo/enterprise#82211 Forward-Port-Of: odoo/enterprise#82061
Original PR description
When a company partner is selected for an order, the commit https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 automatically sets the order to invoice. This causes the order to miss required localization fields, leading to an error during payment. opw-4670131 Forward-Port-Of: odoo/enterprise#82211 Forward-Port-Of: odoo/enterprise#82061