Daily updates from Odoo
Wednesday, April 15, 2026
23 changes · master
New functionality added to Odoo
This update introduces support for Flexi-Jobs, a key feature in Belgium's payroll system. It implements two crucial rules: a percentage-based remuneration deduction (flexi-pecule) and an exemption from ONSS and withholding taxes for the first €18,440 of annual earnings. This enhancement simplifies payroll processing for employees in flexible work arrangements.
This update adds a new Balance Sheet report specifically designed to meet the requirements of Mexican financial regulations (NIF B-6). This ensures accurate reporting for Mexican businesses using Odoo Enterprise, aligning with local accounting standards.
Original PR description
Added new Balance Sheet report compliant with Mexican NIF B-6 regulation. task-5943953 target: master
This update enhances the calculation of Belgian holiday pay by introducing configurable limits for employee time-off durations based on their Joint Committee. It automatically flags allocations exceeding these limits, providing a warning and allowing for review, ensuring accurate payroll processing and compliance with Belgian regulations. This improves the accuracy and reliability of holiday pay calculations.
Original PR description
This PR extends the changes in Odoo Community by introducing a rule-parameter-based
configuration for Belgian brief holidays and related payroll warnings.
- Configure maximum allowed allocation durations per Joint Committee using
`hr.rule.parameter` and `hr.rule.parameter.value`, with values defined as
dictionaries mapping JC codes to durations.
- Implement logic on `hr.leave.allocation` to:
- Retrieve the maximum allowed duration from rule parameters based on the
leave type and employee’s Joint Committee.
- Detect when an allocation exceeds this duration.
- Display a warning message on the allocation form.
- Add a Payroll dashboard warning highlighting allocations that exceed the
authorized duration, with a smart action to review them on the list view.
TaskID-5375069This update introduces a new salary structure specifically designed for casual employees within the Odoo Enterprise system. This change allows for accurate payroll calculations and reporting for this previously unsupported employee type, ensuring compliance with Hong Kong regulations. It impacts payroll processing and reporting related to casual staff.
Original PR description
Add a new salary structure for casual employees. task-5366390
Enhancements to existing features
This update seamlessly connects the Documents app with Project Tasks, automatically syncing attachments and providing easy access via a new 'Documents' button. A key addition is a warning system to alert users about potential access rights changes when linking documents to tasks, ensuring data security and preventing unintentional data exposure.
Original PR description
Previously, there was no connection between the Documents app and Project Tasks (`project.task`). Attachments added to a task via the chatter were not synced to the Documents app, and documents…
Previously, there was no connection between the Documents app and Project Tasks (`project.task`). Attachments added to a task via the chatter were not synced to the Documents app, and documents manually saved from the chatter lacked a link back to the corresponding task. This PR bridges that gap. Implementation Details: - Automated Syncing: Inherited `documents.mixin` on `project.task`. Now, whenever an attachment is added to a task via the chatter, the system automatically creates a corresponding Document and links it back to the task. - Improved Navigation: Added a 'Documents' stat button to the task form view, giving users one-click access to all files associated with that task. - Access Rights UI Warning: Added a visual warning in `documents_details_panel`. When a user links a document to a specific record, the UI now warns them that this action may broaden the document's visibility (since the linked attachment inherits the access rights of the parent record). This prevents users from unknowingly exposing sensitive data to portal users or unauthorized internal users. task-5941719
This update enhances the accuracy of Dimona declaration reporting within Odoo Enterprise. Two new warnings have been implemented to identify missing employee information and unpaid payslips, ensuring compliance and providing clearer insights for users. The changes also include improved data storage for employee details within the Dimona declaration.
This update improves the creation of financial reports by allowing external data to be directly linked to existing Odoo records. This eliminates manual data entry, reducing errors and saving users significant time when generating reports like the 'Liasse Fiscale'. The change also corrects a previous issue with string-based external values, ensuring accurate reporting.
Original PR description
External values should be linkable to an existing model. For example, in the french accounting report "Liasse Fiscale", users have to manually fill a lot of fields. For that purpose, external values are used. However, sometimes, the required info are already known in Odoo. Users currently need to rewrite everything manually. It comes with a high risks of errors and time lost encoding data. As those type of forms will become more and more frequent in Odoo, we improve it in generic for everyone. task-5951888
This update allows administrators to set payment tolerance specifically for each journal, addressing previous limitations where a single global setting impacted all accounts. It also introduces a new option to prioritize matching invoices based on either the oldest or newest date when multiple invoices share the same details, leading to more accurate reconciliation processes.
Original PR description
Before: - Payment tolerance for bank fees was managed globally through a system parameter. - It was difficult for users to adjust and applied to all journals. - If multiple invoices matched, the system selected the invoice with the closest prior or equal date. After: - Added payment tolerance to journal settings under Advanced Settings. - Tolerance is now configured per journal. - Added a matching order option to choose whether reconciliation should match the oldest or newest invoice when multiple invoices share the same partner and amount. Impact: - Allows configuring payment tolerance per journal. - Improves reconciliation behavior when multiple invoices have the same amount for the same partner. Related PR-https://github.com/odoo/upgrade/pull/9806 taskID-5985965
This update enhances how approval notifications are handled in Odoo. It introduces a new message subtype for both approved and rejected approvals, making it easier to filter and manage these notifications. This improves the clarity and organization of approval-related messages within the system.
Original PR description
Adds a message subtype to approval added via studio, when they are approved / rejected for easy message filtering. BEFORE: The message type from an approval notification was a note. NOW: The message type from an approval notification is a validated approval or a rejected approval. WHY: Allows filtering of approval message by subtypes in ` Settings > Technical (debug) > Messages`, Community PR: https://github.com/odoo/odoo/pull/252759 task#5961149
This update improves room booking functionality by limiting users' views to only the companies they are authorized to use. Previously, users could see bookings across all companies. This change aligns with existing multi-company rules and enhances data security and user experience.
Original PR description
Currently, users can see room bookings from all companies. After this PR, users will only see bookings from their allowed companies. Technical: Add an ir.rule record to restrict room.booking records based on the user's allowed companies, consistent with the existing multi-company rules for room.room and room.office.
This update implements the core functionality for CP302 (Joint Committee 302) in Belgian payroll, a key regulatory requirement. It includes features like seniority calculations, various work entry types with premium adjustments, and specific allowances for students and work clothes. This ensures Odoo Enterprise continues to meet Belgian tax and labor law standards.
Original PR description
In this commit, we introduced the basics implementation of CP302 (Joint Committee 302) for Belgian Payroll - Add employee seniority field with automatic calculation - Add work entry types: night work, Sunday/holiday work, flexible work with seniority-based premiums - Add student wage reductions and work clothes allowance - Add CP302 salary scales, Crew/Chef de Partie contract templates task-3081508
This update enhances the pickup delivery process by updating how pickup locations are retrieved, aligning with recent changes in Odoo. It ensures accurate pickup location data is used, streamlining the order fulfillment workflow and improving delivery accuracy. This change was driven by a community enhancement to address data retrieval issues.
Original PR description
*: website_delivery_sendcloud, website_sale_fedex This PR adds several improvements to pickup delivery feature. All details are in community PR. Community PR: odoo/odoo#160187 Upgrade PR: odoo/upgrade#6315 Task-3645144
This update allows employees to use fuel cards for private vehicle use, offering a more flexible transportation benefit. The system now splits fuel card expenses between taxable private rides (for ONSS and withholding taxes) and non-taxable daily commutes (affecting only withholding taxes). This simplifies benefit administration and provides greater employee choice.
Original PR description
Allow employees to have a fuel card without requiring a company car. This enables more flexible transportation benefits where employees can use a fuel card for private vehicles. Changes: - Add fuel_card_private_ride field to split fuel card between private rides (subject to ONSS and withholding taxes) and daily commute (only impacts withholding taxes) - Create new salary rules FUEL.CARD.PRIV and FUEL.CARD.COMMUTE to handle the split taxation - Remove dependency between fuel_card and transport_mode_car in views and onchange methods - Include fuel card private ride in gross salary calculation The private ride portion is taxable for both ONSS and withholding taxes, while the commute portion only affects withholding taxes. task-5486140
This update adjusts how invoices are handled for Colombian tax reporting (DIAN) to align with current regulations. It now allows non-service products to use mandates and enables different principals for individual invoice lines. This simplifies compliance and supports a wider range of product types.
Original PR description
Allow non-service products as mandate contracts since DIAN no longer restricts this. Remove the mandate principal field from the invoice header and use the standard partner_id field on the lines instead. This way individual invoice lines can have different principals. task-5498047
This update enhances the timesheet assistant by adding icons next to each rule type in the views. This provides a clearer visual representation for users configuring rules, making the process more intuitive and efficient. Additionally, a bug fix has been implemented to prevent issues with default scope settings when selecting rule types.
Original PR description
Task-6094928
This update introduces a new, more flexible way to connect to Avalara, leveraging Odoo's IAP proxy. Users can now choose between using their existing Avalara credentials or creating a new account directly within Odoo. This simplifies the integration process and enhances reliability.
Original PR description
Allow connecting to Avalara through Odoo's IAP proxy ("Avalara Included") as an alternative to direct API credentials ("Avalara Direct"). Users can either create a new Avalara account from within Odoo or migrate an existing direct account to the IAP-backed flow.
The `AvataxClient` now dispatches requests through the IAP proxy or directly based on the chosen connection method. Ping also fetches company info and nexus locations.
task-5259842Resolved issues and error corrections
This update corrects the employment bonus calculations in Odoo's Belgian payroll module (l10n_be_hr_payroll) to reflect the latest regulations from Partena Professional, effective April 1, 2026. This ensures accurate payroll processing for Belgian employees and maintains compliance with local tax laws.
Original PR description
https://www.partena-professional.be/fr/le-bonus-lemploi-au-1er-avril-2026?utm_source=sfmc&utm_medium=email&utm_campaign=InfoFlash+Daily+Mail+-+FR&utm_content=article-read-more-cta&utm_term=All%20Subscribers&utm_id=81873&sfmcContactKey=litom@odoo.com Forward-Port-Of: odoo/enterprise#112970
This update resolves an issue where ticket submissions with emails in different cases (e.g., 'Partner@mail.com' vs. 'partner@mail.com') incorrectly created a new partner. Now, the system correctly identifies and uses the intended partner, preventing duplicate entries and ensuring accurate ticket assignment.
Original PR description
**Steps to reproduce** - Create a first partner (name: "Partner", email: "partner@mail.com", phone: "123"). - Go to the website form of a helpdesk team, and submit a ticket using "Partner@mail.com"…
**Steps to reproduce**
- Create a first partner (name: "Partner", email: "partner@mail.com", phone: "123").
- Go to the website form of a helpdesk team, and submit a ticket using "Partner@mail.com" as email (notice the different capitalization) and "456" as phone number.
Behavior without this fix: a new partner is created, but the ticket is assigned to the orignal partner ("partner@mail.com") and its phone number is updated.
Behavior after this fix: no partner is created.
**Causes**
- the partner search was case sensitive
- the created partner was not used as the `partner_id` of the ticket as it was added to the params but needs to be in the kwargs passed to `handle_website_form` in order to be found used by `extract_data`. The original partner was found in `_find_or_create_partner` by the call to
`_mail_find_partner_from_emails` (case-insensitive)
Note: this commit also ensures consistency between the partner's company and the ticket's company (same as in `_find_or_create_partner` of `helpdesk.ticket`).
Also, avoid allowing modifying existing partner's phone via this form.
opw-5914064
Forward-Port-Of: odoo/enterprise#113613
Forward-Port-Of: odoo/enterprise#109393This update fixes an issue where subscription discounts were incorrectly calculated due to how the base plan price was used. The fix ensures accurate discount calculations by dividing the base plan price by its unit, leading to more reliable pricing on subscription product pages. This improves the consistency and accuracy of subscription offerings.
Original PR description
### Steps to reproduce: - Install Subscriptions and eCommerce modules - Create 3 recurring plans (3 months, 6 months, Yearly) - Create a service subscription product with the created recurring plans - Check the product's page on website - Notice each pricing has a discount tag and with incorrect numbers ### Cause: When calculating the discount we normally use the fixed price of the base plan as the price to compare with. This sometimes introduce inconsistencies if the base plan is not just one unit from the period (>1 week/month/year) ### Fix: We divide the base_plan_price by the unit of the plan so we can get the price of just one plan unit. opw-6048278 Forward-Port-Of: odoo/enterprise#112305
This update resolves an issue where bank statement lines were incorrectly defaulting to 'upload bills.' Now, the system accurately distinguishes between positive and negative bank statements, presenting the appropriate 'upload bills' or 'upload invoices' option. This ensures accurate reconciliation processes.
Original PR description
Fixed an issue where the default for positive and negative bank statement lines were upload bills, now it distinguishes between positive and negative bank statement lines and shows upload bills/invoices accordingly.
This update fixes a calculation error in the employment bonus payments for Belgian businesses. The change ensures that the bonus calculations now fully comply with the specific rounding requirements outlined by Belgian social security regulations, as detailed in the official documentation. This ensures accurate and compliant bonus payments for employees.
Original PR description
The employment bonus computation was missing two roundings steps that are explicitely asked for in the following documentation: https://www.socialsecurity.be/employer/instructions/dmfa/fr/latest/instructions/deductions/workers_reductions/workbonus.html Forward-Port-Of: odoo/enterprise#113776
This update fixes an issue where global invoices generated from customer invoices weren't correctly incorporating the issued address's zip code into the XML file. The change ensures that the 'LugarExpedicion' field in the XML accurately reflects the customer's shipping address, improving compliance with Mexican tax regulations. This resolves a reported problem (opw-5956837) and ensures accurate invoice data.
Original PR description
**STEP TO REPRODUCE** 1. install l10n_mx_edi_extended. 2. Add an issued address on the customer invoice journal, with a zip code. 3. Create invoices, and create a global invoice with them. 4. download the xml, and notice the field LugarExpedicion is not using the zip from the issued address while it should. opw-5956837 Forward-Port-Of: odoo/enterprise#112523 Forward-Port-Of: odoo/enterprise#108732
A recent update removed essential COA buttons from the l10n_mx_reports trial balance report for Mexican businesses. This fix restores these buttons, ensuring users can generate required COA documents as mandated by Mexican accounting regulations. This resolves a critical issue impacting report functionality.
Original PR description
After https://github.com/odoo/enterprise/pull/103445, the multiple mx modules reports were merged into one, on that transition it seems that the buttons required to print the COA documents were removed. As these are a necessary documents in MX localization, we add them again since they should not be removed. How to reproduce: - Install l10n_mx_reports module with demo data - Change to INNOVACION VALOR Y DESARROLLO SA SA company - Go to accounting app and select Trial Balance under reporting menu - Click on gear button. - COA SAT and SAT buttons don't appear. target: master