Monday, November 24, 2025
15 changes · master
Resolved issues and error corrections
Uninstalling the Databases module no longer leaves behind a project access rule that refers to removed database fields. This prevents an error during uninstall and helps keep the system stable when customers remove the module.
Original PR description
Currently an error occurs when user uninstalls the `databases` module. **Steps to replicate:** * Install and uninstall databases **Error:** `ValueError: Invalid field project.project.database_hosting…
Currently an error occurs when user uninstalls the `databases` module.
**Steps to replicate:**
* Install and uninstall databases
**Error:**
`ValueError: Invalid field project.project.database_hosting in condition ('database_hosting', '=', False)`
**Root cause:**
* This error happens because when the user installs `databases`, record rule [1] is created by the module and it overrides rule [2]. Later, when databases is uninstalled, rule [1] is still there, but it tries to access the field 'database_hosting' [3], which was removed during the uninstall. Since that field no longer exists, it causes an error.
**Solution:**
* Revert the domain back to the one defined in project module.
[1]:
https://github.com/odoo/enterprise/blob/437f724c182ddf22bd3df9a7e1582ffa4b29e33b/databases/security/databases_security.xml#L43-L46
[2]:
https://github.com/odoo/odoo/blob/9333df06e15134df92efed765cf95db38c0dfede/addons/project/security/project_security.xml#L57-L62
[3]:
https://github.com/odoo/enterprise/blob/437f724c182ddf22bd3df9a7e1582ffa4b29e33b/databases/models/project_project.py#L17-L26
sentry-7035410943
Forward-Port-Of: odoo/enterprise#99987Budget values in accounting reports now show the same rounded amount when viewed and edited. This prevents confusing extra decimal digits from appearing in budget input fields, making report updates clearer for users.
Original PR description
**Issue:** When editing budget values in the Profit & Loss report, users see floating-point precision errors (e.g., 0.999999 instead of 1.00) in the input field, even though the display shows the…
**Issue:** When editing budget values in the Profit & Loss report, users see floating-point precision errors (e.g., 0.999999 instead of 1.00) in the input field, even though the display shows the correct rounded value. **Steps to Reproduce:** 1. Go to Accounting → Reporting → Profit and Loss Report 2. Enable Column Budget 3. Enter budget value: 5.00 4. Save → Value displays correctly as: 5.00 ✓ 5. Click to edit the same cell 6. Input field shows: 5.000000000174602 ✗ (instead of 5.00) 7. Save without changes → Display shows: 5.00 ✓ 8. Edit again → Still shows: 5.000000000174602 ✗ **Root Cause:** The frontend reads from cell['no_format'] when populating the edit input field. This field receives the raw column_value which contains floating-point precision errors accumulated during aggregation operations. While the display formatting applies rounding, the edit mode receives the unrounded value. **Solution:** Round column_value using float_round() immediately after detecting an editable budget column, before the value is used anywhere. This ensures both the display path and edit path receive the same properly rounded value based on the company's currency decimal places. opw-5158862 Forward-Port-Of: odoo/enterprise#98478
Invoice reports now keep section amounts aligned correctly when the Country of Origin column is displayed. This prevents confusing invoice layouts and helps users read totals accurately.
Original PR description
Before this commit when having section and the country of origin column, the amount was is the wrong place. The solution is to add 1 to the line colspan when display origin is set. opw-5333624 Forward-Port-Of: odoo/enterprise#100012
This update removes duplicate internal methods identified by automated code checks. It helps keep the affected HR payroll, salary contract, and expense processing areas easier to maintain, with no expected change for day-to-day users.
Original PR description
found by pylint 4 Forward-Port-Of: odoo/enterprise#100078 Forward-Port-Of: odoo/enterprise#99809
Swiss Federal Tax Administration exchange rates are now saved with the correct publication date instead of a later validity date. This prevents rates from appearing under the wrong day, improving accuracy for companies using Swiss currency rate updates.
Original PR description
Steps to reproduce: - Select exchange service: [CH] Federal Tax Administration (FTA). - Add USD (or other currencies). - Fetch the new rates (click on the reload icon). Issue: Rates are returned for yesterday but stored with today’s date. Cause: The request fetches yesterday’s rates and we store the date using `gueltigkeit` (valid-until). FTA rates are typically valid until the next morning (around 7 AM) or until the next business day on weekends. Example (fetch on Fri 14.11.2025): <gueltigkeit>15.11.2025,16.11.2025,17.11.2025</gueltigkeit> For example, if we fetch on the 14th (Friday), we get this value: <gueltigkeit>15.11.2025,16.11.2025,17.11.2025</gueltigkeit> Solution: Query the FTA endpoint using today’s date and store the rate date from `datum` (publication date) instead of `gueltigkeit`. opw-5189127 Forward-Port-Of: odoo/enterprise#100046
Swiss payroll test coverage was adjusted so it no longer depends on accounting configuration being present. This helps ensure payroll validation and related declarations can be tested more reliably without unnecessary accounting setup requirements.
Original PR description
Forward-Port-Of: odoo/enterprise#99853 Forward-Port-Of: odoo/enterprise#98672
This update fixes how default filing deadlines are configured for multiple country-specific Intrastat and tax return reports. It helps ensure each company uses the correct return deadline settings, reducing configuration errors in localized reporting.
Original PR description
The fields default_deadline_periodicity and default_deadline_days_delay have been added on the return type model because they handle the company dependant property of their associated field, and they are the ones that should be used in the xml. Forward-Port-Of: odoo/enterprise#99793
Spreadsheet version history tiles now use colors with better contrast in dark mode, making past versions easier to read. Related spreadsheet document tests were also updated to match the latest resizing behavior, helping keep the feature reliable after the spreadsheet engine update.
The update corrects an internal test for Belgian SODA accounting imports by ensuring the needed analytic setup is created during the test. This helps keep automated quality checks reliable and prevents false failures in development pipelines.
Original PR description
This https://github.com/odoo/enterprise/commit/e01d865d922d47d8ba1638a48e6d481363fc1f04 introduced an error while running the test without enough analytic accounts. We instead manually create the analytic plan and accounts required for the test. runbot-234353
The VoIP keypad input now uses a better font size when it is empty, so its placeholder text displays correctly. This makes the calling interface clearer and avoids confusing clipped guidance for users entering a number.
Original PR description
In https://github.com/odoo/enterprise/pull/99877, the font size for the Keypad input was fixed to a value suitable for most cases. Still it is problematic when the input is empty: the placeholder is not fully displayed. Here we set an appropriate value for the font size in that later case.
This fixes an issue in the Sign app where a signer could see date placeholders meant for later signers. The change helps keep the signing experience clearer and avoids confusion during multi-signer document workflows.
Original PR description
Version: - saas-18.3 Steps to reproduce: - Add date fields for multiple signers. - When the first signer signs, the date placeholder for the next signer becomes visible to the first signer. Issue: - Date fields for next signers were showing placeholders to the current signer. Fix: - Added a condition to only set the placeholder when it has a valid value. Impact: - Ensures date placeholders are visible only to the correct signer. task-5218970 Forward-Port-Of: odoo/enterprise#100252 Forward-Port-Of: odoo/enterprise#98256
Opening the translation widget for invoice terms and conditions no longer triggers an error when those terms are made translatable by GCC invoice localization. This helps users edit translated invoice text without interruption.
Original PR description
With l10n_gcc_invoice, the narration field on invoice (the Terms & Condition part) becomes translatable. However, when opening the translation widget, a traceback happens as the "fields" (the text-to-fill part) to load don't have a specified name. opw-5269869 Forward-Port-Of: odoo/enterprise#100003
Composite financial reports now apply the analytic grouping filter consistently to their underlying sections. This ensures the filter appears in the interface when enabled, giving users the expected reporting options without extra setup.
Original PR description
When using a composite report whose sections aren't used independently, enabling that filter on the composite report needs to enable it on their sections as well, else it won't show in the UI. This is the standard behavior for all report filters. Forward-Port-Of: odoo/enterprise#100135
This fixes an internal payroll accounting test so it uses the right company when checking account-related partner settings. It helps ensure Belgian payroll accounting remains reliable in multi-company situations, reducing the risk of incorrect accounting configuration going unnoticed.
Original PR description
We are now testing for consistency between the company properties set on partners related to accounting values. opw-5127901 Forward-Port-Of: odoo/enterprise#100192
This update prevents an error when Stripe webhook events include virtual cards with no shipping details. It helps expense card events process reliably instead of failing on missing shipping information.
Original PR description
Add a fix to a pattern of error found in webhook events where virtual cards whose shipping value is "None" would be accessed as dict Forward-Port-Of: odoo/enterprise#100291