Friday, April 24, 2026
19 changes · saas-18.2
Enhancements to existing features
Automated CRM lead generation emails now come from noreply@odoo.com instead of iap@odoo.com. This helps prevent customers from replying to an address that is not intended for ongoing conversations, reducing confusion and misdirected responses.
Original PR description
The current mail address is iap@odoo.com so some client respond to the automatic mail. This fix change it to noreply@odoo.com Task-6086556 Forward-Port-Of: odoo/odoo#259691
Resolved issues and error corrections
The kiosk online payment screen now displays its payment instructions in the configured language instead of always showing English. This improves the self-order experience for customers using translated kiosk setups.
Original PR description
Currently if you use an online payment with the kiosk, the payment page with the QR code is not translated. Steps to reproduce: ------------------- * Create an online payment method with demo * Install any language, you don't need to switch * Open kiosk configurations * Set the online pm in the available payment methods * Set the language istalled as the default language * Make an order, go to payment page > "Scan the QR code to pay" is written in english no matter the language opw-6074194 Forward-Port-Of: odoo/odoo#259895
Related contacts now show their contact type in the user's selected language in the contact list, matching the behavior already seen in Kanban view. This avoids confusion for non-English users when reviewing customer or company contact records.
Original PR description
Problem: When the contact type is set for a related (child) contact, the contact type is shown in English next to the contact name in the contact list view. It should be translated to the user…
Problem: When the contact type is set for a related (child) contact, the contact type is shown in English next to the contact name in the contact list view. It should be translated to the user language. It is correctly translated in the Kanban view. Steps to reproduce: 1. Install the Contacts app. 2. Create a contact or go to an existing contact 3. Add a related (child) contact and set its contact type to any type (i.e. Invoice Address) 4. Change the user language to any language other than English 5. Go back to the contact list view and check the name of the related (child) contact. See how the contact type appearing in the name is in English instead of being translated, while it is correctly translated in the Kanban view. Cause: The list view uses the 'complete_name' field which is not translated, while the Kanban view uses the 'display_name' field which is translated. Solution: Use the 'display_name' field instead of 'complete_name' in the list view. opw-5947987 Forward-Port-Of: odoo/odoo#257539
The timesheet task sharing view now correctly highlights negative Time Remaining values in red, matching the label. This makes overruns easier to spot at a glance and helps users react faster when planned time has been exceeded.
Original PR description
**Steps to reproduce:** - Open project shared form view. - Go to the Timesheets tab. - Observe the Time Remaining value. **Issue:** - The Time Remaining label is red properly but its value does not becomes red even when the value is negative. **Fix:** - Adjusted the logic to ensure the Time Remaining value is highlighted in red when value is negative **Task-id: 5404009** Forward-Port-Of: odoo/odoo#240489
This fixes a spreadsheet confirmation dialog issue where clicking Cancel did not trigger the expected cancellation action. Users will now get the correct behavior when dismissing these prompts, helping avoid unintended workflow gaps.
Original PR description
The `cancel` callback of the `env.askConfirmation` method was not called when the user clicked on the cancel button. task-6074948 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 Forward-Port-Of: odoo/odoo#260061
The French localization no longer applies the “17” tax tag to the 8.5% EU Service tax. This prevents service transactions from being reported under a tag intended only for goods, improving accuracy in French tax reporting.
Original PR description
**Issue:** In French localization, a tax tag (i.e. "17") was wrongly added on "8.5% EU Service" tax. This tax tag should only be applied on taxes for goods, not service. opw-5871998 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260787 Forward-Port-Of: odoo/odoo#260641
This fix ensures upgrade scripts are loaded under the proper Odoo upgrade area. It improves internal logging and warning handling during upgrades, helping teams diagnose upgrade issues more reliably without changing day-to-day user workflows.
Original PR description
The resulting modules should be bound to the `odoo.upgrade` package. Side effects: - the loggers created inside the upgrade scripts are now in the `odoo.upgrade` namespace. - warnings raised by bad usages in upgrade scripts are now correctly filtered. Forward-Port-Of: odoo/odoo#260790 Forward-Port-Of: odoo/odoo#258025
Point of Sale loyalty history now records points earned and points spent separately when both happen in the same order. This gives staff and customers a clearer, accurate view of loyalty activity instead of only showing the net change.
Original PR description
When a loyalty card both earned and spent points in the same POS order, the history entry only reflected the net difference instead of the gross amounts. The root cause was that the JS payload sent only a single `points` field representing the net change. Fix by tracking `points_earned` and `points_spent` separately in `couponData` and sending them to the server. opw-6041420 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256022
This fixes invoice handling so newer Peppol response statuses are correctly treated as already sent when appropriate. It helps prevent incorrect resend conditions and prepares the Peppol workflow for additional response types in the future.
Original PR description
With the addition of new peppol_move_state for the Application Responses in Peppol, some checks to know wether the move was sent through Peppol were not updated. This commit does that by adding a common field for it. This is usefull as we might add some extra peppol_move_state values in the near future (Peppol supports more response types than we currently offer to our users). Forward-Port-Of: odoo/odoo#258598
This update fixes an issue where the PDF sign sidebar was overlapping important sign guidance elements, like the ‘Next’ button. The sidebar has been moved to the right, ensuring a clearer and more user-friendly experience for signing documents within the platform. This improves usability and reduces potential confusion.
Original PR description
The PDF sidebar is left-aligned, causing the panel to overlap sign guidance elements like the “Next” button when opened. This commit moves the sidebar to the right of the PDF viewer. task-6065586 Forward-Port-Of: odoo/enterprise#114695 Forward-Port-Of: odoo/enterprise#112722
This change updates the email address used to respond to automated emails from clients. Previously, clients responded to iap@odoo.com, which has now been updated to noreply@odoo.com for better management and to reduce potential misdirected responses. This is a minor improvement.
Original PR description
The current mail address is iap@odoo.com so some client respond to the automatic mail. This fix change it to noreply@odoo.com Task-6086556 Forward-Port-Of: odoo/enterprise#114097
This update resolves a bug where the 'Update Payment' button remained visible after processing batch payments for Mexican CFDI invoices. The fix corrects a comparison issue within the system's logic, ensuring the button only appears for invoices requiring updates, improving the user experience for Mexican tax reporting.
Original PR description
backport of f41900a4353ea867b08f71ed64f8702a13411bac - Create one invoice with the PUE payment policy. - Create another invoice with the PDD payment policy. - Send both invoices to the CFDI. - Create a batch payment for both and reconcile. - Click on Update Payment on one of the invoices. The Update Payment button does not disappear. In the method _l10n_mx_edi_cfdi_invoice_get_payments_diff, we compare the current UUIDs and the previous UUIDs to determine if the button should be shown. However, when there is a batch payment, the current UUID list includes the UUIDs of all invoices in the batch, including the PUE payment (which should normally be filtered out by the continue). The previous UUID list includes only the UUID of the PDD payment. opw-6055781 Forward-Port-Of: odoo/enterprise#114440
This update resolves an issue where the 'Time Remaining' value in the project timesheet wasn't consistently displayed in red, even when the value was negative. The fix ensures that both the label and the numerical value are correctly highlighted in red for negative time remaining, improving clarity and accuracy for users.
Original PR description
**Steps to reproduce:** - Open project shared form view. - Go to the Timesheets tab. - Observe the Time Remaining value. **Issue:** - The Time Remaining label is red properly but its value does not becomes red even when the value is negative. **Fix:** In hr_timesheet, the remaining_hours field has a decoration-danger applied In sale_timesheet_enterprise, this field is overridden as portal_remaining_hours So, Added the corresponding decoration-danger on portal_remaining_hours. task-5404009 Forward-Port-Of: odoo/enterprise#113632
This update resolves an issue where users with limited permissions were encountering errors when modifying subscription timesheet tasks. The fix involves simplifying data fetching to prevent privilege-related access problems, ensuring smoother operation for users with restricted access.
Original PR description
The change in e75bc6a1fac056d72fe9e73513635f9e0ba7db22 may cause some access errors when the user don't have the proper privileges. STR: 1. Having a user (demo) with minimal permissions: sales own documents, timesheets and project user 2. Having a sales order for customer that demo user can read with services in it. 3. Having that customer a task with a sale that the demo user can't read. 4. When the user tries to change the line to one that he can actually read, an error raises. The display_name function tries to fetch data from the lines related order. Let's just sudo that fetch to avoid these kind of issues. A demo video: https://www.loom.com/share/ddd02d72bcea4652b79549aba47d5334 opw-5969767 cc @moduon MT-14483 Forward-Port-Of: odoo/enterprise#113996
This update resolves an issue where the 'cancel' button within the documents spreadsheet functionality wasn't properly triggering the confirmation process. The fix ensures that clicking the cancel button now correctly halts the operation, preventing unintended actions. This improves user experience and data integrity.
Original PR description
The `cancel` callback of the `env.askConfirmation` method was not called when the user clicked on the cancel button. task-6074948 Forward-Port-Of: odoo/enterprise#112987 Forward-Port-Of: odoo/enterprise#112304
This update resolves an issue where the 'In a Budget' filter wasn't accurately displaying budget records. The fix ensures the filter correctly checks for a valid budget analytic ID, improving the accuracy of budget reporting. This ensures users see all relevant budget data.
Original PR description
"In a budget" Filter is expected to show records with a related budget i.e. `'budget_analytic_id' != False`. Forward-Port-Of: odoo/enterprise#112872
This update fixes a data inconsistency in how deferred invoice moves are created. Previously, the partner ID could be incorrectly set, leading to mismatches between the original invoice and the deferred move lines. This change ensures the correct partner ID is always used, maintaining data accuracy and reliability for financial reporting.
Original PR description
When creating deferred move lines, the `partner_id` could be incorrectly influenced by the `default_partner_id` context key (e.g., when generating an invoice from a Sales Order). This led to inconsistencies where the deferred move lines did not match the partner on the original invoice line. This commit ensures the `partner_id` is explicitly taken from the source invoice line, guaranteeing data integrity across all deferred move lines. Steps: - Create a sale order for partner X, receive and confirm it - Create the invoice from the SO - Change partner to Y but keep X as delivery partner (not essential to reproduce bthough) - Set a deferred start date and a deferred end date on the invoice line, covering two full months - Confirm the invoice and open deferred moves via the smart button -> Note that one deferred move's lines get the partner id from the SO instead of the invoice opw-6095711 Forward-Port-Of: odoo/enterprise#114439
This update resolves an issue where the automated vendor invoice reporting process incorrectly handled multi-company setups. The fix ensures invoices are fetched from the correct company within each business, preventing errors and improving the reliability of reporting. This enhances the accuracy of financial data for businesses using multiple companies.
Original PR description
In a multi-company context, the cron might be run with a user having a default company that is not the same as the target moves companies, maybe raising a `RedirectionWarning` (if the current company is not fully set-up). This commit ensure to fetch the invoice in move's target company. opw-5225553 Forward-Port-Of: odoo/enterprise#113254
This update resolves a bug where portal users were incorrectly seeing the 'View Timesheets' button, even without the necessary permissions. The fix involved updating a helper method to ensure users only see the button when they have the appropriate access, improving the user experience and preventing confusion.
Original PR description
**Issue:** The 'View Timesheets' button is shown to the portal user even though they don’t have access to view timesheets. Currently, we have added _sale_order_get_page_view_values in the sale module, which is overridden in sale_timesheet. We are using it here. task-4745519 Forward-Port-Of: odoo/enterprise#114818 Forward-Port-Of: odoo/enterprise#113481