Daily updates from Odoo
Monday, March 17, 2025
24 changes · 18.0
Resolved issues and error corrections
The website editor no longer treats harmless extra spaces in a page element's class information as a real change. This prevents users from seeing an unnecessary warning about losing changes when they simply open and discard the editor without editing content.
Original PR description
Before this commit, there was a bug that could be reproduced this way: - Add a whitespace at the end of the class attribute of the footer main snippet (e.g. by using the HTML editor) - Enter edit mode - Click on the footer - Discard the editor => Bug: a popup shows up saying you are about to lose changes... while you did not make any. This commit fixes that specific issue, also extending the test that was introduced at [1], although as advertised many "no changes" flow are still marking the page as dirty (e.g. just hovering any editor panel option). Note that there seems to be a deeper issue (although with no real breaking consequences) with the code surrounding this (see inline code comments), hopefully we won't have to care about this once the new HTML editor lands in master. [1]: https://github.com/odoo/odoo/commit/8e1bce010be2df8bd7144364fcbbe509d0441695
Point of Sale searches now show every matching customer's wallet instead of only the first one found. This helps cashiers correctly identify and use available wallet balances when multiple customers have similar names, while excluding empty wallets from the results.
Original PR description
Show all customers wallets on search pos ### Impacted versions: 18.0 and later ### Steps to reproduce: Add more than one customer with same first characters of their name Add gift cards to them with positive balance Search them by clicking customer button on a pos session Video on runbot: https://drive.google.com/file/d/1kFAYjxWJmTNuNOK2ul684x_H_GAptsjB/view?usp=sharing ### Current behavior: Only shows the first wallet found (fetchCoupons default limit 1) ### Expected behavior: Show all wallets Task: [4572808](https://www.odoo.com/odoo/project/49/tasks/4572808)
The Traceability Report PDF header now has more space between the reference and company name. This prevents the text from overlapping, making the report easier to read and more professional for users and customers.
Original PR description
Task: [4591489](https://www.odoo.com/odoo/49/tasks/4591489) Description of the issue/feature this PR addresses: The reference and company name in the header of Traceability Report are currently overlapping a bit. This PR increases the spacing of elements, to resolve the issue. Current behavior before PR: The formatting of the Traceability Report's header is incorrect, reference and company name are overlapping:  Desired behavior after PR is merged: The Traceability Report's header is displayed properly:  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue on website portal pages where reactions to a message were shown under the publisher's comment instead of the original message. Reactions now appear where users expect them, making conversations clearer and easier to follow.
Original PR description
Before this commit, message reactions appeared at the bottom of the publisher's comment instead of the original linked message. This commit ensures they are correctly positioned under the original message. Before  After  task-4619148
Google Calendar synchronization now relies on the Google Account module to manage access tokens, keeping authentication responsibilities in the right place. This also ensures the correct client secret helper is used, improving compatibility with customizations that override Google credentials.
Original PR description
Before this commit, the `refresh_token` handling was done in the `calendar`
module, even though it relates to token management and should therefore be
handled by `google_account`, which manages tokens and requests to Google.
This also fixes the call to `get_param('google_calendar_client_secret')`, which should use the correct helper `_get_client_secret`, as it may be monkey-patched by another module.This fixes a typo in an automated website shop test so it looks for the correct sales order reference format. The change helps keep the online store testing process reliable and prevents false build failures.
Original PR description
the Subject input value is supposed to start with S0 instead of S00 Screenshot of where the tour fails:  build_error-116092
Fixes an issue where Romanian companies could encounter an error when opening the Print & Send wizard for invoices already marked as sent to E-Factura. The send option now appears correctly aligned, making invoice sending smoother and avoiding user-facing interruptions.
Original PR description
**Steps to reproduce:** (To reproduce the issue, we have to simulate a case where "E-Factura Status" is "Sent". This can be done by editing "account_move_form_inherit_l10n_ro_edi" view and setting…
**Steps to reproduce:**
(To reproduce the issue, we have to simulate a case where "E-Factura Status" is "Sent".
This can be done by editing "account_move_form_inherit_l10n_ro_edi" view and setting "l10n_ro_edi_state" field visible and editable.)
- Install Accounting and l10n_ro_edi
- Switch to a Romanian company (e.g. RO Company)
- Create an invoice
- Set "E-Factura Status" to "Sent"
- Confirm it
- Try to send the invoice
**Issue:**
1) A traceback is raised when trying to generate the extra EDI checkbox for the "Print & Send" wizard.
2) Once the first issue fixed, the "Send E-Factura to SPV" option will be displayed in the "Print & Send" wizard with a warning tooltip button.
The tooltip button will be displayed on another line, which misaligns the "Send E-Factura to SPV" option with the other ones.
**Cause:**
This specific code:
```py
return [checkbox_key for checkbox_key, checkbox_vals in json_checkboxes.items()
if checkbox_vals['checked']]
```
fails because there is no key associated to the data dict for the Romanian EDI checkbox.
opw-4630524
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes an issue that caused the Indian E-way Bill stock page checks to fail because of hidden fields in the page setup. The change helps keep the E-way Bill workflow stable and prevents related automated validation errors.
Original PR description
In this commit- We fix the invisible fields failing test for `l10n_in_ewaybill_stock` runbot error-https://runbot.odoo.com/runbot/build/76485337 opw-4628736 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents vendor bill forms from crashing when a user clears the Accounting Date field. If the field is empty, the system now uses the invoice date or today's date instead, allowing users to continue editing bills without interruption.
Original PR description
Currently, An error occurs when removing an `Accounting Date` from the invoice bill form view. Steps to produce: - Install the `account` module (with demo data). - Go to Invoicing / Vendors / Bills. - Create a bill, remove value from the Accounting Date, and click anywhere in form view. `AttributeError: 'bool' object has no attribute 'year'` An error occurs when the system tries to get a year part from the accounting date [1], but the value of accounting date is missing. Link 1: https://github.com/odoo/odoo/blob/a0205ffa3d4a42321a41503b8056a9f1c89328bb/addons/account/models/account_move.py#L3522 If the accounting date is not available, then provide a default value as an invoice date or today's date to resolve an issue. Sentry-6188666136 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Invoice previews for Argentina and Chile now include proper spacing below custom document headers. This prevents invoice content from appearing stuck to the header and makes the on-screen preview better match the PDF output.
Original PR description
latam document layouts with custom headers don't have any bottom margin. All default layouts use `<ul>` for the header, which by default has 1em bottom margin. When we replace these headers with our…
latam document layouts with custom headers don't have any bottom margin. All default layouts use `<ul>` for the header, which by default has 1em bottom margin. When we replace these headers with our custom ones with just a plain `<div>` which has no bottom margin by deafult, we end up in a situation where in HTML preview, the body is glued to the header in `l10n_ar`, which also looks off comapred to PDF preview. How to reproduce: - Create a DB - Install Accounting - Install AR localization - Move to "(AR) Responsable Inscripto" company - Switch Document Layout to "Bubble" format - Create an invoice with B2B customer. It will make sure the Document Type switches to "(1) INVOICES A". - Make sure the Journal is "Electronic Invoice" - Validate the invoice - Click on Preview button - In parallel generate a PDF report of the invoice too You will see that on the PDF report the header looks nice because of the existing spacing, but on preview it looks glued to the header opw-4411237
This fix lets PayPal payment processing continue when an order or payment flow does not include a delivery address. It also addresses related webhook URL handling, reducing failed PayPal payment setups for businesses using address-light checkout flows.
Original PR description
Why are you closing the pull request #201982 ? First, the module 'website_skip_hide_addresses' isn't the only to require a payload without address. Second, there is also the issue about the url used to generate the webhook. Third I can't reopen the pull request since I don't have the right.
Customer invoices now format correctly even when a product description is very long. This prevents invoice layouts from breaking, helping businesses send clearer and more professional invoices to customers.
Original PR description
before this commit: the invoice is incorectly formated when the description for a product is very long after this commit: the invoice is corectly formated task-4640747 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
PayPal payments can now complete when an Odoo website checkout skips or hides delivery address collection. This helps on-premise deployments and businesses selling items or services that do not require shipping details avoid blocked checkouts.
Original PR description
Description of the issue/feature this PR addresses: It's impossible to use the PayPal provider if we host it on premise. Also I added a variable to allow us to use the provider without requiring to provide shipping address. Useful if we skipped it. Current behavior before PR: PayPal error when trying to checkout with website_skip_hide_addresses Desired behavior after PR is merged: PayPal checkout working with website_skip_hide_addresses --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes automated website tour steps so helper-based actions correctly respect page unload checks. It helps make guided tests and onboarding flows more reliable when a step triggers navigation or page changes.
Original PR description
If an action is defined in a step with a string (and therefore is an action that comes from tour_helpers) there is no check on the µbeforeUnload event that is done. In this commit, we fix this. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The self-ordering kiosk now prevents customers from adding combo meals to the cart when required options, such as sides, have not been selected. This avoids a white-screen crash and makes combo ordering behave consistently with regular product ordering.
Original PR description
Currently, when ordering on kiosk a menu combo, if you do not select sides it will crash when adding it to the cart Steps to reproduce: ------------------- * Open kiosk * Select burger Menu Combo * Select Cheese burger * DO NOT select sides * Select Next button * Add drink * Add to cart > Observation: White screen crashes Why the fix: ------------ The crash is ultimately cause by a undefined `attribute_value_ids` https://github.com/odoo/odoo/blob/ea67d5ad5f81c7eae85cff352bcc75290053ba20/addons/pos_self_order/static/src/app/self_order_service.js#L263-L266 If we compare the behavior of the same product, outside a combo, we are not allowed to add the product to the cart if we did not select sides. We will now have a consistent behavior with/without combo. opw-4516061
This fixes an automated test for expired promo codes so it no longer fails intermittently around midnight. The customer-facing behavior is unchanged: expired promo codes should still be rejected correctly.
Original PR description
The Issue: Before this commit, if a promo code was set to expire today and a user attempted to apply it tomorrow, an error was correctly thrown. Which is the correct behavior, However, due to what seems to be a delay caused by Runbot running all tests, the promo code sometimes gets applied the next day. This issue consistently occurs between 12 AM and 1 AM, as seen in the build error. The Fix: Since the original test checks a promo code one day after its expiration to see if its still applicable or not, we can adjust the expiration date to today +1 and run the test on day +2. runbot-112678
Customer displays connected through an IoT box now use a local connection instead of the device IP address. This avoids certificate trust problems and helps the display work reliably without extra HTTPS setup.
Original PR description
Before this commit, if an IoT connected customer display was activated without a valid HTTPS certificate, it would fail as the IoT box would not trust accessing its own endpoint, due to the request using https://<iot_box_ip>. After this commit, the proxy display instead uses http://localhost, so the certificate is not required and the customer display functions as expected. task-4648702 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Invoice follow-up SMS reminders are now prepared in the customer’s preferred language instead of the sender’s language. This helps businesses communicate payment reminders more clearly and consistently with customers in multilingual environments.
Original PR description
Steps to reproduce: * Customer record has language different than user's language. * Customer form view -> Accounting Tab -> Invoice follow-ups -> Send * Check sms checkbox * sms template in user's language, it should be in customer's languange. opw-4599660
This fix adds a short wait so the Gantt schedule view finishes loading during the restaurant appointment test. It prevents random test failures, helping keep release validation more stable without changing user-facing behavior.
Original PR description
In this commit, we add a delay to ensure Gantt view will correclty be loaded after clicking on Gantt view button. This allow to fix an indeterministic behavior that can occurs in restaurant_appointment_tour tour.
The timesheet grid now shows the correct weekly overtime value for employees with flexible working hours. This prevents misleading overtime information when managers or employees review recorded time.
Original PR description
Issue:
- Hovering over the overtime column in the timesheet grid shows the wrong value.
when the employee has flexible hours.
Steps To Reproduce:
- Go to the timesheet grid.
- Record time for an employee with flexible hours.
- Hover over the weekly overtime column.
Solution:
- Add the full-time required hours to the overtime calculation when the employee has flexible hours.
opw-[4528395](https://www.odoo.com/web#id=4528395&view_type=form&model=project.task)Corrects a Colombian e-invoicing calculation so invoices with withheld VAT use the tax amount instead of the tax rate in the XML. This prevents signing errors for affected invoices after the rounding refactor and helps businesses issue compliant electronic invoices.
Original PR description
Steps to reproduce: - Ensure the Colombian localization is installed and set up - Make an invoice with taxes "19%" and "15% RteVAT 19%" - Try to sign the invoice - Get the error Occurs after the global rounding refactor d5da2b62263f85fbce0f2548085c066cbbf10371 By mistake, the operation is using now the tax percent instead of the tax amount opw-4446123
The Mexican electronic invoicing POS flow now refreshes order totals before checking whether payment can proceed. This prevents an incorrect payment-blocking error after a discount line is removed, helping cashiers settle affected orders normally.
Original PR description
When a quotation is loaded into the POS, a down payment is made, and then the order is settled, if the order has a discount that causes the total amount to become negative, the system prevents payment and raises an error. However, if the discount line is removed, the payment attempt also raises the same error. This happens because, even though the `pos.order.line` was removed, the values of the `pos.order` were not updated. Since it is required to validate the amount to be paid in the inherited `pay` method, the error occurs. This commit fixes the issue by recomputing the amounts before the validations that require them.
Recruitment application attachments now inherit the visibility rules set on their parent recruitment folder. This ensures internal users can see applicant documents when the folder is configured to allow it, avoiding unnecessary access issues in hiring workflows.
Original PR description
Steps to reproduce: 1. In the Documents settings, activate the Recruitment option 2. Configure the "share" settings of the folder so internal users can view documents 3. In the recruitment app, add some attachments to the applications 4. Check these attachments' visibility -> They are not visible to internal users Technical Reason: The previous implementation ignored the recruitment folder’s access settings and set default access to 'none'. After this commit: documents inherit access settings from the recruitment folder Task-4529233
The expected test data for Ecuador delivery guide documents was updated to match a recent XML change. This helps keep automated checks reliable and reduces false failures during release validation.
Original PR description
Commit 147c9ba6942 added a new node to the Ecuador delivery guide XML. However the node was not added to the TestECDeliveryGuide.test_send_delivery_guide_flow test (which had an active runbot exception at the time). We now add the node to the test's expected XML. runbot-160903