Wednesday, May 6, 2026
23 changes · saas-19.2
New functionality added to Odoo
This update prepares Odoo for a new Belgian VAT regulation, effective May 1st. It introduces a new 'Tax Provision Account' (411800) to align with the required reporting format for periodic VAT returns. This ensures accurate and compliant financial reporting for Belgian businesses using Odoo.
Original PR description
Starting May 1st, in Belgium the VAT provision account will replace the current account for periodic returns - Adding the new bank account - Adding a new account 'Tax Provision Account' 411800 Community PR: odoo/odoo#255272 Task [link](https://www.odoo.com/odoo/project.task/6044017) task-6044017 Forward-Port-Of: odoo/enterprise#116182 Forward-Port-Of: odoo/enterprise#111599
Enhancements to existing features
This update splits a key accounting account to better align with French tax regulations (ANC PCG 2026). Specifically, it separates social security charges from salaries within the Profit and Loss report, ensuring accurate financial reporting. The original account remains but is marked as deprecated.
Original PR description
Splitting account 649 into two new accounts (6491 and 6492) is necessary to handle the Profit and Loss report properly. This ensures we can accurately separate social security charges from salaries in the report. Reference: ANC PCG 2026, page 445, note (h) https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf task-6053784 Forward-Port-Of: odoo/odoo#260262 Forward-Port-Of: odoo/odoo#255038
Resolved issues and error corrections
This update resolves a critical error in the l10n_ar_edi module related to a missing dependency on the currency_rate_live module. The fix ensures the module functions correctly after an upgrade, preventing a system error. This ensures proper functionality for Arabic-based financial reporting.
Original PR description
Backport of https://github.com/odoo/enterprise/commit/ddec80d136063a24e4ddd4062d4d3591c861455d The module [adds](https://github.com/odoo/enterprise/blob/saas-19.2/l10n_ar_edi/models/res_company.py#L66-L69) selection values to field `res_company.currency_provider`, a field [defined](https://github.com/odoo/enterprise/blob/a0038c1aeaf9c0304afdfc220bcb7c0a309fac34/currency_rate_live/models/res_config_settings.py#L194-L200) in module `currency_rate_live`, but althouth it is auto-install, it's not a direct dependency, which can trigger errors. To reproduce: - Install `l10n_ar_edi` in 19 - Uninstall `currency_rate_live` - Upgrade to a saas~19.2 It will break with ``` AssertionError: Field res.company.currency_provider without selection ``` I had made the fix in master to avoid changing dependencies in stable, but the dependency is implicitly already there.
This update expands the width of the Discuss sidebar to better utilize screen space, particularly for viewing chat descriptions. The sidebar now dynamically adjusts based on screen size, allowing users to see more of the conversation content. This improves usability and the overall chat experience.
Original PR description
Prior to this commit, the left sidebar in Discuss had a max width of 300px. This commit allows larger widths based on the screen width. This is dependent on screen width, similar to…
Prior to this commit, the left sidebar in Discuss had a max width of 300px. This commit allows larger widths based on the screen width. This is dependent on screen width, similar to o-mail-ActionPanel.o_resizable_panel. It also removes the styling setting the max width to 300px. This helps make discuss more configurable, and makes it possible to see more of the description in live chat conversations. The sizes are set to match the max size of the right panel, so that they don't overlap, and there's suitable space in the center for the chat itself. Related to 221559 task-6180965 (Screenshots below show the worst case-scenario, where both the left and right panels are expanded to their max size) Before (Screen width > 1200px): <img width="1291" height="965" alt="image" src="https://github.com/user-attachments/assets/952d6c4b-60fd-47b9-aff7-8e034a2ee752" /> After: Screen width > 750px: <img width="1291" height="964" alt="image" src="https://github.com/user-attachments/assets/1120da2d-a434-4b3b-b387-f1d29bf0cb91" /> Screen width > 1200px: <img width="1291" height="965" alt="image" src="https://github.com/user-attachments/assets/47c6c981-0c62-43b6-8634-c6d644c342bb" /> Screen width > 1600px: <img width="1291" height="964" alt="image" src="https://github.com/user-attachments/assets/2945c964-5847-456b-b982-09086f335860" /> Screen width > 2300px: <img width="1291" height="965" alt="image" src="https://github.com/user-attachments/assets/c8cbc63f-025b-463d-9a3a-c84fce87d223" />
This update resolves an issue where error messages from the Aspone API were not being displayed correctly. The change ensures that error messages are now presented to the user, improving the reliability and usability of the French reporting module. This prevents potential data discrepancies and provides clearer feedback to users.
Original PR description
Since the v2 rest api of aspone was implemented, error messages were no more well handled and a traceback was raised while getting one. This commit displays the write errr to the user task-5955980
This update fixes an issue where stock synchronization with Amazon was failing due to incorrect fulfillment channel data. The team switched to a new API field that accurately reflects available quantities across fulfillment channels, defaulting to FBM when necessary to ensure continued synchronization. A related update also improves how user-specific configurations are handled.
Original PR description
During the upgrade from XML-based feeds to the new JSON Listings API for stock management, we chose to use Amazon's API to fetch a listing's fulfillment channel information. However, Amazon does not…
During the upgrade from XML-based feeds to the new JSON Listings API for stock management, we chose to use Amazon's API to fetch a listing's fulfillment channel information. However, Amazon does not provide a clear answer for a given listing. After some research, we assumed an offer was FBM when the listing contained a `merchant_shipping_group`, because this setting is specific to FBM listings. See also e6d620e4b200cadabb00ce37ab03289cfeb4ae58. This assumption was flawed: Amazon can keep the shipping group even after a listing switches to FBA, which can block stock synchronization. This commit uses the `fulfillmentAvailability` field from the Listings API instead. This field stores the available quantity for each fulfillment channel in which the listing is sold. When multiple fulfillment channels are present, the offer defaults to FBM so stock synchronization can continue. The `sale_amazon_channel_management` module can then be installed to manually select and disambiguate the channel. This commit also upgrades the patching method used to update the FBM stock to ensure user specific configuration aren't overriden during the synchronization. opw-6064896 opw-5152359 Forward-Port-Of: odoo/enterprise#115899 Forward-Port-Of: odoo/enterprise#114473
This update clarifies French accounting reports by splitting a key account (649) into two new accounts (6491 and 6492). This change accurately separates social security charges from salaries, aligning with French accounting standards. The original account remains for legacy systems but is marked as deprecated.
Original PR description
Splitting account 649 into two new accounts (6491 and 6492) is necessary to handle the Profit and Loss report properly. This ensures we can accurately separate social security charges from salaries in the report. Reference: ANC PCG 2026, page 445, note (h) https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf task-6053784 Forward-Port-Of: odoo/enterprise#114412 Forward-Port-Of: odoo/enterprise#111420
This update resolves a rounding error issue that occurred when importing purchase orders processed through OCR. The fix restores the original rounding precision, aligning with the intended functionality for EDI imports rather than the OCR process. This ensures accurate financial data import.
Original PR description
Since commit odoo/odoo@86463ce, there could be rounding issues when importing a purchase order matched through the OCR. A first attempt at fixing this was done in commit odoo/odoo@5dbb814, but it was eventually reverted as deemed too risky for a stable branch. More information about how the rounding error occurred is available in that commit description. This second fix should be much safer, we simply don't disable the rounding precision when the OCR is used, as this was intended for EDI in mind in the first place, not the OCR. opw-[6113387](https://www.odoo.com/odoo/my-support-tasks/6113387) Forward-Port-Of: odoo/enterprise#116141 Forward-Port-Of: odoo/enterprise#116021
This update resolves an issue where enabling 'Secure Posted Entries with Hash' on LATAM purchase journals caused posting errors due to vendor-assigned document number discrepancies. The fix hides this option for LATAM purchase journals, ensuring data integrity and preventing misleading security indicators. This change only affects LATAM localization modules.
Original PR description
Steps to reproduce 1. Install l10n_ar (or any LATAM localization). 2. Go to Accounting > Configuration > Journals and open a Purchase journal that has "Use Documents?" enabled. 3. Enable "Secure…
Steps to reproduce 1. Install l10n_ar (or any LATAM localization). 2. Go to Accounting > Configuration > Journals and open a Purchase journal that has "Use Documents?" enabled. 3. Enable "Secure Posted Entries with Hash". 4. Create and post a vendor bill with a high document number (e.g. 00001-00009999). 5. Create another vendor bill with a lower document number (e.g. 00001-00000100) and try to post it. Issue Posting the second vendor bill fails with: "This move could not be locked either because some move with the same sequence prefix has a higher number. You may need to resequence it." The hashing logic in account_journal.py enforces a strict continuous sequential chain per journal: https://github.com/odoo/odoo/blob/89993885823f7309b921145eacc7bbe2c3c1e427/addons/account/models/account_journal.py#L671-L678 In LATAM countries, vendor bill document numbers are assigned by the vendor, not by Odoo. A bill with a lower number can legitimately be entered after one with a higher number, which breaks the sequential assumption the hash chain relies on. Allowing it would produce a hash that no longer represents a proper chain, giving users a false sense of security. Sales journals are unaffected because Odoo controls their sequence. Solution Hide the "Secure Posted Entries with Hash" field on purchase journals that have "Use Documents?" enabled, preventing users from enabling an option that cannot work correctly for vendor-assigned document numbers. Sales journals keep the option available since Odoo controls their sequence. opw-6076673 Forward-Port-Of: odoo/odoo#262614 Forward-Port-Of: odoo/odoo#259206
This update resolves an issue where attaching images to invoices could cause system crashes. The fix prevents the system from incorrectly syncing orphaned attachment files, ensuring invoices and PDF generation work reliably. This improves overall invoice processing stability.
Original PR description
Steps to reproduce: - Install documents_account and account_accountant. - Create and post a customer invoice. - Add an image attachment via a log note. - Click Send & Print. -> KeyError:…
Steps to reproduce: - Install documents_account and account_accountant. - Create and post a customer invoice. - Add an image attachment via a log note. - Click Send & Print. -> KeyError: `proforma_pdf_attachment` Cause: When attaching an image via a log note, the file becomes the main attachment but is intentionally unlinked (res_model=False) by the system to avoid UI clutter. Downstream modules unknowingly sync this orphaned file. Later, when "Send & Print" generates the real PDF, the system attempts to update the orphaned downstream record, causing model linkage conflicts and eventually a crash. Solution: Add `no_document=True` to the context during `_message_post_after_hook` for invoices. Previously, for incoming emails or log notes, the mail framework would trigger document creation immediately before the core accounting module could evaluate and orphan invalid files (like images). This change suppresses that premature sync, allowing downstream modules to explicitly handle the sync after the attachment's final state is resolved. opw-5930888 Forward-Port-Of: odoo/odoo#262637 Forward-Port-Of: odoo/odoo#258307
This update resolves a bug where sending invoices with attached images caused a system crash. The fix prevents the incorrect syncing of orphaned image attachments, ensuring stable invoice processing and preventing data inconsistencies. This improves the reliability of the documents account feature.
Original PR description
Steps to reproduce: - Set a journal with documents folder sync. - Create and post a customer invoice. - Add an image attachment via a log note. - Click Send & Print. -> KeyError:…
Steps to reproduce: - Set a journal with documents folder sync. - Create and post a customer invoice. - Add an image attachment via a log note. - Click Send & Print. -> KeyError: `proforma_pdf_attachment` Cause: Adding an image via log note sets it as the main attachment, but it is intentionally orphaned (res_model=False) to prevent UI clutter. `documents_account` incorrectly syncs this unlinked file, creating a workspace document with a missing model. During "Send & Print", the official invoice PDF replaces the image as the main attachment. The document versioning logic intercepts this swap and attempts to re-parent the new PDF to match the orphaned document. This destroys the PDF's linkage to the invoice, causing a crash when the system later attempts to fetch the PDF. Solution: Since the base module now suppresses premature document creation during the message post, we explicitly handle the sync ourselves. We override `_fix_attachments_on_record_from_files_data` to iterate over the validated attachments and trigger document creation only for files that retained their `res_model`. We also add a check inside `_update_or_create_document` to strictly block orphaned attachments. opw-5930888 Forward-Port-Of: odoo/enterprise#116124 Forward-Port-Of: odoo/enterprise#115065
This update fixes a problem where tax amounts weren't accurately adjusted when users grouped lines within a financial transaction. The change ensures that tax calculations are correct after grouping, improving financial reporting accuracy. Additionally, the test suite has been updated to reflect Belgian tax regulations and a related context key has been removed to align with a recent Odoo update.
Original PR description
[FIX] account_edi_ubl_cii: correct tax amount when grouping lines When the user group lines of a move, the tax amount is now corrected if there's a difference in the tax amount before and after grouping This commit also removes the `ungroup_lines` context key, as the flow was changed in odoo/odoo#252458 Reword the `test_import_and_group_lines_by_tax` test: use belgian company and belgian taxes task-5993555 Forward-Port-Of: odoo/odoo#259256 Forward-Port-Of: odoo/odoo#252719
This update resolves an issue where attachments weren't always uploading correctly when navigating between records in the chatter. The fix ensures attachments are properly associated with the intended record, preventing data inconsistencies and improving the user experience. This improves reliability of attachments in conversations.
Original PR description
Currently, when uploading a bunch of attachments or a big one to the chatter, if you click on the pager (e.g. next) before the upload is complete, the attachments that have not yet been uploaded are uploaded to the next record. Due to the persistence of the Chatter component during record navigation and the fact that the `FileUploader` logic is tied to `state.thread`, an async callback that finishes after a record switch will attempt to update the currently active thread rather than the one that initiated the upload. With this change we tie uploader lifecycle to a specific record and ensure the completion callback only affects that record. task-5119290 Forward-Port-Of: odoo/odoo#262714 Forward-Port-Of: odoo/odoo#261552
This update optimizes how Odoo searches for products, particularly when using complex search criteria. By switching from 'OR' to 'UNION ALL' in database queries, the system now efficiently utilizes indexes, resulting in significantly faster search times. This improves the overall responsiveness of product searches, especially with large product catalogs.
Original PR description
When doing a name_search with positive operators (=, ilike, in) the resulting query combines domains with the OR operator. This works fine when the leaves are all on the same table (product_product…
When doing a name_search with positive operators (=, ilike, in) the resulting query combines domains with the OR operator. This works fine when the leaves are all on the same table (product_product or product_template) as postgresql uses a Bitmap OR when everything is properly indexed.
When leaves are on multiple tables however postgresql has to plan a Seq Scan. For instance, let's take a simple domain on product.product of the form `['|', ('name', 'ilike', 'test'), ('default_code', 'ilike', 'test')]`. Because `name` is an inherited field via `product_tmpl_id`, the resulting query has the where clause `join_table.name ilike %s OR product_product.default_code ilike %s` with `join_table` the table you get after joining product_product and product_template. Since it's an `OR` condition, postgresql does not know in advance whether a given row will pass this condition. There's no way to filter the tables before the join. The condition moves therefore to a `Join Filter` node and postgresql has to scan the whole join table to fetch the correct tuples.
Same thing when there's a subquery. In case of a where clause `cond OR cond OR subquery`, postgresql does not know in advance whether or not a given row is gonna pass the subquery condition. So it has to scan the whole table.
In both cases this becomes a bottlneck when the number of products increaases. This commit introduces the use of `UNION ALL` instead of `OR`. There's one SubPlan for each individual table in the domain. The results are then appended to get the final products matching the conditions. Thanks to each table having its own SubPlan postgresql can now properly hit indexes for each table, greatly improving the performances.
#### speedup
In a database with 2.5M product_product, the name_search on product with a partner_id in the context and the ilike operator goes from 8s -> 5ms.
In another database with 500k product_template, the name_search on template with a partner_id in the context and the ilike operator goes from 1.8s -> 5ms.
opw-4921944
opw-5103287
opw-5049054
opw-5256691
opw-5221753
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#240860
Forward-Port-Of: odoo/odoo#229275This update fixes an issue where self-order combo prices were inaccurate when multiple quantities of the same combo were ordered. The fix accurately calculates prices for combos, ensuring consistent pricing across the mobile app and the linked restaurant's order view. This improves the accuracy of transactions and enhances the customer experience.
Original PR description
**Steps to reproduce:** - Order a combo in the self order Mobile with multiple products - Order the same combo more than once - Checkout and go to the linked restaurant - Go to the orders, the price…
**Steps to reproduce:** - Order a combo in the self order Mobile with multiple products - Order the same combo more than once - Checkout and go to the linked restaurant - Go to the orders, the price is not the same as in the self - If you check the unit prices in the backend, they are not consistent **Why the fix:** This is mostly a backport of bd117e8 with an addition because the extras still did not work as intended. In the backend, during the price recomputation, we did not account for the fact that we could have a parent line with multiple quantity during the split between the free and the extra lines. This means that we counted too many lines, and had to put some in the extra lines. We then override the price_unit with the total_price in this code https://github.com/odoo/odoo/blob/f73c32960721b046076b91e4bc017ddb924e0837/addons/pos_self_order/models/pos_order.py#L341-L342 But the total price has been computed to zero, so the previously computed price_unit is overridden and set to zero. We now divide the line's qty by the parent line's qty to get the qty per parent line, allowing us to have a qty of more than 1 for the parent line. The same is done for the computation of the remaining amount to pay, as **child.qty** is the number of time the item is selected in the combo * the number of combo ordered, meaning it was messing up the computation. There was an oversight in the original fix, which meant that the unit prices were not distributed as they should have been, even though the total was correct. When we only order one combo that costs 25 and has 2 items, both items will have a price_unit of 12.5, but if we have more than 1 qty of said combo, the price_unit will be all over the place and the second item will have to compensate for the first one thanks to https://github.com/odoo/odoo/blob/b108bb847b1c4d3a91f223d77a4888b8139b0a8d/addons/pos_self_order/models/pos_order.py#L322-L323 We now update the original total to take the fact that multiple combo can be ordered. opw-6076911 Forward-Port-Of: odoo/odoo#261810 Forward-Port-Of: odoo/odoo#257922
This update resolves an issue where quantities were incorrectly doubled when settling sales orders in POS using the 'Pick then Deliver' warehouse method. The fix ensures accurate lot quantity tracking by filtering move lines correctly, preventing double-counting of inventory. This improves the reliability of sales order fulfillment.
Original PR description
When settling a sale order in POS after validating the delivery, quantities and lots were wrong for lot-tracked products with warehouse "Pick then Deliver (2 steps)": quantity doubled when loading…
When settling a sale order in POS after validating the delivery, quantities and lots were wrong for lot-tracked products with warehouse "Pick then Deliver (2 steps)": quantity doubled when loading SN/Lots. Steps to reproduce: ------------------- * Create a product with Tracking by lots * In Inventory, set warehouse Outgoing Shipments to "Pick then Deliver (2 steps)" * Create a quotation with the product and confirm it * Validate the delivery * In POS, settle the sale order from Quotation/Order * When asked "Do you want to load the SN/Lots linked to the Sales Order?", click Yes > Observation: Quantity doubled. Why the fix: ------------ read_converted() used move_line_ids from all moves linked to the sale line. With 2-step, both pick and delivery moves have move_line_ids with the same lots, so quantities were counted twice. We now use move lines from exactly one picking and filter by sale_line_id. opw-6001585 Forward-Port-Of: odoo/odoo#262237 Forward-Port-Of: odoo/odoo#253539
This update resolves an issue where referenced refunds in Viva.com payments were incorrectly reversing the original payment due to a missing session ID. A previous update inadvertently removed this key information. This fix restores the session ID, ensuring refunds process correctly and accurately reversing the intended payment.
Original PR description
Referenced refunds in Viva.com require the session ID of the original payment to be sent, resulting in that payment being reversed. Unfortunately this functionality was broken when a forward-port PR (odoo/odoo#236004) mistakenly removed the `parentSessionId` field from the request. This commit restores the `parentSessionId` field, fixing the issue. It also adds a tour to test the full payment and referenced refund flow. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262911 Forward-Port-Of: odoo/odoo#262475
This update resolves an issue where invoices sent via Peppol were failing for customers in Iceland and Albania. The change ensures that VAT numbers for these countries retain their country code prefix, allowing successful invoice transmission. This improves compliance and usability for our international customers.
Original PR description
Current behavior before PR: To send an invoice via Peppol, the customer's VAT must have the country code as a prefix. But while creating customers from countries like Iceland and Albania, It removes the country code prefix. Which later raises an error while sending the invoice that "The VAT of the customer should be prefixed with its country code." Desired behavior after PR is merged: VAT numbers for customers in Iceland and Albania now keep their country code prefix, letting users to send invoices via Peppol. task-6050791 Forward-Port-Of: odoo/odoo#259105
This update fixes an error where the cost of kits was being incorrectly calculated in sales orders. Previously, when ordering a kit with multiple components, the system was multiplying the cost by the batch size, leading to inflated prices. This change ensures accurate kit costing by dividing the total component cost by the kit's quantity.
Original PR description
### Issue: When a kit BoM has `product_qty` > 1 (e.g. 12 Kit X = 12 Comp A + 12 Comp B), the SO line cost after confirmation is multiplied by the batch size. Selling 1 Kit X shows a cost of 360…
### Issue: When a kit BoM has `product_qty` > 1 (e.g. 12 Kit X = 12 Comp A + 12 Comp B), the SO line cost after confirmation is multiplied by the batch size. Selling 1 Kit X shows a cost of 360 instead of 30. ### Cause: The method `_compute_average_price` uses `bom.explode(self, 1)`, which returns raw BoM line quantities for one full batch. It accumulates the total batch cost but returns it without dividing by `bom.product_qty`. ### Steps to Reproduce: - Costing Method = AVCO, Inventory Valuation = Automated - Comp A (cost 10), Comp B (cost 20), Kit X (cost 0) - Kit BoM: 12 Kit X = 12 x Comp A + 12 x Comp B - Create and confirm a SO for 1 x Kit X - Expected SO line cost: 30 - Actual SO line cost: 360 Solution: This fix mirrors the normalization already done in `_compute_bom_price`, which correctly divides by `bom.product_qty` and converts UoMs. opw-5969310 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259005 Forward-Port-Of: odoo/odoo#253406
This update corrects an issue where multiple users were incorrectly added to Whatsapp discussion channels after a message was sent. The fix ensures that only the user who initiated the conversation is added, preventing notification overload and improving channel management. This resolves a bug related to improperly formatted phone numbers.
Original PR description
…ser sends a template message when creating discussion channels after the partner sends a message back. Issue: Currently, When there are multiple users listed under whatsapp.account.notify_user_ids no matter what, when creating a new discuss channel it will add all users in that list. Even when a single user inside that list initiated the conversation with a template. To replicate in runbot add multiple users to whatsapp.account.notify_user_ids, make a partner with a number, send a template, then have the partner send a message back. All users will be notified and added to the channel. There was an unformatted number being passed to a function that required the formatted number. This caused _find_active_channel to find 0 active channels. Fix: Format the number received from the message values inside WhatsAppAccount._process_messages opw-5349138 Forward-Port-Of: odoo/enterprise#114912 Forward-Port-Of: odoo/enterprise#102452
This update fixes an error in the manufacturing report that incorrectly converted quantities between different units of measure (UoM). The report now accurately calculates the total cost and quantity produced, ensuring consistent results regardless of the input UoM, which is crucial for accurate cost tracking and reporting.
Original PR description
Steps to reproduce:
- Create a product W1 with UoM = Kg with the following BoM:
- Component C1: 1 unit, cost = $1
- Create and confirm MO1:
- Produce 1 Kg of W1 → total cost = $1
- Create and confirm MO2:
- Produce 1 Ton of W1 → total cost = $1000
- Open the Manufacturing Report and group results
Problem:
- qty_produced ≈ 1.001 instead of 1001
- unit_cost average ≈ 1000 instead of 1
Expected behavior:
- qty_produced = 1001
- unit_cost average = 1 (consistent across MOs)
The manufacturing report (`mrp.report`) incorrectly converts quantities from move UoM to product UoM, leading to wrong `qty_produced` and `qty_demanded` values when different units of measure are used
The current implementation uses:
sm.quantity / uom.factor * uom_prod.factor
This inverts the conversion ratio. As a result:
- 1 Ton is converted to 0.001 Kg instead of 1000 Kg
opw-6097098
Forward-Port-Of: odoo/enterprise#114233
Forward-Port-Of: odoo/enterprise#113979This update ensures Odoo's Dutch reporting modules (SBR) correctly submit data to the new Digipoort infrastructure, which is migrating to digipoort.logius.nl by May 1, 2026. This change is critical to avoid submission failures and maintain compliance with Dutch reporting requirements.
Original PR description
*: l10n_nl_reports_sbr{,_icp,_status_info}
---
Description of the issue this commit addresses:
The Dutch Digipoort endpoint infrastructure is being migrated from procesinfrastructuur.nl to digipoort.logius.nl effective May 1, 2026. Odoo's SBR modules need to use the new endpoints or submissions will fail.
---
Desired behavior after this commit is merged:
This commit updates all Digipoort endpoint URLs (delivery and status services) from the old domain to the new logius.nl domain, and clarifies that valid PKIoverheid certificates are required for both environments. Reports now submit to the new Digipoort infrastructure correctly.
---
task-6171403
Forward-Port-Of: odoo/enterprise#115668This update resolves an issue where custom website snippets weren't correctly reflecting translated content when using the delayed translation feature. The change ensures that translated values are properly applied to snippets immediately after saving, improving the user experience for multilingual websites. This prevents a delay in seeing translated content when using custom snippets.
Original PR description
The feature "delayed translation" and "copy translation in custom snippet" have been worked on in parallel, but had buggy interactions. This commit changes the way translations terms are copied in custom snippets to read and write the translated values as expected with delayed translations. Steps to reproduce: - With a page with some content on a website in 2 languages - Open the website builder in the main language - Drop a custom snippet - Save - Bug: The change is immediate on the version in the second language (instead of being only available after user translated it) Delayed translations: 2d08f97c0778469b409fca23f2be5f5a98ce3df8 Copy translation in custom snippet: d3426b7714012e833caae10281cfb8433223299a Re-enabling delayed translations: 03a85b13b2c46ef7174123d902e95d5103031c6c task-5474184 Forward-Port-Of: odoo/odoo#262814 Forward-Port-Of: odoo/odoo#245850