Daily updates from Odoo
Monday, September 22, 2025
12 changes · saas-18.2
Resolved issues and error corrections
The trial balance period comparison now calculates end balance columns correctly for Profit and Loss accounts, using only the latest displayed year instead of adding prior years together. This prevents misleading balances and keeps previous years' amounts in the appropriate unaffected earnings account, improving financial report accuracy.
Original PR description
When activating the period comparison with the trial balance, the end balance columns used to sum the values of the displayed periods, which should not be the case for Profit and Loss accounts. Indeed, only the last displayed year should be used in the end balance, while the previous years' amount must be displayed in the unaffected earnings account. We used to optimize the query by computing in python the end balance on some conditions (for example analytic groupby filter). This wasn't actually totally working, for example the end balance columns used to display amounts in both debit and credit columns. This optimization is no longer possible since the P&L accounts of the previous fiscal years need to be displayed in the unaffected earnings account. task-4728887 Forward-Port-Of: odoo/enterprise#94600
This fixes incorrect Spanish translations for Peruvian electronic invoicing and stock-related tax/shipping codes. Users working in Spanish will see clearer, more accurate tariff and withholding labels, reducing confusion in local compliance workflows.
Original PR description
## Issue: The latest `tariff_fraction` entries were not properly translated into Spanish There were also inconsistencies in the translation of some `withhold codes` ## Cause: The `.po` and `.pot` files were not correctly populated In addition, the translation of "Others" in `l10n_pe_withhold_code` conflicted with `l10n_pe_edi_reason_for_transfer__13`, because the `msgid` is the same but not the `msgstr` should be different opw-4741731 Forward-Port-Of: odoo/enterprise#95019 Forward-Port-Of: odoo/enterprise#92758
This fixes errors in Danish minimal financial reports where extra signs caused incorrect values to be processed. Report labels and translations were also cleaned up so the reports are clearer and more consistent for users.
Original PR description
In the minimal reports of l10n_dk, it appears that some expression ended with a sign and the report engine was given wrong value. This commit will remove the extra sign to correct the report and also remove the letter or number before the name. This commit will remove the extra sign to correct the report and also remove the letter or number before the name. This commit will change the translation accordingly to the other commits task-4949062 Forward-Port-Of: odoo/enterprise#91135
A mislabeled language code in the Dutch balance sheet report has been corrected. This helps ensure the right translated term appears in financial reporting, reducing confusion for users viewing localized reports.
Original PR description
One term in the Dutch balance sheet was having the `nl` language code instead of `de`. This commit corrects that.
Bank synchronization now avoids importing or creating entries on dates that are protected by an accounting lock date. This prevents bank transactions and opening balances from being placed on incorrect dates, helping preserve accurate financial records after connecting a bank feed.
Original PR description
If you have a company with a lock date set, and you connect a bank that has transactions dated to the day of the lock date, these transactions will be fetched, which do not make sense because nothing…
If you have a company with a lock date set, and you connect a bank that has transactions dated to the day of the lock date, these transactions will be fetched, which do not make sense because nothing should be created in a period covered by a lock date. As a result, these transactions would be created at a wrong date (if the current month is the first after the lock date or if the sequence has a monthly reset, then they would be appended to the current month, else if the sequence reset annually, then they would be created at the current date). Additionally, the potential opening balance would be created at a wrong date too, since it would try to create it one day prior to the oldest transaction. The date which the opening balance is created would not be the same as the transactions above, which adds a layer to the mess created. To prevent this, at initialization, we set the last sync date one day after the lock date, not the same day. As for the opening balance, we do not try to set it one day prior to the oldest transaction, but the same day. The `internal_index` computed will ensure it is displayed as the first transaction of that journal. Finally, the test related to statement creation were adapted to this new behavior. Some ordering based on `date` in other tests were changed to `internal_index` to unify the test file with these changes. opw-4890538 Forward-Port-Of: odoo/enterprise#94648 Forward-Port-Of: odoo/enterprise#93543
The Spanish Mod347 tax report now includes withholding taxes when calculating report totals. This prevents understated figures for affected customer or supplier transactions, helping businesses submit more accurate tax reporting.
Original PR description
Withholding taxes should be taken into account in mod347 tax report. Steps: - Create a bill for a spanish customer - Set the amount of 40000, tax 21% and 15% withholding tax - Go to mod347 tax report -> Line "B - Sales of goods and services greater than 3.005,06 €" is showing 42,400.00 instead of 48,400.00 (same goes for other lines with similar configuration) Before this commit, custom engines domains were only including aml with payable or receivable account. With this commit, we include tax lines that are of type 'retencion' in the custom engines domains. opw-4448662 Forward-Port-Of: odoo/enterprise#94338
Single-company databases can now find and merge duplicate records even when those records have different company values. This prevents missed duplicates and helps keep customer or business data cleaner without requiring multi-company settings.
Original PR description
**Issue** In single company databases, it wasn't possible to find duplicate records with different `company_id` values to merge them (in multi company databases, it is possible to enable the "Cross-Company" option on the deduplication rule). **Change** Always ignore the company field in single company databases. opw-4794408 Forward-Port-Of: odoo/enterprise#94797 Forward-Port-Of: odoo/enterprise#93184
The project timesheet forecast reports now apply date filters consistently for users in different time zones. This prevents records from being incorrectly included or excluded by one day, improving report accuracy for planning and review.
Original PR description
This commit fixes the timezone issues with the Date filters, in which we were comparing a UTC DateTime value to a local timezone's Date. In certain timezones, this leads to off-by-one errors in the records fetched from the DB, depending on how far ahead or behind UTC that timezone is. Specifically, we remove the UTC conversion within the filter domains. opw-5068870 Forward-Port-Of: odoo/enterprise#94032
This fix ensures that changes made to the Time Spent field in the timesheet list view remain visible when users move focus away with Shift+Tab. It prevents newly entered or edited time values from appearing to revert, reducing confusion and helping users trust that their timesheet updates are preserved.
Original PR description
Steps to reproduce: ----------------- 1. Go to Timesheet → My Timesheet → List View → New OR Edit already filled time. 2. Change time in the Time Spent field. 3. Press Shift + Tab. Observation:…
Steps to reproduce: ----------------- 1. Go to Timesheet → My Timesheet → List View → New OR Edit already filled time. 2. Change time in the Time Spent field. 3. Press Shift + Tab. Observation: ----------------- The focus changes, but the Time Spent field reverts to its old value instead of keeping the newly entered one. Issue: ----------------- - For new records, the component retrieves the value only from the state, which is updated in the `onWillUpdateProps` lifecycle. This lifecycle triggers only on saving or editing, not when simply changing focus. https://github.com/odoo/enterprise/blob/e14b991927df14f41535e92dd01ea2ecac44a404/timesheet_grid/static/src/components/timesheet_display_timer/timesheet_display_timer.js#L123-L128 - The same behavior occurs when editing existing records, leading to incorrect value display. https://github.com/odoo/enterprise/blob/e14b991927df14f41535e92dd01ea2ecac44a404/timesheet_grid/static/src/components/timesheet_display_timer/timesheet_display_timer.js#L31-L33 Solution: ----------------- - For new records, since the default value is 0, the fix makes the component fall back to the updated record value if the state value is not yet available. - For existing records, if the timer is running, the timer’s value is displayed. otherwise, the component falls back to the updated record value. opw-4922847 Forward-Port-Of: odoo/enterprise#94729
The point of sale payment screen now correctly prevents validation on mobile when no payment method is selected. This helps avoid incomplete or invalid payment flows for staff using mobile devices.
Original PR description
- Fix issue where the `Validate` button (in the payment screen) was not correctly disabled on mobile devices when no payment methods was selected. community PR: https://github.com/odoo/odoo/pull/225917 task-id: 5072759 Forward-Port-Of: odoo/enterprise#94100
The Planning app now shows only the hours that belong to the selected week when a flexible employee's shift spans multiple weeks. This prevents overstated progress bars in the weekly Gantt view and gives managers a more accurate view of allocated time.
Original PR description
### Steps to reproduce: - Install Planning app - Create a shift for a flexible employee that starts on Friday and end on the following Tuesday for example - Go to the gantt view for the week that the shift should start at - Notice the progress bar is showing the whole allocated hours not just the week's hours ### Cause: This mainly happening because when the employee is flexible we are getting the value by multiplying the hours_per_day of his schedule by the period.days and the period is the shift period ### Fix: We use the interval we are just checking as the period now so if the shift is extended to the next week we are just going to use the end of the week as the interval end not the shift's end_datetime opw-5022800 Forward-Port-Of: odoo/enterprise#93404
Point of Sale sessions using Worldline terminals now continue receiving cancellation confirmations even if the browser page was refreshed during payment. This prevents orders from getting stuck and adds clearer error messages for payment terminal issues.
Original PR description
This PR fixes a bug where the point of sale didn't receive notifications from the Worldline payment terminal for the cancellations if the browser webpage was refreshed How to reproduce: 1. Open a POS session with Worldline terminal 2. Send a transaction to the terminal 3. Refresh the browser webpage before paying 4. Click on "Cancel" on the POS screen --> your order will be stuck and never receive the confirmation This PR removes the check for the iot longpolling action identifier which changes on refresh of the webpage + adds more error messages for Worldline terminals Related PR in >= saas-18.3: https://github.com/odoo/enterprise/pull/94629 task-5075860 Forward-Port-Of: odoo/enterprise#94670 Forward-Port-Of: odoo/enterprise#94635