Daily updates from Odoo
Thursday, March 12, 2026
25 changes · master
Resolved issues and error corrections
This update resolves a problem preventing PDF exports of reports containing journal sections within composite reports. The fix ensures that journal reports are correctly processed and converted to PDF, allowing users to generate these reports as expected. This improves the functionality of composite reports for users generating accounting data.
Original PR description
# Steps to reproduce: * Enable **Developer Mode**. * Go to **Accounting → Configuration → Accounting → Accounting Reports**. * Create a new report and enable **Composite Report**. * Add a new line of…
# Steps to reproduce: * Enable **Developer Mode**. * Go to **Accounting → Configuration → Accounting → Accounting Reports**. * Create a new report and enable **Composite Report**. * Add a new line of type **Journal Report**. * Save the report and create a menu item from the gear icon. * Open the report from the reporting menu. * Try to download the report in **PDF** format. # Observed behavior: * PDF export fails with a traceback. * Composite reports containing journal report sections cannot be exported as PDF. # Cause When exporting a composite report to PDF, the export flow iterates over each embedded sub-report and generates the HTML body used for PDF rendering. * The composite export relies on the base [`export_to_pdf`](https://github.com/odoo/enterprise/blob/a4e2c7c7d3aa50c8b57668c9ca73f523a31a5c41/account_reports/models/account_report.py#L5875) implementation from `account.report`, which directly calls `_get_pdf_export_html()` for each sub-report. * For standard reports, this works as expected because they use the base [`_get_pdf_export_html`](https://github.com/odoo/enterprise/blob/a4e2c7c7d3aa50c8b57668c9ca73f523a31a5c41/account_reports/models/account_report.py#L5944) method, which renders flat report lines into the default PDF template. * Journal reports, however, rely on a completely different PDF structure. Their templates expect `document_data` (journal entries grouped by journal/document) instead of flat report lines. * This `document_data` is generated exclusively by the journal report’s custom handler via its own [`export_to_pdf`](https://github.com/odoo/enterprise/blob/a4e2c7c7d3aa50c8b57668c9ca73f523a31a5c41/account_reports/models/account_journal_report.py#L240) flow. * The handler builds the required `document_data` using [`_generate_document_data_for_export`](https://github.com/odoo/enterprise/blob/a4e2c7c7d3aa50c8b57668c9ca73f523a31a5c41/account_reports/models/account_journal_report.py#L261C9-L261C22). * When a journal report is embedded inside a composite report, the composite export logic bypasses the custom handler and forces the report through the base `_get_pdf_export_html()` pipeline. * Since the base pipeline does not generate `document_data`, the journal report PDF template fails at render time with `KeyError: 'document_data'`. In short, journal reports embedded in composite reports were incorrectly routed through the standard PDF export pipeline instead of their specialized handler-based one. # Fix: * Add PDF export support to the journal report custom handler. * Centralize common print option logic in a shared helper. * Update composite report export logic to delegate PDF generation to custom handlers when available. * Journal reports inside composite reports now export to PDF correctly. opw-5477551 Forward-Port-Of: odoo/enterprise#110049 Forward-Port-Of: odoo/enterprise#105040
This update resolves a technical problem preventing timesheet slots from displaying correctly in the planning module. The fix ensures that the timesheet information is accurately reflected in the slot tree view, improving the usability of the planning feature for sales teams. This was a minor bug fix.
Original PR description
Steps to reproduce: - Install sale_timesheet & planning; - Install planning_field_service_sale_timesheet; Traceback: Element `'<xpath expr="//field[@name='project_id']">'` cannot be located in parent view This commit fixes the inheritance of the planning.slot tree views. Forward-Port-Of: odoo/enterprise#110102
This update resolves a bug where the 'Previous Asset' shortcut in the asset management module was incorrectly directing users to the 'Posted Entries' view. The shortcut has been changed to ALT + SHIFT + P to align with existing navigation shortcuts, ensuring smoother asset browsing.
Original PR description
# How to reproduce - Have atleast two assets - Go to the last asset - Type ALT + P on your keyboard # The problem We enter the Posted Entries view instead of going to the previous asset # Why This PR (https://github.com/odoo/enterprise/pull/67840) added shortcuts to the asset form view, but used ALT + P for the Posted Entries. This shortcut is already used on all form views for the "previous page" button. After consulting with the developer of the original PR, we decided to move the Posted Entries shortcut to ALT + SHIFT + P opw-5948523 Forward-Port-Of: odoo/enterprise#110078 Forward-Port-Of: odoo/enterprise#109022
This update corrects a technical issue preventing electronic invoices under the RIMPE Emprendedor regime from processing correctly. The change ensures the system recognizes only the approved string value for this regime, resolving a validation error during the electronic signature process and allowing invoices to be submitted successfully.
Original PR description
Corrected the hardcoded string for the RIMPE Emprendedor regime to match the SRI structure According to SRI technical specifications, the <contribuyenteRimpe> tag only accepts two specific values:…
Corrected the hardcoded string for the RIMPE Emprendedor regime to match the SRI structure According to SRI technical specifications, the <contribuyenteRimpe> tag only accepts two specific values: CONTRIBUYENTE RÉGIMEN RIMPE (Fixed value) CONTRIBUYENTE NEGOCIO POPULAR - RÉGIMEN RIMPE Steps to reproduce: Install l10n_ec_edi module Go to Settings > Invoicing > Ecuadorian Localization In Electronic Invoicing > Regime, select rimpe_emprendedor In Electronic Invoicing > Regime, configure a SRI Connection Post an customer invoice **Validation error occurring during the electronic signing process (using .p12 certificates):** `35 - Se encontró el siguiente error en la estructura del comprobante: cvc-pattern-valid: Value 'CONTRIBUYENTE EMPRENDEDOR - RÉGIMEN RIMPE' is not facet-valid with respect to pattern 'CONTRIBUYENTE RÉGIMEN RIMPE|CONTRIBUYENTE NEGOCIO POPULAR - RÉGIMEN RIMPE' for type 'contribuyenteRimpe'.. - ARCHIVO NO CUMPLE ESTRUCTURA XML - ERROR ` Forward-Port-Of: odoo/enterprise#109147
This update fixes inconsistencies between rental orders and planning slots by ensuring all dates are automatically synchronized. Changes to rental order dates now update all related planning slots, and vice versa. Additionally, the system now correctly adjusts the number of planning slots and order quantities when changes are made, resolving previous issues with quantity updates.
Original PR description
## [FIX] sale_renting_planning: fix sync between rental dates and planning slots dates Before this commit, it was possible to have `Planning Slots` with `Sync Shifts and Rental Orders` whose dates…
## [FIX] sale_renting_planning: fix sync between rental dates and planning slots dates Before this commit, it was possible to have `Planning Slots` with `Sync Shifts and Rental Orders` whose dates were different from the `Rental order`. This commit makes sure that all dates are always synced: - If the `Rental Order` dates are changed then all `Planning Slots`' dates changed to the new dates. - If a `Planning Slot` dates have changed then all other `Planning Slots` and the `Rental Order` Dates are changed to the new dates. ## [FIX] sale_renting_planning: fix sync between order line quantity and planning slots Before this commit, adding/removing a `Planning Slot` would not change the `SOL quantity` and changing the `SOL quantity` would not add/remove `Planning Slots` unless all slots are being deleted. This commit makes sure that when the `SOL quantity` is changed, the number of `Planning Slots` is changed accordingly, and if a Planning Slot` was added/removed, the `SOL quantity` would update accordingly. Note: The new sync behaviour from `SOL quantity` is ignored for `Products` with `hour UOM` because it is not clear yet how to update the `Planning Slots` if the new quantity of hours doesn't span a full rental interval. ## [FIX] sale_renting_planning: fix set multiple slots to resources Before this commit, adding multiple `Planning Slots` at the same time with the same `Role` can assign them to the same `Resource` even if they conflict with each other. This commit makes sure that when adding multiple `Planning Slots` none of them would conflict with each other after being added. task-5187356 Forward-Port-Of: odoo/enterprise#109294 Forward-Port-Of: odoo/enterprise#104771
The 'Today' button in the Gantt view was not functioning correctly when navigating to yesterday. This update fixes a bug where clicking 'Today' didn't return the view to the current date. The fix ensures the Gantt view accurately reflects the user's current day selection.
Original PR description
**Version:** 18.0 **Steps to reproduce:** - Install Attendance modules. - Navigate to yesterday using the arrow button. - Then click on Today button. **Issue:** The view does not return to the current day when Today button is clicked. **Cause:** The condition to check this scenario fails for this case. **Fix:** Updated the condition to include the this scenario. task-5451384 Forward-Port-Of: odoo/enterprise#110053 Forward-Port-Of: odoo/enterprise#103139
This update fixes an issue where payslips weren't being generated accurately for employees with flexible working hours. The system now correctly creates work entries for these employees when a payslip is created, ensuring accurate payroll calculations. This resolves a previous error impacting employee pay processing.
Original PR description
**Version:** - 19.0 **Steps to reproduce:** - Create an employee. - Leave the Working Hours field empty. - Set the contract dates and a wage. - Create a payslip using the smart button. **Issue:** - Worked day lines are empty for flexible employees when the payslip is created from the smart button. **Cause:** - Flexible employees were being skipped because their working hours were empty, which results in work entries not being generated. **Solution:** - Updated the condition to also generate work entries for flexible employees. Task-5431870 Forward-Port-Of: odoo/enterprise#109729 Forward-Port-Of: odoo/enterprise#103101
This update corrects a previous issue where late hours reporting was incorrectly calculated for employees outside of Saudi Arabia. The change now ensures that late hours visibility is only processed for employees based in Saudi Arabian companies, improving data accuracy and compliance. A new test case confirms this country-specific functionality.
Original PR description
Before this fix, the `_compute_l10n_sa_late_hours_visible` method was processing all attendance records regardless of the employee's company country. This caused issues for non-Saudi companies. Changes: - Filter attendance records to only process employees from Saudi Arabian companies (country_code == 'SA') - Set `l10n_sa_late_hours_visible` to False for non-SA attendances - Add `employee_id.company_id.country_id` to the compute dependencies - Add `string` attribute to `l10n_sa_expected_check_in` field - Add test case to verify late hours visibility is country-specific task-5491785 Forward-Port-Of: odoo/enterprise#104563
This update resolves a bug where users without HR document centralization enabled were seeing all documents, not just their own employee documents, when using the 'documents' smart button. The fix restores the intended behavior of limiting document access to only the employee's records, ensuring data privacy and accuracy.
Original PR description
Steps: - uncheck the "Human Resources" file centralization option - go to an employee, click the documents smart button -> You see every documents, not only the ones from the employee PR https://github.com/odoo/enterprise/pull/93782 aimed at restoring the previous behaviour of the employee documents button and accesses for companies without the hr documents settings enabled, but forgot the domain on the employee smartbutton action. opw-5857914 Forward-Port-Of: odoo/enterprise#107224
This update fixes an error in how project budgets are calculated, ensuring accurate spending and remaining amounts. Previously, the system was incorrectly displaying negative percentages and inflated remaining balances. This change ensures budget reports accurately reflect actual spending against planned expenses.
Original PR description
Steps to reproduce: --------------------------- 1. Install the `project_account_budget` and `account_accountant` modules. 2. Create a new project and add an Analytic Account for it from the settings…
Steps to reproduce: --------------------------- 1. Install the `project_account_budget` and `account_accountant` modules. 2. Create a new project and add an Analytic Account for it from the settings page 3. Open the Project Kanban, click the three dots on the project card, and select Project's Updates. 4. Click Add Budget button and open the budget wizard. 5. Add a budget line in the wizard with a planned amount expressed as a negative value for an expense (for example: -10000). 6. Create a Vendor Bill using the same analytic account with an amount of 1000. 5. Confirm the bill. 6. Go back to Project's Updates and click New button to view the budget summary. Observation: --------------------------- The budget summary displays incorrect signs and percentages in Activities summary, for example: ``` -10.0% (-1,000.00) of the -10,000.00 budget has been spent. 110.0% (-11,000.00) of the budget is remaining. ``` This incorrectly shows -10% spent and 110% remaining instead of 10% spent and 90% remaining (-9,000). Issue: --------------------------- The project cost (already negative) was negated again when computing the spent amount in https://github.com/odoo/enterprise/blob/ac3f333d97eda5c86a0813490ac6204d4ec5721f/project_account_budget/models/project_update.py#L16 Double-negating the cost makes it positive, which then gets added to the expense budget instead of reducing it, producing inverted percentages and signs. Solution: --------------------------- For expense budgets (negative budgets), do not apply an extra negative sign when calculating the project cost so the spent, remaining, and percentage values are computed correctly. After the fix: ``` 10.0% ($ 1,000.00) of the $ -10,000.00 budget has been spent. 90.0% ($ -9,000.00) of the budget is remaining. ``` opw-5357854 Forward-Port-Of: odoo/enterprise#110062 Forward-Port-Of: odoo/enterprise#102126
This update ensures that the system accurately recalculates outstanding POS amounts when a point-of-sale order is cancelled. Previously, cancelled orders were incorrectly included in payment calculations, leading to inaccurate reporting. This fix prevents double-counting payments and provides more reliable financial data.
Original PR description
Add `pos_order_line_ids.order_id.state` to the depends of `_compute_pos_amount_unsettled` so that cancelling a POS order triggers a recompute. Also exclude cancelled order lines from `total_pos_paid` to avoid counting payments that were rolled back. opw-5997872 Forward-Port-Of: odoo/enterprise#109542
This update fixes several issues related to how payroll accruals are calculated, particularly concerning tracking data and date handling. It also improves data access controls and ensures accurate work entry generation, ultimately strengthening the reliability of our US HR payroll system.
Original PR description
Accrual is computed based on tracking values, checking added or removed leaves in a given request, based on their datetimes. This feature does not seems tested currently, so let us cover it. That way we ensure future changes in tracking model do not break current feature. By the way, fix an ACL issue when trying to access tracking values and not being admin. By the way, fix date / datetime issue when generating work entries. By the way, fix leaves support when generating work entries. Task-5935695 ([mail, various] Cleanup and test tracking usage) Prepares Task-3645865 ([mail] In-body tracking) Co-Authored-By: Prakash Prajapati <ppr@odoo.com> Forward-Port-Of: odoo/enterprise#110302
This update corrects a problem where the Partner Ledger incorrectly displayed currency amounts as coming from the company's currency instead of the partner's. The fix ensures accurate currency reporting for open items, improving the reliability of financial data. It also addresses a bug preventing the debug popover from functioning correctly.
Original PR description
# [FIX] account_reports: Partner Ledger residual amount currency wrong In the partner ledger, the residual amount currency had all it's results set to the currency from the company. Here, we do the same as from amount currency and set it to it's currency and aggregate it if all the currency from the partner / all the partners is the same currency. # [FIX] account_reports: Partner ledger debug popover not working To reproduce: - Open the partner ledger - Active the developper mode - click on the debug button on the line Open Items Forward-Port-Of: odoo/enterprise#109697
This update resolves a problem preventing users from generating ird reports when employees have multiple versions recorded within the same reporting period. The fix temporarily prioritizes the most recent version for report generation, ensuring reports can be produced. This improves the reliability of payroll reporting in Hong Kong.
Original PR description
Fixes an issue that blocks users from generating ird reports if the employee has multiple versions in the period. For now, we will only keep the latest version at the time of reporting. task - 6023310 Forward-Port-Of: odoo/enterprise#110235
This update corrects a visual issue in the Helpdesk team settings where email alias fields would overflow due to a design change. The fix adjusts the layout to fit the narrower settings panel, ensuring a clean and usable interface for managing team email aliases. This improves the overall user experience for Helpdesk administrators.
Original PR description
Steps to reproduce: 1. Go to Helpdesk > Configuration > Teams 2. Open any team with Email Alias enabled 3. Observe alias fields overflowing Issue: The alias copy feature introduced by odoo/enterprise#88111 (related to odoo/odoo#215128) changed this row from a simple inline layout to a Bootstrap grid. That grid works correctly in regular form `<group>` sections, where fields have more horizontal space. But in Helpdesk, this row is rendered inside a `<setting>` block, which lives in the narrow two-column settings layout. In that context, the grid's negative side margins make the alias row overflow Fix: Replace the grid layout with a flex row adapted to the settings panel while keeping the newer alias input pattern and copy button. This prevents overflow and keeps the fields balanced. task-6005002
A previous error was preventing the automated update of POS price tags. This fix corrects a misconfiguration in the scheduled task that was causing a system error. The update process is now reliable and ensures accurate price tag synchronization.
Original PR description
Currently, an error occurs when the scheduled action "POS Pricer: Tags Update Synchronization" runs. **Steps to Reproduce:** - Install the `pos_pricer` module. - Go to `Scheduled Actions` and run…
Currently, an error occurs when the scheduled action "POS Pricer: Tags Update Synchronization" runs.
**Steps to Reproduce:**
- Install the `pos_pricer` module.
- Go to `Scheduled Actions` and run `"POS Pricer: Tags Update Synchronization"`.
**Error:**
`
ValueError: TypeError("PricerStore._update_pricer_tags() got an unexpected keyword argument 'update_all'") while evaluating 'model.search(([("pricer_tag_ids", "!=", False)]))._update_pricer_tags(update_all=False)'`
This error occurs because, after this [recent commit], `_update_pricer_tags` was changed to
no longer accept the `update_all` argument and now relies on the `needs_pricer_update` instead.
However, the scheduled action still passes the `update_all` argument [1], which causes the
error when the cron job runs.
This commit removes the unexpected `update_all` argument from the tag update synchronization cron.
[recent commit]: https://github.com/odoo/enterprise/commit/166a8a240d0588f4e908ce09c4639da1216ba3b7
[1]- https://github.com/odoo/enterprise/blob/0ef7643bba5b3fa3d22ab122ef3b65f0d67c8fb7/pos_pricer/data/pricer_ir_cron.xml#L9
sentry-7324339777
Forward-Port-Of: odoo/enterprise#110242This update resolves a problem that prevented users from successfully loading demo data for the 'account_asset' module. The fix corrects an error related to incorrect field definitions during the demo data loading process, ensuring the demo data can now be loaded without causing errors.
Original PR description
This error occurs while loading the demo data for the `account_asset` module. Steps to reproduce: - Install `account_asset` module without demo data - Active debugger > Settings > load Demo data Traceback: `ValueError: Invalid field 'depreciation_model_id' in 'account.asset'` - The error occurs because `depreciation_model_id` is a field of the `account.account` model, but while loading the demo data we are defining it on the `account.asset` model in the `_get_demo_data_asset` [method]. - Another error occurs in the `account.depreciation.model` model because it does not have a field named `name`, the correct field is `display_name`. [method]: https://github.com/odoo/enterprise/blob/9d4424088bfda7e89d454a8bd642715a9281913d/account_asset/demo/account_demo.py#L37-L47 sentry-7321811436 Forward-Port-Of: odoo/enterprise#110066
This update corrects a display issue in WhatsApp signature requests. Previously, the Certificate of Completion showed 'Email Verification' instead of the correct information for WhatsApp participants. This change ensures accurate and consistent reporting for all signature requests, regardless of the channel used.
Original PR description
When a signature request is sent via WhatsApp (`send_channel == 'whatsapp'`), the Certificate of Completion PDF currently still displays "Email Verification" in the participants table and the legal footnote.
This update resolves an issue where orders weren't generating invoices correctly due to data serialization during the tour process. The change adds a required step to ensure the invoice is selected before order validation, guaranteeing invoices are properly created. This improves order processing reliability.
Original PR description
pos*: l10n_ec_edi_pos, l10n_it_pos When invoice selection takes longer, and the order validation button is clicked immediately after, the tour may serialize data before the invoice field has settled. This can cause invoice generation to be skipped during order validation Since the delay between tour steps was removed, this commit adds an explicit step to ensure the invoice is selected before validating the order. Task-5897375 Err-237600, 238502, 238503, 238504 Related-https://github.com/odoo/odoo/pull/247770 Forward-Port-Of: odoo/enterprise#106863
This update resolves a bug where the Documents Activity view became unusable after exiting Studio, preventing users from filtering or adding new activities. The fix ensures the view correctly loads necessary data, maintaining functionality and preventing frustrating user experiences.
Original PR description
Problem: When returning to the Documents Activity view after closing Studio, the view becomes unusable with an error that `folderId` is `undefined`. Users are forced to refresh the page or switch…
Problem: When returning to the Documents Activity view after closing Studio, the view becomes unusable with an error that `folderId` is `undefined`. Users are forced to refresh the page or switch views to fix it. Specifically: - Filters can no longer be selected. - Adding new activities throws UI errors (even if technically successful). Cause: The `getSelectedFolder` method returned undefined because the `searchPanel` logic was skipped. The Activity view does not display the `searchPanel`, so the model failed to run `_fetchSections` which retrieves the data used by `getSelectedFolder`. Under normal circumstances, the view relies on data already loaded by the Kanban or List views, but that data is unavailable here. Solution: - Force the search model to load the data explicitly, ensuring the view initializes correctly regardless of the `searchPanel` visibility. We kept the dependency upon `_fetchSections` rather than removing it, as it is required by the `search_model` to maintain other features like `breadcrumbs`. - Add a test to verify the fix and prevent regression. Co-authored-by: Pierre-Yves Dufays pydu@odoo.com Co-authored-by: Charlier Florian flch@odoo.com
This update corrects a minor CSS error that was causing incorrect styling within the timesheet grid component. The fix ensures the grid displays correctly, improving the overall user experience. This was a routine maintenance update.
Original PR description
This commit fixes the generation of the `display` CSS rules.
Before:
```scss
//...
.aw_nca_step_1 .aw_nca_d-block_from_step_1 {
display: "block";
}
//...
.aw_nca_step_1 .aw_nca_d-inline-flex_from_step_1 {
display: "inline-flex";
}
```
After:
```scss
//...
.aw_nca_step_1 .aw_nca_d-block_from_step_1 {
display: block;
}
//...
.aw_nca_step_1 .aw_nca_d-inline-flex_from_step_1 {
display: inline-flex;
}
```
Doc:
> In Sass, elements in lists can be separated by commas (Helvetica, Arial, sans-serif), spaces (10px 15px 0 0), or slashes as long as it’s consistent within the list.
https://sass-lang.com/documentation/values/lists/
Forward-Port-Of: odoo/enterprise#110246This update resolves an issue where the barcode scanning app incorrectly identified products when using barcodes that include product prices (price-embedded). The fix adds logic to match these barcodes, mirroring the functionality in the Point of Sale app, ensuring accurate product recognition during scanning.
Original PR description
Issue ----- Barcode app doesn't match products when using price-embedded barcodes. Steps to reproduce ----- - Use default nomenclature (so price embedded barcodes are 23...) - Create a product with barcode 2355555000004 - Go to barcode and scan 2355555009502 > The product isn't recognised Cause ----- There is no logic in place to handle such barcodes, but it can be added to mimic how it works in POS. https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js#L212 ----- Ticket: opw-5901412 Forward-Port-Of: odoo/enterprise#110034 Forward-Port-Of: odoo/enterprise#109627
This update corrects a technical issue where an unnecessary character was added to the social templates, preventing proper display. The previous commit mistakenly included this character within the HTML code, and this fix removes it, ensuring correct formatting and functionality. This resolves a minor display problem.
Original PR description
in this commit https://github.com/odoo/enterprise/pull/109772/changes/a093f3150b1b0fc92e8555bbab042e83d230bb5e this. was mistakenly added to `>` due to an issue in the script. I have removed it. Script PR: #247965 task: OWL3 prep - add this. to template variables
This update simplifies overtime pay calculations by tying them directly to the amount recovered from each work entry type. Previously, overtime rules were complex and dependent on parameters. This change streamlines the process and improves accuracy across multiple Odoo localization modules.
Original PR description
-Currently, the salary rules for overtime depend on the overtime rule parameters. -Logic has been adjusted for overtime rules to depend on the amount_rate recovered from the work_entry_type. -Rule parameters have been removed. -Task #5921696
This update adjusts the financial reporting tests for Mexico to align with the latest accounting standards (CoA). The changes ensure accurate trial balance reports are generated, reflecting the most current Mexican accounting regulations. This improves the reliability of financial data for Mexican businesses using Odoo Enterprise.
Original PR description
Adapted trial balance tests to consider update on MX CoA task-4920083 target: 19.0 -> master Forward-Port-Of: odoo/enterprise#110024 Forward-Port-Of: odoo/enterprise#108200