Thursday, May 7, 2026
11 changes · 19.0
Resolved issues and error corrections
This update fixes an issue where the end date on payslip PDFs was displayed incorrectly. The problem stemmed from a formatting error in the XML file, which has now been corrected to ensure consistent date presentation. This ensures accurate and professional payslip generation for employees.
Original PR description
ٍSteps: - Go to the payslip tabs under payroll app - Create a payslip and preview the generated PDF - The end date format is messed up Cause: The format was different because the end date was being overriden in the xml file and being displayed in the xml through t-out tag instead of span and t-field tags. Solution: Matching the format of the start date and end date of the payslip template. Task: 6168607
This update resolves an error that prevented users from reconciling bank statements on smaller screens (like mobile devices). The issue stemmed from incorrect data passing within the Odoo application, specifically related to how the 'Reconcile' button was handled in the bank reconciliation dialog. This change ensures the application functions correctly across all screen sizes.
Original PR description
When clicking on the "Reconcile" button of a bank statement line on a small screen (ex: mobile) threw an OwlError "Invalid props for component 'KanbanController': unknown key 'bankRecInfo'". BankRecSelectCreateDialog injected `bankRecInfo` into `baseViewProps`, which is spread into the embedded view regardless of its type. On desktop the embedded view is a list (patched to accept `bankRecInfo`), but on small screens SelectCreateDialog falls back to a kanban view, whose controller does not declare that prop, triggering Owl's props validation. Only forward `bankRecInfo` when the inner view is a list by overriding `viewProps` instead of mutating `baseViewProps`. Steps to reproduce: - Enable the developer mode. - Open Bank Reconciliation. - Resize the window to a small/mobile width (or open from a mobile device). - On a statement line, click the "Reconcile" button to open the dialog. - OwlError is thrown opw-6070573
This update corrects a bug in the Mod 349 report for Spanish tax filings. Previously, transactions with amounts less than 1 EUR were not displayed. The fix ensures that all financial transactions, regardless of their value, are accurately included in the report, improving data accuracy for tax compliance.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#116102 Forward-Port-Of: odoo/enterprise#114776
This update addresses a minor issue in the Odoo Enterprise testing process related to email performance. The change optimizes how email counts are tracked, resulting in more accurate and reliable test results. This ensures that email functionality continues to perform efficiently.
Original PR description
task-6071789 PR community https://github.com/odoo/odoo/pull/260110
This update fixes an issue where public holidays without a defined working schedule were not appearing in SD worx reports. The change expands the search criteria to include all public holidays, regardless of whether they have a working schedule associated with them, ensuring accurate payroll reporting.
Original PR description
### Steps to reproduce: - Create a public holiday without working schedule - Generate a SD worx for the month of the public holiday - Notice the public holiday is not shown in the report ### Cause: When searching for the public holiday we don't take into condsideration the holidays without working schedule. ### Fix: Modify the domain to fetch those holidays as well opw-5500070 Forward-Port-Of: odoo/enterprise#114900
This update fixes an issue where payment reminders weren't being sent to newly created duplicate subscriptions. The root cause was a shared 'last_reminder_date' field preventing reminders from being triggered correctly. The fix sets this field to 'false' for copies, ensuring reminders are sent to all subscriptions, including duplicates.
Original PR description
Payment reminders are not sent to the duplicate of a subscription when a reminder has already been sent for the original subscription Steps to reproduce: 1. Install Subscriptions 2. Create a new…
Payment reminders are not sent to the duplicate of a subscription when a reminder has already been sent for the original subscription Steps to reproduce: 1. Install Subscriptions 2. Create a new subscription for customer Acme Corporation with product Office Cleaning Service (SUB), a Monthly recurring plan and in the Other Info tab, set the subscription Start Date to one week ago 3. Confirm the subscription 4. Go to Scheduled Actions and run the action "Sale Subscription: send reminder for subscriptions with no token" 5. Go back to the previously created subscription (see that a reminder email has been added in the chatter) 6. Duplicate the subscription and confirm the duplicate 7. Run the action "Sale Subscription: send reminder for subscriptions with no token" again 8. There are no reminder for the duplicate subscription Issue: The copy of a subscription uses the same `last_reminder_date`, preventing payment reminders to be sent here https://github.com/odoo/enterprise/blob/5a2ab62254cd5f684a3b1a0d7c0001b888c70d08/sale_subscription/models/sale_order.py#L2114-L2120 Solution: Set `copy=False` on the field `last_reminder_date` opw-6167356 Forward-Port-Of: odoo/enterprise#116335 Forward-Port-Of: odoo/enterprise#115509
This update fixes a minor error in the calculation of Swiss source tax (QST) reversals within the payroll system. Specifically, it corrects a miscalculation of the minimum IS amount, ensuring accurate tax reporting for Swiss businesses using this module. This ensures compliance with Swiss tax regulations.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update resolves an issue where multiple documents with the same subject wouldn't all be included in the downloaded zip file. The fix ensures that all signed documents with identical subjects are correctly bundled together, improving the reliability of the download process. This prevents users from missing important documents.
Original PR description
## Issue In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file. ## Steps to reproduce 1. Install *Sign* (`sign`)…
## Issue
In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file.
## Steps to reproduce
1. Install *Sign* (`sign`)
2. Sign a same template twice, using the same subject S1. This gives us Documents D1 an D2.
3. (Optionally), sign the same template a third time, using a different subject S2, creating document D3.
4. In Sign > Documents, select the 2 (3) signed documents and click *Download*.
5. **In the resulting zip file, there's one folder S1 containing a single pdf document (D1) (and one folder S2 containing D3). Document D2 is missing from the zip file.**
## Cause
When generating the zip file, the path used for each document is `{subject}/{doc_name}`.
https://github.com/odoo/enterprise/blob/863abc99469c12acdebcab05788d566c370bb46f/sign/controllers/main.py#L276-L286
Neither of this attribute are unique, which means that two signed documents with the same name and subject can be downloaded simultaneously, but will then overwrite each other.
## Fix
Before version 18.3, the zip file would contain folders named with the (unique) request id, which would consistently make them distinct from one another. This behavior was changed by https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b to use the `sign_request.subject` instead. This commit adds the `request.id` after the subject to keep the clarity of the subject, and add the uniqueness of the id.
opw-6143128
Forward-Port-Of: odoo/enterprise#116179
Forward-Port-Of: odoo/enterprise#116013This update resolves an issue where free FSM services with prepaid invoicing were not appearing on invoices. The change adjusts a calculation to ensure these services are correctly reflected when creating invoices, allowing for accurate billing and reporting. This improves the functionality for handling service-based sales.
Original PR description
Changed _compute_qty_to_invoice in industry_fsm_sale, SaleOrderLine to no longer set qty_to_invoice to 0 for free services with prepaid invoicing. Previous changes seem intended for goods. Steps to reproduce: - Create service product with 0 price, prepaid invoice policy, creates FSM task - Create/Confirm sales order with created product - Attempt to create invoice, get 0 quantity to invoice error Current Behavior: Free services linked to FSM tasks do not appear on invoices due to compute 0 qty_to_invoice Expected Behavior: Prepaid Invoice Services linked to FSM tasks appear on invoices. Other invoice policies can be invoiced through the generated sales order lines (timesheets, delivered quantity, etc.) opw-6047992 Forward-Port-Of: odoo/enterprise#116413 Forward-Port-Of: odoo/enterprise#113718
This update resolves a technical issue preventing users from correctly booking appointments with flexible scheduling and capacity limits. The fix addresses a problem where the system incorrectly processed boolean values during the appointment slot calculation, leading to a booking error. This ensures appointments with multiple participants and capacity management now function as expected.
Original PR description
### Steps to reproduce: - Download "Appointment" and "Website" - Configure an appointment to be booked by resource with multiple seats and manage capacity - Set the schedule to be flexible and configure valid time slots - Go to the booking page and select the number of participants > Traceback: cannot unpack non-iterable bool object ### Cause of Issue: The `_get_appointment_slots` method unpacks the `appointment_slots_force_month` directly: https://github.com/odoo/enterprise/blob/4ca3dddaeadeb6c937d555cc4da8fb4bb61fea35/appointment/models/appointment_type.py#L871 Since the `appointment_slots_force_month` value was explicitly set to `False` in https://github.com/odoo/enterprise/blob/4ca3dddaeadeb6c937d555cc4da8fb4bb61fea35/appointment/controllers/appointment.py#L1063-L1070 the unpacking operation failed because it tried to unpack a boolean instead of a tuple. opw-6197653
This update fixes a limitation in how Odoo updates its UNSPSC product codes. Previously, new codes weren't automatically added after module updates, requiring manual imports. Now, an upgrade script runs during module updates to add missing codes from a CSV file, ensuring the system always has the latest product classifications.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#116063 Forward-Port-Of: odoo/enterprise#112652