Daily updates from Odoo
Tuesday, October 21, 2025
9 changes · 19.0
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.