Daily updates from Odoo
Monday, June 8, 2026
10 changes · saas-18.4
Enhancements to existing features
This update changes the format of the DEP7 export from PDF to JSON, aligning with regulatory requirements for German tax reporting (BMF/RKSV). The new JSON format is machine-readable and optimized for compatibility with official tax tools, ensuring accurate and compliant data submissions.
Original PR description
In this commit: ------------------- - Updated the DEP7 export to generate a zip with JSON files instead of PDF, in compliance with BMF (RKSV) requirements. - The export now produces a valid JSON document containing the machine-readable data expected by the official BMF tools. - The filename format has also been adjusted to follow common conventions (e.g. `Name_Duration_DEP_KassenID.json`). Task: 6071034 Forward-Port-Of: odoo/enterprise#112276
Resolved issues and error corrections
This update fixes an issue where online orders with tax included were incorrectly calculating prices. The fix ensures that the unit price accurately reflects the total amount, including the tax, for transactions using the UrbanPiper integration. This improves order accuracy and provides customers with the correct pricing.
Original PR description
Steps to reproduce: --- - Configure Point of Sale with UrbanPiper credentials. - Sync a product priced at 100 with a 5% GST (tax type = Tax Included). - Place a test order. Issue: --- - Wrong calculation in order line: - unit_price: 95.24 - Tax Excl. price: 90.70 - Tax Incl. price: 95.24 - Expected: - unit_price: 100 - Tax Excl. price: 95.24 - Tax Incl. price: 100 Cause: --- - While computing the unit_price with Tax Included, the tax amount was not added back. Fix: --- - Ensure unit_price includes the tax amount when tax type is Tax Included. task-5031196 Forward-Port-Of: odoo/enterprise#119314 Forward-Port-Of: odoo/enterprise#92854
This update resolves an issue that prevented proper testing of the l10n_de_pos_cert module when duplicating databases. Specifically, the commit removes client and tss identifiers during duplication, allowing for seamless testing in neutralized database environments. This ensures consistent and reliable testing of the module's functionality.
Original PR description
In this commit: -------------------- - On a duplicate database `client_id` and `tss_id` are removed so it works as test in neutralized dbs without throwing errors. task- 5457231 Forward-Port-Of: odoo/enterprise#104119
This update corrects a setting that was automatically generating CFDI invoices for all orders placed through the e-commerce website. Previously, invoices weren't automatically generated for e-commerce orders, which is now the intended behavior. This change ensures that invoices are only created when a customer provides their information.
Original PR description
There is no reason why we would always cfdi to public when creating orders from the e-commerce. When the customer give all their info, the invoice should not be cfdi to public. opw-6180766 Forward-Port-Of: odoo/enterprise#119442 Forward-Port-Of: odoo/enterprise#116061
This update corrects an issue in the l10n_lu_reports module that caused incorrect balance sheet reports due to incorrect XML data. Specifically, fields 2955 and 2956 must always be set to zero, as dictated by Luxembourg tax regulations. This change ensures reports are accepted by the eCDF system, preventing rejection and maintaining accurate financial reporting.
Original PR description
Before this commit, fields 2955 and 2956 in the balance sheet could be incorrect. 2955 must always be blank (not exist) and 2956 must always be 0 per: https://ecdf-developer.b2g.etat.lu/ecdf/forms/popup/CA_PLANCOMPTA/2020/en/2/rules page 116 + 117 If they are not these values specifically, submitting the XML to eCDF results in the report being rejected. Steps to reproduce: - Install l10n_lu_reports - Create a journal entry for a closed year (2025) that debits account 142000 and credits another account that starts with a 1 - Go to the balance sheet for 2025 - Download the XML for the report - 2955 is present and 2956 is either not present or is not 0 (behavior varies between versions) Ticket [link](https://www.odoo.com/odoo/project.task/6246564) opw-6246564 Forward-Port-Of: odoo/enterprise#119193
This update simplifies how spreadsheet documents are managed within Odoo, reducing unnecessary data and improving performance. By disabling versioning for spreadsheets and frozen spreadsheets, we prevent duplicate history and document creation. This change ensures a smoother and more efficient experience for users working with these file types.
Original PR description
Spreadsheet documents already manage their own history through spreadsheet revisions. Running generic Documents versioning on top of that creates unnecessary history attachments and additional documents when spreadsheet data is written or when a spreadsheet is copied. Keep the default Documents versioning behavior for regular documents, but allow spreadsheet and frozen spreadsheet documents to opt out of Documents versioning. Also hide the Manage Versions action for those records. This PR combines: * a backport of enterprise commit 0e319d063ae868d6e48e9fd6741caf5156308eae disabling Documents versioning for spreadsheets; * a follow-up change hiding the Manage Versions action for spreadsheet records. Task: 6236496 Forward-Port-Of: odoo/enterprise#118484
This update corrects a previous issue in the Swiss payroll module (l10n_ch_hr_payroll) that incorrectly calculated activity rates based on individual employees. Now, the calculation is based on the Odoo version, ensuring consistent and accurate reporting for Swiss payroll accounting. This change improves the reliability of payroll data.
Original PR description
…ployee
This update fixes a bug that allowed internal transfer validation to proceed without scanning the destination location for each product. The fix ensures that users receive a notification and are prompted to scan the location before validation, improving data accuracy and preventing incorrect transfers. This resolves a critical issue related to barcode scanning workflows.
Original PR description
Currently, when a user deletes a line and validates internal movement in the barcode system, the system allows validation even though specifying the destination location after each scan is required.…
Currently, when a user deletes a line and validates internal movement in the barcode system, the system allows validation even though specifying the destination location after each scan is required. ## Steps to produce: - Install the Inventory module - Go to Settings and enable Storage Locations. - Inventory > Configuration > Operation Types > Internal Transfers > Barcode App - Configure the Destination Location to require scanning after each product. - Create an Internal Transfer for Pedal Bin, demand 1. - Mark the transfer as To Do and open it in the Barcode app. - Add quantity using +1, then scan the barcode for the Pedal Bin(Barcode: 6016478556493). - Delete the newly added line and attempt to Validate. ## Observed Behavior: The system should prevent transfer validation when the destination location has not been scanned and display a notification to the user, similar to the behavior before user deleted the newly added line. ## Root cause: This issue occurs because when the delete button is pressed, the deleteLine function [1] removes the line, but the deleted line becomes the selected line due to [2] being triggered before the UI updates. As a result, the selected line is now undefined. Since the selected line is undefined, it fails to meet the condition at [3] during validation. This prevents notifications from being triggered and allows the transfer to be validated before the destination location has been scanned. [1]: https://github.com/odoo/enterprise/blob/3476d15bf8e75eb6530658dd623861b60963ab40/stock_barcode/static/src/models/barcode_model.js#L826-L836 [2] : https://github.com/odoo/enterprise/blob/327d4478128f33fb2e0c477533bd4983178abf17/stock_barcode/static/src/components/line.js#L129-L133 [3]: https://github.com/odoo/enterprise/blob/6ff158ca3a6d2d2b3d285a7f8317622844811688/stock_barcode/static/src/models/barcode_picking_model.js#L945-L948 ## Solution: We can prevent users from validating if any line has an unscanned destination location when destination-location scanning is mandatory after scanning each product. To enforce this behavior, we can track whether a line has been modified and whether a destination location has been scanned and applied to that line. This allows us to identify which lines still require destination location scanning before validation can proceed. However, line state information is currently discarded and recreated on every save. As a result, information about lines that were updated and already had their destination location scanned is lost. This may incorrectly require users to rescan the destination location, even though it was previously scanned. To address this, we preserve the destination-scanned and modified state by carrying it forward from existing lines to their corresponding newly created versions using a loop. This ensures that destination location scan status is retained and users are not asked to rescan unnecessarily. opw-6069614 Forward-Port-Of: odoo/enterprise#119363 Forward-Port-Of: odoo/enterprise#113618
This update fixes a bug where credit limit warnings were incorrectly triggered by outstanding bank payments. The system now accurately calculates outstanding balances by including bank payments, ensuring credit limits are displayed correctly and preventing unnecessary warnings. This improves the accuracy of financial reporting and reduces potential customer alerts.
Original PR description
Before this fix: The credit limit warning calculation only considered credit notes but ignored outstanding bank payments when computing the partner's effective outstanding balance. For example, if a…
Before this fix: The credit limit warning calculation only considered credit notes but ignored outstanding bank payments when computing the partner's effective outstanding balance. For example, if a customer had a credit limit of 1,000 and an invoice of 2,000 was created, then a bank payment of 1,500 was received, the warning would still incorrectly appear showing the customer exceeded their limit (2,000 > 1,000), even though the actual outstanding amount was only 500. After this fix: The credit limit warning now properly includes outstanding bank payments in the calculation. Two cases are handled: - Bank payments received but not yet matched to any invoice, these are identified by their open suspense account entry and deducted from the partner's outstanding exposure. - Bank payments already matched to the invoice, the reconciled amount is read from the invoice's receivable line and deducted accordingly. So with this fix, after a 1,500 bank payment, the system correctly recognises the outstanding amount as 500 and does not show a warning since it is within the 1,000 credit limit. task-5427613 Forward-Port-Of: odoo/enterprise#118957
This update addresses a change in how Chrome 148 displays Sundays when using the th_TH locale. The fix adjusts the test to accommodate the browser's Intl API output, ensuring consistent and accurate date formatting for Thai users. This maintains correct date presentation without requiring any new functionality.
Original PR description
Chrome 148 changed the display format for Sundays in the th_TH locale. This commit modifies the test to expect either the full or abbreviated day name, depending on what the browser Intl API actually returns.