Daily updates from Odoo
Monday, August 10, 2026
14 changes · master
Resolved issues and error corrections
TikTok Shop orders that arrive without a payment timestamp, such as Cash On Delivery orders, can now be created and synchronized instead of failing. The system temporarily uses the order creation time and marks payment as pending, then updates the order once TikTok provides the payment confirmation time.
Original PR description
**Issue**
- TikTok Shop orders may be received without any `paid_time` value in the returned API data, particularly for _Cash On Delivery ([COD](https://seller-ph.tiktok.com/university/essay?knowledge_id=10004482&lang=en)) payments.
- When creating the order, `_create_order_from_data` accessed `order_data[‘paid_time’]` directly, which triggered a `KeyError` and prevented all orders from being fully synchronised.
**Changes**
- When creating an order, if `paid_time` is missing from the data provided by TikTok:
-> `date_order` is initialised with `create_time` as a fallback
-> The new field `tiktok_payment_pending` is set to `True` to mark the order as awaiting payment confirmation.
- During subsequent synchronisations, if `paid_time` is now provided by TikTok for a pending order,
-> `date_order` is updated with the new provided timestamp and the `tiktok_payment_pending` flag is reset.
opw-6440127
Forward-Port-Of: odoo/enterprise#126797The UAE payroll employee profile now restricts the MOHRE skill level field to HR users only. This prevents non-HR employees from seeing HR-specific information on public employee profiles and resolves the reported access issue.
Original PR description
add group `hr.group_hr_user` to `l10n_ae_mohre_skill_level` to make sure it's hidden for non-hr users in the public employee profile fixes https://runbot.odoo.com/odoo/error/242024 opw-242024 Forward-Port-Of: odoo/enterprise#125452
Tax return deadline dates in account report emails are now shown using the recipient's locale settings. This prevents confusion caused by unfamiliar date formats and makes deadline communications clearer for international users.
Original PR description
The date was not formatted according to the user's locale. Forward-Port-Of: odoo/enterprise#127317
Belgian payroll now calculates employment bonuses correctly for both full-time and part-time employees. This improves payroll accuracy and helps align payslips and social security reporting with official Belgian guidance.
Original PR description
[IMP] l10n_be: fix the calculation of employement bonus A According to the document: https://www.socialsecurity.be/employer/instructions/dmfa/fr/latest/instructions/deductions/workers_reductions/workbonus.html We were calculating the employement bonus A according to S = (W/H) x U calculation in the document. But it is only for part-time workers. Now, we consider full time cases as well and the final result is accurate. task - 6334065
The EPF Summary report now calculates EPS contributions based on basic salary, in line with Indian payroll rules. This helps payroll teams avoid incorrect statutory contribution amounts in reporting.
Original PR description
**Steps to Reproduce** - Create an Indian employee. - Create a payslip for this employee. - Go to **Payroll > Reporting > EPF-ECR Report**. - Create a new report with the report type **EPF Summary**. **Before This Commit** - For the EPS contribution, we were calculating `min(15,000, EPF)` and then applying **8.33%** to the resulting amount. - This resulted in an incorrect EPS contribution amount. **After This Commit** - According to Indian payroll rules, the EPS contribution is calculated as 8.33% of `min(15,000, Basic Salary)`, rather than `8.33% of the EPF amount`. - This commit corrects the EPS contribution calculation accordingly. Task: [6442399](https://www.odoo.com/odoo/project/1251/tasks/6442399) Forward-Port-Of: odoo/enterprise#126608
Activity Watch can now use a task ID captured directly from a configured rule pattern, such as one found in a page URL or window title. This makes timesheet suggestions more accurate when the task is already visible in the activity name, reducing reliance on less precise guessing from past activity.
Original PR description
Before this commit, when the task_id to link to activity watch can be found in the URL or window/tab name but it is not possible for the user to create a regex to be able to automatically say to the system the task_id is found in the event name recorded by activity watch. This commit adds the possibility to define `task_id` group name inside the regex to be able to take that information instead of searching which task is linked to that event based on previous key event or the frequency of the current user. task-[6384029](https://www.odoo.com/odoo/project.task/6384029) Forward-Port-Of: odoo/enterprise#126588 Forward-Port-Of: odoo/enterprise#124113
This update makes a small correction in the referenced module to improve reliability. The pull request details do not provide enough information to identify the specific business process affected, so the expected impact appears limited.
Automatic values inserted into salary contract and signature documents now keep valid zero values instead of turning them into blanks. Decimal values are also rounded properly, helping business documents show accurate amounts.
Original PR description
Before this commit, falsy values were always set to '' even when they corresponded to numbers. Moreover, floats values were not rounded. Forward-Port-Of: odoo/enterprise#127064 Forward-Port-Of: odoo/enterprise#121640
This fix makes cash basis report tests use the configured outstanding receipts account instead of assuming a fixed account code. It helps prevent false test failures when account codes differ between database setups, improving reliability without changing business functionality.
Original PR description
Description of the issue this commit addresses: Commit 63f5646cfd75 made the tests use the default outstanding account but hard-coded code 101403. In an all-module database, generated account codes depend on existing accounts, so Outstanding Receipts may use code 101404 and make otherwise correct report assertions fail. --- Desired behavior after this commit is merged: This commit derives the expected report line name from the configured outstanding receipts account, making the assertions independent of its generated code. --- runbot-[231581](https://runbot.odoo.com/odoo/error/231581) Forward-Port-Of: odoo/enterprise#126743 Forward-Port-Of: odoo/enterprise#125652
This update improves how the Belgian payroll module calculates DMFA reported days, especially for employees working 40-hour weeks. It helps prevent overstated day totals in payroll declarations, improving reporting accuracy and reducing correction work.
Original PR description
Currently, there is problem with DMFA Number of days Computation, If we have case where the employee working hour is 40h/week, the calculations mentioned in report 67.5 days, which is too many, In this PR, expected to update the number of days on DMFA computations task-6432418
The tax return view now adjusts its status bar layout to match the number of states shown. This prevents broken or misaligned cards for country-specific tax returns, such as Indian reports with four states.
Original PR description
…te counts Steps to reproduce: - Install l10n_in_reports and select an Indian company - Go to the tax return and set a date in the past --> The state bar layout breaks because there are 4 states, but the CSS grid was previously hardcoded to a maximum of 3 columns. Cause: The CSS `--columns` rule assumed a maximum of 3 states across return cards. When 4 states are present, the grid columns shift or break. Fix: Calculate the maximum state count across all visible records in the kanban renderer (`maxStateCount`) and set it as a CSS variable on the parent container. This ensures all cards in the view align consistently to the maximum number of states present without hardcoding column counts.
The Point of Sale appointment booking Gantt view now loads capacity information when it first opens. This prevents attendee labels from showing confusing placeholder text like "undefinedp" and makes booking details clearer for staff.
Original PR description
Steps to reproduce : - Open PoS and navigate to the Booking view (Gantt View). - Create a booking or view existing bookings / time-off leaves on the Gantt chart. - Observe 'undefinedp' appended to attendee names on Gantt pills (e.g. 'Billy Fox undefinedp'). Issue : 'undefinedp' is displayed on Gantt view pills instead of the correct capacity. Cause : Capacity information was not being fetched during the initial Gantt view rendering. Fix : Ensured capacity data is fetched during initial Gantt view loading so guest capacity displays properly on Gantt pills. Task ID: 6405279
This fixes an issue in the Timesheet timer form where clicking Save or Reset could trigger an error instead of completing the action. The change helps users record or adjust time entries without interruption.
Original PR description
469a7d200ce ([FIX] timesheet_grid: focus on description input, odoo/enterprise#125993) was forward-ported from saas-19.4 onto master a day after 6d3c12624e4 had turned `descriptionFieldRef` into a `signal.ref()`, which has no `.el`: clicking Save or Reset in the timesheet timer form throws on `undefined.querySelector` in onPatched -- the very refocus the original fix was adding. The read is correct on the back branches, where the ref is still a `useRef()`; call the ref on master.
Website Studio now ignores automatic cleanup edits when deciding whether a user has made changes. This helps prevent the system from treating background formatting updates as user edits, reducing false change prompts or unnecessary save behavior.
Original PR description
Automatic mutations done by `normalize` are now marked with `isAutomatic`. This commit ignore those in `on_pending_mutations_staged_handlers`.