Daily updates from Odoo
Thursday, July 9, 2026
5 changes
1 change
Resolved issues and error corrections
This change ensures that databases prepared for testing or staging keep using Peppol demo mode even if the Peppol feature is installed later. It avoids accidentally sending documents to the live Peppol network from a neutralized database.
Original PR description
When Peppol is installed on a database that was already neutralized (ex: a staging database where the feature is enabled after the neutralization happened), the account_peppol.edi.mode parameter is not set: data/neutralize.sql only runs at neutralization time, not when the module is installed afterwards. The demo/ data that also sets this parameter is not loaded on databases without demo data (real production/staging databases). As a result, _get_peppol_edi_mode() falls back to 'prod' and the neutralized database registers and sends documents against the live Peppol network. Steps to reproduce: - Neutralize a database on which Peppol is not installed yet - Install the account_peppol module - Open the Peppol settings / registration wizard: the mode is Production instead of Demo Force the demo mode in the pre_init_hook when the database is neutralized, mirroring data/neutralize.sql opw-6307710 Forward-Port-Of: odoo/odoo#274700 Forward-Port-Of: odoo/odoo#273019
1 change
Resolved issues and error corrections
This change protects paid point-of-sale orders from being lost if the network drops while the order is being synchronized. It also prevents accidental tab closing or refreshing in that brief window, reducing the risk of losing completed sales.
Original PR description
When an order is validated, the state is set to "paid" and a sync to the server is attempted. If the network dropped during that sync, the order could be permanently lost: the 300ms IndexedDB debounce had not yet fired, so the paid order lived only in memory, and no guard prevented the cashier from accidentally closing or refreshing the tab in that window. opw-6237823 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267799
1 change
Resolved issues and error corrections
This change ensures that databases which were neutralized before Peppol was installed still stay in demo mode. It prevents test or staging environments from accidentally connecting to the live Peppol network and sending real documents.
Original PR description
When Peppol is installed on a database that was already neutralized (ex: a staging database where the feature is enabled after the neutralization happened), the account_peppol.edi.mode parameter is not set: data/neutralize.sql only runs at neutralization time, not when the module is installed afterwards. The demo/ data that also sets this parameter is not loaded on databases without demo data (real production/staging databases). As a result, _get_peppol_edi_mode() falls back to 'prod' and the neutralized database registers and sends documents against the live Peppol network. Steps to reproduce: - Neutralize a database on which Peppol is not installed yet - Install the account_peppol module - Open the Peppol settings / registration wizard: the mode is Production instead of Demo Force the demo mode in the pre_init_hook when the database is neutralized, mirroring data/neutralize.sql opw-6307710 Forward-Port-Of: odoo/odoo#273458 Forward-Port-Of: odoo/odoo#273019
2 changes
New functionality added to Odoo
Adds the Vietnam-required General Ledger report format S03b-DN so companies can produce reports aligned with Vietnamese Accounting Standards. The report calculates and displays counterpart accounts, debit and credit balances, period totals, and flags entries that need better labeling for accurate reporting.
Original PR description
Vietnamese Accounting Standards (VAS) require a specific format for the General Ledger (S03b-DN), which strictly mandates the display of counterpart accounts for every transaction line, along with…
Vietnamese Accounting Standards (VAS) require a specific format for the General Ledger (S03b-DN), which strictly mandates the display of counterpart accounts for every transaction line, along with specific debit/credit balances and period totals. Because Odoo's default general ledger does not natively compute and display counterparts in the exact layout required by VAS, a custom report engine and handler were introduced. Technical decisions: * Implemented a custom SQL query to calculate counterpart accounts dynamically. Instead of forcing rigid data entry constraints on the user, it uses a matching heuristic based on balanced amounts and identical labels to pair counterpart lines (handling 1-to-1, 1-to-N, and proportional splits). * Tax journal lines are isolated, grouped by account, and split proportionally to ensure accurate counterpart reflection. * Added a post-processor and custom UI warnings to handle edge cases where lines cannot be matched cleanly (e.g., complex N-to-N entries without matching labels). These are isolated into an "Uncategorized" section to prompt the user to correct their entry labels. task-6092253
Features or functions removed from Odoo
This change reverses a previous option that allowed users to choose the Stripe operating mode for expense cards. It was removed because selecting the wrong mode could put live Stripe accounts and funds at serious risk, and the feature will be redesigned with safer safeguards.
Original PR description
This reverts commit 48bb5669e8d05c835e3a3db1a1d8889a2cc137f4. The reason for the reversal is the high potential of destroying your live account and locking you out of your account money by mistake. The initial task will be reworked to ensure this case may not happen