Daily updates from Odoo
Thursday, March 26, 2026
13 changes · 19.0
Enhancements to existing features
This update enables Peruvian Point of Sale (POS) systems to directly print E-invoices and receipts on thermal printers, aligning with local regulations and common retail practices. Previously, customers had to download invoices from an online portal. This change improves the customer experience by providing immediate, legally-recognized documentation.
Original PR description
Before: - In Peru, Point of Sale (POS) systems are allowed to generate E-invoices and E-receipts that comply with SUNAT’s requirements. - In the POS, Odoo prints a ticket that only includes a QR code linking to the customer portal, where the A4 invoice can be downloaded. - However, according to SUNAT and common practice in Peruvian retail environments, the printed POS ticket itself should serve as the legal representation of the electronic document After: - We allow Peruvian POS users to print electronic invoices and receipts directly on thermal printers (58 mm / 80 mm) using the same electronic document flow and data as the accounting module, ensuring full compliance with SUNAT’s representation requirements. Impact: - Improve customer experience by avoiding portal-only invoice download task-5193544
Resolved issues and error corrections
This update fixes a misinterpretation of the W4 filing date within the US payroll module. Previously, the system incorrectly associated the date of W4 completion with the date it's filed with the employer. This change ensures accurate tracking of the filing date, aligning with US tax regulations. This resolves a potential reporting discrepancy.
Original PR description
This field is about when the W4 is filed with the employer, not when it's filled in. opw-5096780 Forward-Port-Of: odoo/enterprise#111679 Forward-Port-Of: odoo/enterprise#111213
This update fixes an issue where the KMD INF report incorrectly included partners with turnover below 1,000 EUR. Now, the report accurately filters partners based on total invoice and credit note amounts, ensuring more precise financial reporting. The logic considers both standard and Part B transactions.
Original PR description
The KMD INF report should only include partners whose total turnover for the period reaches 1,000 EUR. Before this PR: - The report did not check this threshold, so partners below €1,000 were still shown. After this PR: - The threshold is now calculated correctly based on specific rules: - The threshold is calculated separately for invoices and credit notes per partner. - If invoices total base amount >= €1,000 OR credit notes total base amount >= €1,000, both invoices and credit notes are included in the report - The same logic applies to bills and refunds in Part B. task-5373606 Forward-Port-Of: odoo/enterprise#111737 Forward-Port-Of: odoo/enterprise#101333
This update resolves an issue where deleted serial numbers could not be rescanned using the rfid barcode scanner. The fix removes the serial number from a temporary cache, allowing it to be correctly processed when rescanned. This ensures accurate inventory tracking when using the rfid scanning feature.
Original PR description
**Problem:** When using rfid scan, a deleted line can not be scanned again **Steps to reproduce on localhost:** 1) create a new db with stock_barcode module 2) enable lot and sn setting 3) create a…
**Problem:**
When using rfid scan, a deleted line can
not be scanned again
**Steps to reproduce on localhost:**
1) create a new db with stock_barcode module
2) enable lot and sn setting
3) create a storable serial number product with
barcode 06016478556455
4) open barcode/ Count Inventory
5) to simulate a rfid scan of 3 serial numbers [1,2 and 3]:
- open browser console
- enter the following command :
`odoo.__WOWL_DEBUG__.root.env.services.mobile.bus.trigger("mobile_reader_scanned", { data: [
"urn:epc:id:sgtin:601647.0855645.1urn:epc:id:sgtin:601647.0855645.2urn:epc:id:sgtin:601647.0855645.3"
]});`
6) click the line with serial number "2", click on
the "-1" and then bin red button
7) repeat step 5
**Current behavior:**
the line for sn 2 is not added to the product
**Expected behavior:**
it should be added when rescanned
**Cause of the issue:**
When the uri barcodes are first scanned at step 5,
every uri is added to the uri cache, to be sure that
they are not mistakenly rescanned.
https://github.com/odoo/enterprise/blob/4296be6a81909dcdb094f728f8be45a8617ff54b/stock_barcode/static/src/models/barcode_model.js#L1615
Then when we scan again at step 7, because the uri
is in the cache, it's not added to filteredBarcodes and
it will not be processed.
https://github.com/odoo/enterprise/blob/4296be6a81909dcdb094f728f8be45a8617ff54b/stock_barcode/static/src/models/barcode_model.js#L688-L696
**fix**
we remove the uri from the cache when the line is deleted.
opw-5193250This update resolves an issue where the POS scale integration was not accurately displaying product weights, particularly with newer IoT box versions. The fix adjusts how the scale's measurement data is processed, ensuring correct weight readings are shown in the POS system. This improves the accuracy of product weighing for customers.
Original PR description
Steps to reproduce - Use a localisation other than a european one (l10n_eu_iot_scale_cert must not be installed) - Setup the scale for the POS - Open the POS - Add a product to be weighted by scale to the order - Add product to the physical scale - The displayed weight is always 0 Cause: New versions of the IoT box uses the field result to return the scale measure instead of value. Fix for version 18.0 and its intermediary versions. [opw-5990467](https://www.odoo.com/odoo/project/49/tasks/5990467) Forward-Port-Of: odoo/enterprise#111963
This update resolves a slow test within the Documents module by forcing the database to refresh its statistics. This optimization prevents inefficient query plans and significantly reduces test execution time, improving overall development efficiency. The change addresses a performance issue that was impacting test stability.
Original PR description
This commit introduces explicit `ANALYZE` statements on the `documents_document` and `documents_access` for the test `test_documents_embedded_actions_security`. This forces postgres to refresh its statistics for the current transaction, ensuring it uses efficient query plans. The slow test seemed to be cause by unnecessarily triggering jit and optimizing it. Especially the optimisation resulted in the test sometimes taking more than 3 minutes to run instead of taking seconds. Task-6005265 https://runbot224.odoo.com/runbot/static/build/102793860-master/tests/profile/profile_2.html#localProfilePath=1 <img width="1920" height="382" alt="SlowTest" src="https://github.com/user-attachments/assets/dea5a03d-9fc0-4fad-ac96-ef57d9816b46" />
This update resolves an issue where product descriptions in the shopping cart were displayed in reverse order. The root cause was a change introduced to prioritize certain information, but it failed to account for products with multi-line descriptions. The fix ensures product descriptions are correctly rendered in the cart, improving the user experience.
Original PR description
Issue: --- Due to this issue, the description following lines are inversed. Steps to reproduce: --- 1- In product page in backend, add a multiline "Short Description" to a product. 2- Navigate to website and add the product to the cart. 3- Open the cart. Outcome: The description after lines are shown inversed. Cause: --- This is introduced by odoo/odoo#223433. It was done to ensure some information such as rental date and variant description are shown at the beginning. However, it didn't consider that the product description itself might have multilines. Fix: --- There is not a clean way to extract the information from the computed name. To avoid the problem, we can compute the description following lines manually without depending on the line.name. opw-5976614
This update ensures that the currency used for Stripe expense payments is consistently defined within the company settings. Previously, this could lead to payment errors. This fix improves the reliability and accuracy of expense processing, preventing potential disruptions to employee reimbursements.
This update fixes a limitation in the Arabic reporting module, allowing businesses to accurately track and manage VAT across multiple branches. Previously, VAT book functionality was restricted, now it's enabled to support a more complete and compliant accounting process for businesses operating with multiple branches in the Arabic-speaking region.
Original PR description
Task: 62111 Manual FW of https://github.com/odoo/enterprise/pull/101898
This update resolves an issue where searching for delivery locations using only a zip code resulted in inaccurate location suggestions. The system was incorrectly interpreting zip codes as solely postal codes without a city designation, leading to incorrect data being sent to Sendcloud. This fix ensures accurate location retrieval for Sendcloud deliveries.
Original PR description
Issue ----- Searching for locations by only providing a zip code has unexpected results. Steps to reproduce ----- - Set up Sendcloud with Mondial Relay - Create a sale through the website - Get to the delivery part - Select sendcloud delivery - Search for a zip code only (11000) > Points are all in the 12200 area Cause ----- When searching through the wizard, a temporary address is created in https://github.com/odoo/odoo/blob/89e5038c224d58a2f6be8f3001fd0a2932733cbc/addons/delivery/models/sale_order.py#L108-L112 which always has its' city field set to `False`, as all of the wizard's info is interpreted as the zip code. This leads to the address field sent to Sendcloud being '11000 False' instead of the expected '11000', which Sendcloud fails to interpret correctly. ----- Ticket: opw-5999194
This update fixes a recurring issue where the Italian POS printer experienced errors when the system was offline. The fix adds a safety mechanism to gracefully handle network interruptions during receipt printing, preventing errors and improving the overall stability of the POS system for Italian businesses. This ensures smoother transactions even without an internet connection.
Original PR description
When loosing internet connexion a lot of tracebacks appear is the pos if we use the italian fiscal printer. Steps to reproduce: ------------------- * Setup italian fiscal printer for a shop * Open shop * Turn wi-fi off * Add items to cart * Go to payment screen > Traceback * Add a payment and validate > Traceback Why the fix: ------------ Don't try to reach the printer if we're offline regarding the price to pay. We add a try catch block around the call for printing the receipt. If the try block fails when the network is offline we assume it's just because of the offline mode. If it failed while online we raise the error. opw-5432090 Forward-Port-Of: odoo/enterprise#111487 Forward-Port-Of: odoo/enterprise#105515
This update resolves an issue where imported CFDI invoices (public invoices) were not correctly marked as 'public' during the import process. Previously, the system incorrectly defaulted to 'not public'. This change ensures that public CFDI invoices are properly recognized and processed, aligning with Mexican tax regulations.
Original PR description
**PROBLEM** When importing a XML to create an invoice, even if the XML is an invoice to public, l10n_mx_edi_cfdi_to_public is False. **STEP TO REPRODUCE** 1. Create an invoice to public, and generate the xml (send with CFDI). 2. Use this xml to upload an new invoice and notice the cfdi to public checkbox is unticked. **NOTE** Previously, there was a [bug](https://www.odoo.com/odoo/my-support-tasks/5911542) where it would always be ticked. opw-5934626
Features or functions removed from Odoo
This update removes a redundant icon path from the l10n_tw_reports module's manifest file. This simplifies the module's setup and reduces potential issues related to outdated or incorrect icon references. The change is a minor improvement to the reporting module's configuration.
Original PR description
Remove the hardcoded icon path from the manifest. Task-6007589 CE PR: https://github.com/odoo/odoo/pull/254826