Daily updates from Odoo
Friday, November 28, 2025
13 changes · master
New functionality added to Odoo
This update adds a new report for declaring employee absences (DECMAL) to the government, streamlining the process for reporting sick leave or incapacitation. It also consolidates reporting functionalities, replacing a previous wizard and now allowing the generation of both absence and salary reports from a single tool. This simplifies reporting and ensures compliance with Luxembourg regulations.
Original PR description
Added the new DECMAL report (Déclaration d'Incapacité de Travail – Maladie), used to declare employee absence or incapacity data to the government . This report handles both new declarations and corrections to previously submitted data. Removed the old wizard to generate the monthly salary declaration(DECSAL). This new wizard now supports generating both DECMAL (employee incapacity) and DECSAL (salary) reports from a single interface task-4737317
Enhancements to existing features
This update ensures that CFDI credit notes for point-of-sale orders are properly linked to their corresponding accounting reversal entries. This change aligns with legal requirements for fiscal document audits, creating a more robust and auditable accounting process for Mexican sales transactions.
Original PR description
As a legal requirement, fiscal documents requires to have its own accounting entry to reference it for audits. This is not the case for pos orders credit notes Currenty, a reversal move is created each time an invoice is created for a pos order of a closed session. Also if the order was globally invoiced, a cfdi credit noted is create to undo the global invoice. This commit makes the virtual relation between the reversal entry created and the cfdi credit notes documents created on the pos order target: master task-4856009
This update significantly speeds up the process of regenerating employee attendance records, a task previously taking 20 seconds for 100 employees. The optimization reduces the number of database queries from 55,000 to just 750, resulting in a much faster execution time of 2 seconds. This improves overall system responsiveness and efficiency.
Original PR description
Forward-Port-Of: odoo/enterprise#100156
This update simplifies user access to certain settings within various Odoo modules by removing restrictions on writeable fields. This change enhances user experience and flexibility while maintaining security for sensitive data. The changes primarily focus on streamlining access to user-configurable options.
Original PR description
odoo/odoo#231159
This pull request introduces work-in-progress development for a new feature to collect barcodes during the website sale process. The changes involve updating the website's sales functionality to integrate with barcode scanning, potentially improving order accuracy and efficiency. This is an initial implementation and requires further refinement.
Original PR description
TODO task-5166559 See also: - https://github.com/odoo/odoo/pull/235386
Resolved issues and error corrections
This update fixes an issue where documents and moves were incorrectly linked across companies in a multi-company setup. By explicitly including the company ID, the system now accurately creates and searches for documents within the correct company context, preventing errors and ensuring data integrity. This improves the reliability of financial reporting and move management.
Original PR description
Behavior before: In a multi-company setup, fetching documents could include records from different companies based on VAT numbers. When creating attachments or searching for existing moves, the company ID was not properly considered, leading to incorrect company assignments and failed move creation. Behavior after: Documents and moves are now created and searched within the correct company context by explicitly including the company ID. Root Cause: The company ID was missing in both the attachment creation and the domain used to search for existing moves, causing cross-company mismatches. opw-4929985 Forward-Port-Of: odoo/enterprise#99192
This update fixes an issue where time logs were incorrectly assigned to the user marking work orders as complete, instead of the assigned employee. Now, time logs accurately reflect the employee who actually worked on the order, improving data accuracy and reducing user confusion. This ensures proper tracking of labor costs.
Original PR description
## **Issue Before This Commit:** When a work order is assigned to an employee (not linked to the current user), and the current user marks it as done, the time log is wrongly created under the…
## **Issue Before This Commit:** When a work order is assigned to an employee (not linked to the current user), and the current user marks it as done, the time log is wrongly created under the current user’s employee instead of the assigned one. This behavior caused confusion for the user as the wrong person was shown as working on the order. ## **Steps to Reproduce:** - Create an MO with work orders and confirm it. - Assign another employee to a work order. - Mark the work order as done with the current user from the work order line. - Open the workorder and notice that the time log is created for the current user’s employee. ## **Cause of the Issue:** The bug was introduced in PR (https://github.com/odoo/enterprise/pull/84790), where the logic for assigning the main employee was overridden, ignoring the case of an already assigned employee. ## **With This Commit:** The time log is now created for the assigned employee, This resolves the confusion by ensuring the right person is tracked on the work order. TaskID: 4983514 Forward-Port-Of: odoo/enterprise#100604 Forward-Port-Of: odoo/enterprise#93378
This update simplifies the process of adding products to the shopping cart on the website. By removing outdated forms and consolidating event handlers, the system is now more efficient and reliable. This change enhances the user experience and streamlines the checkout process.
Original PR description
This PR: - Relies on dataset instead of hidden inputs to provide the necessary info to the cart service, - Removes the useless "add to cart" forms (which were used to add products to the cart in a distant past), - Merges all "add to cart" event handlers into a single one to avoid duplication. task-5116935 Community PR: https://github.com/odoo/odoo/pull/229931
This update corrects a previous issue where VoIP calls ending within a calendar range were not displayed. The change ensures that calls, regardless of their end date, are correctly shown in the calendar view, resolving a bug and improving calendar functionality. This also addresses a related crash during testing.
Original PR description
This restores a feature lost at [1]: a call beginning before the calendar current range but ending inside it was not shown anymore. Indeed the `end_date` became computed from the `duration` instead…
This restores a feature lost at [1]: a call beginning before the calendar current range but ending inside it was not shown anymore. Indeed the `end_date` became computed from the `duration` instead of the other way around, allowing efficient domain manipulation based on the duration. However, it prevented domain manipulation based on the end date, which the calendar view needs. It also just makes sense to allow filtering based on the end date too (even if we judged it less useful when making [1]). A solution could be to store the end date too, but it would be redundant data. This instead allows domain manipulation through a field `compute_sql` definition. At the same time, this does the same thing for the start date: creating a new computed field `effective_start_date`, which is either the call start date or its `create_date`. This allows to entirely remove the domain override needed in the calendar model (combined with the community commit that comes with this one, which makes the calendar now consider records without a set end date but which started within range). Note: the date_delay option of the calendar was removed at [2]. This also fixes a runbot issue during the "click everywhere" test: - Enter VoIP app - Go to calendar - Enter web studio => Crash, because the studio calendar ignores the VoIP custo about the calendar domain and filters on `end_date`. The VoIP custo being gone and filtering on `end_date` restored, this is not a problem anymore. [1]: https://github.com/odoo/enterprise/commit/47300cc462420273dd90d5668f542878b6f73254 [2]: https://github.com/odoo/odoo/commit/40c75d3635b4d0de8fca631e4aebd26a466a8709 task-5350495 runbot-234398
This update streamlines the process of generating SSL certificates for IoT devices. Previously, certificates were only issued to trial users or those with enterprise codes. Now, certificates are automatically generated based on a valid database ID, resolving potential issues in Point Of Sale and ensuring consistent IoT device connectivity.
Original PR description
Note: needs to be merged after the https://github.com/odoo/internal/pull/3858 otherwise iot pairing / certificate generation won't work Currently we are only providing the ssl certificates to the iot users if they are on trial (free certificate first 30 days) or they have an enterprise code in their db. The issue here is that if the iot box doesn't get a new certificate after a trial period they will experience a lot of issues in Point Of Sale where a lot of requests rely on local network and ssl certificates. This PR removes the logic around the enterprise code for the generation of the certificates. Now we always generate a certificate as long as the database has a valid db_uuid registered on our servers. Related Odoo PR: https://github.com/odoo/odoo/pull/232681 Related internal PR: https://github.com/odoo/internal/pull/3858
This update resolves an issue where adding serial numbers to subcontracting manufacturing orders (MOs) through the portal would incorrectly cancel and delete associated work orders, which portal users couldn't manage. The change prevents the creation of work orders for subcontracted MOs, aligning with the correct product structure and improving data consistency.
Original PR description
When adding/changing serial number on a subcontracting MO via portal view, Odoo will cancel and unlink the old MO(s) to recreate new ones. This include cancelling workorders, which a portal user doesn't have access to. Since subcontracted MO should not have workorders because the bom should not have operations, this PR adds a call to `_has_workorders` before searching for workorders. Forward-Port-Of: odoo/enterprise#98611
This update corrects a calculation error related to PFA (Pension Funds Account) computations within the Belgian HR payroll module. The fix ensures accurate PFA deductions are processed, improving payroll accuracy and compliance. This change impacts the way PFA contributions are handled.
Original PR description
This commit refactors and fixes the PFA computation. task-5103485 Forward-Port-Of: odoo/enterprise#97978
Code cleanup and technical improvements
This update refactors the XLSX import process within Odoo, moving logic from JavaScript to Python for better performance and maintainability. This change reduces the size of the application's code and makes it easier to update and extend the spreadsheet import feature in the future.
Original PR description
At odoo, the first rule of javascript is: do it in python. some reasons are - smaller asset bundle - use standard views/models/orm - more easily extensible - more stable