Monday, March 23, 2026
14 changes · master
Resolved issues and error corrections
This update enhances the Odoo Enterprise Web Studio interface by ensuring the 'reset' button is only displayed when a logo is uploaded. This simplifies the user experience by preventing unnecessary options and focusing on the core functionality. It's a small but important refinement for usability.
Original PR description
SPECIFICATION: The reset button should only be visible when a logo has been uploaded. If no logo is uploaded, the reset button should remain hidden. Task-4010875
This update fixes a problem in the demo data for our time off system. Specifically, it ensures that leave allocations start correctly when using future dates (like 2027-01-01) to avoid errors and ensure the system functions properly for real-world 'time off to defer' scenarios.
Original PR description
Issue: The Anita Oliver contract starts on %Y-01-01, so her leave allocation begins from that date. When running with faketime set to 2027-01-01, the system attempts to create leave for the previous month, which results in an error stating that there is no allocation for that time off. Fix: Update the demo data to create the leave and payslip for the first month of the year. This prevents failures when using faketime and ensures it works correctly for real usage of `time off to defer`. task-6026690 Forward-Port-Of: odoo/enterprise#111435 Forward-Port-Of: odoo/enterprise#110293
This update resolves a technical problem related to how Odoo handles data serialization in its localization modules (Arabic, Belgian, and Mexican editions). The fix ensures that data is correctly formatted, preventing potential errors and improving the stability of these important regional versions of Odoo. This change primarily impacts the functionality of these localized modules.
Original PR description
runbot-241772 https://github.com/odoo/odoo/pull/254995
This update ensures that Knowledge articles appear in the standard activity filters (My Activities, Today Activities, and Late Activities) when viewed from the systray. Previously, Knowledge was missing these filters, leading to inconsistent activity views. This change improves user experience and ensures all relevant articles are easily accessible.
Original PR description
Activity redirections from systray apply the default filters My Activities, Today Activities, and Late Activities. However, Knowledge was missing these filters. This commit fixes this so that the default activity filters are set in all models in the activity systray. task-5424661
This update resolves a bug that prevented invoices with the ICBPER tax code from being processed correctly. The issue stemmed from a technical detail in how the system handles fixed taxes, specifically when splitting them into separate base lines. By setting a configuration flag to false, the system now generates invoices with this tax without errors.
Original PR description
**Steps to reproduce:** 1. Install module `l10n_pe_edi`. 2. Switch company to PE. 3. Create a tax: - Name: ICBPER - Amount type: Fixed - Code: ICBPER - Amount: 0.5(e.g.) - Set the tax group to ICBPER…
**Steps to reproduce:**
1. Install module `l10n_pe_edi`.
2. Switch company to PE.
3. Create a tax:
- Name: ICBPER
- Amount type: Fixed
- Code: ICBPER
- Amount: 0.5(e.g.)
- Set the tax group to ICBPER (In Advance Option)
4. Create a invoice and add a product with ICBPER tax.
5. Post the invoice and click "Process Now" (at header).
**Issue:**
Processing the invoice raises:
AttributeError: 'dict' object has no attribute '_get_downpayment_lines'
**Cause:**
When `fixed_taxes_as_allowance_charges` is True, `_setup_base_lines()` calls `_turn_emptying_taxes_as_new_base_lines()`, which splits fixed taxes (e.g., ICBPER) into separate base lines.
During this process, `base_line['record']` is no longer the original `account.move.line` record. Instead, it becomes a dictionary containing record under `base_line['record']['record']`.
- With the flag enabled: `base_line['record']` -> dict `line._get_downpayment_lines()` -> AttributeError
- With the flag disabled: `base_line['record']` -> `account.move.line``line._get_downpayment_lines()` -> works correctly
The Peru EDI implementation directly accesses `base_line['record']` expecting an `account.move.line`. The the nested dict structure causes the crash during file generation.
**Solution:**
Override `_add_invoice_config_vals()` to explicitly set `fixed_taxes_as_allowance_charges = False`
- Add test to ensure invoices with ICBPER fixed taxes generate XML without error
**opw-5809939**
Forward-Port-Of: odoo/enterprise#108638This update fixes an issue with the account reports where messages were displayed on multiple lines, making them difficult to read. Additionally, the VIES check hyperlink was corrected to ensure proper formatting. This improves the user experience and clarity of key account reporting information.
Original PR description
The company data check message was on multiple line. <img width="555" height="99" alt="image" src="https://github.com/user-attachments/assets/3916a794-57b7-4abb-9e76-0b39e63b8dd6" /> The VIES check hyperlink wasn't Markup. <img width="685" height="73" alt="image" src="https://github.com/user-attachments/assets/0d05d15e-7155-4435-9738-5e77263f6638" />
This update resolves a test issue caused by simultaneous data synchronization attempts within the Point of Sale Tax module. The fix ensures that backend processes complete before subsequent test steps are executed, preventing errors and improving test reliability. This enhances the overall stability of the Odoo Enterprise system.
Original PR description
In the test test_pos_avatax_flow, two calls are made to get_order_tax_details almost simultaneously, which causes the second call to raise an error due to both call trying to sync the same order at the same time. This commit fixes the test by waiting for the backend calls to be done before proceeding with the test next steps. runbot-error: 238871, 238872 Forward-Port-Of: odoo/enterprise#110341
This update resolves an issue where the interactive POS tours wouldn't load correctly on databases without demo data, causing a crash. The fix ensures the tours are correctly loaded for the POS environment and prevents errors when steps are missing. This improves the user experience for new POS installations.
Original PR description
With the new interactive tour handling, an issue occurred when loading the POS on a database without demo data. The tour steps were fetched from the "web_tour.tours" registry, but those tours were…
With the new interactive tour handling, an issue occurred when loading the POS on a database without demo data. The tour steps were fetched from the "web_tour.tours" registry, but those tours were only loaded in the "web.assets_backend" bundle, while the tour service can also run in the frontend (POS). As a result, no tour was found in the registry when loading the POS, leading to empty steps. Since no steps were available, the tour tried to access the current action, which was undefined, causing a crash. To fix this, a guard was added to ensure that steps exist before accessing the current action. If no steps are found, the tour test is put on hold, as it means the tour is not part of the currently loaded bundle and should not run. Additionally, the "point_of_sale_tour" was improved to execute actions when the POS is loaded, instead of relying only on the backend. This required loading "web_tour.assets_frontend" into the "point_of_sale._assets_pos" bundle. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6050295
This update corrects a bug where changes to view ordering within the Odoo Studio interface weren't consistently applied. The fix involved updating the system to correctly utilize the `defaultOrderBy` attribute on the related models, ensuring that view order settings are properly saved and reflected.
Original PR description
Bug === When changing the order of the views using studio, it wasn't applied. The reason is that we add a default order at the wrong place in JS, it should be done with the attribute made for that, `defaultOrderBy` on the relational model. Task-6047024 Forward-Port-Of: odoo/enterprise#111395 Forward-Port-Of: odoo/enterprise#111091
This update streamlines how emojis are loaded and managed within Odoo, making it faster and more reliable. The changes improve performance in testing and reduce the overall memory footprint of the system. This enhancement contributes to a smoother user experience and more efficient test environments.
Original PR description
Feature that is aimed to ease and centralize the loading and management of emoji data. Follow-up of https://github.com/odoo/odoo/pull/253344 in the same effort to reduce overall memory consumption and increase performance in tests to restore (some) nightly builds. - Community: https://github.com/odoo/odoo/pull/253078 Forward-Port-Of: odoo/enterprise#110146
This update resolves a technical issue within the Point of Sale (POS) testing process. The previous test was incorrectly simulating order refunds, leading to errors and preventing proper refund processing. This fix ensures the test accurately reflects the backend refund workflow, improving reliability.
Original PR description
The test l10n_pe_edi_pos.RefundWithReasonTour was badly written at some steps. It was paying an order but not waiting it to be fully processed by the backend to try to refund it leading to some information missing and thus some future step failing. This commit is adding the necessary waiting steps. runbot-error: 237981 Forward-Port-Of: odoo/enterprise#110484
This update resolves an issue where long tax amounts on invoices caused display problems. The fix ensures tax totals are correctly shown, regardless of the number of digits, improving invoice clarity for users. This change impacts the l10n_ke_edi_oscu module.
Original PR description
This commit aims to: Fix Display issue when the amount is long. task-5162891 Forward-Port-Of: odoo/enterprise#111003 Forward-Port-Of: odoo/enterprise#100319
This update fixes a visual inconsistency in the accounting reports. Previously, the company header was grayed out only in light mode. Now, it uses a standard muted color, ensuring a consistent and professional appearance across both light and dark modes.
Original PR description
Before this pr: - The company header in the accounting reports is grayed out in the light mode only, not in the dark mode. Reason: - Until now, we have been using the hard-coded 'lightgrey' color for the company header. After this pr: - In this pr, we are changing the color of the company header from hard-coded 'lightgrey' color to the standard variable color '--AccountReport-muted-data-color' used for muted data in account reports. Task-5960592 Forward-Port-Of: odoo/enterprise#111509 Forward-Port-Of: odoo/enterprise#110108
This update resolves an issue where deleting large numbers of contract salary records could lead to incomplete deletions. By implementing a commit/rollback mechanism within the scheduled task, the system now ensures all records are fully processed, preventing data inconsistencies. This improves data integrity and reliability.
Original PR description
The CRON needs savepoints when deleting records to avoid partial deletes from happening when catching ValueError. Instead of savepoints, that are heavy in terms of recources, we can commit/rollback in this cron.