Monday, December 1, 2025
27 changes · master
Resolved issues and error corrections
A test case in the Odoo Enterprise accounting module was failing due to differences in payment state handling between the community and enterprise versions. This change moved the test case to the enterprise environment to ensure it accurately reflects the expected behavior, resolving the reported error.
Original PR description
Community build was failing with: ``` test_bill_state_change_on_payment_state self.assertEqual(payment.invoice_ids.payment_state, 'not_paid') AssertionError: 'paid' != 'not_paid' - paid + not_paid ``` [Commit](https://github.com/odoo/odoo/pull/234725/commits/5dc43a2156e5b176e3236583b45b4838a987ee7d) In community there is no any `in_payment` state for account move records. As on changing payment state to draft It stayed in the `paid` only. `in_payment` state introduced in the enterprise module. So the test case is failing for the community version. To fix this I've moved the test case to the enterprise to retain the expected behaviour. runbot error: 234453 Forward-Port-Of: odoo/enterprise#100865 Forward-Port-Of: odoo/enterprise#100834
This update corrects a bug in Odoo where setting an employee's timezone to 'None' would cause an error. Now, the system will display a validation error, ensuring the 'Timezone' field is always populated. This prevents data inconsistencies and ensures accurate employee timezone tracking.
Original PR description
Description of the issue/feature this PR addresses: On Odoo 19.0 and master, setting an employee’s timezone to None would cause a traceback when creating or updating the employee. Current behavior before PR: a traceback when creating or updating the employee. Desired behavior after PR is merged: A Validation Error occurs because it missing required value for the field 'Timezone' (tz). Model: 'Resources' (resource.resource) task-5257749
This update resolves visual inconsistencies and display issues within the skill table across the employee, recruitment, and appraisal forms. Specifically, cropped elements and styling problems have been corrected, and outdated code for sample data display has been removed, streamlining the user experience.
Original PR description
This PR fixes various issues with how the skill table is displayed in hr, hr_recruitment, and hr_appraisal. Additionally, all code related to displaying sample data for the appraisal skills is removed in this PR, as the skills page has been hidden (rather than showing sample data) since at least v18. Issues: 1. The skills table on the employee form view is cropped on the sidees when viewing in Firefox. 2. The skills table header and the resume header on the employee form view is not aligned and styled the same way. 3. The skills table header on the employee form view is missing the separator below it when viewing in Chrome. 4. The skills table header on the applicant form view is missing the separator below it when viewing in Firefox. 5. The skills table on the appraisal form view is missing a separator when viewing on Firefox. Task-5033427
This update simplifies the HR payroll process by removing a redundant action from list views. Previously, the 'Working Schedule Change' action was unnecessary and caused validation errors when attempting to modify schedules for multiple employees. This change streamlines the workflow and improves user experience.
Original PR description
The 'Working Schedule Change' server action can only be used on a single employee, so having it in the list view does not make sense. This also avoids having a validation error when the user tries to use the action on multiple selected employees. Task: 5358499
This update resolves an issue where website generation requests could fail silently, preventing results from being fetched. Additionally, a redundant cron trigger was eliminated, reducing potential frontend errors. This ensures website generation processes run reliably and efficiently.
Original PR description
It is possible to get a serialization error when creating the website generator request. This caused the request call to go off without the record being saved. The server would start the process but the result would never be fetched. In order to avoid this scenario, we send the request in a post commit hook. Also fixed issue where we triggered the cron even when not necessary (error_still_proccessing). This was an issue because the frontend js calls this method every 10 seconds so it was easy to get a concurrent access a few times and then receiving a traceback in the frontend. (Altough the process still succeeded in the end).
This update fixes an issue where a header on the spreadsheet dashboard action pushed content downwards, obscuring the bottom of the spreadsheet. The change ensures the full spreadsheet view is consistently displayed, improving usability and data visibility. This resolves a minor visual inconsistency.
Original PR description
The current rule applied on the spreadsheet action assumes that the action takes the full page but if we add a header , the full action is pushed downwards, which hides the bottom of the spreadsheet. Task: 5212448 Forward-Port-Of: odoo/enterprise#99654
This update resolves an access error that prevented managers from marking appraisals as complete. The issue occurred when users lacked the necessary HR permissions. This fix ensures that managers can correctly finalize appraisals, improving workflow efficiency.
Original PR description
STEP TO REPRODUCE: 1- Set Marc demo as a manager on an employee 2- Be sure he doesn't have the group group_hr_user 3- Log as Marc Demo 4- Create an appraisal for this employee 5- Confirm this appraisal 6- Click on "mark as done" You will have an access error; you shouldn't have it task-5349554 Forward-Port-Of: odoo/enterprise#100145
This update addresses a visual issue within the Account Online Synchronization module. The entire column displaying company information was previously partially visible; this fix now completely hides the column, improving the user interface's clarity and professionalism. This change ensures a cleaner and more consistent user experience.
Original PR description
The whole column needs to be invisible, not just the content of it Forward-Port-Of: odoo/enterprise#100446
This update resolves an error that occurred when generating the payment report from a pay run. The issue stemmed from an empty data set being returned for certain pay run configurations, leading to a key error. This fix ensures the payment report function now works correctly for all pay run scenarios.
Original PR description
When user clicks the payment report button in pay run, a traceback will appear. Steps to reproduce the error: - Install ``hr_payroll`` module - Open ``Administrator`` Employee > In Payroll tab, Set…
When user clicks the payment report button in pay run, a traceback will appear.
Steps to reproduce the error:
- Install ``hr_payroll`` module
- Open ``Administrator`` Employee > In Payroll tab, Set ``Contract, Wage`` > In Personal tab, ``Set Bank account`` > Save
- Go to Payroll > Configuration > Structures > Regular Pay > Open Net Salary rule > ``Amount Type: Fixed Amount`` and
``Fixed Amount: 0.0`` > Save
- Now, Go to Payroll > Payslips > Pay runs > Create a new Pay run > Select record > (One payslip will be created with the regular pay structure)
- Open that pay run > Click new > ``employee: Administrator`` >
``structure: worker pay`` > save
- Now, Open that pay run again > Compute > Confirm > Payment Report
Traceback:
```py
KeyError: '2'
```
https://github.com/odoo/enterprise/blob/7d90ece2756c1d8434f90a29ee6b34015a349acb/hr_payroll/models/hr_payslip.py#L2192-L2199
Here, the method ``compute_salary_allocations`` returns an ``empty dict {}`` for payslips with ``net_wage = 0.0``
https://github.com/odoo/enterprise/blob/7d90ece2756c1d8434f90a29ee6b34015a349acb/hr_payroll/wizard/hr_payroll_payment_report_wizard.py#L39-L41
So, ``allocations`` becomes an ``empty dict``, so accessing a key in it causes the above traceback.
sentry-6931674861
Forward-Port-Of: odoo/enterprise#96805This update corrects a technical issue where duplicate methods were introduced in several Odoo modules. The problem stemmed from a missed custom build step, and this fix ensures the integrity of the codebase by removing these redundant methods. This improves stability and prevents potential conflicts.
Original PR description
Followup of #100053 because I forgot to run the custom build, and thus missed newly introduced duplicate methods. Forward-Port-Of: odoo/enterprise#100655 Forward-Port-Of: odoo/enterprise#100599
A bug in the rental order system was causing incorrect quantity calculations when returns were processed within linked pickings. This update fixes a calculation error, ensuring rental order quantities accurately reflect product movement, particularly after returns. This resolves an issue impacting rental order accuracy.
Original PR description
Steps to reproduce: - Enable multi-step & Rental transfers - Set warehouse to 2 steps reception/delivery - Create a rental order for a product with a qty of 5 - Process the PICK - Change the quantity in the rental order to 3 and save - Change the quantity back to 5 and save again Issue: The Rental IN picking has now a `product_uom_qty` of 1. This is due to a wrong computation of incoming/outgoing moves when there are returns (e.g. here a return PICK) in the linked pickings. opw-5028794 Forward-Port-Of: odoo/enterprise#100645 Forward-Port-Of: odoo/enterprise#98473
The Original Bills report was producing empty results in Odoo Studio. This was due to the report's complex process of combining multiple streams to create the PDF. To resolve this, the Studio module has been configured to simply blacklist this specific report, preventing errors and ensuring correct functionality.
Original PR description
Steps to reproduce ================== - Install account_accountant,web_studio - Go to Invoices - Open studio - Click on "Reports" - Select the "Original Bills" report => The report is empty Cause of the issue ================== The Original Bills is a very specific report. Multiple streams are created and then combined to make the final PDF See: odoo/odoo#85150 Solution ======== Since studio cannot handle this usecase, we blacklist this report opw-5108198 Forward-Port-Of: odoo/enterprise#100769 Forward-Port-Of: odoo/enterprise#100729
This update corrects a reporting issue where payment reports incorrectly included bank accounts with zero allocations. The change now ensures that reports only display accounts with positive allocations, providing more accurate and reliable payment information. This improves the clarity and trustworthiness of financial reports.
Original PR description
-In case of creating payment report for an employee with multiple bank accounts, if one of the accounts has an allocation of 0%, it still appears in the report. -This approach has been changed to include only accounts with positive allocations.
This update resolves visual inconsistencies and display issues within the skill tables used in the employee, recruitment, and appraisal modules. Specifically, the tables are now correctly aligned and styled across different browsers, addressing prior cropping and formatting problems. The removal of outdated sample data code further streamlines the skill table presentation.
Original PR description
This PR fixes various issues with how the skill table is displayed in hr, hr_recruitment, and hr_appraisal. Additionally, all code related to displaying sample data for the appraisal skills is removed in this PR, as the skills page has been hidden (rather than showing sample data) since at least v18. Issues: 1. The skills table on the employee form view is cropped on the sidees when viewing in Firefox. 2. The skills table header and the resume header on the employee form view is not aligned and styled the same way. 3. The skills table header on the employee form view is missing the separator below it when viewing in Chrome. 4. The skills table header on the applicant form view is missing the separator below it when viewing in Firefox. 5. The skills table on the appraisal form view is missing a separator when viewing on Firefox. Task-5033427 Forward-Port-Of: odoo/enterprise#100738
This update resolves a usability issue in the annual corporate tax return reports by adding 'reviewed bubble' and 'Mark as completed' buttons. These additions streamline the reporting process for users, making it easier to track and finalize tax returns.
Original PR description
Missing: - reviewed bubble - Mark as completed button Forward-Port-Of: odoo/enterprise#100721 Forward-Port-Of: odoo/enterprise#100039
This update resolves an issue where tests were using incorrect dates, causing instability. The team removed explicit 'today' dates from test files and corrected date references within invoice test files. This ensures more reliable test execution and improved stability of the Mexican invoice processing module.
This update resolves an issue where the search function on the recent/contacts tab of the Odoo Enterprise VoIP module wasn't correctly filtering results. The fix ensures that search terms are now accurately reflected in the displayed contacts, improving user efficiency and data accuracy. This enhancement provides a more reliable search experience.
Original PR description
On recent/contacts tab, search rpc didn't take search term into account. Fix it. Task-5262162 Forward-Port-Of: odoo/enterprise#100745 Forward-Port-Of: odoo/enterprise#100478
This update fixes a bug that previously caused crashes when creating related binary fields within the Web Studio module. The issue stemmed from parallel creation processes. This change ensures stable operation of Web Studio's core functionality.
Original PR description
Before this commit and subsequently to commit odoo/enterprise@75db3379655dc889b31ad34c66332f5a21f8cff4 creating a related binary field crashed because of the parallel creation of the filename related field. After this commit, this is fixed. opw-5237866 Forward-Port-Of: odoo/enterprise#99760
Previously, incoming call durations weren't updating in the user interface after calls were started. This update fixes a technical issue where a timer wasn't properly connected to the Odoo reactivity system, preventing the UI from reflecting call duration changes. Now, call durations are accurately displayed.
Original PR description
Since https://github.com/odoo/enterprise/pull/100466, calls are started through the start method of the Call model. After this change, incoming calls correctly update their duration, but the UI does not re-render accordingly. This happens because this.timer in start is not reactive: this refers to a Discuss proxy rather than an OWL proxy managed by the reactivity system. As a result, this.timer is just a plain object and components that depend on the call timer are not re-rendered. To fix this, we use a wrapped timer in computeDuration, ensuring that subscribed components are updated on each write.
This update resolves an issue where the system incorrectly linked projects due to a change in the underlying data structure. Specifically, the method for determining the project ID in the 'rating.rating' model has been updated to align with the latest version of Odoo. This ensures accurate project associations moving forward.
Original PR description
In this commit, we remove the use of 'rating_active' field check in the compute method of the 'project_id' field in the 'rating.rating' model. As this field was removed in 19.0 from 'project.project'. task-5172594 Forward-Port-Of: odoo/enterprise#97659
This update clarifies the labels associated with document access rights within the Enterprise module. Previously, the labels were unclear, now they provide helpful guidance on which user groups have access. This enhancement improves usability and ensures users understand document permissions.
Original PR description
This commit fix the label of documents access rights which now shows a helper for each documents res.groups. Task-5186096 Forward-Port-Of: odoo/enterprise#100792 Forward-Port-Of: odoo/enterprise#98890
A bug preventing test orders was resolved. The issue occurred when a product's tax was set to a 'Group of Taxes' without associated definitions, causing an error. This update corrects the process to handle this scenario, ensuring test orders can be successfully placed.
Original PR description
When creating a test order for a product whose tax is configured as a Group of Taxes without any definitions, a traceback occurs. Steps to reproduce the error: - Install ``pos_urban_piper`` module -…
When creating a test order for a product whose tax is configured as a Group of Taxes without any definitions, a traceback occurs. Steps to reproduce the error: - Install ``pos_urban_piper`` module - Configure Urban Piper integration for the PoS - Create a new tax without Definition > ``Tax Computation: Group of Taxes`` > Save - Create a new product > Set the above tax in sales taxes > Save - Open the session for PoS - Go to Settings > Urban Piper Location > Set Food Delivery Platforms > Save - Click Test Order > Select the product and Delivery Provider > Place Order Traceback: ```py IndexError: list index out of range ``` https://github.com/odoo/enterprise/blob/92bb923ffe185b7744adeadcc8f2972f9a64effb/pos_urban_piper/controllers/main.py#L319-L322 The issue happens because ``flatten_taxes_hierarchy()`` calls ``_flatten_taxes_and_sort_them()`` method at [1], which returns an empty record when the group tax has no children at [2]. As a result, ``tax_types`` becomes an empty list ([]), leading to an IndexError when trying to access ``tax_types[0]``. [1]: https://github.com/odoo/odoo/blob/57850b32332a71933a4f6b52d7428684de831f4b/addons/account/models/account_tax.py#L2786 [2]: https://github.com/odoo/odoo/blob/57850b32332a71933a4f6b52d7428684de831f4b/addons/account/models/account_tax.py#L795 sentry-6984648461 Forward-Port-Of: odoo/enterprise#98542
This update resolves a regression issue in the Egyptian payroll tests. The tests were previously configured to use a specific date range (2025) and failed when the system's date moved beyond that. This change ensures the tests remain reliable and accurately reflect future payroll calculations.
Original PR description
The Egyptian payroll regression tests built allocations for 2025 and relied on the runtime date, so they start failing once the global fake date advances beyond that year (e.g., 2026). task-5215779 Forward-Port-Of: odoo/enterprise#98223
This update fixes an issue where previously archived accounts (marked inactive) were not appearing in the General Ledger report. The change ensures that historical transactions are accurately reflected in the report, providing a more complete and reliable financial overview. This resolves a potential discrepancy in reporting.
Original PR description
**Description:** Deprecated accounts (active=False) with historical transactions were not appearing in the General Ledger report. **Steps to Reproduce**: - Go to Accounting > Reporting > General…
**Description:** Deprecated accounts (active=False) with historical transactions were not appearing in the General Ledger report. **Steps to Reproduce**: - Go to Accounting > Reporting > General Ledger - Choose an account code from the report (e.g 121000) - Go to Configuration > Chart of Accounts - Click on the account code 121000 and set the active field to False - Go back to the General Ledger report and notice the account cod no longer exist in the report even though it historical transactions **Root Cause:** In Odoo 18.3, the `deprecated` field was replaced with the `active` field. - `deprecated` field: Manual filtering only (where explicitly coded) - `active` field: Automatic ORM filtering (implicit in ALL searches) When the account search in `_query_values()` executes, Odoo's ORM automatically adds `AND active = TRUE` to filter out inactive records. This means deprecated accounts are silently excluded from reports. **Fix:** Added `with_context(active_test=False)` to the account search which disables automatic filtering for this specific query, restoring the original behavior where deprecated accounts appear in historical reports while remaining hidden in form dropdowns. opw-5092275 Forward-Port-Of: odoo/enterprise#100534 Forward-Port-Of: odoo/enterprise#98387
This update resolves a problem where image resizing within Odoo's Studio reports didn't correctly translate to the generated PDF. The fix disables the percentage-based resizing option, preventing incorrect rendering in PDFs due to limitations of the underlying PDF generation tool. This ensures consistent image display across reports.
Original PR description
Problem: When resizing an image in Studio within any report, the change is not reflected in the generated PDF. This happens because `wkhtmltopdf` does not support percentage-based `width` / `height` values, which are used by the resize tool (e.g., `width: 25%`). Solution: Disable the image resize option in Studio when editing reports, since the resulting `%` sizing cannot be rendered correctly in PDFs. Steps to reproduce: 1. Open Studio → Reports → open any report. 2. Add an image. 3. Resize it to 25%. 4. Save and print the PDF. 5. The image appears at its original size in the PDF. opw-5233052 Forward-Port-Of: odoo/enterprise#100447 Forward-Port-Of: odoo/enterprise#100301
This update removes unnecessary filters from the Follow-up Report, making it easier to understand and use. This change simplifies the report's output and provides clearer financial insights for users. It's a straightforward fix to enhance the user experience.
Original PR description
Removed default journal filters from the Follow-up Report to improve clarity. task-5149502 Forward-Port-Of: odoo/enterprise#100685
This update resolves a visual bug in the spreadsheet edition where the toolbar would shift down unexpectedly when another user was active in the same spreadsheet. This ensures a consistent and professional user experience for all spreadsheet users. The fix improves stability and usability.
Original PR description
Steps to reproduce: - open a spreadsheet - on a another tab, open the same spreadsheet => in the first tab, when the other user indicator appears, everything shifts down Task: 5265404 Forward-Port-Of: odoo/enterprise#99520