Daily updates from Odoo
Wednesday, February 11, 2026
16 changes · master
New functionality added to Odoo
This update introduces new reports for Colombian tax compliance, generating CSV files for submission to the DIAN. These reports automate the creation of required XML files, simplifying the process for users to meet reporting deadlines and regulations. The changes include new data models and configurations to manage these reports effectively.
Original PR description
Purpose: Exogenous information is the set of data that individuals and legal entities must periodically submit to the DIAN, with different deadlines depending on the taxpayer's characteristics,…
Purpose: Exogenous information is the set of data that individuals and legal entities must periodically submit to the DIAN, with different deadlines depending on the taxpayer's characteristics, regarding transactions with clients or users of their products or services. DIAN requires exogenous information reports to be delivered as an XML file. The goal is to generate the most important formats (1001, 1003, 1005, 1007, 1008 and 1009) as a CSV, so the user can submit it to the DIAN for the XML generation. Key Aspects of the reports: - Each report has a set amount of columns(including categories) that must be displayed and the columns are position dependent. - The rows of the report can be categorized accordingly - Header - AMLs grouped by partner that are not considered minor amounts - AMLs grouped in a minor amount row based on the report's minor amount rule - The minor amount rules are dependent on the exogenous categories Additional Changes: Models: - l10n_co.exogenous.category: - Displayed as columns on the report - Used as a basis for the minor amount rules in the report - sequence: the column position of the category on the report - report_type: the report the category is applicable to - name: name of the category displayed on the report - l10n_co.exogenous.config: -Defines how each report is used per chart of account - report_type: determines which report the config is for - exogenous_category_id: the exogenous category used - value_to_report: the type of amount to aggregate for said category, such as credit, debit, balance - concept: the concept if required by the report - account_ids: a many2many relationship to chart of accounts the config is applicable to Relations: - account_account_exogenous_config: -the Many2many relation table between - account.account - l10n_co.exogenous.config Currency: - l10n_co.reports.uvt: - Used to compare amounts in minor amount rules - A tax value unit used by the Colombian government to standardize tax values Wizard: - l10n_co_reports.exogenous_report.wizard: Allows the user to generate the CSV based on the report Function Workflow: - Generate account moves using the accounts that are mapped to exogenous configs - Navigate to the General Ledger report - Click on the action cog to dropdown the button, `Exogenous Report CSV` - A wizard will pop-up to allow the user to select the type of exogenous report they want to export - A CSV file will be downloaded onto the user's machine so they can import the file into the DIAN pre-validator tool task-5061117
This update introduces a new module to generate a required .csv file (FAF) for the Federal Tax Authority (FTA) audits. This allows businesses to meet FTA reporting requirements and move closer to accreditation, ensuring ongoing compliance with UAE tax regulations. The generated file contains key financial data in a format the FTA can directly use for audits.
Original PR description
The Federal Tax Authority (FTA) requires businesses to generate a FAF (FTA Audit File) for audit and compliance purposes in a .csv format. There are two kinds, VAT and Excise. In this task, we aim to…
The Federal Tax Authority (FTA) requires businesses to generate a FAF (FTA Audit File) for audit and compliance purposes in a .csv format. There are two kinds, VAT and Excise. In this task, we aim to generate a successful VAT Audit File, whereas we we will work to support the Excise Taxes and it's audit file in a separate task. This will bring us a step closer to re-registering us as an Accredited Software Vendor with the FTA (https://tax.gov.ae/en/tax.support/tax.accounting.software.vendors/accredited.tax.accounting.software.vendors.aspx). As per the FTA, "The FAF should be a pure collection of data in the comma-separated values (csv) file format and should be broken down by, but not limited to, invoices, credit notes etc., to give all the required information to FTA to conduct the Audit. The taxpayer should not be able to modify any value in the FAF. The FAF should not be an image file." This PR introduces a new module l10n_ae_saft which allows the users to export the a FAF .csv file from the general ledger. task-5256491 Forward-Port-Of: odoo/enterprise#99228
This update introduces a new reporting process for Belgian employees who become unemployed. It includes the necessary steps to file a DRS (déclaration des risques sociaux) with the ONSS, ensuring compliance with local regulations. This addition supports 11 unemployment scenarios, streamlining HR processes.
Original PR description
Whenever an employee becomes unemployed, there is a need to send a DRS (déclaration des risques sociaux) to the ONSS. This introduces the DRS for unemployment with the 11 scenarios. Task: 5915160
Enhancements to existing features
This update simplifies the employee appraisal process by removing the 'Request Appraisal' button from the employee view. It has been replaced with a smart button, streamlining the user experience and making it easier for employees to initiate appraisals. This change focuses on improving usability and efficiency.
Original PR description
[IMP] hr_appraisal: change appraisals UX in employee view Improvements made in the UI of hr_appraisal by removing Request Appraisal button in the employee form view and replacing it with a smart button task-5443582
This update adds a total progress bar to the Gantt chart views for Project, Field Service, and Planning modules. This provides a clearer visual representation of overall progress, particularly when grouped by role and department, allowing users to quickly assess project status.
Original PR description
[IMP] {project, planning}: Gantt total progress bar
In this commit:
- progress bar displayed for total row in project, field service
and planning (when group by role, department, role > resource and department)
task-3992041This update enhances the customer display in point-of-sale (POS) systems by automatically including crucial scale data like product details, prices, and weights. This ensures accurate and complete information is presented to customers during weighing transactions, improving the overall shopping experience. This change is an important improvement to the POS functionality.
Original PR description
In this commit: --- - Introduce an override to inject scale details (product, unit price, total price, weights, tare) into the customer display adapter. task-5431617 related-https://github.com/odoo/odoo/pull/241509
This update enhances the 'itsme' integration in Odoo Sign by providing clearer visibility into available IAP credits and simplifying the process for users to purchase more. The changes include a direct link to manage credits, a more informative email notification, and visual indicators within the Sign Editor, making the 'itsme' authentication flow more user-friendly.
Original PR description
Prior to this commit, the integration of 'itsme' in Odoo Sign lacked visibility regarding IAP credits. Users could not easily see their balance when configuring roles, and the "insufficient credits"…
Prior to this commit, the integration of 'itsme' in Odoo Sign lacked visibility regarding IAP credits. Users could not easily see their balance when configuring roles, and the "insufficient credits" email was generic without actionable steps. Additionally, the Sign Editor sidebar did not visually distinguish between authentication methods (SMS vs itsme).
This commit improves the UX for the 'itsme' flow through the following changes:
1. Role Configuration (sign.item.role):
- Updates the form view to display the current available credits when 'itsme' is selected as the authentication method.
- Adds a direct link to the IAP service to manage credits.
2. Email Notification (mail.template):
- Refactors the 'sign_template_mail_not_enough_credits' template to use clearer wording ("due to insufficient credits") for all auth methods.
- Adds a specific condition for 'itsme': if verification fails due to lack of credits, the email now includes a direct link to the IAP purchase page.This update enhances the way email templates are rendered in Odoo, specifically by directly incorporating the desired email layout from the template data. This ensures a more consistent and visually accurate email experience across various modules, improving communication with customers and partners.
Original PR description
This commit changes the way email layout is specified for the composer. Currently the email layout is set by email_layout_xmlid in the context. This commit sets the email_layout_xmlid in the mail template records. Task-4229684
This update streamlines production planning by allowing users to plan single workorders and incorporating planning per employee. Now, a production is automatically considered 'planned' when all associated workorders are scheduled, simplifying the tracking of production progress. This change enhances efficiency and visibility within the manufacturing process.
Original PR description
1) Adapt planning related views 2) Allow to plan a single workorder 3) Add Planning per Employee Note that now a production is considered as planned when all of its workorders are planned. task: 5259535
This update adds the ability to include buffer zones around tasks in the Gantt chart. This allows users to represent durations like travel time or setup periods separately from the core task duration, providing a more accurate visual representation of project timelines. It enhances the Gantt chart's ability to display auxiliary durations.
Original PR description
This commit introduces two new attributes to the Gantt view architecture to support visual margins around task pills: - `buffer_start`: Name of the float field defining the pre-task margin (in hours). - `buffer_stop`: Name of the float field defining the post-task margin (in hours). This feature allows users to visualize auxiliary durations such as travel time, setup/cleanup periods, or security margins distinct from the main task duration. task-5259085
This update streamlines the creation of HK IRD reports by automating employee declaration population and adding support for new report types (IR56E/G). It also includes crucial fixes for data validation and company filtering to ensure accurate reporting and compliance.
Original PR description
- Improve the UX of the IRD reports by providing a way to automatically populate the employee's declaration for all IRD reports. - Update the IRD reports XSD files and add the missing ones. - Add XML generation for IR56E/G, which didn't exist back when the original reports were done. - Add proper testing for these reports. and also - Store the version of the employee when an employee declaration is created - Employees on the employee declaration are nowfiltered to only allow employees of the same company as the one set on the employee declaration - Fixes a wrongly formatted HKID number in the demo data task-5050333
Resolved issues and error corrections
This update resolves an issue where payment reports were sometimes generated with inconsistent formats, leading to potential errors. The fix ensures all localized payment reports (across various countries) now use a standardized export format, improving reliability and accuracy. This change has been backported to version 18.0.
Original PR description
\* = l10n_{ae, au, ch, in, sa, us}_hr_payroll + hr_payroll_account_iso20022
Issue:
The current behavior looks deterministic: when clicking on "Create Payment Report" it -sometimes- shows the current company's export format by default, other times it shows the "NACHA" type. Or it could be the last installed module's export format value for the other companies.
Solution:
I fixed it in this PR: https://github.com/odoo/enterprise/pull/93683 and now backporting the changes to version 18.0
task-5189295
Forward-Port-Of: odoo/enterprise#105645
Forward-Port-Of: odoo/enterprise#100126Users were experiencing blocks in the Point of Sale UI due to printers failing to receive print job requests. This change reverts a recent update that introduced this issue, allowing users to successfully print from the POS system. It's a quick fix to restore normal POS functionality.
Original PR description
Since preparation printers are ignoring the print job requests sent a lot of users are being blocked in pos UI. This reverts commit 5e290c264f14108e036344663fc459bf77da265e. This unblocks the user's UI in case of a duplicate print Forward-Port-Of: odoo/enterprise#104421
This update fixes an issue where invoices for Point of Sale orders paid with customer accounts wouldn't correctly reflect payments made through settle due orders. The fix ensures that all payments, including those from settle due orders, are accounted for when generating invoices, preventing unpaid invoice statuses.
Original PR description
If you made a PoS order paid with the customer account payment method, and then you created a settle due order to settle the previous one. If you then create the invoice for the original order, the invoice would appear as unpaid, because the payments of the settle due order were not taken into account. Steps to reproduce: ------------------- * Create a PoS order and pay with the customer account payment method * Settle the order that you just created with a settle due order * Close the session * Go on the original order and create the invoice > Observation: The invoice appears as unpaid when it should be paid. Why the fix: ------------ When creating the invoice we gather all the payments of the order to create the corresponding journal entries. But the payment of the settle due order were not included. So the order was considered as unpaid. opw-5268042 Forward-Port-Of: odoo/enterprise#105564
This update fixes inaccuracies in the Mod349 report for Spanish EC Sales Lists, specifically addressing issues with refund calculations and currency handling. It now correctly accounts for refunds and multi-currency transactions, improving the report's accuracy and reliability for tax reporting.
Original PR description
[IMP] l10n_es_reports: mod349 uses tax_tags Fix modelo 349 computation, allow for mixed operations The mod349 is the Spanish EC Sales List report. In this PR, we: - Fix some of the report computation (see for instance how refunds not in the same period displayed incorrectly the value invoice-refund when the refund should be displayed) - Allowed for the use of taxes with related tax_tags rather than using a field for the whole account.move. This implied modifying the custom engine to fetch move lines rather than moves and to adapt its sorting and computing. See also https://github.com/odoo/odoo/pull/237142
This update addresses an issue where some automated tour processes were failing intermittently. The team temporarily added a delay to these tours to ensure they completed successfully. This commit restores the original behavior by re-enabling the necessary delay, allowing these tours to run as intended. It's a follow-up to previous work aimed at removing this delay.
Original PR description
*account_reports,hr_contract_salary,hr_payroll_attendance, pos_enterprise,test_l10n_be_hr_payroll_account This commit is a followup of [1] which attempted to remove the 50ms delay between each step in tours. This allowed to highlight non deterministic tours that only passed thanks to that delay. A temporary flag was added to indicate to the tour system that a tour must be run with the 50ms delay (otherwise it fails). However, it seems that some tours have been forgotten in the process. This commit flags them, so they run as before. We'll now try to understand why they (sometimes) fail without a delay, and progressively remove the added flags. [1] odoo/odoo#237531 runbot error-238493 runbot error-238498 runbot error-238490 runbot error-238496 runbot error-238491 runbot error-238513 runbot error-238494 runbot error-238517 runbot error-238500 runbot error-238533