Monday, October 6, 2025
15 changes · 18.0
Resolved issues and error corrections
Belgian 325 form PDF exports no longer fail with a server error when there are no 281.50 forms to include. Users now see a clear message explaining that they need to record a transaction with a 281.50 tag before generating the PDF.
Original PR description
### Problem When clicking **"Export PDF"** on a 325 form that has **no generated 281.50 forms**, Odoo raised a **server error**: This happened because the method assumed that at least one attachment…
### Problem When clicking **"Export PDF"** on a 325 form that has **no generated 281.50 forms**, Odoo raised a **server error**: This happened because the method assumed that at least one attachment would always be generated, even if no eligible transactions were present. --- ### Steps to Reproduce 1. Go to **Accounting → Reporting → 325 Form**. 2. Create a 325 form for a year without any transactions on accounts tagged with **281.50**. 3. Do not generate any 281.50 forms (`form_281_50_ids` is empty). 4. Click **Export PDF**. **Result before fix:** - Crash with `IndexError: list index out of range`. --- ### Solution - Added a safeguard check before accessing attachments. - If no attachments exist, raise a **UserError** instead of crashing. **New behavior:** > *“No 281.50 lines found to generate a PDF. Please record a transaction with a 281.50 tag first.”* This gives users a instruction on how to resolve the issue. --- ### Result After Fix - **User error message** replaces traceback. - **Normal behavior preserved** when attachments exist: - One file → direct download. - Multiple files → zipped download. --- task-5090120 Forward-Port-Of: odoo/enterprise#94877
The accounting dashboard’s drag-and-drop upload buttons and drop zones now use theme-aware backgrounds instead of fixed grey colors. This improves visual consistency and readability for users working in both light and dark modes.
Original PR description
Current behavior before PR: - Drag & drop buttons and upload drop zones of dashboard cards had hardcoded backgrounds (#F2EDF0 / grey), which did not adapt to dark mode. Desired behavior after PR is merged: - Removed hardcoded background colors from drag & drop button and upload drop zone cards on dashboard and updated their background to adapt in light & dark modes. Changes implemented: - Removed hardcoded background color (`#F2EDF0`) from `account_drag_drop_btn` & `drag_to_card` CSS classes. - Removed overriding background-color property from `o_drop_area` CSS class. - Updated background-color of `o_drop_area` in `o_account_dashboard_kanban_view` CSS class to `o-view-background-color`. task-5092460 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change prevents Odoo Studio from crashing when users remove calendar settings such as the color field. Empty values are now handled correctly instead of being treated as invalid field names, making view customization more reliable.
Original PR description
On a calendar with studio, try to remove the "color" attribute, or any other that should contain the name of a field. Before this commit there was a crash because the value sent to the server in this case is `undefined` (`null` in JSON or `None` in python), which was stringified and yielding an actual string that was not a field name After this commit, NULL values are not stringified, instead they should represent the emptiness of the attribute. opw-4938351 Forward-Port-Of: odoo/enterprise#95439
The website cookie policy page now links to the current Google Analytics 4 cookie documentation instead of an outdated Universal Analytics page. This ensures visitors and website administrators can access valid privacy information when reviewing analytics cookie details.
Original PR description
The previous URL for Google Cookie usage pointed to the legacy Universal Analytics page, which is no longer available since July 1, 2024. Steps to reproduce: 1. Go to Website Settings and enable the Cookies Bar. 2. Visit /cookie-policy on the website. 3. Click on the link "Analytics cookies and privacy information." 4. Observe that the page is no longer available. This commit updates the link to point to the current Google Analytics 4 documentation, ensuring users can access the correct cookie policy information. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229594
The HTML editor now selects a table cell only when all of that cell's content is actually selected. This prevents accidental full-cell selection while users are dragging from text inside a table, making editing tables more predictable.
Original PR description
Current behavior before PR: - Create an m x n table. - Write some text in a cell. - Put cursor at the end of text. - Try to select cell by moving mouse rightwards. Notice that the cell is selected although the cell content is not fully selected. Desired behavior after PR: This PR backports commit [1] to ensure that single cell is selected only if the cell content is fully selected. [1]: https://github.com/odoo/odoo/commit/09d369e118f622f30149f46702f58c656a3cee04 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a PDF formatting issue where worksheet row heights and alternating row styling were not applied in Field Service Reports. Reports should now be easier to read and more consistent when printed, including for worksheets created before the fix.
Original PR description
**Steps to reproduce:**
- Install `industry_fsm_report`
- Create a task and add a worksheet
- Print the Field Service Report
**Issue:**
The worksheet row height is not applied in the PDF
**Cause:**
The `bg-light` class does not work in wkhtmltopdf
**Fix:**
Added SCSS to set the background color and border for odd rows in the worksheet PDF
**Technical:**
**Why we didn’t add the style via Python:**
Worksheets created before this commit already have the old class applied, so adding the style through Python would not affect them.That’s why the fix done using SCSS.This fix makes HR-related modules check whether certain menus still exist before trying to use them. It prevents upgrade or testing failures in databases where those menus were deleted, improving reliability without changing normal user workflows.
Original PR description
To Reproduce: 1) make a database in 16.0 and go to developer mode. 2) Delete the menus 3) I mocked the views with upgrade mockcrawler. it failed for these xmlids: ``` hr_attendance.menu_hr_attendance_attendances_overview hr_timesheet.timesheet_menu_activity_use hr.menu_hr_employee ``` but we should have a check anyways. 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#219926 Forward-Port-Of: odoo/odoo#215426
Contacts in the Dominican Republic can now use valid 11-digit Cédula tax numbers without being rejected. This fixes VAT validation so both standard business RNC numbers and personal Cédula numbers are accepted where appropriate.
Original PR description
**Issue** When inputting a VAT number with a length different from 9 digits, the check fails, even if the number is a valid Dominican RNC. **Steps to Reproduce** 1. Install Dominican localization and the VAT check module (base_vat), along with Contacts. 2. Go to Contacts, create a new contact for the Dominican Republic. 3. Insert "152-0000706-8" as the VAT. **Root Cause** The `check_vat_do` method only validated 9-digit RNC numbers via `stdnum.do.rnc.validate()`. 11-digit Cédula numbers are not supported. **Fix** - Updated `check_vat_do` to: * Validate 9-digit RNC numbers using `stdnum.do.rnc.validate()`. * Validate 11-digit Cédula numbers using `stdnum.luhn.validate()`. Opw-5004221 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224507
Belgian EC sales reports now handle VAT numbers even when users entered them without the BE country prefix. This prevents incorrect trimming of the VAT number and helps produce accurate Belgian reporting data.
Original PR description
It could happen that the user set his vat number without the country code before the number. In this case, we removed the two first digits of the vat number. Also changing other occurrence using the company_vat to get the country, since we are in the belgian ec sale list, the country_code should be 'BE' everytime task-5039969
This update adds automated test coverage for a batch payment bank reconciliation issue linked to a prior fix. It helps reduce the risk of the same accounting workflow problem returning in future releases.
Original PR description
Add test for PR opw-5057109
This fixes an unreliable automated test for bus notifications that could fail depending on how notifications were grouped. The change helps keep Odoo's quality checks stable and reduces false failures in development pipelines.
Original PR description
This commit fixes the `test_postcommit` that fails in a non deterministic fashion. This test ensures bus notifications created in the post commit hook result in only one batch. However, the listener only consider the first notification of the batch (`conn.notifies.pop()`) and ignore the rest. When the expected notifications come as part of a bigger batch, they can be ignored thus making the test fail. This commit ensures we read every notification received. fixes runbot-233185 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#230054
This fixes an intermittent failure in an automated test for signed document cleanup. It adds a small time buffer so test records are consistently old enough to be removed, improving reliability without changing user-facing behavior.
Original PR description
Steps to reproduce
==================
Launch the test `test_gc_clear_bin` a few times
It will eventually fail:
documents.document(544,) is not false :
trash document should be deleted after gc_clear_bin
Cause of the issue
==================
The domain for wether a record should be deleted contains `('write_date', '<=', fields.Datetime.now() - relativedelta(days=deletion_delay)`
The tests fails when the write_date is in the same second as the test run.
This is because fields.Datetime.now() replaces microseconds by 0.
https://github.com/odoo/odoo/blob/14073faf1fa272b8d3411b4fe6f42c279058459d/odoo/fields.py#L2378
Solution
========
Since records needs to be at least "deletion_delay" old, we add a margin of 30 seconds to make sure they match
runbot-224207Documentation and clarification updates
The contribution agreement record for ForgeFlow has been updated in the project documentation. This keeps the legal contributor information current and supports ongoing compliance for the Odoo project.
Miscellaneous changes
Added a mapping for EU VAT country codes to ensure that the VAT prefix aligns with EU standards (e.g., 'GR' -> 'EL') in EDI exports. ## Description of the issue/feature this PR addresses: This PR adds country code mapping functionality to ensure compatibility with the format required by the Romanian eTransport system. Specifically, it adds the conversion of the country code "GR" (Greece) to "EL" according to European VAT standards and applies this mapping to relevant fields in transport do
Original PR description
Added a mapping for EU VAT country codes to ensure that the VAT prefix aligns with EU standards (e.g., 'GR' -> 'EL') in EDI exports. ## Description of the issue/feature this PR addresses: This PR…
Added a mapping for EU VAT country codes to ensure that the VAT prefix aligns with EU standards (e.g., 'GR' -> 'EL') in EDI exports. ## Description of the issue/feature this PR addresses: This PR adds country code mapping functionality to ensure compatibility with the format required by the Romanian eTransport system. Specifically, it adds the conversion of the country code "GR" (Greece) to "EL" according to European VAT standards and applies this mapping to relevant fields in transport documents. ## Current behavior before PR: Before this PR, the country code for Greece was sent as "GR" to the eTransport system, which could cause validation errors because in European VAT systems, Greece is identified by the code "EL". Also, there was no consistent mapping for country codes in different parts of the system. ## Desired behavior after PR is merged: After implementing this PR, country codes will be correctly mapped to comply with European VAT standards, especially the conversion of "GR" to "EL" for Greece. This ensures that documents sent through eTransport contain the correct country codes and will pass system validations. The mapping is applied to country codes for both commercial partners and transporters. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214621
Fixes a typo in the i18n directory. no task-id
Original PR description
Fixes a typo in the i18n directory. no task-id