Tuesday, April 8, 2025
22 changes · 18.0
Resolved issues and error corrections
This fix prevents an error when users quickly click a breadcrumb after returning with the browser Back button from a form view. Navigation now remains smooth and reliable, reducing interruptions during everyday work.
Original PR description
Before this commit: When a user opened a form view and clicked browser's Back button, then immediately clicked on the breadcrumb, a traceback occurred. After this commit: Navigation works smoothly without crashes. Task-4667911
This fix prevents the Point of Sale from returning to the first screen when a customer takes longer to complete an online payment. It helps preserve the current order during checkout, avoiding lost payment context and hanging orders.
Original PR description
Description of the issue/feature this PR addresses: When doing online payment in POS, customer may take some time and the POS may go to idle state. This causes when it goes to idle and back to alive,…
Description of the issue/feature this PR addresses: When doing online payment in POS, customer may take some time and the POS may go to idle state. This causes when it goes to idle and back to alive, it will direct to the first screen. Steps to reproduce: - Create POS & setup POS online payment (use Demo online payment) - Open POS, add a product, go to payment screen, select the online payment method - Let it go to idle state (triggered by useIdleTimer) - Move the cursor, or at least make it back to active state - You'll see the screen be redirected to first screen - Do the payment, it will redirect to TicketScreen with empty order info, and when you click new order the previous one is still hanging there Alternatively take a look at the recording: https://github.com/user-attachments/assets/b8e8ae81-df04-41e0-b122-002413714735 Current behavior before PR: - Because it bounces to first screen, when attempting payment the pos does not have the order state Desired behavior after PR is merged: - Do not redirect if in payment screen, so that order context won't be lost --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when a user clears the date while creating a journal entry. Odoo now checks for a date before preparing the placeholder entry name, helping users continue their workflow with clearer handling of missing information.
Original PR description
Description of the issue/feature this PR addresses: When creating a new journal entry, clearing the date field causes an error because the system tries to compute the placeholder name field using the date, which is missing. Current behavior before PR: An error is raised when the date field is cleared while creating a journal entry, as the computation of the name field relies on the date field being present. Desired behavior after PR is merged: The system will check if the date field is present before computing the name field. If the date field is missing, a default value will be used, or a clear validation error will be displayed to the user. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Restaurant self-order receipts now show a valid unique order code, and their QR codes and links open the correct ticket page. This prevents customers from landing on broken pages when downloading or viewing receipts after ordering from the mobile menu.
Original PR description
Steps: === - Open the restaurant's POS system. - Configure it for self-invoicing with QR code + link. - Access the restaurant's mobile menu. - Place an order and download the receipt. Issue: === - The receipt shows an incorrect unique code. - The QR code and link redirect to `undefined/pos/ticket`. Fix: === - Corrected the system to generate a valid unique code for each order. - Fixed the QR code and link to properly redirect to the correct page. Task: 4512074
The Tax Return screen no longer shows the Print button for journal entries that cannot be printed as PDFs. This prevents users from hitting an error during document layout configuration and makes the reporting workflow clearer.
Original PR description
This error occurs when `o.tax_totals` returns `False`, causing an AttributeError when accessed in the QWeb template. Steps to Reproduce : - Install the module `accountant.` - Go to Reporting and open…
This error occurs when `o.tax_totals` returns `False`, causing an AttributeError when accessed in the QWeb template. Steps to Reproduce : - Install the module `accountant.` - Go to Reporting and open Tax Return. - Open Closing Entry and Print. `AttributeError: 'bool' object has no attribute 'get'` The error occurs when printing the tax report for the first time. The system first attempts to display the document configuration popup for the user based on the account move. However, since `o.tax_totals is not available` in the tax report `(as it is a journal entry)`, and when the user`Configure Document Layout`, it raises a validation error. At [1] we cannot print pdf when `move_type == entry` so it is better to hide `Print` button in this condition. This error is resolved by hiding the `Print` button in the `Tax Return` `Journal Entries`, as it only contains journal items. Link [1] : https://github.com/odoo/odoo/blob/63fc0d1cefaf8f59acd0743a225d1002425ff156/addons/account/models/ir_actions_report.py#L72 sentry-6115648026 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Opening the Set Default Values popup no longer crashes when a record includes hidden fields. This keeps debug tools usable for administrators and support teams without interrupting their workflow.
Original PR description
Problem: When trying to open the "Set Default Values" modal, a traceback occurs if the record contains an invisible field, due to `displayed` being `undefined`. Solution: Safely check the length of `displayed` before using it. Steps to reproduce: 1. Open CRM. 2. Open any record. 3. Enable Debug Mode. 4. Click "Set Default Values". 5. Observe the traceback. opw-4707774 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an unexpected error when users manually revalue lot- or serial-tracked inventory after lot-based valuation has been disabled. Instead of crashing, the system now shows a clear validation message when no remaining quantity is available to revalue, helping users avoid disruption in inventory valuation workflows.
Original PR description
Issue Before This Commit: ============================ When attempting to add a new valuation for a lot/serial-tracked product using the 'Add Manual Valuation' button while the 'Group By Lot' filter…
Issue Before This Commit: ============================ When attempting to add a new valuation for a lot/serial-tracked product using the 'Add Manual Valuation' button while the 'Group By Lot' filter is applied, a 'ZeroDivisionError: float division by zero' traceback occurs. Steps to Reproduce: ============================ - Install the stock_account module. - Create a product, enable Lot/Serial tracking, and assign it to the Furniture category. - Update the quantity and assign a lot/serial number, which creates a valuation layer for this lot-tracked product. - Disable Valuation by Lot/Serial Number for the product. - Go to Valuation, apply the Group By Lot filter, and try to create a new valuation by clicking Add Manual Valuation. - Click on the Revalue button it will give an Error. With This Commit: ============================ The issue occurs because when revaluing layers using the 'Add Manual Valuation' button, all layers have 0 remaining quantity. This happens if 'Valuation by Lot/Serial Number' was initially enabled, creating valuation layers for lot/serial-tracked products, and later disabled. As a result, all valuation layers associated with lot/serial numbers have zero remaining quantity. When attempting to revalue these layers while using the 'Group By Lot' filter, the error occurs. This commit ensures that if all layers have 0 remaining quantity, a validation error is raised to prevent the issue. task - [4668497](https://www.odoo.com/odoo/my-tasks/4668497)
Printed documents using the Bubble layout now keep long customer names and document titles properly aligned. This prevents invoice titles from being cropped or misplaced, improving the reliability of customer-facing PDFs.
Original PR description
### Steps to reproduce: - Create a contact with a very very long name - Change the layout of documents to "Bubble" - Create an invoice with the new contact - Confirm and Print - The invoice title is unaligned or cropped ### Cause: The layout is using a flexbox to display the contact and the title on the same level. But flex boxes are not supported by whtmltopdf so the result is random. ### Solution: Use a `table` mimicking the flex display. Before:  After:  opw-4653504
When a manager refuses an employee's overtime, the validated extra hours are now reset to zero. This prevents refused overtime from incorrectly appearing as approved time in attendance records and related reporting.
Original PR description
### Steps to reproduce: - Go to settings, set the overtime of an attendance to be validated by a manager - Go to attendance, create an attendance with an overtime - Worked Extra Hours and Extra Hours are the same - Refuse the overtime - Extra Hours is not 0 ### Cause: This is happening because when computing the overtime validated hours we are just setting it equals to the worked extra hours value when the status of the attendance is to_approve but when it got refused we don't re-compute the value. https://github.com/odoo/odoo/blob/0d0c1bc7c075f49a461c66a433e20b431276ff12/addons/hr_attendance/models/hr_attendance.py#L164-L166 ### Fix: We are overriding the value for the validated overtime hours now when it got refused and set it equals to 0 opw-4675268
Chilean PDF invoices using the boxed layout now display total amounts with the same styling as standard invoices. This prevents totals from appearing in hard-to-read black text on colored backgrounds, making invoices clearer for customers and staff.
Original PR description
## Version:
18.0+
## Issue:
PDF invoices in boxed document layout always display a black font for total amount value only for Chile. This black font is not easily readable for most background colors (incl. standard background).
## Steps to reproduce:
- Navigate to the Settings app:
- Under the `Companies` section, configure the document layout: - Ensure the `Boxed` layout is selected;
- Navigate to the Invoicing app:
- Open any invoice record from `Customers / Invoices`;
- Via the `Actions` gear button, print the `PDF without Payment`.
## Cause:
Template inconsistency compared to standard report template: https://github.com/odoo/odoo/blob/3ebd200a76d490ed97bc164e80ed2837fb2f650f/addons/account/views/report_invoice.xml#L443-L450.
opw-4698105
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes an issue where some customer invoice pages could fail to display when payment installment information was missing. The invoice template now handles missing installment status safely, improving reliability for portal users viewing invoices.
Original PR description
Previously, when installment_state was None,
the template raised an error because None in ('next', 'overdue') is not a valid operation.
This change ensures safe access to installment_state using .get(), preventing potential errors when
the key is missing or its value is None.
**Description of the issue/feature this PR addresses:**
The invoice template was raising an error when installment_state was None, as the condition None in ('next', 'overdue') is invalid.
**Current behavior before PR:**
If installment_state is None, the template crashes due to an invalid comparison.
**Desired behavior after PR is merged:**
The template now safely retrieves installment_state using .get(), preventing errors when the key is missing or its value is None.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prNew trial databases using the Argentine localization could fail during setup when company data was automatically filled with a foreign tax ID. This change prevents the Argentine CUIT identifier from being applied unless the existing tax ID is valid, allowing setup to complete smoothly.
Original PR description
### Steps to reproduce: - Create a new DB on odoo.com/trial with Argentinean localization, and your Odoo email. - After installation, a validation is raised: "Invalid length for CUIT". ### Here is…
### Steps to reproduce: - Create a new DB on odoo.com/trial with Argentinean localization, and your Odoo email. - After installation, a validation is raised: "Invalid length for CUIT". ### Here is what happens: 1. When creating a new company, the enrich function tries to complete data. If you created the database with an `odoo.com` email for example, the Company will be filled with a Belgian VAT. https://github.com/odoo/odoo/blob/5bb57a916d3069cd609e07d401dd3b4c39f85954/addons/partner_autocomplete/models/res_company.py#L23-L28 2. The l10n_ar is then installed, and the CUIT will be set as the default identification. https://github.com/odoo/odoo/blob/9a44bc80a5f8bd1cfcb05a3a9f4abdbd67228488/addons/l10n_ar/models/account_chart_template.py#L37 3. Finally, the validation is triggered by the modification above. Obviously the Belgian VAT is not compatible with the CUIT format, which leads to a User Error. https://github.com/odoo/odoo/blob/4c1d2025118b98e89c131a32d46015d9c6a3b032/addons/l10n_ar/models/res_partner.py#L56-L57 Note: to reproduce in local, you have to add IAP credits. ### Solution: Solution: When installing the l10n_ar package, let's only set CUIT as a default if the validation passes. opw-4609583
This fixes an issue in the HTML editor where selecting text near the top of content could unexpectedly scroll down to a large image. Users can now select the intended text more reliably in task descriptions and other rich text fields.
Original PR description
**Problem**: Scroll was not working properly on selection change. **Solution**: Use the `getBoundingClientRect` of `Range` to calculate scrolling, which is more accurate in this case. Handle edge cases where the range consists only of `br` elements, which have no size or position. **Steps to reproduce**: 1. Go to Project → Task. 2. Type something and press `Shift + Enter` two or three times. 3. Press `Shift + Enter` twice. 4. Add a large image, making the scrollbar appear. 5. Go to the top and try selecting the text. - **Issue**: The scroll automatically moves down to the image every time, preventing selection of the intended text. **opw-4686994** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a point of sale issue where, after validating an order, the system could stay on the Payment screen instead of moving to the Receipt screen. It affects setups using automatic receipt printing with a configured POS printer when receipt preview is not skipped, helping cashiers complete sales without manual navigation.
Original PR description
Before this commit, when automatic receipt printing was enabled, a POS printer was configured, and the "Skip Preview" option was not enabled, the POS remained on the Payment screen after order validation instead of switching to the Receipt screen. opw-4656023 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where some images in emails could appear incorrectly because a common image sizing style was being removed. Emails that rely on fitted images should now render more consistently for recipients.
Original PR description
The 'object-fit' CSS property is currently not whitelisted in the sanitizer, leading to images not being displayed correctly in mails. opw-4655989
Small typo in .po file 'YVotre' => 'Votre' Steps to reproduce: ------------------- * Create an RFQ * Add a vendor with french contact language * Add a vendor reference * Print the pruchase order > Observation: Why the fix: ------------ Typo opw-4677629 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
Small typo in .po file 'YVotre' => 'Votre' Steps to reproduce: ------------------- * Create an RFQ * Add a vendor with french contact language * Add a vendor reference * Print the pruchase order > Observation: Why the fix: ------------ Typo opw-4677629 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Belgian payroll calculations now use the latest FFE rates effective through January 2025. This helps ensure payslips and related payroll accounting stay aligned with current Belgian requirements.
Belgian payroll now excludes employees who started after June 30 from receiving the 13th month bonus when they are not eligible. The tax rate calculation for this bonus is also corrected so payroll can consistently compute the proper withholding amount.
Original PR description
This PR excludes the employees that started after the 30/06 of the 13th month. They are not elligeable as they started more than 6 months before the payment of the bonus. As part of this PR, the computation of the correct tax rate has been fixed. The amount is bounded so that a tax rate can always be computed. task-4583139
This fixes the German Intrastat XML report generation by adding a missing supplementary unit code. It helps ensure the report can be generated correctly and reduces the risk of failed compliance reporting exports.
Original PR description
account_intrastat_report.xml: missing SUCode for xml report generation in l10n_de_intrastat build_error-160011
Fixes issues in Gantt scheduling notifications when tasks with dependencies are rescheduled. Users can now undo schedule changes only when the system has enough information to restore them, and warning messages display correctly instead of causing errors.
Original PR description
## [FIX] web_gantt: make sure orm service is defined in gantt renderer Before this commit, when the user reschedules his task with dependencies by clicking on any arrow displayed in the gantt…
## [FIX] web_gantt: make sure orm service is defined in gantt renderer Before this commit, when the user reschedules his task with dependencies by clicking on any arrow displayed in the gantt connector. A notification is displayed to notify the user the action is done with success, that notification also contains an `Undo` button to let the user to undo the rescheduling made. However, if the user clicks on the undo button, a traceback occurs. The reason is because `orm` service is not defined in the gantt renderer. This commit makes sure the orm service is defined in the gantt renderer to be able to call the `action_rollback_scheduling` method. ## [FIX] web_gantt: don't display undo button if old vals are not given Before this commit, after the `web_gantt_schedule` call was done, a notification is displayed according to the result received by the `web_gantt_schedule` call done. The problem is even if the `old_vals_per_pill_id` is not given when the gantt scheduling has been made with success, the `Undo` button is displayed. The problem is without `old_vals_per_pill_id`, it is impossible to undo the action done, because the initial data before the `web_gantt_schedule` is not known without that data, and so, if the user clicks on `Undo` button a traceback will occur since we cannot retrieve the initial data of the records processed in the `web_gantt_schedule` method. This commit makes sure the `Undo` button is displayed only if we have the information to `undo` the `web_gantt_schedule` method. To know that, the `old_vals_per_pill_id` should be given in the result of `web_gantt_schedule` to be able to revert the changes made by `web_gantt_schedule`. ## [FIX] web_gantt: correctly display warning notification Before this commit, a warning notification was not properly displayed because the method does not return what we expect. Instead of returning the message and notification type, it returns a client action to call `display_notification`. Moreover, the warning notification does not display the right icon, it display `fa-check` instead of `fa-warning`. This commit changes the object returned for the warning to have the expected values returned and changes the icon when the notification is a warning one. task-4687572
This fix ensures migrated Odoo 18 databases correctly populate hazardous material information for Mexican logistics records. It prevents affected customers from being blocked when generating Carta Porte documents due to missing hazardous goods data.
Original PR description
In databases migrated to Odoo 18, that has the module l10n_mx_edi_stock installed the field l10n_mx_edi_hazardous_material remains empty. This issue occurs because the CSV file (product.unspsc.code.csv) assigns the value but the records are no update As a result, customers cannot generate the Carta Porte in the l10n_mx module, encountering the following error: Error 301 (CP155): The attribute "Mercancia:MaterialPeligroso" is missing or invalid when the ClaveProdServ is declared as hazardous. As it was mentioned here: https://github.com/odoo/upgrade/pull/7468 I modified the script to use ir_model_data to link the records and now it's on the carpet migrations of l10n_mx_edi_stock Here is a ticket with an example of the error https://www.odoo.com/odoo/project.task/4577049/action-4665/4631583
Settling a customer's outstanding balance in Point of Sale no longer triggers invoice creation when there are no products involved. This prevents blank-screen crashes in Mexican localization and similar setups that automatically invoice company customers.
Original PR description
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican…
Currently, when settling customer's account using the mexican localization, the session crashes after selecting the payment method. Steps to reproduce: ------------------- * Install the mexican localization and switch to one of the company * Create a new contact of type "Company" * Create an invoice for that contact so that he has a due amount set * Open session * Select the customer and settle due amount * Select any payment method > Observation: Blank screen Why the fix: ------------ Same issue addressed here but at a different place: https://github.com/odoo/enterprise/commit/e1e1abdd23cead2bcd7b8170da28161c3f5b2e15 Cause by the fact that when a customer of type "company" is selected we automatically invoice orders. https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 Instead of going in the same direction of the first fix, we never set `to_invoice` to true when we are settling customer accounts. It's pointless to set invoice to true when settling accounts as it's impossible to create an invoice without any product. This should also benefit localizations that invoice by default every order by bypassing the invoice in that case. opw-4685842