Daily updates from Odoo
Monday, June 23, 2025
10 changes · 18.0
Resolved issues and error corrections
This fix prevents the website shop collection flow from failing when a customer does not provide a zip code. It improves checkout reliability by avoiding a 500 error in this situation.
Original PR description
Description of the issue/feature this PR addresses: Fix #215501 Current behavior before PR: Crash with 500 internal error. Desired behavior after PR is merged: No crash. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The restaurant point-of-sale release table action now properly removes empty orders from the server. This prevents tables from staying tied to orders that should have been cleared, improving day-to-day restaurant floor management.
Original PR description
Before this commit, release table wasn't calling the correct method (deleteOrders) it was just changing the state of the order and waiting for calling syncAllOrders method to update the order on the server. But if the order didn't have any line it was never synched. Now the release table button calls the deleteOrders method directly and the order is removed from the server.
Scanning a loyalty card barcode in Point of Sale now selects the customer linked to that card instead of showing an invalid code error. This helps cashiers identify loyalty customers faster and apply the correct customer context during checkout.
Original PR description
When scanning the barcode of a loyalty card, there was an error saying the code is invalid. Instead it should select the partner linked to the card if there is one. Steps to reproduce: ------------------- * Create a loyalty program, and a loyalty card with a partner * Copy the barcode of the loyalty card * Open the POS, and scan the barcode of the loyalty card > Observation: The error "Invalid code" appears, and the partner is not selected opw-4653983
This change ensures PayPal webhook URLs use HTTPS, which is required for reliable payment notifications. It helps reduce failed webhook setup or delivery issues for businesses using PayPal payments in Odoo.
Original PR description
When use paypal webhook, the webhook url need use https --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where adding multiple attributes to a FIFO-costed product could trigger a missing record error. The change helps ensure product variant updates complete smoothly, avoiding interruptions when configuring products and inventory valuation.
Original PR description
<b>Steps to reproduce:</b> 1. Go to Sales > Configuration > Product Categories 2. Select All / Saleable, and set Costing Method to FIFO 3. Go to Products > New 4. Fill in Name , set Track Inventory True and add Cost, then save the product 5. Change the Category to All / Saleable 6. Navigate to Attributes & Variants, add attribute Leg, and add values Steel and Aluminium <b>Issue :</b> - When modifying a product template with FIFO costing by adding multiple attributes, the system may delete and recreate product variants. This causes "missing record" error during stock valuation replenishment, as the code tries to access deleted product variants. <b>Solution :</b> - After calling super().write(vals), the original products recordset may contain deleted records due to variant regeneration. A check was added to verify if the variants still exist, If not, then continues. <b>opw-4741530</b>
This fix prevents animations on wishlist and comparison button icons from causing product listings to display only one item in some browsers. It keeps eCommerce pages usable and avoids accidental storefront disruption when editing button styles.
Original PR description
## Version
18.0+
## Issue
When an animation is set on wishlist button icon, only one product appears per eCommerce page.
Same behavior for compare and add-to-cart buttons.
## Steps to reproduce
- Enable wishlists from `Settings` App;
- Go to shop frontend view in edit mode:
- Select a wishlist button icon on any product by clicking on it;
- From editor's view, move to `Icon` section:
- Add an animation (e.g. `On Appearance`).
- Save and refresh;
- Move to any shop page and see only 1 product.
> [!important]
> Not reproducible in FireFox or Safari.
opw-4784323Journal entries now use the journal's default account when automatically balancing eligible tax-related entries, instead of always using the company suspense account. This also makes new journal entry lines default to the journal account when available and improves the related error message, reducing confusion for accounting users.
Original PR description
Problems: The error message for unbalanced journal entries in the "Miscellaneous Operations" journal was unnecessarily complex and misleading. It suggested setting a default account on the journal to…
Problems: The error message for unbalanced journal entries in the "Miscellaneous Operations" journal was unnecessarily complex and misleading. It suggested setting a default account on the journal to automatically balance entries, but this auto-balancing was intended only for lines with taxes. Furthermore, the method _get_automatic_balancing_account in account.move was ignoring any default account set on the journal itself when auto-balancing because of taxes. It was instead always taking the company suspense account. How to reproduce the issue: - Add a default account to the miscellaneous journal. - Create a journal entry manually, and add a line with any account of 100 debit. - Attempt to save. Finally, this commit also set the account_id of new account move lines to the default account id of the journal if it exists when creating a journal entry. enterprise pr: https://github.com/odoo/enterprise/pull/86987 opw-4751270 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Mexican point-of-sale refunds now correctly handle discounted products. This prevents valid refund payments from being blocked when discount lines appear with a positive amount during the refund process.
Original PR description
**Problem:** When making a refund of a product that has a discount in mexico, an error will be raised, preventing the refund. This error states that all the refund's lines should have a negative price. This didn't take discounts into account, as a discount normally has a negative price, so it should have a positive one when refunding it. **Steps to reproduce:** - Choose a Mexican company. - Make a discount for a product. - Go to PoS and purchase that product. - Make a refund for this product. - The payment won't go through as some lines are positive. **Why the fix:** The code didn't take the fact that a discount line should be positive in the context of a refund. So it checked that no lines were positive, and threw the error if one was found. The new fix only throws this error if the total is positive in the context of a refund, as it is done in the context of a pruchase if the total is negative. opw-4783049
Mexican electronic invoices with large quantities and fixed taxes can now be generated even when tiny rounding differences occur. The change aligns Odoo's tax calculation with the Mexican tax authority's method, reducing failed CFDI submissions for affected invoices.
Original PR description
**Issue** When generating CFDIs for invoices with large quantities and fixed taxes (e.g., IEPS), an Invalid Operation error could occur due to small discrepancies between the computed tax values in…
**Issue** When generating CFDIs for invoices with large quantities and fixed taxes (e.g., IEPS), an Invalid Operation error could occur due to small discrepancies between the computed tax values in Odoo and those expected by the SAT (Mexican tax authority). **Steps to Reproduce** 1. Install Accounting and the Mexican localization modules. 2. Create a fixed tax with an amount of 0.4729. 3. Create a product and an invoice with a large quantity (e.g., 10,000) at a price of 18.33. 4. Apply the fixed tax to the invoice line. 5. Confirm the invoice and attempt to generate the CFDI. 6. Observe the error due to tax amount mismatch. **Root Cause** The SAT calculates taxes using a `tasa_o_cuota` field derived from `tax_amount / base_amount`, rounded to 6 decimal places. Odoo computes tax by directly multiplying the fixed amount (0.4729) by the quantity. This slight difference causes the SAT’s recomputed `tax_amount` to differ from the one sent, triggering a rejection. **Fix** To ensure consistency, `tax_amount_currency` is recomputed using the same method as the SAT (via a 6-decimal-place `tasa_o_cuota` applied to the base) before sending the data. This aligns both calculations and prevents CFDI rejection due to minor rounding differences. Opw-4832567
Australian payroll now accepts previous payroll IDs up to the Single Touch Payroll schema limit, avoiding unnecessary restrictions for employers. Users also receive clearer guidance about STP compliance requirements.
Original PR description
The size of fields for Previous Payroll IDs was set to 20 characters. According to the STP xml schema, the max size is 200. This is already checked with the schema validation so the limit can be safely removed. This commit also adds a disclaimer for the users informing them regarding STP compliance. opw-4820852