Daily updates from Odoo
Friday, May 15, 2026
15 changes · 18.0
Resolved issues and error corrections
This pull request addresses two issues in the web editor, preventing a frustrating infinite loop when undoing actions and correcting a bug where selected dropdown options remained visible. These fixes enhance the user experience and ensure the editor functions reliably.
Original PR description
> Commit 1: [FIX] web_editor: prevent infinite bounce loop when clicking undo Steps to reproduce: 1. Click an inner snippet without dragging it. 2. Observe that the "Drag building blocks here"…
> Commit 1: [FIX] web_editor: prevent infinite bounce loop when clicking undo Steps to reproduce: 1. Click an inner snippet without dragging it. 2. Observe that the "Drag building blocks here" section starts bouncing. 3. Drag any snippet and wait for the Undo option to appear. 4. Click Undo, then Redo. Issue: - This leads to an infinite bounce loop when using Undo/Redo. Expected behavior: - Infinite bouncing should not occur. This PR prevents unnecessary history steps by disabling history tracking during this phase using `observerUnactive` and `observerActive`. This ensures that the editor does not record redundant changes, preventing infinite bounce loops. > Commit 2: [FIX] web_editor: fix dropdown options value Steps to reproduce: 1. Go to the website and drag and drop the form snippet. 2. Change the action to 'Subscribe to Newsletter'. 3. Click on multi-checkbox field to view its options. - Even after selecting an option, it remains in the dropdown, allowing multiple selections of the same option. Expected behaviour: - Once an option is selected, it should be removed from the dropdown. Solution: This PR removes the count from the display name, ensuring correct form behavior. task-4583314 Forward-Port-Of: odoo/odoo#203454
This update resolves a validation error that occurred when creating intercompany invoices between companies using different regions (e.g., Belgium and Luxembourg). The fix ensures that taxes are correctly calculated and aligned with the appropriate fiscal positions, preventing incorrect validation messages. This improves the reliability of intercompany transactions.
Original PR description
**Steps to reproduce:** * Install the *Accounting* module. * Install localisation modules for two different regions: * *Belgium* (**l10n_be**) * *Luxembourg* (**l10n_lu**) * Configure two companies,…
**Steps to reproduce:** * Install the *Accounting* module. * Install localisation modules for two different regions: * *Belgium* (**l10n_be**) * *Luxembourg* (**l10n_lu**) * Configure two companies, each assigned to one of the above regions. * Create fiscal positions: * In the Belgium company, create a fiscal position for Luxembourg. * In the Luxembourg company, create a fiscal position for Belgium. * Go to *Accounting > Configuration > Settings*. Enable *Inter-Company Transactions*. Enable synchronization of *Vendor Bills and Invoices* for both companies. * Create an invoice in the Luxembourg company. Select a partner belonging to the Belgium company. Add a product with applicable taxes. **Observed behavior:** * A validation error is raised: 'This entry contains taxes that are not compatible with your fiscal position. Please check the country set in the fiscal position and in your tax configuration.' **Cause:** * During intercompany bill creation, a foreign fiscal position is applied before recomputing taxes. * If no mapped foreign taxes exist, the system keeps domestic purchase taxes. * This leads to a mismatch between taxes and fiscal position, triggering the validation error. **Fix:** * Add a safeguard in *_inter_company_create_invoices()*. * After *_inter_company_sync_invoice_line_taxes()* recomputes taxes, *_inter_company_has_incompatible_fiscal_position_taxes()* checks whether the fiscal position is incompatible. * If incompatible, the fiscal position is removed and taxes are recomputed without it. opw-6103671 Forward-Port-Of: odoo/enterprise#115085
This update fixes an issue where refused overtime was incorrectly included in work entry calculations. Previously, the system was adding validated overtime hours, leading to inaccurate work time records. Now, refused overtime is properly excluded, ensuring accurate attendance-based work entries are generated.
Original PR description
- While fixing the bug where refused overtime in `no_validation` mode was still retaining validated overtime hours, this exposed an issue in attendance-based work entry generation. Refused overtime was being excluded using `validated_overtime_hours`. - After the previous fix, `validated_overtime_hours` becomes `0` on refusal, causing the full attendance duration to be included in generated work entries. **Example**: ``` Attendance: 13:00–20:00 Overtime: 2h Overtime status: refused Validated overtime: 0h ``` **Before**: `Generated work entry = 7h` **Expected**: `Generated work entry = 5h` ### Fix - For refused overtime, subtract `overtime_hours` from the attendance interval instead of `validated_overtime_hours`, ensuring refused overtime remains excluded from attendance-based work entries. task-5949741
This update fixes an issue where credit notes were failing to send due to mismatched customer information. The system was incorrectly setting default customer data for credit notes instead of using the original invoice details. This ensures credit notes are correctly formatted for submission and avoids processing errors.
Original PR description
…t note and original invoice
**STEP TO REPRODUCE**
1. Create an invoice and send it to jofatora.
2. Create a credit note for the invoice, send it to jofatora.
3. Sending the credit note will fail with the following error: `Request failed: {"EINV_RESULTS":{"status":"ERROR","INFO":[],"WARNINGS":[],"ERRORS":[{"type":"ERROR","status":"ERROR","EINV_CODE":"invoice-persist","EINV_CATEGORY":"Invoice","EINV_MESSAGE":"invoice: Credit invoice buyer info does not match the original invoice"}]},"EINV_STATUS":"NOT_SUBMITTED","EINV_SINGED_INVOICE":null,"EINV_QR":null,"EINV_NUM":null,"EINV_INV_UUID":null}`
**CAUSE**
In `account_edi_xml_ubl_21_jo.py` if the document is a credit note (`is_refund`), we fill the customer party with some default value. However, the documentation states that the credit note customer party should have the exact same values as the original invoice.
opw-6183573
Forward-Port-Of: odoo/odoo#264103This update corrects a bug where old manual bank statement entries were incorrectly suggested as matches for new transactions. The change ensures that only relevant, current manual operations are considered during automated reconciliation, improving the accuracy of bank statement matching. This prevents potential errors in financial reporting.
Original PR description
Currently, after validating a transaction with a manual operation, the aml resulting from the manual operation can still be selected and matched with other transactions. Steps to reproduce: - Create…
Currently, after validating a transaction with a manual operation, the aml resulting from the manual operation can still be selected and matched with other transactions. Steps to reproduce: - Create a transaction for 500 dollars - Create a manual counterpart line for the bank statement line with label "test123" and validate - Create another transaction of -1000 dollars and label "test123" Issue: The manual counterpart line matched before is being suggested against the new transaction. The perfect match reconciliation model will reconcile the manual counterpart line with the new bank statement line. Analysis: During the retrieval of possible aml to match we only look at the aml reconciliation state. Manual counterpart lines created during the validation of a previous statement line are still selectable candidates, causing false positive matches in automated reconciliation models. Test in Enterprise: https://github.com/odoo/enterprise/pull/115847 opw-6045050 Forward-Port-Of: odoo/odoo#262295
This update corrects a bug where previously validated manual transactions could incorrectly be matched with new transactions. The change ensures that manual counterpart lines are no longer suggested for matching with subsequent transactions, improving the accuracy of reconciliation reports. This resolves a potential issue with financial reporting.
Original PR description
Currently, after validating a transaction with a manual operation, the aml resulting from the manual operation can still be selected and matched with other transactions. Steps to reproduce: - Create a transaction for 500 dollars - Create a manual counterpart line for the bank statement line with label "test123" and validate - Create another transaction of -1000 dollars and label "test123" Issue: The manual counterpart line matched before is being suggested against the new transaction. The perfect match reconciliation model will reconcile the manual counterpart line with the new bank statement line. Adding test for community branch opw-6045050 Forward-Port-Of: odoo/enterprise#115847
This update resolves an issue where a notification badge remained visible on the 'Send to Kitchen' button after a general note was removed from the Point of Sale (POS) system. The fix normalizes empty notes to an empty string, ensuring the badge disappears correctly when a note is deleted. This improves the user experience by removing unnecessary notifications.
Original PR description
Steps to reproduce:
-----------
- Open POS Restaurant
- Add a General Note
- Remove the General Note
- The message badge on “Send to Kitchen” remains visible
Issue:
-----------
Removing a General Note set `general_note` to `undefined`, which was
detected as a change and kept the badge visible.
Fix:
--------------
Normalize empty General Notes to an empty string ("") so removing a note
restores the correct initial state.
Task-6101501
Related PR: odoo/enterprise#113514This update resolves an issue where removing a general note from a restaurant orderline caused the preparation display to incorrectly mark the line as cancelled and create a new one. The fix ensures that note history is recorded regardless of whether the note is confirmed, allowing the system to update existing orderlines instead of creating duplicates.
Original PR description
Steps to reproduce: --------- 1. Create an order with an orderline general note. 2. Send the order to the preparation display. 3. Remove the note from orderline. 4. Resend the order Issue: --------------- Removing the note changes the preparation line key, so the preparation display marks the old line as cancelled and creates a new one instead of updating the existing line. Cause: ----------- The note history was only recorded when the note was confirmed. If the user simply removes/clears the note, no note history entry is generated, so the backend cannot match the previous key with the updated key. Fix: ---------- Record note history even when the note is discarded (not only when confirmed. This allows the backend to match the old and new keys and update the line instead of cancelling it. Task-6101501 Related PR - https://github.com/odoo/odoo/pull/258632
This update resolves an issue where cancelling a move destination on a manufacturing order didn't correctly update the order's demand. Additionally, it corrects an incorrect MO update when cancelling a sales order delivery and adjusting the demand. This ensures accurate inventory tracking and demand management within the MTO process.
Original PR description
Backport of 7c68c3dbb29eaad4e09d59ef7c86bd525969caec Including its fix: e490c0c66561715853a3f80658f47c940bc453dc ### Issues: Cancelling the move dest of a manufacturing order does not cancel the MO…
Backport of 7c68c3dbb29eaad4e09d59ef7c86bd525969caec Including its fix: e490c0c66561715853a3f80658f47c940bc453dc ### Issues: Cancelling the move dest of a manufacturing order does not cancel the MO nor log's an activity warning for the responsible to update the manufacturing demand manually. Additionally, when selling MTO manufactured products, cancelling the delivery and then changing the sol's demand will update the MO for an incorrect amount. ### Steps to reproduce: - In the settings: Enable Multi-Steps Routes - Inventory > Configuration > Warehouse Management > Routes - Unarchive the MTO route - Create an MTO, amnufactured product with BOM - Create and confirm an SO for 3 units of that product - Cancel the delivery of 3 units #### > There is no notification on the unrelevant MO linked to the SO - Adapt the quantity of the SOL from 3 to 0 #### > The delivery is cancelled but no activity is logged what's so ever ### Expected behavior: Both of these operations should log an activity as the demand of the MO is not updated on quantity decrease. opw-6010109 opw-6105366 opw-6100043 opw-6087909 X-original-commit: 796316c341c4346152ad9610c30679f47aaa2ff8 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a technical issue where archived delivery carriers were being unintentionally included in the carrier selection process. Previously, the system would pass information about inactive carriers, leading to incorrect carrier choices. This change ensures that only active carriers are used, improving data accuracy and reliability.
Original PR description
Issue: property_delivery_carrier_id on res.partner can hold an archived delivery.carrier record. Meaning that we pass an archived record to the context and that we can select the archievd delivery.carrier in the choose.delivery.carrier wizard. Solution: Only pass active records through the context. opw-6125792 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263819
This update fixes an issue where the import process for FatturaPA invoices was incorrectly setting the invoice due date. The change ensures that the correct due date from the invoice is now read and used, resolving a problem that prevented accurate payment processing. This improves the reliability of invoice import and payment reconciliation.
Original PR description
The import procedure stopped reading DataScadenzaPagamento (invoice date due) on `out_invoice`s and `in_refund`. As a side effect, invoice_date_due fell back to today() on those documents. This commit restores reading the invoice date due, and keeps the condiitonal logic only for the bank account and payment_reference logic incoming-only as it was before.
This update resolves errors in the Envia delivery method for both Chile and Colombia. Specifically, it corrects a mapping issue where Odoo was incorrectly formatting address data for Envia, leading to delivery failures. By using Envia's geocoding service, the system now accurately transmits address information, ensuring successful deliveries.
Original PR description
## Issue 1: Backport of 7654c558c4d517807884b0a82323dd160feeda2a For Colombia, Envia expects the municipality/DANE-style code in the address payload, not the raw postal code. When `l10n_co_edi` was…
## Issue 1:
Backport of 7654c558c4d517807884b0a82323dd160feeda2a
For Colombia, Envia expects the municipality/DANE-style code in the address payload, not the raw postal code.
When `l10n_co_edi` was not installed, the Envia integration fell back to the partner zip code and padded it locally before sending it as both `postalCode` and `city`. This produced incorrect values such as turning the Ibagué zip code `730001` into `73000100`, while Envia geocodes resolves that zip code to `73001000`.
Use Envia geocodes to resolve the Colombia zip fallback and retrieve the `stat_8digit` code expected by Envia instead of deriving it locally.
## Issue 2:
### Steps to reproduce:
- Install delivery_envia
- Website > Configuration > eCommerce > Delivery Methods > Envia
- Enable the delivery method, sync the carrier and Publish it
- With a portal user > Shop > Add any product to your cart > Checkout
- Register an address a valid 'Chile' address and confirm say:
'street and Number': Avenida Providencia 1432, Depto 402
'city': Santiago 'zip': 8320000
'country': Chile 'state': Metropolitana
> Envia Error: Invalid Option - String is too long at #->properties:destination
### Cause of the issue:
The problem is caused by the fact that Envia's api expects a 2-3 digits to represent state codes: https://docs.envia.com/reference/state-by-code
The mapping from Odoo's code state representation to envia's one is expected ot be performed by this mapping:
https://github.com/odoo/enterprise/blob/75cba6d5a88ebc4e0f35040a173ac1c443638daf/delivery_envia/models/envia_request.py#L27-L43
when the address is converted here:
https://github.com/odoo/enterprise/blob/75cba6d5a88ebc4e0f35040a173ac1c443638daf/delivery_envia/models/envia_request.py#L535-L542
That being said, the `Chile`'s code states of have been changed in 6694a3942c58ff1a56c9e4b36edbe126dd1e66f8 to match the official Iso but not in the Envia's mapping leading a failling match keeping the 4 charracter long `CL-RM` of the `Metropolitan` state provided in to the Envia's api as address data.
opw-6083181
opw-6210007This update fixes a reporting issue in the Peruvian Profit & Loss report. Previously, depreciation entries were incorrectly categorized as 'Other Income.' The change ensures that expense entries (like depreciation) are now correctly classified in the 'Other Operating Expenses' section, providing accurate financial reporting for Peruvian businesses.
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_pe_reports - Switch to a Peruvian company (e.g. PE Company) - Create a MISC journal entry with a line using a depreciation account (e.g. 6841000) and a debit value (e.g. 1000) - Post the entry - Check "Profit and Loss" report" **Issue:** The "Other operation income" section has an amount of 1000, even though a depreciation account (i.e. expense) was used. The amount should be in "Other operating expenses" section. **Cause:** A unique formula including accounts starting with 61, 66, 68, 71, 73, 74, 75, 76, 78, 79 and 99900 is used for "Other operation income" and "Other operating expenses" and depending on the sign of the sum, the result is reported in one of the section. **Solution:** Only report entries on "Income" accounts in "Other operation income" section and those on "Expense" accounts in "Other operating expenses". opw-6073666 Forward-Port-Of: odoo/enterprise#114362
This update fixes an issue where backorders created during POS sales weren't properly linked to the original order. Now, all backorder pickings are correctly associated with the POS order, ensuring accurate inventory tracking and reporting. This improves the reliability of inventory data within the Point of Sale system.
Original PR description
The delivery transfer for a product tracked by serial number is not linked to the POS order when there is no available stock. When validating a POS delivery in real time, stock can split the transfer…
The delivery transfer for a product tracked by serial number is not linked to the POS order when there is no available stock. When validating a POS delivery in real time, stock can split the transfer into a completed picking and a backorder (e.g. one line fully delivered with lots, another serial-tracked line with no stock and no serial number). Steps to reproduce: ------------------- * Setup two products: one tracked by qunatity with some quantity on-hand an other tracked by SN but no quantity on-hand * Open Pos * Sell in one order, both products without providing SN * Validate payment * Open Inventory: two deliveries sould exist under Inventory Overview of PoS Orders > Observation: The first picking shows the POS order as Source Document but the backorder has no source document and is not linked to the POS order. Why the fix: ------------ Pos Origin (Source Document, POS order, session) was only written on the pickings returned by `_create_picking_from_pos_order_lines`, which did not include pickings created during `_action_done()`. Extend the write to the initial pickings and their backorders so every transfer stays tied to the originating `pos.order`. opw-6090606
Documentation and clarification updates
This pull request implements a Corporate Legal Agreement (CLA) for QoQa, ensuring compliance with Odoo's contribution guidelines. The change was backported to version 18.0 to meet QoQa's requirements. This update allows QoQa to integrate with Odoo, adhering to legal and licensing standards.
Original PR description
Description of the issue/feature this PR addresses: This is the corporate CLA for QoQa. I backported #262581 because we need it from 18.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr