Daily updates from Odoo
Tuesday, October 21, 2025
27 changes
11 changes
Enhancements to existing features
Updates Luxembourg payroll settings to reflect the 2025 minimum social salary and related employee tax credits. This helps businesses calculate payroll in line with the latest official Luxembourg social security and tax parameters.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf task-5176255 Forward-Port-Of: odoo/enterprise#97468
This update refines how manufacturing planning calculates monthly demand by using exact date ranges, improving accuracy for purchasing and production suggestions. It also streamlines field service product catalog navigation and internal data handling, making the back button behavior clearer and the catalog code easier to maintain.
Company-wide return deadline settings have been removed because deadlines can now be managed directly on each return type. This gives customers more precise control over filing timelines across accounting reports and country-specific returns.
Original PR description
The field deadline on the company is now removed as customers have now a way to override the deadline on the return type directly. task-5153900
The appraisal form now gives employee and manager feedback sections more usable space. This makes longer appraisal comments easier to read and reduces wasted space from the previous scrollbar styling.
Original PR description
Make the Employee/Manager feedback areas feel roomier and remove the visual inset on their scrollbars. This improves readability of long appraisals and avoids wasted space. task-5176134
Odoo Studio now lets users drag existing selection or stage-like fields onto a form status bar instead of creating only a new selection field. This makes stage setup more flexible and allows better ordering in grouped views, especially when using related stage records.
Original PR description
Before this commit, to add a StatusBar (stages) in a form view, one had to click on the form's editor hook. After some configuration it added a Selection field with some selection values setup by the user. The problem with selection values is that there are ordered lexicographically on the value in the column, that is the technical value of the selection value's tuple. Hence, in a grouped kanban (or list -- via a web_read_group) the groups could not have another order. After this commit, the StatusBar hook behaves as a droppable hook and one can drag and drop a selection field or a many2one, allowing for their respective configuration. If a many2one serves as the field underlying the statusbar, a button allows the user to add records, i.e. stages. task-4744988
This update adds country-specific EC Sales List and Intrastat reporting rules for Austria, Germany, the Netherlands, Italy, Poland, and Portugal. Businesses in these countries can better track required filing deadlines and periodicities directly in Odoo, supporting more accurate tax and trade compliance.
Original PR description
Following the implementation of the Tax returns feature in 18.3 which was focused on the general implementation and Belgium, we want to add the specification for other country and in this case Austria, Germany, The Netherlands, Italy, Poland, and Portugal. Adding EC sales list, Intrastat specific deadlines and periodicities. task-4776236
Studio now stores pipeline stages in a way that preserves their intended order, so kanban columns appear consistently and empty stages remain visible. This improves pipeline setup and editing, including statusbar display and option handling in the form editor.
Original PR description
**Before this PR:** In studio, the pipeline statusbar was modeled as a field selection which prevented the order of the stages to be used to order kanban columns correctly. **After this PR:** The pipeline statusbar is now modeled as a Many2one field pointing to a new model created when adding the statusbar to the form view. This allows the kanban view to be ordered correctly. The edition of the statusbar also works when the model is created with the pipeline option checked. Moreover, when a kanban column is empty, it is still displayed which prevent the user to be prompted for the creation of new stages. **This PR also introduces 2 fixes:** - All statusbar options are parsed when using the add operation. - The statusbar widget is now rendered correctly in the form editor. task-4744988
Argentina IVA Simple tax report exports are now handled directly in the main Argentine reporting module instead of a separate add-on. This simplifies module management while keeping the report export and related tests available for users who need Argentine VAT reporting.
Original PR description
In fe77a6b we merged a new module in stable to be able to support the export of IVA Simple Tax Reports for Argentina. This is no longer necessary in master, as such, the model data for activities have been merged into `l10n_ar` in community, and all of the tests and report exports have been moved to `l10n_ar_reports` in enterprise. task-5027104
The SEPA Direct Debit mandate form has been simplified to show only the most relevant information to everyday users. Date handling, bank account guidance, and scheme explanations are clearer, helping staff complete mandates with less confusion.
Original PR description
- Show identifier only in debug mode. - Use Date Range for start and end date with 'Indefinite' as placeholder. - Placeholder for partner bank 'Provided by customer'. - Make SDD scheme optoins clearer and adding useful help. task-5159986
Users can now copy alias email addresses directly from relevant configuration screens. This makes it faster and less error-prone to share or reuse incoming email aliases for helpdesk, PLM, and quality workflows.
Original PR description
This PR made the following changes: - Add the alias_email field to the view, using the `CopyClipboardButton` widget to enable copying the alias email to the clipboard. - Added the custom CSS using the `copy_alias_email` class to hide the copy icon provided by the `CopyClipboardButton`. - Also, make sure that alias_name, alias_domain_id, and the copy button appear on the same line. - Also removed some classes from the field and div, and used row col instead of them to align fields properly in a single line. Task-4812573
Uruguayan electronic invoices can now correctly identify and report VAT rates outside the standard exempt, minimum, and basic categories. This improves compliance by adding the required reduced-rate totals and line indicators in the XML, plus a dedicated tax grid for reporting.
Original PR description
1) Detecting "Reduced Tax Rate": * Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced…
1) Detecting "Reduced Tax Rate":
* Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced Tax Rate".
2) Modifying XML Output:
* In the `<Totales>` section of the XML, include the total amount of VAT under the "Reduced Tax Rate" in the `<MntIVAOtra>` tag.
* Example: ```xml <MntIVAOtra>140</MntIVAOtra> ``` (where 140 corresponds to the VAT calculated at the reduced tax rate, e.g., 20%).
* For each product line using "Reduced Tax Rate," set the `<IndFact>` tag to `4`: ```xml <IndFact>4</IndFact> ```
* Ensure the total amount reflects the base amount plus the VAT under "Reduced Tax Rate".
3) Tax Grid for Configuration:
* Add a new tax grid called Sales Reduced VAT to be used for the tax configuration of the "Reduced Tax Rate."
* This will ensure proper reporting and consistency in tax declarations.
* The new tax grid should be selectable when configuring other taxes.
Odoo Implementation Considerations:
* The tax computation logic in Odoo already supports defining taxes at different rates.
* Adapt the XML generation logic to check for product lines with a non-standard VAT rate and apply the necessary modifications. Ensure the final totals in the XML align with Odoo's computed tax amounts.
Task latam side: 1330
Task Adhoc side: 52999
Forward-Port-Of: odoo/enterprise#97640
Forward-Port-Of: odoo/enterprise#913929 changes
Enhancements to existing features
Payment terminals will no longer be automatically registered for event handling because they already manage their own events. This reduces unnecessary background handling and helps keep IoT payment terminal behavior clearer and more reliable.
Original PR description
As for printers that can send event whenever they want, payment terminals handle event themselves. We then removed auto event registering for payment terminals. odoo/enterprise#97617 Forward-Port-Of: odoo/odoo#232282
Point of Sale payment terminals connected through IoT can now use newer connection methods in addition to the existing fallback. This improves communication flexibility and can help make terminal interactions more reliable across different network setups.
Original PR description
As for any other actions sent from the db to the IoT Box, we updated payments terminals logic to use the `iot_http` service in order to allow them using webrtc and websocket in addition to longpolling. Backport of odoo/enterprise#92896 (`iot_http` service refactoring only, to allow listening without sending action) Backport of odoo/enterprise#96634 odoo/odoo#232282 Forward-Port-Of: odoo/enterprise#97617
The website editor now detects when a browser or device cannot support WebGL and disables image filters instead of showing an error. This keeps editing stable for users on affected Linux Chrome versions or systems without usable graphics support, while clearly indicating why image filters are unavailable.
Original PR description
On recent versions of Chrome for Linux (v140+), the old SwiftShader software fallback for WebGL has been removed. As a result, new window.WebGLImageFilter() now throws if no GPU context is available, typically when WebGL is disabled or unsupported. Since the application cannot enable WebGL from JavaScript, this commit improves the user experience by detecting the absence of a WebGL context early and disabling image filters in edit mode. Instead of raising a traceback, the editor now skips the filter feature and can optionally display a friendly message explaining that WebGL is required to use image filters. This avoids runtime errors and ensures a more robust behavior on platforms where WebGL is unavailable. task-5117584 Forward-Port-Of: odoo/odoo#232009 Forward-Port-Of: odoo/odoo#229705
Manufacturing planning now calculates monthly product demand using the exact date range being analyzed instead of a broad preset label. This makes forecasts slightly more precise and consistent with the stock movements included, while related field service catalog code was cleaned up for better maintainability.
Original PR description
Changes the context keys used in the compute of product.product monthly demand from a string "suggest_based_on" to 2 datetime objects, the start and end date from which to consider moves. see odoo/odoo#225721 Some values from the test are changed (also some relevant changes in this previous commmit odoo/odoo#0a022c0777). The discrepencies are due to change of factor logic from if based_on == "three_months": factor = 3 to factor = (limit_date - start_date).days / (365.25 / 12) or 1 --> For example turning a based on 3 months monthly demand with 30 products sold 2 months ago will change from BEFORE: 30 / 3 = 10 NOW: 30 / (92 / (365.25 / 12)) = 9.92 Using start_date = now() - relativedelta(months=3) means (limit_date - start_date).days can range from 89-92 days depending on the month. But this makes sense as the daterange used to select moves that go in the monthly demand calc will be based on the same number of days. task#4783508
Documentation courses can now receive reviews, just like training courses, helping organizations collect feedback on a wider range of learning content. Comments are turned off by default for documentation courses to better match their less interactive nature, and course type guidance is clearer with a new tooltip.
Original PR description
Only "training" course were allowed to be reviewed. We extend it here to all type of course (i.e. also "documentation" course). As documentation courses are less "participative", we disable comment by default for those courses. We also add a tooltip for course type field. Task-4568069
Updates Uruguay localization to recognize reduced VAT rates beyond the standard exempt, minimum, and basic categories. This helps businesses produce compliant electronic invoice XML and tax reports for eligible card or electronic-money sales.
Original PR description
To fully comply with regulatory requirements, we need to support an additional category called "Reduced Tax Rate" when a product line has a Reduced VAT rate (e.g., 20%) for sales of goods and…
To fully comply with regulatory requirements, we need to support an additional category called "Reduced Tax Rate" when a product line has a Reduced VAT rate (e.g., 20%) for sales of goods and services to final consumers when payment is made by debit card or electronic money instrument (and other specific reductions in similar cases).
1. Detecting "Reduced Tax Rate":
* Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced Tax Rate".
2. Modifying XML Output:
* In the <Totales> section of the XML, include the total amount of VAT under the "Reduced Tax Rate" in the <MntIVAOtra> tag.
* Example: xml <MntIVAOtra>140</MntIVAOtra> (where 140 corresponds to the VAT calculated at the reduced tax rate, e.g., 20%).
* For each product line using "Reduced Tax Rate," set the <IndFact> tag to 4: xml <IndFact>4</IndFact>
*Ensure the total amount reflects the base amount plus the VAT under "Reduced Tax Rate".
3. Tax Grid for Configuration:
*Add a new tax grid called Sales Reduced VAT to be used for the tax configuration of the "Reduced Tax Rate."
* This will ensure proper reporting and consistency in tax declarations.
* The new tax grid should be selectable when configuring other taxes.
Odoo Implementation Considerations:
* The tax computation logic in Odoo already supports defining taxes at different rates.
* Adapt the XML generation logic to check for product lines with a non-standard VAT rate and apply the necessary modifications. Ensure the final totals in the XML align with Odoo's computed tax amounts.
Task latam side: 1330
Task Adhoc side: 52999
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#232132
Forward-Port-Of: odoo/odoo#221073Uruguayan electronic invoices can now correctly handle VAT rates outside the standard exempt, minimum, and basic rates. This improves tax reporting accuracy by including reduced-rate VAT in the official XML invoice totals and making the related tax grid available for configuration.
Original PR description
1) Detecting "Reduced Tax Rate": * Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced…
1) Detecting "Reduced Tax Rate":
* Identify product lines with a VAT rate that is neither 0% (exempt), 10% (minimum), nor 22% (basic). Any VAT rate outside these three should be considered "Reduced Tax Rate".
2) Modifying XML Output:
* In the `<Totales>` section of the XML, include the total amount of VAT under the "Reduced Tax Rate" in the `<MntIVAOtra>` tag.
* Example: ```xml <MntIVAOtra>140</MntIVAOtra> ``` (where 140 corresponds to the VAT calculated at the reduced tax rate, e.g., 20%).
* For each product line using "Reduced Tax Rate," set the `<IndFact>` tag to `4`: ```xml <IndFact>4</IndFact> ```
* Ensure the total amount reflects the base amount plus the VAT under "Reduced Tax Rate".
3) Tax Grid for Configuration:
* Add a new tax grid called Sales Reduced VAT to be used for the tax configuration of the "Reduced Tax Rate."
* This will ensure proper reporting and consistency in tax declarations.
* The new tax grid should be selectable when configuring other taxes.
Odoo Implementation Considerations:
* The tax computation logic in Odoo already supports defining taxes at different rates.
* Adapt the XML generation logic to check for product lines with a non-standard VAT rate and apply the necessary modifications. Ensure the final totals in the XML align with Odoo's computed tax amounts.
Task latam side: 1330
Task Adhoc side: 52999
Forward-Port-Of: odoo/enterprise#97521
Forward-Port-Of: odoo/enterprise#91392This update applies automated code quality checks and formatting to the website-related modules. It helps keep the website builder and blog code more consistent and easier to maintain, with no expected direct change for end users.
Original PR description
[IMP] web: whitelist website and website blog for the linter The goal of this commit is to enable tooling (eslint, prettier) on the `website` and `website_blog` modules. task-5110180 ------------------------------------------------------------------------------------------------------------------------ [LINT] html_builder, *: lint website related files *: html_editor, website, website_blog The goal of this commit is to lint the website related js files. task-5110180
This update tidies how the Stripe expense integration handles return responses after a user action. It is a small maintenance improvement that helps keep the expense card flow clearer and easier to maintain without changing core business behavior.
5 changes
Enhancements to existing features
Luxembourg payroll parameters have been updated to reflect 2025 changes to the minimum social salary and employee tax credits. This helps ensure payroll calculations stay aligned with the latest official Luxembourg social security and tax requirements.
Original PR description
Sources: - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202501.pdf - https://igss.gouvernement.lu/dam-assets/publications/param%C3%A8tres-sociaux/2025/par-soc-202505.pdf - https://impotsdirects.public.lu/fr/az/c/CIP/cip2025.html - https://impotsdirects.public.lu/fr/az/c/credit-impot-salaries/cis2025.html task-5176255 Forward-Port-Of: odoo/enterprise#97608
This update lets account report expressions be copied along with account reports. It makes duplicating and adapting financial reports easier, reducing manual setup work and helping maintain consistency.
Original PR description
This commit is a backport of [this commit](https://github.com/odoo/odoo/commit/9c0baadc4bb58a75d17ef6963a5acd5cf6c34036) initially targetting saas-18.1 which enables the copy of account report expressions. --- task-4728887 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Trial Balance report has been updated with improvements from a newer version and aligned across several country-specific accounting reports. This gives finance teams a more consistent and improved reporting experience in Odoo 18.0, especially for consolidation-related work.
Original PR description
*: account_intrastat, account_reports, l10n_be_reports, l10n_co_reports, l10n_ee_reports, l10n_es_reports, l10n_lu_reports, l10n_mx_reports, l10n_ro_reports --- This commit is a backport of both the following commits whose targets are to refactor the Trial Balance report. https://github.com/odoo/enterprise/commit/a7e1ec20e07efc39bca44d3ae613a54770175273 https://github.com/odoo/enterprise/commit/a6508b0b91a34921668ddc039e2b006746b78351 18.0 is a major version for consolidation and the improved trial balance should accompany it. --- task-4728887
All Finnish tax report lines now have assigned codes. This helps export templates consistently identify each line, reducing the risk of missing or mismatched data in tax report exports.
Original PR description
The aim of this commit is adding code for all the tax report lines. Before, some lines didn't have any code set on it, now all these lines have a code. The change is motivated by the tax report export where we use the code as key in the dict given to the export template. task-5135868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Finnish accounting reports can now be exported in a file format suitable for submission to the tax administration. This helps customers meet local reporting requirements more easily and reduces manual work when preparing tax filings.
Original PR description
The aim of this commit is adding the tax report export file to allow our customers to send their tax reports to their administration. task-5135868
2 changes
Enhancements to existing features
This update includes VoIP-related components in automated code quality checks. It helps maintain consistency and reduce the risk of future issues in those areas, with no direct change for end users.
Six payment terminals in Point of Sale now support printing end-of-day balance reports and handling refunds or payment reversals. The update also makes transactions faster, improves receipt output, and stores card brand information instead of card numbers for clearer payment records.
Original PR description
Based on the feedback received from our partners we are missing some features in our Six terminal integration. This PR adds them 1. Send balance command to print end-of-day report 2. Adapt the code to reduce the sleep delay after each transaction 3. Refunds/payment reversals for Six + it also adds some minor code improvements like a) Card brand is now saved in pos payments instead of the card number b) Card number is still being sent to PoS and while not stored in v17 will be stored from v18 c) The code of ctypes_terminal_driver and Six Driver was improved to reuse the buffer size and improve the buffer usage d) Fixes the receipt size for the Six terminals e) updates the Six C libraries used to the latest version to get all the newest fixes Related C PR: https://github.com/odoo/worldline-lib/pull/9