Daily updates from Odoo
Monday, July 28, 2025
27 changes
9 changes
Enhancements to existing features
The system now detects additional error states reported by Mettler Toledo scales before sending weight data to the Point of Sale. This helps prevent cashiers from receiving incorrect scale readings when the device is malfunctioning or in an error condition.
Original PR description
This PR adds the detection of different error states of the Mettler Toledo 8217 protocol. When the scale is in an error state we need to make sure that the PoS user doesn't get any wrong scale data sent to the PoS. Related PR: https://github.com/odoo/enterprise/pull/89602 Forward-Port-Of: odoo/odoo#220420 Forward-Port-Of: odoo/odoo#217674
This update adds automated checks to help ensure that devices stay properly synchronized in Point of Sale and Restaurant workflows. It reduces the risk of order or session information getting out of sync across tills, tablets, or restaurant devices, while noting that more synchronization coverage may be added later.
Original PR description
This commit add somes tests to ensure that the devices synchronisation works correctly in the Point of Sale and the Restaurant modules. This commit does not cover the entire synchronization code, so testing will need to be improved over time. Forward-Port-Of: odoo/odoo#219957
Customers using POS self-order are now taken directly to the next step after a successful payment instead of seeing an extra confirmation screen. This streamlines the checkout experience and reduces unnecessary waiting or taps.
Original PR description
Before: = - A payment confirmation screen used to appear after a successful transaction. After: = - The flow now skips the payment confirmation screen and moves directly to the next Screen. Task: 4836123 Forward-Port-Of: odoo/odoo#213481
Italian e-invoicing can now register an additional identifier, such as a VAT number, so incoming vendor bills are more likely to match the right registered user. This reduces failed invoice matching when suppliers provide only VAT details, improving reliability for Italian accounting workflows.
Original PR description
This improvement addresses an issue in the Italian e-invoicing (l10n_it_edi) and IAP registration logic where incoming vendor bills with only a VAT number failed to match the correct registered EDI user. Changes introduced: - Added `edi_identification_secondary` (e.g. VAT number) to support fallback user matching. - Updated the `/create_user` endpoint to accept and store the secondary identifier. - Modified `create_user` logic to send both primary and secondary IDs from Odoo. - Prepared the base for matching incoming invoices against both identifiers. See also: odoo/iap-apps#1056 Task [link](https://www.odoo.com/odoo/project/967/tasks/4619718) task-4619718 Forward-Port-Of: odoo/odoo#219654 Forward-Port-Of: odoo/odoo#207753
The IoT Box homepage now loads only the information needed for the current view, reducing unnecessary background refreshes. More detailed diagnostic data is fetched only when debug mode is enabled, helping avoid wasted resources from forgotten browser tabs.
Original PR description
On the homepage, we fetch data from the IoT Box every ten seconds, but we always fetch all data, even if we are not using "advanced" mode. The issue is if the homepage stays opened in a forgotten tab, we keep fetching undefinitely, taking resources uselessly. We moved the "advanced mode" to "debug mode" as in Odoo (`?debug=`), and now only fetch displayed data.
This update combines several usability and reliability improvements across Odoo, including better website building blocks, more accurate purchase project costing, corrected Indian time-off access, improved FacturX invoice validation, and better handling of POS discount refunds. It also adds a simple server version endpoint that can help integrations identify the running Odoo version.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users sending invoices to Spanish partners can now choose Factura-e directly from the Send & Print wizard instead of relying only on partner configuration. This makes electronic invoice generation easier to control at send time and helps prevent configuration mistakes.
Original PR description
Currently, `Factura-e` generation is controlled only by an partner E-invoice format setting, making it difficult for users to enable or disable when sending invoices. This PR adds a dedicated Factura-e checkbox on the `Send & Print` wizard for partners in Spain if the `l10n_es_edi_facturae` module is installed. The checkbox defaults to the partner’s current `E-invoice format` but can be toggled by the user. When enabled, it triggers Factura-e file generation and updates the partner’s E-invoice format to ensure consistency. This approach simplifies the user flow and reduces configuration errors. > Task-4831835 Forward-Port-Of: odoo/odoo#214295
The expiration notice now better reflects the timing between the next invoice date and when the database access may expire. This helps customers understand the payment deadline earlier and encourages timely renewal before access is affected.
Original PR description
Previously, the database expiration date was set to the same date as the expiration field, which is now defined as 15 days after the next invoice date. Issue: Users tend to wait until the last minute to pay. This improvement aims to better handle expiration timing and encourage timely payments. TaskID: 4384877 Forward-Port-Of: odoo/enterprise#90931 Forward-Port-Of: odoo/enterprise#90664
The certified scale integration now aligns its checksum expectations with updated Toledo scale error checks. This helps keep point-of-sale scale certification behavior consistent after related reliability improvements.
Original PR description
This PR adapts the scale checksum to the PR adding the error checks to Toledo scales: https://github.com/odoo/odoo/pull/217674 Forward-Port-Of: odoo/enterprise#90954 Forward-Port-Of: odoo/enterprise#89602
6 changes
Enhancements to existing features
The EMV QR configuration fields are now shown in a dedicated EMV QR Settings tab instead of being repeated in multiple places. This makes bank setup screens clearer and reduces confusion for users managing QR payment settings.
Original PR description
Before this PR: - `EMV QR Configuration` fields appears on both `Bank Information` tab and `Note` tab. After this PR: - `EMV QR Configuration` fields are moved to a separate `EMV QR Settings` tab to avoid duplication. Task : 4936165 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Italian e-invoicing registration now also sends a company’s VAT number as a backup identifier. This helps incoming vendor bills match the correct registered user when only the VAT number is available, reducing failed invoice processing.
Original PR description
This improvement addresses an issue in the Italian e-invoicing (l10n_it_edi) and IAP registration logic where incoming vendor bills with only a VAT number failed to match the correct registered EDI user. Changes introduced: - Added `edi_identification_secondary` (e.g. VAT number) to support fallback user matching. - Updated the `/create_user` endpoint to accept and store the secondary identifier. - Modified `create_user` logic to send both primary and secondary IDs from Odoo. - Prepared the base for matching incoming invoices against both identifiers. See also: odoo/iap-apps#1056 Task [link](https://www.odoo.com/odoo/project/967/tasks/4619718) task-4619718 Forward-Port-Of: odoo/odoo#219654 Forward-Port-Of: odoo/odoo#207753
Customers using self-ordering no longer see an extra payment confirmation screen after a successful transaction. This streamlines the checkout flow by taking them directly to the next step, reducing friction and wait time.
Original PR description
Before: = - A payment confirmation screen used to appear after a successful transaction. After: = - The flow now skips the payment confirmation screen and moves directly to the next Screen. Task: 4836123 Forward-Port-Of: odoo/odoo#213481
New automated tests check that Point of Sale and Restaurant devices stay correctly synchronized. This helps reduce the risk of order or session inconsistencies across devices, while noting that broader synchronization coverage will continue to improve over time.
Original PR description
This commit add somes tests to ensure that the devices synchronisation works correctly in the Point of Sale and the Restaurant modules. This commit does not cover the entire synchronization code, so testing will need to be improved over time.
Spanish invoice sending now includes a dedicated Factura-e option directly in the Send & Print flow. This makes it easier for users to choose when to generate Factura-e files and helps keep customer invoicing settings consistent.
Original PR description
Currently, `Factura-e` generation is controlled only by an partner E-invoice format setting, making it difficult for users to enable or disable when sending invoices. This PR adds a dedicated Factura-e checkbox on the `Send & Print` wizard for partners in Spain if the `l10n_es_edi_facturae` module is installed. The checkbox defaults to the partner’s current `E-invoice format` but can be toggled by the user. When enabled, it triggers Factura-e file generation and updates the partner’s E-invoice format to ensure consistency. This approach simplifies the user flow and reduces configuration errors. > Task-4831835 Forward-Port-Of: odoo/odoo#214295
Businesses using the Türkiye reports can now export the General Ledger in the CSV format required for e-Ledger submissions. The file is automatically packaged as a ZIP archive, helping meet Türkiye Revenue Administration delivery requirements for selected reporting periods.
Original PR description
This PR implements the necessary functionality for Türkiye’s e-Ledger reporting, as mandated by Türkiye law (Law No: 15570). Taxpayers that switched to e-Invoice/e-Archive are also required to submit their General Ledger (GL) in the e-Ledger format. Summary of the change This update enhances the existing Türkiye General Ledger report in the `l10n_tr_reports` module with the following features: - Adds the ability for users to generate the General Ledger as a CSV file, formatted according to the Türkiye e-Ledger requirements. - Allows export for any selected period, including relevant and filtered fields. - The generated CSV file is automatically compressed into a ZIP archive to comply with the GIB (Türkiye Revenue Administration) guidelines for file delivery. Task-4270136 Forward-Port-Of: odoo/enterprise#90997 Forward-Port-Of: odoo/enterprise#86592
7 changes
Enhancements to existing features
A Web Studio automated test was updated to reflect a recent platform change in how field information is handled. This helps keep quality checks aligned with the product and reduces the risk of false test failures during development.
Original PR description
This commit adapts a test to the addition of the copy attribute in fields_get made in https://github.com/odoo/odoo/pull/219253 task-4920305
Added a button in the website settings that redirects to the website generator configurator. The goal is to have a standard way to import a website without necessarily it being part of the onboarding flow. closes odoo/enterprise#88334 Forward-Port-Of: odoo/enterprise#90071
Original PR description
Added a button in the website settings that redirects to the website generator configurator. The goal is to have a standard way to import a website without necessarily it being part of the onboarding flow. closes odoo/enterprise#88334 Forward-Port-Of: odoo/enterprise#90071
Online orders received through UrbanPiper now calculate and display taxes more accurately based on the restaurant’s country and fiscal setup. This helps businesses avoid tax mismatches, especially for Indian GST rules where aggregator-paid and merchant-paid taxes are handled differently.
Original PR description
**: pos_urban_piper_zomato, pos_urban_piper_swiggy After this commit: --- - For orders outside India, price are received from UrbanPiper as tax-inclusive. Odoo now properly computes the unit price and applies taxes based on the fiscal position. - For India, special handling is implemented: - 5% GST is collected and paid by the aggregator, so only this tax is added via fiscal position mapping. - For other tax rates like 12% or 18%, the merchant is responsible, so these must be configured explicitly in the fiscal position. Note: --- - If a user does **not** want to receive a particular tax in the order, they must manually add a line for it in the fiscal position. Task: 4862417 Forward-Port-Of: odoo/enterprise#91036 Forward-Port-Of: odoo/enterprise#88118
Helpdesk ticket updates made from the customer portal now show the customer as the author in the chatter instead of OdooBot. This makes ticket history clearer for support teams, while still using OdooBot when no customer is linked.
Original PR description
- When closing the ticket form portal, the customer's name appears in the chatter instead of OdooBot. - When the ticket is closed by a public user, the customer appears in the chatter. - When no customer is specified, the OdooBot will appear in the chatter. task-4809115
The editing toolbar now offers font color instead of strikethrough in compact mode, making common formatting easier to access. Knowledge article formatting options are also shown more selectively, so users only see relevant paragraph or normal text choices based on the editor context.
Original PR description
I. This PR replaces strike through with font color in compact toolbar. II. This PR replaces the baseContainer config with baseContainers, a list that defines the allowed base containers. The first element of the list now serves as the default, equivalent to the previous baseContainer. This change enables conditional display of "Normal" and "Paragraph" options in the toolbar. For example, if baseContainers only includes "DIV", only the "Normal" option will be shown. Similarly, if it only includes "P", only the "Paragraph" option will be shown. community-https://github.com/odoo/odoo/pull/216884 task-4770922
Users now see a confirmation popup when moving documents to a folder that would change who can access them. This helps prevent accidental permission changes and makes folder access implications clearer before the move is completed.
Original PR description
Purpose ======= Making sure people are aware of the access rights change when moving documents to a different folder. Specification ============= When moving documents to a target folder, add a confirmation popup specifying the target folder access rights if making the move will impact the dragged documents access rights. Task-4822908
The database expiration message now reflects the updated timing based on the next invoice date, giving customers a clearer payment window. This helps encourage earlier payments and reduces last-minute renewal risk.
Original PR description
Previously, the database expiration date was set to the same date as the expiration field, which is now defined as 15 days after the next invoice date. Issue: Users tend to wait until the last minute to pay. This improvement aims to better handle expiration timing and encourage timely payments. TaskID: 4384877 Forward-Port-Of: odoo/enterprise#90931 Forward-Port-Of: odoo/enterprise#90664
5 changes
Enhancements to existing features
Point of Sale payments in Argentina, Peru, and Uruguay now request an invoice by default. This supports local requirements that sales generate an electronic document, reducing the risk of missed invoicing during checkout.
Original PR description
[IMP] l10n_*: set default invoice true in pos modules: l10n_pe_pos, l10n_ar_pos, l10n_uy_pos In the POS, in the payment screen, the button to request an invoice is set to true by default. This is done because a sale in these countries must generate an electronic document. task-4612192
Indian companies will now keep HSN codes on point-of-sale accounting entries even when POS orders are reversed after session closure. This helps maintain accurate HSN-wise tax reporting for GSTR filings and reduces manual correction work.
Original PR description
This commit ensures that the `l10n_in_hsn_code` is also included in the accounting move lines are generated for reversal entries of POS orders when the The company’s fiscal country is India. Key changes: * Introduced the method `_prepare_product_aml_dict` in `point_of_sale` to centralize journal line creation logic. * Overridden the method in `l10n_in_pos` to append the `l10n_in_hsn_code` from the base values for Indian companies. * Ensured this applies consistently for both regular and reversal entries. This enhancement is essential for maintaining accurate HSN-wise reporting in GSTR filings, even when entries are reversed after session closure. OPW: 4931360
Odoo now keeps database time aligned with simulated application time during tests. This helps make time-based test results more realistic and reliable without affecting normal production use.
Original PR description
[IMP] sql_db: replace now to reflect the time offset When using the faketime lib to test Odoo, only the Odoo processes are affected, so it does not reproduce the reality. With this commit, when an environment variable `ODOO_FAKETIME_MODE` is set, the cursor `now` function is altered the same way faketime alters the Odoo processes. See https://github.com/wolfcw/libfaketime Forward-Port-Of: odoo/odoo#220632 Forward-Port-Of: odoo/odoo#219671
The French tax report now shows a warning when key declared tax amounts do not balance against related totals. This helps users spot possible reporting errors before submitting or reviewing the report.
Original PR description
This commit will add a warning banner when the sum of field 08+09+9B+10+11+T1->T7 is not equal to sum of field A1+A2+A3+B2+B3+B4 Task-4933787
The database expiration message now reflects the updated payment grace period, where expiration is set 15 days after the next invoice date. This helps customers understand the real deadline earlier and encourages timely payment before access is affected.
Original PR description
Previously, the database expiration date was set to the same date as the expiration field, which is now defined as 15 days after the next invoice date. Issue: Users tend to wait until the last minute to pay. This improvement aims to better handle expiration timing and encourage timely payments. TaskID: 4384877 Forward-Port-Of: odoo/enterprise#90810 Forward-Port-Of: odoo/enterprise#90664