Wednesday, May 28, 2025
13 changes · 18.0
Resolved issues and error corrections
When users edit an existing review, the popup button now changes to clearly show that they are updating the review. This removes confusion in the review editing flow for portal and eLearning course pages.
Original PR description
**Before this PR:** The button label in the popup does not update when a user tries to edit a review. **Technical**- The button label updates only during the widget initialization, as it is handled in the willStart function. https://tinyurl.com/2derk498 **After this PR:** The button label in the popup correctly updates to 'Update Review' when a user edits a review. **Task**-4677251
This fix prevents an error when loading Attendances sample data after a previously referenced employee was deleted. It ensures the related HR skills sample data can load correctly, helping users set up or test HR modules without interruptions.
Original PR description
Currently, an error occurs when loading sample data for **Attendances** if a referenced employee record has been deleted by the user. **Steps to reproduce:** - Install the `hr_appraisal` module…
Currently, an error occurs when loading sample data for **Attendances** if a referenced employee record has been deleted by the user.
**Steps to reproduce:**
- Install the `hr_appraisal` module without demo data.
- Load sample data for **Appraisals**.
- Navigate to **Employees** and delete record for **Emma Granger**.
- Install `hr_attendance` module and load sample data for **Attendances**.
- Observe the error.
**Error:**
`ValueError - ParseError('while parsing /home/odoo/src/odoo/saas-18.2/addons/hr_skills/data/scenarios/hr_skills_scenario.xml:209, ...`
The error occurs because the method at [1] tries to load the `hr_skills_scenario.xml` file, which references a deleted `employee_id` [2], resulting in a parsing failure.
[1] - https://github.com/odoo/odoo/blob/547327f30d2d4bf778b9d358dbea4b133d55188a/addons/hr_skills/models/hr_employee.py#L49
[2] - https://github.com/odoo/odoo/blob/5c1db495828a7fe8c6ec987de432b1916ad32922/addons/hr_skills/data/scenarios/hr_skills_scenario.xml#L210
This commit ensures that all the referenced data is loaded properly, preventing errors due to missing references.
Sentry - 6426462322This update prevents an error when a user enters a VAT number on a new customer record before saving it. It keeps the customer form usable by safely handling missing commercial partner information until the record is saved.
Original PR description
Currently, An error occurs when adding a `vat` number in res_partner form view without saving a record. Steps to produce: - Install the `account` and `web_studio` modules - Create a customer, Add field name 'commercial_partner_id' in customer form view. - Enter a `VAT` number and click anywhere in the form view before saving the record. `ValueError: Expected singleton: res.partner()` An error occurs when the system is attempts to access a value of `commercial_partner_id` at [1], but it is not available. Link 1: https://github.com/odoo/odoo/blob/c87acdcfa48b1d8aa66bb5d27d58e3edb70a86ba/addons/account/models/partner.py#L670 To prevent this error, add a condition to check if value of `commercial_partner_id` is not available. then set `invoice_edi_format` to False. Sentry-6383383350 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now export attachment file content in XLSX format without hitting an error screen. This corrects a broken internal reference introduced by a prior rename, improving reliability of the export workflow.
Original PR description
When the user tries to export a file of attachment in xlsx format, A traceback will appear. Steps to reproduce the error: - Open attachments > Upload a file that does not contain base64-encoded content - Select that file > Actions > Export > Export Format: XLSX > Add File content(raw) field > Export Traceback: ``` AttributeError: 'ExportXlsxWriter' object has no attribute 'field_names' ``` In this commit: https://github.com/odoo/odoo/commit/a4e04518a437f09d6a10e25a35900c4adfe11dc6 ``field_names`` is renamed to ``fields``. https://github.com/odoo/odoo/blob/0e98b684834cf9e1d646e55599e7bc00aa5997f0/addons/web/controllers/export.py#L231 Here, ``field_names`` is still used. So, it will lead to the above traceback. sentry-6096581800 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Corrected a spelling mistake in the UrbanPiper product label from “Is Alchoholic” to “is Alcoholic.” This improves clarity and professionalism in product information shown or managed through the point-of-sale integration.
Original PR description
In this commit: --------------- - Corrected the label from `Is Alchoholic` to `is Alcoholic`. task- 4826438
This fix prevents an error when creating a Mexican payroll payslip if the period end date is removed. Payroll users can continue preparing payslips without the screen failing due to missing date information.
Original PR description
The system failed to retrieve `worked_days.payslip_id.date_to` because user remove end period Steps to Reproduce: 1. Switch to `My Mexican Company`. 2. Go to Payroll > click Payslips > To Pay > Click New 3. Select Employee from the selection 4. Remove end date from period (Right One). Error: `TypeError: unsupported operand type(s) for -: 'bool' and 'datetime.date'` Solution: Ensure that if worked_days.payslip_id.date_to, start_date, end_date are not present then continue the flow Sentry - 6473512002
Miscellaneous changes
Steps to reproduce =================== 1. Install l10n_pe or l10n_se 2. Switch to the newly installed company. 3. Open the contact form. The address fields are misaligned. Technical ========== With commit https://github.com/odoo/odoo/commit/4dd27bba346e50f40769d1412fbca0b5f65bb5a6, the contact form renders address fields dynamically based on the selected country. The `_view_get_address` method in the `format.address.mixin` replaces the default address `div` with the XML arch of the vi
Original PR description
Steps to reproduce =================== 1. Install l10n_pe or l10n_se 2. Switch to the newly installed company. 3. Open the contact form. The address fields are misaligned. Technical ========== With commit https://github.com/odoo/odoo/commit/4dd27bba346e50f40769d1412fbca0b5f65bb5a6, the contact form renders address fields dynamically based on the selected country. The `_view_get_address` method in the `format.address.mixin` replaces the default address `div` with the XML arch of the view linked in the current company's `address_view_id` field. Since this arch is wrapped within the `<form>` tags, the JS framework adds an extra div element and `o_form_nosheet` class, causing layout misalignment. After this commit ============== This commit only includes address `div` element inside the `<form>` tag. Task-4744412 Forward-Port-Of: odoo/odoo#208965
Before this commit: - A warning was shown in the TDS payment wizard when the base amount used for TDS calculation was greater than the amount being paid. - However, this warning was misleading, as the TDS base amount can exceed the paid amount. After this commit: - The warning has been removed from the TDS payment wizard. task-4787113 Forward-Port-Of: odoo/odoo#209823
Original PR description
Before this commit: - A warning was shown in the TDS payment wizard when the base amount used for TDS calculation was greater than the amount being paid. - However, this warning was misleading, as the TDS base amount can exceed the paid amount. After this commit: - The warning has been removed from the TDS payment wizard. task-4787113 Forward-Port-Of: odoo/odoo#209823
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be converted to tables — but since `o_text_columns` is not included in the selector query, the transformation is skipped. As a result, when rendering the email, columns are not preserved and fall back to stacked layout. Solution: Update the container selection logic to include `o_text_columns` w
Original PR description
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be…
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be converted to tables — but since `o_text_columns` is not included in the selector query, the transformation is skipped. As a result, when rendering the email, columns are not preserved and fall back to stacked layout. Solution: Update the container selection logic to include `o_text_columns` when querying Bootstrap-based containers that need to be transformed into tables. Steps to reproduce: 1. Go to Email Marketing. 2. Create a new email. 3. Add a Text snippet. 4. Type `/col` and choose "2 Columns". 5. Add text to both columns. 6. Save and send the email. → In the received email, the two columns appear stacked vertically instead of side by side. opw-4675310 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211109
[FIX] survey: allow survey print without answers Issue --- Previously, printing a survey with access mode set to "invited people only" required an existing `survey.user_input` record. Without it, the print route failed silently and redirected to the homepage. FIX --- This commit allows surveys to be printed without answers. It introduces an option to bypass the "token_required" validity check by allowing `ensure_token='survey_only'`. This skips token validation specifically for th
Original PR description
[FIX] survey: allow survey print without answers Issue --- Previously, printing a survey with access mode set to "invited people only" required an existing `survey.user_input` record. Without it, the…
[FIX] survey: allow survey print without answers Issue --- Previously, printing a survey with access mode set to "invited people only" required an existing `survey.user_input` record. Without it, the print route failed silently and redirected to the homepage. FIX --- This commit allows surveys to be printed without answers. It introduces an option to bypass the "token_required" validity check by allowing `ensure_token='survey_only'`. This skips token validation specifically for the print route, while preserving it for the start route. Reproduce --- - -i survey - create new Survey, with "Access Mode": "invited people only" - click "Print" BUG -> taken to the odoo main page, instead of empty printed survey opw-4292331 --- --- # LEGACY notes BELOW --- ### [FIX] survey: allow survey print without answers When we set access mode to token, we need to have existing registration `survey.user_input` to print the survey. After this commit existing answer is not required anymore #### Reproduce - -i survey - create new Survey, with "Access Mode": "invited people only" - click "Print" BUG -> taken to the odoo main page, instead of empty printed survey opw-4292331 --- #### Note on other solutions Initially explored approach was just to add a set of dummy/test answers [FIX] survey: create empty answer when token access set ... to allow general print of the survey. When we set access mode to token, we need to have existing registration `survey.user_input` to print the survey. This commit suggest solution similar to the one existing in survey_test, so if we create test answer to use it. Reproduce --- - -i survey - create new Survey, with "Access Mode": "invited people only" - click "Print" BUG -> taken to the odoo main page, instead of empty printed survey Def --- What I refer to as "General print" of the survey is a request to print survey without answer_token. This is currently possible to request from the form view of the survey.survey  opw-4292331 Forward-Port-Of: odoo/odoo#189738
Trigger an onchange requiring res_model_id to be returned. Before this commit, there was an error because the dependency field "res_model" was False and injected into a function that required it not to be. After this commit, there is no crash. runbot-error-223466 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 F
Original PR description
Trigger an onchange requiring res_model_id to be returned. Before this commit, there was an error because the dependency field "res_model" was False and injected into a function that required it not to be. After this commit, there is no crash. runbot-error-223466 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#211696
After a recent change in German EDI, the data exported in CSV from the EC Sales List can no longer be uploaded because the expected structure has changed Steps to reproduce (with a DE Company): - Make an invoice to an EU Partner - Open EC Sales List - Export CSV When uploading the file on the Elster portal it will be rejected with an explicit error message, saying that we're using an old CSV format now deprecated, and prompts the user to refer to the new specifications Original mes
Original PR description
After a recent change in German EDI, the data exported in CSV from the EC Sales List can no longer be uploaded because the expected structure has changed Steps to reproduce (with a DE Company): -…
After a recent change in German EDI, the data exported in CSV from the EC Sales List can no longer be uploaded because the expected structure has changed Steps to reproduce (with a DE Company): - Make an invoice to an EU Partner - Open EC Sales List - Export CSV When uploading the file on the Elster portal it will be rejected with an explicit error message, saying that we're using an old CSV format now deprecated, and prompts the user to refer to the new specifications Original message: Ihre CSV-Datei wurde für eine ältere Version der CSV-Schnittstelle erstellt. Bitte informieren Sie sich in der Versionstabelle der Importhilfe über die aktuellste Version der Schnittstelle sowie Änderungen. Sind die Versionsangaben korrekt, prüfen Sie bitte das Encoding Ihrer CSV-Datei. Das zulässige Encoding ist UTF-8. Sources: https://www.elster.de/eportal/helpGlobal?themaGlobal=zmdo_import_eop https://www.datev-community.de/t5/Betriebliches-Rechnungswesen/Import-CSV-Daten-nacvh-Elster-f%C3%BCr-ZM/td-p/480079 opw-4751667 opw-4674533 Forward-Port-Of: odoo/enterprise#85992
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Refere
Original PR description
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Reference: [Reglas de Validación actualizado al 21/04/2025 (Nuevo)](https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx) Forward-Port-Of: odoo/enterprise#85917