Tuesday, January 6, 2026
14 changes · 17.0
Enhancements to existing features
This update ensures our PDFs meet the stricter PDF/A-3A standard, a key requirement for accurate document archiving. Previously, issues with different PDF libraries caused validation failures. This change includes fixes to metadata, PDF structure, and character encoding to guarantee compliance and avoid potential data loss during archiving.
Original PR description
This commit upgrades our PDF/A compliance from 3B to 3A, and fixes a few issues previously undetected due to the different PyPDF libraries we're currently supporting that made the previous PDF fails…
This commit upgrades our PDF/A compliance from 3B to 3A, and fixes a few issues previously undetected due to the different PyPDF libraries we're currently supporting that made the previous PDF fails even the 3B validation. Improvement 1: PDFA validators were previously detecting our file as 3B. Hence we update the metadata content `conformance` to `A`. Issue 2: When using `._pypdf` library, we failed the 6.1.2-2 and 6.8-1 rule even though we have implemented them on the previous version. It seems that this is caused by the `if SUBMOD...` check only ensuring it's not equal to `_pypdf2_2` (which makes it trigger for the new `_pypdf`). Hence, we reclarify the comments and fix the IF check. Issue 3: After implementing issue 2, it seems that a traceback occurs every time we're using `._pypdf` and calling the pdf write method. This is because the added characters on the header can't be decoded with `UTF-8`. Hence we change it to other greater-than-127-bytes characters that can still be decoded with `UTF-8`. (The actual character used here doesn't matter). Improvement 4: To be compliant with the new 3A rules (additional rules not there in 3B when we first implemented them), we add a minimal mark info dictionary and document structure on the PDF catalog object (`_root_object`). task-None
Resolved issues and error corrections
This update resolves a technical error that prevented users from successfully uploading images from external services (Unsplash, Undraw) within the product pages of the website. The fix ensures images are properly saved to the database before being used, preventing a 'cannot read properties of undefined' error. This improves the user experience for adding media to product listings.
Original PR description
Steps: 1. open web editor on any product page 2. Select an image provided by an external service (Unsplash or Undraw) for extra media Issue: - Traceback: Cannot read the properties of undefined... Cause: - External service image needs to be handled by `save_library_media` so that it can be saved in database before using it Fix: - External service media will be saved before setting it to a field opw-4756269 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a prioritization issue when creating accounts from UBL XML files. Previously, the contact name was favored over the partner's legal entity name. This change, driven by discussions with CHKL, ensures the legal entity name is used, providing more accurate and compliant account information. This resolves a previous inconsistency in data handling.
Original PR description
When we create an account.move from an XML file, Odoo first searches for an existing partner via some values fetched with `_import_retrieve_partner_vals()`. Amongst those vals, the name can be fetched from either the `Contact:Name` or the `PartyLegalEntity:RegistrationName`. Currently, the contact name is prioritized over the legal entity name. After discussion with CHKL, this should be the opposite. Discord link: https://discord.com/channels/678381219515465750/694447009679147068/1457691361959608413 Related ticket: opw-5269360
This update clarifies the error message displayed when a user attempts to register on Peppol and is already registered. The change improves user experience by providing a more understandable explanation, reducing confusion and potential registration failures.
Original PR description
[FIX] account_edi_proxy_client: active user error message When the user tries to register on peppol but he's already registered, an error is raised. The error message should be easier to understand no-task
This update resolves an issue that previously prevented users from duplicating journal entries containing outdated accounts. Now, users can duplicate entries with deprecated accounts, correct the account in the draft, and successfully post the entry. The validation process is now deferred until the post stage, providing greater flexibility.
Original PR description
Before this commit, duplicating a journal entry that contained a deprecated account raised a validation error immediately. This blocked the duplication process entirely, preventing users from using historical entries as templates. This commit changes the validation to be done in write function and post. Now, users can duplicate an entry with a deprecated account, correct the account in the draft, and post successfully. Validation only blocks the user if they attempt to post the entry without fixing the deprecated account. or if the user inserted a deprecating account while editing the move. task-5417810 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that prevented users from canceling the selection of an employee photo within the Salary Configurator. The fix ensures the system correctly handles image uploads and cancellations, improving the user experience and preventing potential errors. This change ensures smooth operation of the employee contract generation process.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Install the hr_contract_salary module. - Go to Employee contract and click the Generate Offer. - Click on 'Send By Email' button and open Salary Configurator. - Upload an employee photo the first time. then cancel the image selection the second time. **Issue:** - Error occurs when canceling the image selection on Salary Configurator page. **cause:** - The condition to check whether the file exists properly was missing. **solution:** - Added the missing condition to properly check that file exist. Task-5423390
This update resolves a validation error occurring when creating new leave requests within the l10n_fr_hr_holidays module. The fix ensures a required field is populated, preventing errors related to company paid time off settings and new leave creation. This improves the overall usability of the time off configuration.
Original PR description
steps to reproduce: -Install l10n_fr_hr_holidays module. -Go to Time Off > Configuration > Settings. -Company Paid Time Off field should blank. -Employee working schedule calendar is not same as company's. -Create new leave > a validation error will occur. cause: -'l10n_fr_reference_leave_type' field should be required. fix: -Set the 'l10n_fr_reference_leave_type' field as required. task - 5139488
This update ensures that leave dates are automatically recalculated when an employee's working schedule changes. Previously, changes to a worker's calendar didn't reflect in their leave entitlements, leading to potential inaccuracies. This fix maintains accurate leave tracking based on updated work schedules.
Original PR description
purpose: Accepted leaves should be recomputed upon working schedule change. - made the `resource_calendar_id` change on the leave when it's changed on the corresponding employee/contract, then forced recomputation of its dates from the new resource calendar task-id: 5424312 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A customer modified their Gift Card and E-Wallet products to be treated as stock items. This caused an inventory inconsistency. This change marks these products as 'noupdate' to prevent future conversion back to service-type products and maintain accurate stock levels.
Original PR description
The customer changed the service-type products “Gift Card” and “E-Wallet” to storable products and used them in stock. May be they could use as physical gift cards, and physical e-wallets for company. As a result, these products now have on-hand quantities, which creates an issue. After the upgrade, they will be converted back to service-type products, causing an on-hand quantity inconsistency in the test case. To avoid this error, we need to keep these products as storable. TO do that we have to mark them noupdate. This is a customer-specific change, but since we have received many similar requests, we should consider making a generic fix if possible. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue preventing Odoo 19.1 from working correctly with Tailscale, a secure network tool. The fix ensures the system can recognize and utilize Tailscale, improving connectivity and access. This change is a technical fix to enhance system functionality.
Original PR description
This PR adds a compatibility with Tailscale after upgrading 25_06/25_07 images to 19.1. It fixes the error ``` FileNotFoundError: [Errno 2] No such file or directory: 'tailscale' ```
This update resolves an issue where string values within Odoo Studio were incorrectly displayed with extra quotes and slashes. Now, string field options are correctly formatted and saved, ensuring accurate representation of data within the Studio interface. This improves data consistency and usability.
Original PR description
Have a field widget with an option of type "string" (supportedOption meta field of the widget) In studio, change the value for that option. Before this commit, the value appeared in the input as escaped: there were supplementary quotes and slashes After this commit, the string value is correctly displayed.
This update fixes a potential confusion in the sales details report by ensuring payment orders are consistently displayed. The report now sorts by payment method and session, making it easier for users to understand sales transactions and improve reporting accuracy. This change addresses a usability issue and enhances the clarity of sales data.
Original PR description
Before this commit, payment order was not guaranteed and could confuse users reviewing sales details report, especially as the cash register lines are ordered before. This commit orders the results by payment method and session to make the output more readable. opw-5240864
This update fixes an issue where the 'Out of Contract' duration was incorrectly calculated, leading to inaccurate reporting of employee time. The change ensures contract end and start dates align with payslip periods, providing more precise payroll data and improving reporting accuracy. This resolves a potential discrepancy in employee compensation calculations.
Original PR description
Steps to Reproduce: 1. Create a contract ending early in the year (e.g., February). 2. Compute a payslip for a much later period (e.g., November). 3. The "Out of Contract" line shows an excessive number of days (counting from Feb to Nov). Reason: - If a contract ends before the payslip period, it adds all days from the end of the contract until the end of the payslip period as "Out of Contract", ignoring the payslip start date. - If a contract starts after the payslip period, it adds all days from the payslip start date until the contract start date, ignoring the payslip end date. Solution: Constrain the calculated "Out of Contract" dates using `max()` and `min()` to ensure they never exceed the payslip's `date_from` and `date_to`. Task: 5350519
This update adjusts a timeout setting in the SMTPD tests, preventing false failures and reducing the need for manual intervention. Increasing the timeout allows the tests to complete successfully, improving overall system stability and reducing the risk of red flags during testing. This change ensures smoother test runs and faster identification of actual issues.
Original PR description
There are multiple cases where the SMTPD tests fail due to a timeout error. It is much worse to get a red runbot due to a silly timeout than to sometime wait a bit longer than .1 second. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr