Friday, December 19, 2025
18 changes · 19.0
Enhancements to existing features
Website carousel controls now disable actions that do not apply, such as navigating or reordering when there is only one slide. This reduces confusion for website editors and avoids unnecessary saved changes in the page history.
Original PR description
1. The slide reordering and navigation buttons should be disabled when only a single slide is present. This prevents unnecessary actions, avoids confusing UI behavior and protects history from…
1. The slide reordering and navigation buttons should be disabled when only a single slide is present. This prevents unnecessary actions, avoids confusing UI behavior and protects history from polluting with the unnecessary mutations. The disabling logic is handled by conditionally adding the "disabled" class based on the current slide count. 2. When the active slide is first then "**Move to first**" reordering button should be disabled. Similarly, when the active slide is last then "**Move to last**" reordering button should be disabled. task-5363601 1. | Before | After | |-----------------------------|---------------------------------| | <img width="292" height="283" alt="image" src="https://github.com/user-attachments/assets/b89a810f-f5fe-4db4-a98b-036d6b1a6568" /> | <img width="284" height="273" alt="image" src="https://github.com/user-attachments/assets/c4ce2e7d-1fef-4186-bea0-ad00834a8680" /> | 2. | Before | After | |-----------------------------|---------------------------------| | <img width="285" height="179" alt="image" src="https://github.com/user-attachments/assets/d0b6833f-a66f-4f80-8e18-c7ea2245fce1" /> | <img width="289" height="208" alt="image" src="https://github.com/user-attachments/assets/e0ef23fb-83ca-45c2-929b-2e86133c0789" /> |
Resolved issues and error corrections
Invoice PDFs for Chilean companies now display unit prices without decimal places, matching local reporting expectations. This prevents confusing rounded values such as 100.00 from appearing when Chilean invoices should show whole-number unit prices.
Original PR description
**Steps to reproduce:** * Install the *l10n_cl* module with demo data. * Switch the environment to the **CL** company. * Create a customer invoice containing at least one invoice line. Enter a…
**Steps to reproduce:** * Install the *l10n_cl* module with demo data. * Switch the environment to the **CL** company. * Create a customer invoice containing at least one invoice line. Enter a **price_unit with decimals** (e.g., *99.56*). * Confirm the invoice. * Download and open the generated PDF from the invoice form. **Observed behavior:** * The **unit price** rendered in the PDF is displayed as a rounded decimal value (e.g., *100.00*), even though *Chilean* localization does **not** use decimal representation for unit prices. **Cause:** * The QWeb template uses `t-options` to format float values with **two-decimal precision**, forcing decimals to appear in the PDF. **Fix:** * Reduce the formatting precision in the PDF template so that **no decimal points** are displayed, matching Chilean localization rules. **Before Fix** <img width="783" height="319" alt="image" src="https://github.com/user-attachments/assets/e5ea5a38-a77a-4d64-9aae-672940734ea4" /> **After Fix** <img width="794" height="316" alt="image" src="https://github.com/user-attachments/assets/c47d2f0a-b4ea-428e-bf57-23584c34bf5c" /> --- opw-5234563 Forward-Port-Of: odoo/odoo#238059
Documentation and clarification updates
This pull request updates the Adhoc corporate contributor license agreement records by adding new members. It is an administrative legal update that helps keep contribution permissions and compliance documentation current.
Original PR description
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 Forward-Port-Of: odoo/odoo#240304
This fix ensures a user's chat presence is correctly updated when they return after being inactive. It helps coworkers see accurate availability in discussions, reducing confusion around whether someone is online or away.
Original PR description
Before this commit, the user's presence might not be updated after returning from inactivity. This occurs because the status service only sends an update if the user was away during the previous update. However, this condition doesn't account for cases where the update was never sent. Forward-Port-Of: odoo/odoo#239458 Forward-Port-Of: odoo/odoo#239202
The TDS entry wizard now shows a warning whenever a vendor's PAN is missing, regardless of the tax rate being used. This helps users consistently collect required PAN details from vendors and avoids missed reminders caused by unnecessary rate-based conditions.
Original PR description
Simplified the condition to show warning whenever the partner’s PAN is missing in the TDS entry wizard, instead of checking for lower TDS rate. The warning’s purpose is only to alert users to collect PAN from vendors, so rate based check was removed. task-5245353 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240471 Forward-Port-Of: odoo/odoo#235436
Fixes an issue where hidden content in the HTML editor could be misread, causing errors when saving appointment invitation templates after editing lists. This helps ensure template changes save reliably even when conditional content is not visible.
Original PR description
Problem: When nodes have `display: none` (for example a QWeb `t-else` node with a false condition), `isBlock` incorrectly fails when checking them. Solution: If a node has `display: none`, fall back to checking its `tagName` against `blockTagNames`. This ensures consistent behavior regardless of the node visibility. Steps to reproduce: - Open “Appointment: Attendee Invitation”. - Add a list item to the list in the content. - Save. - A QWeb parsing error occurs. opw-5268806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239482
This fix prevents the mail reaction menu from breaking when the emoji lookup list is empty. Users can continue viewing and choosing reactions reliably, including cases explored for non-emoji reaction text.
Original PR description
By default `emojiValueToShortcodes` is empty, combine to `?.` that can lead to empty list when getting the reaction content. Avoid error by propagating the null safety call Issue founded during an investigation to put text as reaction and not only emojis. Easily reproducable with this git diff https://gist.github.com/GaetanVandenBergh/772f3bfdc382c11ae9d629c79e669239
German-localized sale order PDFs now show correct sequential numbers in the Position column. This restores the expected table layout, making printed sale orders clearer and more professional for customers.
Original PR description
Before this commit, when printing a Sale Order using the German localization, the "Position" column in the PDF report was empty. Additionally, the table formatting was broken due to this missing data. This issue occurred because the index variable used to calculate the line number in the report template (QWeb) was incorrect. This commit fixes the index logic in the report template. Now, the "Position" column correctly displays sequential numbers (1, 2, etc.), and the table formatting renders correctly. ticket-5225647 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 Forward-Port-Of: odoo/odoo#240243
A small internal testing helper was added for spreadsheet row insertion. This helps developers validate spreadsheet behavior more consistently, with no direct change expected for everyday users.
Original PR description
This commit adds a test helper to add a row. See enterprise PR 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 Forward-Port-Of: odoo/odoo#238730 Forward-Port-Of: odoo/odoo#238293
This update resolves an issue where document previews were not updating correctly after renaming documents. Previously, the preview displayed the old attachment name even after a successful rename. This change ensures that document previews always reflect the latest, correctly renamed document name, improving data consistency and user experience.
Original PR description
BUG 1: --------- **steps to reproduce**: 1. Install documents 2. Open any document 3. Go to Action > Rename 4. Rename the document 5. Preview it and read the name showed there **issue**: When…
BUG 1:
---------
**steps to reproduce**:
1. Install documents
2. Open any document
3. Go to Action > Rename
4. Rename the document
5. Preview it and read the name showed there
**issue**:
When previewing the document, it still shows the old attachment name.
**observation**:
When renaming a document, only the document name was updated. The attachment name remained unchanged, which caused inconsistencies:
1. In the All Records section, the document name is displayed correctly. https://github.com/odoo/enterprise/blob/459e8ddaf6f67a556d35bf00e0fbb68eb1500a94/documents/views/documents_document_views.xml#L130
2. But in the Preview, the old attachment name was still shown, as it is taken from the attachment:
https://github.com/odoo/enterprise/blob/459e8ddaf6f67a556d35bf00e0fbb68eb1500a94/documents/static/src/views/hooks.js#L373-L383
**solution**:
Use the document name when previewing it
BUG 2:
---------
**steps to reproduce**:
1. Install Documents.
2. Open any document.
3. Rename it via the chatter.
4. Try renaming it again via the details panel.
**issue**:
After renaming a document twice through the details panel, the preview still displayed the old document name.
**cause**:
On the first rename, the [insert](https://github.com/odoo/enterprise/blob/691115d8a0b31322f64d35d82dc8c9ddbfcd39b0/documents/static/src/core/document_service.js#L96-L129)) method creates a new [store.Document](https://github.com/odoo/enterprise/blob/691115d8a0b31322f64d35d82dc8c9ddbfcd39b0/documents/static/src/views/hooks.js#L367-L393) record with the updated attachment name. However, The write method (used by chatter) skips reloading the record and linked attachment data on the second rename.
Unlike the Rename button, which uses web_save (and triggers a record reload via web_read), the chatter directly calls write without refreshing the attachment.
**Solution**:
Ensure the preview uses the document name from the document record, keeping it consistent after multiple renames via the details panel.
**Example:** Try to rename a "Invoice.pdf" document to "Invoice_rename.pdf"
<details>
<summary>Click here to see the results:</summary>
Before:
<img src="https://github.com/user-attachments/assets/563b7fb9-709c-4651-8492-032a7f353730"/>
After:
<img src="https://github.com/user-attachments/assets/6fc6bdfe-dd1e-4f3c-aaf7-821c44fd135d"/>
</details>
opw-5065433
Forward-Port-Of: odoo/enterprise#101453
Forward-Port-Of: odoo/enterprise#95111This update allows administrators to now modify and permanently save the default size settings for sign item types within Odoo Enterprise. Previously, these sizes were fixed, limiting flexibility. This change ensures sign items can be configured to meet specific requirements without affecting new creations.
Original PR description
The default size of sign item types could not be modified. It can now be updated and stored persistently, without impacting the default size computation for newly created items. task-5420386
This update resolves an error that occurred when generating tax reports for companies not based in Belgium. The fix prevents the system from attempting to parse invalid VAT numbers, which previously caused a technical issue. This ensures accurate tax report generation for all company types.
Original PR description
**Steps to reproduce:** 1. Go to Companies and set a non-BE VAT on the current company, e.g., `US12345678` 2. Go to Accounting → Configuration → Fiscal Positions. 3. Create a new Fiscal Position and set the country to Belgium. 4. Enter a valid Foreign Tax ID, e.g.,` BE0477472701`, and save. 5. Create the taxes. **Issue:** A traceback is raised: `ValueError: invalid literal for int() with base 10: 'US12345678'` **Cause:** This happens because `_be_company_vat_communication` attempts to parse the company's VAT number even when the company does not belong to BE, resulting in invalid VAT formats such as "USxxxxxxx". **Solution:** Return an empty structured communication unless: - the VAT is valid, and - the detected country code is BE, and - the fiscal country is Belgium. This prevents parsing foreign or invalid VATs and avoids the traceback during foreign tax generation. **opw-5368016**
This update resolves an issue where employees acting as their own approvers couldn't modify their overtime requests. The fix adds necessary permissions to access work entries, allowing employees to correctly approve or reject their own time entries.
Original PR description
Employees set as themselves as approvers couldn't modify their attendances due to permission issues with other models. task-5427553
This update fixes a technical issue where payroll CFDIs generated in Mexico were missing crucial relationship information in their XML format. The change ensures that all payroll CFDIs accurately reflect the origin relationships (like substitutions and reimbursements), meeting regulatory requirements and preventing potential errors.
Original PR description
The module already computes and exposes `cfdi_relationado_data` during the CFDI generation process, but the corresponding XML node was never rendered in the CFDI template. As a result, payroll CFDIs with origin relationships (e.g. substitution, related UUIDs, reimbursements) were silently omitting the required `<CfdiRelacionados>` structure. This patch injects the missing XML section into the v4.0 template, iterating over each relation type and UUID, ensuring that the CFDI properly reflects the relationship metadata already computed by the model. Fixes the inconsistency between backend logic and XML output.
A test tour for GS1 barcode scanning was intermittently failing due to a timing issue during data updates. This fix ensures consistent behavior by applying a mutex to the barcode scanning process, preventing data inconsistencies and making the test reliable. The update also includes improvements to the tour trigger and helper methods for greater precision.
Original PR description
Runbot build error: [232683](https://runbot.odoo.com/odoo/runbot.build.error/232683)
This update fixes an error in the VAT return reporting process for Belgium. Previously, the system incorrectly set a flag to True, even for periods that weren't the end of the year. This change ensures accurate reporting by setting the flag to False for non-end-of-year periods, improving the reliability of VAT calculations.
Original PR description
When the client_nihil field was hidden from the wizard, its computation always set it to True. This was wrong : this field can only be True in the XML when in the last period of the year, so when should_display_client_nihil is True as well. In every other cases, it needs to be False. opw-5184056
This update fixes an issue where the hours view would overlap with the progress bar display in the Gantt view when work entries were activated in sparse mode. This enhancement ensures a cleaner and more accurate visual representation of work progress, improving usability for users.
Original PR description
When the work entry is activated in sparse mode prevent the hours view from overlapping. task-5410789
This update resolves an issue where field syncs in the Quote calculator spreadsheet would disappear after inserting a new row. The fix ensures that field syncs are correctly maintained when rows are added, preventing data inconsistencies and improving spreadsheet functionality. This ensures accurate data synchronization for sales quotes.
Original PR description
Steps to reproduce: - create a Quote calculator spreadsheet - add a field sync on A1 - autofill it down on a few cells - select row B - right click and "Insert row above" => some field syncs disapeared Forward-Port-Of: odoo/enterprise#101367 Forward-Port-Of: odoo/enterprise#101066