Friday, June 5, 2026
15 changes · master
Resolved issues and error corrections
This update ensures that the IPA reduction amount is now correctly displayed in the payroll summary tab (274.XX form). The change adjusts calculations to accurately reflect deductions and provides a clearer view of employee earnings. This improves reporting accuracy and transparency.
Original PR description
Previously, the IPA reduction was introduced on its own dedicated tab on the 274.XX form but was not shown in the summary tab. Added the IPA reduction to the Summary tab by updating the form view to display the "IPA Reduction" field inside the "Exempted Amounts" group, conditionally visible only when active. Modified the `_compute_amounts` method to: - Add `sme_exempted_amount` to the total `deducted_amount` when active. - Delay the calculation of `amount_to_pay` so it correctly reflects the updated total deductions. Task: 6268701
This update resolves compatibility issues with the latest o-spreadsheet library. The changes ensure the spreadsheet edition continues to function correctly after the library's update, improving stability and preventing potential disruptions to users. It addresses minor UI adjustments related to comment popups and layout configurations.
This update ensures the HR payroll payslip run Kanban overlay continues to function correctly after a recent update to Odoo's core framework. The change replaces outdated XPath targeting with more reliable CSS selectors, guaranteeing consistent overlay functionality regardless of the underlying form structure. This prevents potential disruptions to payroll processing.
Original PR description
## Summary Companion to the `odoo/odoo` PR on the same `master-tref-pr-1-nby` branch, which migrates `web.KanbanHeader`'s root `<div>` from `t-custom-ref="root"` to `t-ref="this.rootRef"` (Owl 3 signals). The `hr_payroll` payslip-run kanban overlays that `<div>` with an xpath targeting `[@t-ref='root']`. After the migration that attribute no longer exists — and the same xpath also fails against the pre-migration `t-custom-ref` form. ## Change Switch both xpaths in `hr_payslip_run_kanban.xml` to `hasclass()` selectors so they match regardless of which ref form the upstream template uses, keeping the overlay working across the migration. ## Notes - odoo/odoo#267687
This update resolves an issue where a validation error was incorrectly triggered when setting an intrastat code on product templates. The change now accurately checks for product templates with dynamic attributes and no variants, ensuring the error is raised only in the intended scenario. This improves data integrity and prevents unnecessary errors during product template creation.
Original PR description
Problem: When saving an intrastat code on a product template with no variants, an error should be raised because intrastat codes are stored on the product variants. However, the error gets raised when creating a product template with intrastat code set because the variants get created after the product template is created, so it doesn't find any variant although the default variant will be created right after saving the product template. Solution: The constraint should only be triggered when saving the intrastat code on a product template with dynamic attributes and no variants. Since dynamic attributes are the only ones that can lead to a product template with no variants, we can check if the product template has dynamic attributes and no variants before raising the error. Forward-Port-Of: odoo/enterprise#118986
This update corrects a minor error in the AI service that prevented the system from correctly handling responses from Google's Gemini models. Specifically, the code was incorrectly trying to access an ID field that wasn't always present, leading to a system error. This fix ensures consistent and reliable operation of the AI tool call functionality.
Original PR description
The functionCall parts returned by Gemini may or may not have an id depending on the LLM model used (Gemini 2.5 doesn't include an id in functionCall parts but Gemini 3 does). So, there is some code that checks whether there is an id and generates a uuid if none exists. This code had a bug because it was accessing the id directly on the functionCall part which may not exist and a keyerror was thrown in such cases. This commit solves the issue by using get instead of direct key access. Forward-Port-Of: odoo/enterprise#118837
A recent test failure related to demo data installation has been resolved. The fix ensures that a simulation offer is hidden during testing, preventing errors that occurred when expecting an empty list view. This improves the reliability of the system's testing process.
Original PR description
**Problem**: The test fails when demo data is installed because some steps expect an empty list view. **Fix**: Ensure the simulation offer is hidden by applying a custom filter on the simulation employee Task: 6246575 Forward-Port-Of: odoo/enterprise#119142 Forward-Port-Of: odoo/enterprise#118358
This update fixes an issue where auto-filling fields in sign requests was causing unintended side effects. The changes isolate the auto-fill functionality, preventing these unexpected behaviors and ensuring data integrity within the sign request process. This improves the reliability and accuracy of sign request creation.
Original PR description
task-6269354 Forward-Port-Of: odoo/enterprise#119148
This update resolves an issue where negative line items in Mexican CFDI invoices were incorrectly distributed across other lines. The change addresses a conflict introduced by new features like discounts and down payments, making the previous method for checking line types obsolete. This ensures accurate CFDI invoice processing.
Original PR description
In MX CFDI, negative lines are not allowed so they are distributed over other lines. But because this PR introduces some other `special_type` like `global_discount` and `down_payment`, it becomes useless to check `base_line['special_type'] == False`. Fix for https://github.com/odoo/odoo/pull/267435 task-5900496 --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#119327 Forward-Port-Of: odoo/enterprise#119254
This update addresses a technical issue related to the Spreadsheet Edition's pivot table layout configuration. The changes ensure compatibility with a recent update to the core Odoo spreadsheet functionality, resulting in a smoother and more reliable user experience. This primarily impacts how users customize and manage pivot table layouts.
This update resolves an issue where the Studio sidebar's checkboxes had a broken appearance due to a conflict with Bootstrap's styling. The fix globally applies a background image to indeterminate checkboxes, eliminating the need for a separate workaround and ensuring consistent display across the Enterprise module.
Original PR description
The Studio sidebar had its own `&:indeterminate { background-image: url(...) }` override to work around the broken Bootstrap indeterminate dash. This is now handled globally (see PR #268326 / master-fix-indeterminate-bg-image-jesc): `.form-check-input:indeterminate` sets `background-image` directly, bypassing the Bootstrap CSS variable that carries the broken `stroke='unset'`.
source: `web_enterprise/static/src/scss/bootstrap_overridden.scss` sets `$component-active-color: unset !default;` before `web/bootstrap_overridden.scss` in the bundle, so Bootstrap's indeterminate SVG compiles with `stroke='unset'` and the dash is invisible everywhere except where `background-image` is overridden directly.
fix: the global `.form-check-input:indeterminate { background-image: url(...) }` rule in `web/static/src/core/checkbox/checkbox.scss` now covers all checkboxes, making this local Studio override redundant.This update corrects a previous issue where website forms were incorrectly translated into the user's language instead of the website's default language. Now, all forms displayed on the website will automatically use the website's language setting, ensuring a consistent and accurate experience for users regardless of their browser language.
Original PR description
When the website is in a different language A to the user language B, forms are translated into the language B of the builder. They should be in the website default language. Task-6171271
This update fixes a technical error that prevented refunds in the Colombian Point of Sale (PoS) system. The issue stemmed from outdated code referencing an old function name, which caused a traceback during the refund process. This change ensures refunds are processed correctly for Colombian customers.
Original PR description
**Steps to reproduce:** - Setup a columbian company, DIAN should be in demo mode - Go to the PoS and make a sale with a columbian customer - Refund it - A traceback appears **Why the fix:** Some legacy code was left untouched when we changed the old **get_partner()** to the new **getPartner()** so we got a traceback as this function does not exist anymore. We also change the **set_partner(partner)** to **setPartner(partner)** as it was also forgotten. opw-6231856 Forward-Port-Of: odoo/enterprise#118651 Forward-Port-Of: odoo/enterprise#118054
This update resolves an issue where inserting a prompt banner using the `/prompt` command wouldn't allow users to undo the banner's creation. The fix ensures that undo functionality correctly removes prompt banners, improving usability and preventing unexpected content.
Original PR description
Problem: After inserting a prompt banner, undo does not remove it. Cause: History commands were ignored when the selection was inside the prompt banner, preventing undo from handling banner insertion. Solution: Handle history commands even when the selection is inside the prompt banner. Steps to reproduce: - Insert a prompt banner using `/prompt` + Enter. - Press Ctrl + Z. - Observe that the banner is not removed. task-6230530 Forward-Port-Of: odoo/enterprise#118248 Forward-Port-Of: odoo/enterprise#117845
This update corrects a bug that prevented quality checks from running correctly when a product's manufacturing operations were modified. The change adjusts how the system handles lot references, ensuring compatibility with recent Odoo updates. This resolves an error related to invalid data and improves the reliability of the quality control process.
Original PR description
## Steps to reproduce: - Install the `quality_mrp` module. - Create a new product. - Create a Quality Point with: Type: Measure, Control per: Product/Operation Operations: Manufacturing - Create and…
## Steps to reproduce: - Install the `quality_mrp` module. - Create a new product. - Create a Quality Point with: Type: Measure, Control per: Product/Operation Operations: Manufacturing - Create and confirm MO for the product. - Update the Quality Point: Remove the 'manufacturing' operation type and add 'receipts' type. Change Control per to 'Quantity'. - Open the MO and start a quality check. - Enter an invalid measure and try to validate it. ## Error: `AttributeError - 'mrp.production' object has no attribute 'lot_producing_id'` ## Cause: Since commit https://github.com/odoo/odoo/commit/4bb4e08066449177f89382718ceadd840ce90d0e, the `lot_producing_id` field on MO was replaced by the Many2many field `lot_producing_ids`. Invalid references to the removed field lead to an error. ## Fix: This commit uses the first lot/serial from the MO. Note: Multiple produced lots are only possible for serial-tracked products. sentry-7511513479 Forward-Port-Of: odoo/enterprise#119231
This update resolves an issue where users were blocked from uploading documents to requests linked to records they didn't have full access to. By adding a '.sudo()' function to the attachment creation process, users can now successfully upload documents, regardless of their access rights to the related record. This improves usability and ensures requests can be properly documented.
Original PR description
Issue: Users are currently blocked from uploading requested documents if the request is linked to a record they do not have access to (e.g., User A links Record X to a request assigned to User B, but User B lacks read/write access to Record X). The system throws an error because the user cannot create an attachment for that record. Fix: Add .sudo() on the attachment creation process. task-6107099 Forward-Port-Of: odoo/enterprise#113698