Daily updates from Odoo
Friday, September 5, 2025
30 changes
1 change
Enhancements to existing features
Odoo now sends message reactions made by users to the customer's WhatsApp conversation. This keeps WhatsApp chats more consistent across Odoo and the customer's messaging app, reducing confusion when users react to messages.
Original PR description
Add support for sending reaction type messages via the WhatsApp API by introducing the `reaction` message type in the WhatsAppApi. This resolves the issue where reactions made by Odoo users are not reflected in the customer's WhatsApp conversation. API Documentation: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/reaction-messages Task-4828394 Forward-Port-Of: odoo/enterprise#93849 Forward-Port-Of: odoo/enterprise#88520
1 change
Enhancements to existing features
Odoo now sends message reactions made by users through WhatsApp, so customers can see those reactions in their WhatsApp conversation. This makes WhatsApp interactions more consistent between Odoo and the customer's chat experience.
Original PR description
Add support for sending reaction type messages via the WhatsApp API by introducing the `reaction` message type in the WhatsAppApi. This resolves the issue where reactions made by Odoo users are not reflected in the customer's WhatsApp conversation. API Documentation: https://developers.facebook.com/docs/whatsapp/cloud-api/messages/reaction-messages Task-4828394 Forward-Port-Of: odoo/enterprise#93849 Forward-Port-Of: odoo/enterprise#88520
27 changes
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
1 change
Enhancements to existing features
HDFC batch payment files now use the bank’s required transaction codes, date format, and file layout. This reduces the risk of rejected payment uploads while preserving existing header behavior and configuration flexibility for other banks.
Original PR description
- Updated the HDFC bank template to match the required file structure. The transaction type is now based on the payment method code instead of its display name, with explicit mappings to HDFC codes
(RTGS → R, NEFT → N, Fund Transfer → I, Demand Draft → D).
- Relabel the `date` field and export it using the format `%d/%m/%Y` for HDFC Bank Template.
- During CSV export, the header row is skipped when generating files for HDFC, while other banks continue to include it.
- Improve CSV export behavior:
- For HDFC, the header row is skipped.
- For other banks, headers remain included.
- Apply field-level mappings and date formatting defined in the bank configuration.
These changes ensure that batch payment exports comply with bank’s file specifications while keeping the solution flexible for other templates.