Daily updates from Odoo
Friday, September 5, 2025
35 changes · master
Enhancements to existing features
Kenya payroll now supports commuter and housing allowances, including housing calculated as either a fixed amount or a percentage of gross pay. The update also adjusts the December 2024 food allowance limit and simplifies payroll records by removing a duplicate employee PIN field and clarifying salary rule names.
Original PR description
We add a commuter and housing allowance. The housing allowance is either a fixed amount or a percentage of the gross amount. We also change the max food allowance rule parameter for December 2024. This also makes some fixes, such as removing the employee's pin, which is a duplicate of the KRA pin. Lastly, we reorder and rename some salary rules. Task: 4922304
Belgian EC sales list returns are now checked and regenerated more frequently, helping ensure late entries for recent months are included. A debug-only manual refresh option also lets authorized users regenerate returns from the kanban view when needed.
Original PR description
The cron to generate returns only occurs the 3rd of each month, and the EC sales list report in Belgium is only generated if some moves occurs during the period. This means that if you create a move of the previous month after the 3rd of the month, it will never re-generate the return of the previous month. We therefore improve the condition to regenerate if needed the ec sales list returns of Belgium of the last 3 months. The cron is also triggered every day. We also provide a button (visible only in debug mode) that triggers the re-generation of all returns on the kanban view. task-5039301
This update adjusts how time off and resource calendar entries are categorized so employees can take leave even when a day is also marked as a service or remote day. It helps scheduling, payroll, planning, appointments, helpdesk, maintenance, and rental workflows stay consistent with the new time-off behavior.
Original PR description
- change the time_type values to enable taking time_off while having a service day aka remote day
Customer accounting screens now make it easier to manage overdue balances by opening the follow-up report from the renamed Due button and adding a direct Send action. Button labels were clarified so users can better distinguish follow-up amounts from journal item details.
Original PR description
*: followup, report Current behavior before PR: By Default, There is not option to send followup report to the customer. The 'Customer Statement' smart button opens the customer statement report. The 'Overdue Invoices' opens list view of journal Entries. Desired behavior after PR is merged: - Added a new 'Send' button on the follow-up report to directly email partners. - Renamed 'Customer Statement' smart button in Customer view to 'Due', and now opens the Follow-up Report by default instead of Customer Statement. - Renamed 'Overdue Invoices' button in Accounting tab of Customer view to 'Journal Items' and now opens the Journal Items list view. Community PR: https://github.com/odoo/odoo/pull/223769 task-5026396 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now move spreadsheets to the trash directly from the control panel, making document cleanup faster and more consistent. The underlying delete and archive handling was also centralized so related document features can reuse the same behavior across modules.
Original PR description
This PR includes the following commits: [[REF] documents: inline delete dialog and archive logic now work as a service](https://github.com/odoo/enterprise/pull/91978/commits/560070371fdd382a9deb14ee79fd1deffa8d6f0b) [[IMP] documents_spreadsheet: move spreadsheet to trash from control panel](https://github.com/odoo/enterprise/pull/91978/commits/19c51dcf23b28c9538feac96dea885b36a49672a) Current behavior before PR: - Delete and archive logic was implemented as hooks, making it hard for other modules (e.g., documents_spreadsheet) to reuse. - Users could not directly move spreadsheets to trash from the control panel. Desired behavior after PR is merged: - Delete confirmation dialog is now handled inline in onDelete() for clarity. - Added moveToTrash in documentService for reuse across modules. - Navigation is handled automatically depending on the current breadcrumb path. Task: [4975757](https://www.odoo.com/odoo/2328/tasks/4975757)
Odoo now supports physical Stripe expense cards, including notifications when Stripe ships a card. A new pending state helps keep cards inactive until they are received and activated, improving control during delivery.
Original PR description
Send a mail when the card is sent by stripe. The one receiving this mail with be the person that ordered the card if it's delivered to the company address or the person that will receive it. We added a state 'pending' which needs to always be inactive on stripe which allows to know the card wasn't activated yet and need activation. This is to present users to easily activate the card while it's in transit and put the responsability on Odoo. task-4859836
Employee appraisals can now include a target job, helping employees understand which skills they should develop to progress toward that role. Access to job information has also been adjusted so non-HR users can view needed job options while sensitive HR-only fields remain restricted.
The work entries view now shows total hours per employee and per time period, making it easier to compare worked time against expected hours. This helps managers quickly spot workload gaps, overtime, or scheduling inconsistencies.
Original PR description
Problem ---------- Do the same row sum computation as in planning. Objective ---------- per employee X/h / Y/h (%) X: sum of work entry durations Y: sum of theoretical hours per day per column : sum of durations Solution ---------- Do the same behaviour as work entry generation. This raises issues in the work entry generation. attendance_ids are retrieved from the working schedule with `_get_attendance_intervals` method per intervals and not per versions. It makes the computation longer and incorrect in the case of a new version with a flexible working schedule on an employee. It will not be considered as flexible. task-5039278
Several business dashboards have been updated to make information easier to explore and compare. Users can benefit from clearer visuals such as map-based charts, carousel views, and better sorting in payroll, marketing automation, and purchase/vendor reporting.
Original PR description
This commit updates some dashboards to use new features of spreadsheet (geo charts, carousel, sorting, etc.) This is the second batch. Task: 4851982
The top area of the Discuss sidebar and the messaging menu have been redesigned as a proof of concept. This aims to make everyday communication areas clearer and easier to use for users who rely on messaging in Odoo.
Field Service sales and inventory flows were adjusted to stay compatible with recent core Odoo changes around product catalog sections. This helps keep quotations, product selection, and stock tracking working consistently while reducing duplicate internal data handling.
Original PR description
\* = sale, stock See Also: https://github.com/odoo/odoo/pull/224404
Helpdesk can now highlight tickets that have stayed too long without a stage or Kanban status change. This helps teams quickly identify stale customer requests and prioritize follow-up before service delays grow.
Original PR description
Helpdesk tickets and ticket stages are modified to take advantage of the new rotting logic of the mail.tracking.duration mixin, allowing to get a better sense of when a task gets stale. When a ticket spends too long without seeing a stage or kanban state change, it will appear in a different color in kanban views, to highlight it and bring it to attention. task-5064952
Turkish payroll can now include manual additions and deductions when calculating salaries with Net-To-Gross. This gives payroll teams more flexibility to reflect one-off adjustments while keeping the final net salary calculation clear and consistent.
Original PR description
This commit allows the addition of manual deductions and additions to the net salary when we the payslip uses a Net-To-Gross calculation. We add a new input type and salary rule category for each of the following: 1. Manual Additions 2. Manual Deductions We also add 3 new salary rules 1. Expected Net Salary -> this is what the NTG calculation runs on now 2. Manual Additions -> amount on the category of the same name 3. Manual Deductions -> amount on the category of the same name and finally (Actual) Net Salary = Expected Net - Additions Categ. + Deductions Categ. We are using the category instead of the rule so in the future, other rules added to the same categories work out of the box. task-5045827
Payroll users can now manage salary attachments and adjustments more easily from a dedicated employee tab. This streamlines payroll administration, improves visibility of deductions or adjustments, and includes related payroll calculation and reporting updates.
Original PR description
Improve the UX/Behavior of salary attachments/adjustments Add a new tab in employee to edit salary adjustments task-4930543
HR teams can now link contract salary benefits directly to salary rules instead of relying on fixed fields. This makes benefit configuration more flexible and supports values derived from employee or contract properties.
Original PR description
Allow the choice of salary rule in benefits creation instead of fields to open the possiblities to use properties values Task: 5062312
The employee contract action now opens a date picker instead of showing errors, making it clearer and easier for HR teams to create the right contract version. This reduces confusion and helps ensure new contracts are created through the intended workflow.
Original PR description
The new contract button only raises errors. It's not intuitive. Instead it should open a datepicker and create a version with a contract according to some logic. Task: 5047579
Marketing automation email templates and snippets were adjusted to work with Odoo’s newer HTML Builder editor. This improves editing behavior such as drag-and-drop, selection, design controls, and mobile layout handling for marketing emails.
Original PR description
The `mass_mailing_html` widget now uses the html Builder, and this commit makes compatibility adjustments.` In order to use them in the html Builder, existing marketing_automation templates have to be updated. Main change, snippets: - All snippets now use the `section` html tag to match Builder selectors for features like drag&drop, selection highlight, enabling associated Builder option, ... Main change, themes: - The style element should use variables used by the Design tab (see `customize_mailing_variables.js`. If the desired style cannot be modified through these variables, caution is advised as the user won't be able to change it once set. task-4247642 Co-authored-by: Damien Abeloos <abd@odoo.com> Co-authored-by: Thomas Josse <thjo@odoo.com>
The AI assistant entry point has been moved from individual message areas to the main toolbar, making it easier to find across the app. Its available actions now adapt depending on whether the user is viewing a specific record or elsewhere, helping present more relevant AI options.
Original PR description
This PR moves the chatter ai draft button to the systray. It also change the behaviour of the button to conditionnally change the actions and agents depending on if the user is on a form view or not. task-5008938
Asset and payroll accounting reversals now better follow storno accounting rules by keeping reversed amounts in their original debit or credit position as negative values. This improves accuracy for asset sales and paid payslip reversals in companies using storno accounting.
Original PR description
This commit changes entry reversals when storno accounting is enabled, which required changes in how debit/credit amounts are computed. To handle reversals of paid payslips in hr payroll, a check is added in the computation of debit/credit of the move lines. The conditions checks that the company is storno and the move is a credit note. The check is added in the `hr_payroll_account` module. Meant by storno accounting: any reversal of a previous entry shall be considered a negative amount in the original debit/credit position rather than a positive amount in the opposite column. task-4845062
Appointment-related emails now use a more modern template design. This makes customer communications look cleaner and removes the older small calendar visual from the message.
Original PR description
This commit updates the mail template design for the appointment calendar. task-4985981 PR-commu: https://github.com/odoo/odoo/pull/224435 PR-upgrade: https://github.com/odoo/upgrade/pull/8341
US payroll settings were moved to the new US company accounting structure. This helps ensure payroll uses the correct expense and revenue accounts for US localization.
Original PR description
A new US-specific COA was created. This moves all the payroll configuration to the new l10n_us company and makes sure the right expense and revenue accounts are set. task-5028571
Project document settings have been simplified by removing the optional document toggle and default tag setup. Users can now access a project's document folder more directly, and folder links now open the correct project folder by default.
Original PR description
…m the top bar In this commit: - use_documents option removed. - 'documents & analytics' section removed - 'default tags' field removed - 'folder' field moved between the 'visibility' and the 'sales order' fields and renamed into 'Documents Folder' - top bar > documents action > the project's folder is selected by default instead of 'all' task-5057043
Website settings have been reorganized to make configuration easier to understand and navigate. Delivery provider setup is now presented in one unified view instead of separate provider-specific settings, reducing clutter for users managing online sales.
Original PR description
This commit enhances the website settings for better clarity and usability. Key Improvements: - Reorganized Website settings by updating the order, repositioning sections, and removing options. - Introduced a unified delivery provider view and removed the individual delivery provider settings. task-4819667
The accounting dashboard now groups tax return reminders by return type and shows the oldest deadline for each group. This keeps the dashboard easier to read when many returns are due, while preserving the existing reminder behavior.
Original PR description
Late returns and returns which deadline is reached in the following month are shown on the return card on the dashboard to remind users to review and submit them. There was no returns limit. In extreme cases, the return card can be totally overflown - see Spain. We now group returns by types on the dashboard ; for each type, we display the oldest deadline. The rest of the behaviour remains unchanged. task-5066144
Ecommerce product pages now show subscription plans as clearer radio button options instead of dropdown menus, making purchase choices easier for shoppers to understand. One-time purchase options are also now available for service products, giving customers more flexibility and creating a more consistent buying experience.
Original PR description
Before this commit, On the product page, subscription plans were selected using dropdown menus, which could be less intuitive when compared to one-time purchase options. After this commit, the product page's user experience has been improved by replacing the subscription plan dropdowns with clearer radio buttons. In addition, the one-time purchase behavior previously applied only to goods, but is now also available for service products. Co-authored-by: Darshan Patel <dvpa@odoo.com> Co-authored-by: Gabriel Felix <gdpf@odoo.com> task-4930807
Appointment scheduling screens now use a cleaner icon-based quick-edit layout and richer popovers, making key booking details easier to review and update from calendar and Gantt views. Capacity handling is also improved to better prevent overbooking and keep appointment details accurate.
Original PR description
We now use icons instead of labels for fields in the quick edit view and the gantt popover. To enable the use of field widgets inside the gantt popover without having to design them in an overly generic way, the gantt view is switched to using a kanban view for the popover card. Which gantt will instanciate with a full KanbanRecord component, giving us access to most of the features of a regular view inside the popover. Notably this means we do not need custom js to enable "appointment status" updates anymore, at the cost of not being able to pass in "non-field" values anymore (adds a few "contact_X" fields) Some customizations from overrides in pos_appointment are removed as everything is already achievable from the original views with similar ease. task-4909129
Return checks now use clearer statuses such as anomaly, to do, reviewed, and supervised. Checks marked reviewed or supervised are treated as accepted, while manual user choices are preserved from automatic updates, making audit and reporting workflows more predictable.
Original PR description
- `result` selection is changed to ['anomaly', 'todo', 'reviewed', 'supervised']. - `bypassed` is removed and is no longer needed to dermine if a check is ok. - If `result` is set to 'reviewed' or 'supervised', the check is ok. - `refresh_result` is added and is set to True when a check is created. When a user changes `result`, it is set to False and will avoid `result` to be updated automatically. task-4991558
Resolved issues and error corrections
Article previews now correctly display embedded account reports instead of crashing. This helps users safely preview and generate knowledge articles that include financial report content, while also improving template consistency.
Original PR description
When previewing an article that contains an account report, the preview currently crashes. This happens because the preview generator encounters an unknown `accountReport` block. To render properly, this block must be transformed - specifically, the reference in `data-embedded-props` must be resolved and the Python dictionary must be converted into a JSON object. This PR updates the system to correctly handle `accountReport` blocks during both preview and article generation. It will also refactor the code to reduce code redundancy and support the `articleIndex` block across all templates. Task-4989809
The salary configurator now shows personal information fields in the salary calculator based on whether they affect net salary, rather than where they are positioned on screen. This makes relevant payroll-impacting details visible to users and reduces unnecessary information being sent to the interface.
Original PR description
Purpose: Show the fields in the salary calculator depending on impact_net_salary and not position attribute
previous behavior:
- fields only appear in the salary calculator if the are configured to have position as side panel
(which make them invisible for the user as they appear under the monthly salary in the salary configurator)
- all fields were passed to both the salary configurator and calculator and unnecessary fields were set to be hidden in the frontend
new behavior:
- removed position setting from hr_contract_salary_personal_info
- fields now appear in the salary calculator depending on impact_net_salary attribute
- passes only the fields that are needed to the frontend
(filtering fields now happens in the backend not the frontend)
task id: task-5025318Mexican payroll can now generate payslips for employees who only receive variable income, such as commissions or bonuses, without a fixed base salary. This prevents an error in the employer social security contribution calculation and helps payroll teams process these cases reliably.
Original PR description
BUG An error is raised when trying to generate a payslip for an employee with only variable income (e.g., commissions/bonuses, no fixed base salary) FIX The rule's find_index function needs to return 0 instead of None in case the daily_wage does not fall within any of the measure ranges Task: 4723413
This fix prevents incorrect or negative ISR tax calculations when a Mexican payroll payslip covers dates across two months. The automatic month-end adjustment was removed, and payroll teams can now enter a manual ISR adjustment when needed for accurate payroll results.
Original PR description
Bug: When a payslip is overlapping two months, the ISR can be negative and is not correctly computed. Cause: There is an adjustment made at the end of each month and each year. This works only if the payslip ends on the last day of the month. Fix: We remove the adjustment and add an input for adjusting the ISR manually. Task: 4790249
The Chilean POS receipt now handles missing resolution date information safely, avoiding a crash when validating sales orders. This helps businesses using Chilean localization complete POS transactions even when optional electronic invoicing settings are not configured.
Original PR description
Currently, when having a CL Company an dusing the POS, it is possible to have the POS crash when validating orders. Steps to reproduce: ------------------- * Install l10n_cl_edi_pos * Create a new…
Currently, when having a CL Company an dusing the POS, it is possible to have the POS crash when validating orders. Steps to reproduce: ------------------- * Install l10n_cl_edi_pos * Create a new company * Put Chile as country * Switch to that company * Create a shop and open it * Make a sale, validate order > Observation: POS Crashes Why the fix: ------------ The crash is happening upon trying to render the receipt because `l10n_cl_dte_resolution_date` is undefined. `l10n_cl_dte_resolution_date`is a field that can be found on the company settings only if the field `l10n_cl_dte_service_provider` is set and is required when the later has either `SII` or `SIITEST` as value. For companies in Chile, there is therefore two setups that leads to having `l10n_cl_dte_resolution_date` undefined. Either the service provider is set to demo, which case clients don't need to fill in the resolution date, either the provider is left empty (since not required upon company creation). Since the field can be undefined, we don't render it when it is. opw-5034091 Forward-Port-Of: odoo/enterprise#93185
Features or functions removed from Odoo
The MPS product configuration no longer includes its own Batch Size setting because batch sizes are now managed directly on the bill of materials. This keeps replenishment quantities aligned with the standard manufacturing batch size and makes production planning more consistent for users.
Original PR description
Removed the Batch Size setting from the MPS product configuration. With the introduction of the standard batch size on the BoM, this setting has become redundant. Batch size is now defined and managed directly through the BoM. As a result, the replenishment quantity in the MPS will always be a multiple of the BoM's batch size. This ensures that orders created from the MPS are split according to the defined batch size, making it easier and more consistent for users to manage production quantities. This change promotes the use of a standardised batch size for manufacturing operations and improves overall usability and convenience. Task ID: [4395548](https://www.odoo.com/odoo/project/966/tasks/4395548) Community PR: [208275](https://github.com/odoo/odoo/pull/208275)
Code cleanup and technical improvements
Bills of lading for Mexico now use vehicle and driver details from the Fleet app instead of requiring separate vehicle records. This reduces duplicate data entry, keeps vehicle information consistent, and improves weight handling and PDF output for transport documents.
Original PR description
Description of the issue/feature this PR addresses: Users that have their own vehicles (the target user for carta porte also does) handle registries of their vehicles in fleet, but with the current…
Description of the issue/feature this PR addresses: Users that have their own vehicles (the target user for carta porte also does) handle registries of their vehicles in fleet, but with the current implementation the user needs to create the vehicle in both carta porte and fleet making the purpose of fleet redundant. Current behavior before PR: The values for the vehicle in the bill of lading are taken from the l10n_mx.vehicle model, which causes users who have fleet records to have duplicate information. Desired behavior after PR is merged: The vehicle values on the bill of lading are taken from the fleet.vehicle model. The vehicle driver (driver_id in fleet.vehicle) is taken as the intermediary (driver) on the bill of lading. The computed method of the gross_vehicle_weight field has been reworked so that it is now always in tons. Minor corrections were made to the bill of lading PDF. opw-[4117145](https://www.odoo.com/odoo/my-tasks/4117145) I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The timesheet timer header was reworked to behave more consistently across list, grid, kanban, Helpdesk, Field Service, and sales timesheet views. This reduces crashes, stale timer displays, and data conflicts when users start, stop, or edit timed work entries.
Original PR description
Before this commit, multiple bug fixes have been made in the timer header when this component has been mounted in the list view since the list model conflicts with the one used in timer header component. This commit completely reviews the timer header component. It also introduces a new service called timesheet timer service which is the timer service but with additional data needed for the timer header component. task-4284216