Daily updates from Odoo
Tuesday, August 11, 2026
17 changes · master
Enhancements to existing features
Restaurant appointment table timers now use the same timing display and behavior as the core restaurant point-of-sale experience. This gives staff a more consistent, easier-to-read view of how long tables have been active, improving day-to-day floor management.
Original PR description
In this commit - -------------------------- - Match base timer formatting and behavior - Improve overall UX for table time tracking - Remove basic timer functionality from appointment and move it to restaurant Task-6152646 Related PR - https://github.com/odoo/odoo/pull/262756
Payroll warning checks now focus only on the relevant employee or payslip records instead of scanning broader sets of data. This reduces unnecessary processing and helps make some payroll warnings easier to maintain and translate, including for Belgian payroll workflows.
Original PR description
To reduce the amount of records fetched by domain warnings, active_ids will only fetch the ones we care about. This also makes it possible to translate some python warnings into domain now. task-6448866
Payroll accounting payments have been reorganized to make payment handling more consistent across payslips, employees, salary rules, and country-specific payroll flows. This should help payroll teams process and track salary payments more reliably, including payment registration and bank file workflows.
Original PR description
task-4592721
The Belgian payroll rules for double holiday pay have been corrected and improved. This helps payroll teams calculate and validate holiday-related payslips more reliably, reducing the risk of payroll errors.
Original PR description
task-5068001
This update reorganizes how payroll wage pay periods are managed across contracts, salary configuration, and payslip batches. It should make payroll setup and processing more consistent for HR teams, reducing confusion when employees are paid on different schedules.
Original PR description
task-5043999
Belgian payroll now better handles complementary salary payments made outside the normal monthly payroll cycle. The update adds regularization for social security contributions and withholding tax, helping corrections be taxed as if they were part of the regular salary calculation.
Original PR description
Sometimes a complementary salary need to be paid outside of the monthly pay (especially in case of corrections). The difference between a complementary salary and a bonus is the type of withholding tax that must be paid, complementary salary are those for which a standard withholding tax has to be paid. When some complementary salary are paid outside of the monthly pay, the withholding tax amount may be "wrong" and should be regularized. Example: a bonus of 250€ alone on a payslips will lead to a withholding tax of 0€ but if you consider it with the monthly pay it should be have been taxed. This commit introduces two new rules to regularize the ONSS and withholding tax amount. task-6001677
Payroll no longer uses a separate work entry type for periods outside an employee contract. This simplifies payslip calculations and reporting across payroll localizations by avoiding special handling for out-of-contract days.
Original PR description
task-6205747
Calendar events linked to a specific project or task are now matched using that direct link before relying on partner history. This helps employees create more accurate timesheets from calendar events and reduces manual corrections.
Original PR description
…the 'linked to' field Before this commit: - Calendar events are matched based on the most timesheet project of the partners. After this commit: - Calendar events are matched to projects/tasks via the "linked to field" before looking to partners projects. task-6238332 Forward-Port-Of: odoo/enterprise#123158
The spreadsheet date picker now enters dates as actual dates rather than plain numbers. This makes spreadsheet data clearer and helps avoid confusion or incorrect calculations when users work with dates.
Original PR description
Task: 6353692
Payroll now uses one clear rule to identify unpaid time: work entry types with a zero pay rate. This reduces configuration complexity across payroll localizations and helps prevent duplicate deductions, while extra hours are now identified through a dedicated payroll category.
Original PR description
The `unpaid_structure_ids` field was removed from work entry types to simplify the configuration. Previously, a work entry type could be marked as unpaid either by adding payroll structures to…
The `unpaid_structure_ids` field was removed from work entry types to simplify the configuration. Previously, a work entry type could be marked as unpaid either by adding payroll structures to `unpaid_structure_ids` or by setting `amount_rate` to 0. From now on, `amount_rate = 0` is the single source of truth for unpaid work entries. As part of this change: * Set `amount_rate` to 0 for out of contract entries, unpaid leaves, and all work entry types that were previously unpaid in monthly structures across localizations. * Kept `l10n_be_work_entry_type_notice` with `amount_rate = 1`. Although it was marked as unpaid for the 13th month structure, it remains paid in the monthly structure. Since work day lines are not used in the 13th month computation, keeping its rate would have no functional impact on the 13th month payroll calculation. * Removed unpaid work entry types from the Belgian `REMUNERATION_BASE`, `ONSS_BASE`, and `WITHHOLDING_BASE` categories, as they now have `amount_rate = 0` and therefore no impact on these bases. * Removed Egyptian salary rules that deducted unpaid leaves and out of contract periods. Since these work entries now contribute 0 to the base salary, keeping the deduction rules would result in double deductions. --- Introduce the `EXTRA_HOURS` category on work entry types as the source of truth for identifying extra hours. The `is_extra_hours` field is moved from `hr_work_entry` to `hr_payroll` and turned into a stored computed field based on the work entry type categories. This preserves its usage in payroll computations while making the category the source of truth. Task: 6292486
Belgian payroll now supports creating customized premium pay child categories and related rules. This gives payroll teams more flexibility to model company-specific premium pay needs while keeping calculations organized and test-covered.
Original PR description
Allow to create customized premium pay children task-6394804
Payslip salary rule lines are now shown in either the main payslip body or the extra information section, not both. This makes payslips clearer and ensures correction payslips show only the relevant difference in the extra information section too.
Original PR description
For salary rules, the "Visibility" (`appears_on_payslip`) and the "Show in extra info section" (`display_in_pdf_extra_info`) fields were unrelated. That means that a payslip line could be shown twice if (for e.g.) a salary rule with ```python appears_on_payslip = 'always' display_in_pdf_extra_info = True ``` would be shown twice in the payslip (once in the body and once in the extra info section) This PR fixes that to make it intuitive, now `appears_on_payslip` only affects the visibility, and `display_in_pdf_extra_info` only affects the placement of the line. So that it is never shown twice. The PR also makes it so that the "delta" logic (i.e.: showing only the difference in correction payslips) is also done in that section (it wasn't the case previously) task-6376147
Helpdesk customer rating settings are now managed per ticket stage instead of per team. This makes rating visibility and rating request emails more reliable, so businesses can control exactly when customer feedback is requested.
Original PR description
- Before this commit, the customer rating configuration was managed on `helpdesk.team`, which led to inconsistent behavior: - ratings could still appear even when disabled on the team - rating request emails could still be sent after disabling the feature - After this commit, the rating configuration is moved to `helpdesk.stage`, aligning the behavior with the Project and ensuring that ratings and rating request emails are controlled reliably through stage configuration. - The `Customer Ratings` option is removed from the helpdesk team form view. task-5119003
The Time Off planning calendar has been improved to make leave scheduling easier to review and manage. This should help HR teams work more efficiently when viewing and selecting multiple time off entries in the Gantt view.
Original PR description
task-6449840
US payroll configuration is improved with clearer field labels and updated default accounting mappings for salary rules and payroll tax categories. This helps payroll teams produce more consistent accounting entries while removing an obsolete California ETT tax field.
Original PR description
. Change fields labels . Remove CA ETT Tax field . Add default debit account Employee Payroll Taxes to Taxes rules category . Add default debit account Payroll Taxes and default credit account Employee Payroll Taxes to Employer Deductions rules category . Add default debit account Salaries and Wages to Basic salary rule . Remove default debit account and default credit account to Gross salary rule task-6374068
Belgian payroll users can now generate meal voucher reports from branch companies, not only the main company. This helps meet Partena requirements and makes payroll reporting more flexible for businesses with branch structures.
Original PR description
Currently, It's not possible to compute a meal voucher report from branch company. This PR introduces support for generating meal voucher reports from a branch company to meet Partena's requirements. Removing this constraint allows meal voucher reports to be generated from branch companies. task-6428777
All people signing a document can now choose whether their signature includes a frame, not just internal Odoo users. The signing dialog also has clearer borders around the name field and signature options, making the public signing experience easier to understand and use.
Original PR description
Version: 19.0 Before this PR: The 'Frame' checkbox in the 'Adopt Your Signature' dialog was only shown to internal Odoo users (users with the `base.group_user` group).Also, on the public signing page, the Full Name input, the Frame checkbox and the Auto/Draw/Load buttons had no visible border After this PR: The 'Frame' checkbox is now rendered for every signer in the 'Adopt Your Signature' dialog. The Full Name input, Frame checkbox and Auto/Draw/Load buttons now have a visible border. Taskid-4610728 Forward-Port-Of: odoo/enterprise#127439 Forward-Port-Of: odoo/enterprise#126789