Tuesday, December 16, 2025
14 changes · 18.0
New functionality added to Odoo
This update adds comprehensive unit tests for how actions are ordered and executed within Odoo's document management system. These tests ensure that actions can be enabled in the correct sequence, improving the reliability and functionality of document workflows. This change supports ongoing development and quality assurance efforts.
Original PR description
Purpose ======= Add unit tests about the `ir.embedded.actions` and `ir.actions.server`. Check that we can set the order in the interface by enabling some actions before others. Task-4216195
Enhancements to existing features
This update enhances the Guatemalan localization by automatically including the XML file alongside the PDF invoice when e-invoices are emailed to customers. Previously, only the PDF was sent, but now customers receive both files for greater transparency and convenience. The XML file naming convention has also been standardized.
Original PR description
Purpose: In the Guatemalan localization, when an electronic invoice is created, the email template to the customer already contains the PDF version of the DTE. However, the XML file, generated and…
Purpose: In the Guatemalan localization, when an electronic invoice is created, the email template to the customer already contains the PDF version of the DTE. However, the XML file, generated and sent to the SAT through Infile, is not attached to that email. Even though the SAT and Infile deliver the XML to the customer, it is more convenient and transparent if Odoo includes it directly in the outgoing invoice template email, so the customer receives both files in one place. Before this commit:- - Only PDF version is attached by default in customer email for e-invoices. - Name of edi document is prefixed with `Demo` if company is in demo environment (check parent company's environment in case of child company) (e.g. DEMO_certificate_INV_2025_00001.xml) and prefixed with `SAT` if company is in testing or production environment(e.g. SAT_certificate_INV_2025_00001.xml). After this commit:- - XML version is also attached by default along with PDF in customer email for e-invoices. - Name of edi document is always prefixed with `SAT`. task-5224521
Resolved issues and error corrections
This update resolves a formatting problem in invoice PDFs generated when using quotation templates in sales orders. Previously, the product name and description were combined on a single line. Now, a necessary line break is added to ensure proper invoice formatting and readability, aligning with standard invoice practices.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. read: #235122 opw-5130171
This update ensures the IoT boxes automatically update their code to match the latest database version, running nightly at midnight. This prevents discrepancies and maintains data consistency between the database and the IoT devices. Existing IoT boxes require a restart to implement this new synchronization process.
Original PR description
This PR adds the code which checks every midnight to see if the version of the database has changed. If so, it will update the iot box's code to align it to the database version Note: 1) the existing iot boxes will need to restart to get this cron job 2) Outside of database upgrade the code won't be upgraded with the cron Forward-Port-Of: odoo/odoo#239049
This update corrects a formatting issue in invoices generated when using quotation templates in sales orders. Previously, the invoice PDF displayed product names and descriptions on the same line, leading to an unorganized appearance. This fix ensures proper line breaks, improving invoice readability and presentation.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. opw-5130171
This update fixes an issue where the TM-m30 printer wasn't correctly identified as a receipt printer in Odoo. Now, the system automatically detects the TM-m30 and ZPL printers, ensuring they are categorized as receipt printers, which improves printer compatibility and functionality within Odoo.
Original PR description
Before this commit, the receipt printer subtype was assigned based on the presence of `CMD:ESC/POS;` in the `device-id` of the printer. However, this string was only present for the `lpd` backend, for `dnssd` it was not resulting in a subtype of Office printer. After this commit, we additionally check for the string `TM-m30` in the device name, and if it is present we set it as a receipt printer. We also check for the string `ZPL` and if found set it as a label printer. task-5411994 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where copying and pasting empty list items in the HTML editor would prevent the backspace key from working. The fix inserts a line break (<br>) into the pasted item, allowing for proper text deletion. This improves the overall usability of the HTML editor.
Original PR description
**Current behavior before PR:** Steps to reproduce: - Create a new paragraph, type some text. - Create a numbered list below paragraph, type some text. - Keep the cursor at the start of list text and select the above text - Copy the selection and paste in a new paragraph. - Backspace in pasted list is not working. This happens because pasted list item is empty. **Desired behavior after PR is merged:** Now, copied empty list item is filled with `<br>`, as result backspace works properly. task-5226511 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures that invoice PDFs generated for the Chilean (*l10n_cl*) localization correctly display unit prices without decimal points, aligning with Chilean accounting standards. Previously, the PDF format consistently showed prices with two decimal places, which is not required in Chile. This update improves invoice accuracy and compliance.
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
This update resolves an issue where printing reports (specifically 'Lot/Serial Number (PDF)') would fail if the report itself was previously deleted. The fix prevents a system error that occurs when attempting to access report IDs after deletion, ensuring a smoother user experience when generating labels.
Original PR description
This error occurs when the user deletes the `Lot/Serial Number (PDF)` report and then attempts to print report. Steps to reproduce: --- - Install `stock` module(without demo) - Search `Lot/Serial Number (PDF)` in `..Actions/Reports` > Delete it - Enable `Lots & Serial Numbers` in settings. - Create a Picking and `Mark as TODO` - Set a `Serial Numbers` in order line - In cog menu `Print Labels` > `Lot/SN labels` > `Confirm` > `Confirm` Traceback: --- `ValueError: External ID not found in the system: stock.action_report_lot_label` At [1], when we try to access any report XML ID, we encounter an error because the corresponding report has been deleted. [1]- https://github.com/odoo/odoo/blob/b6b37a794f9e3e724a32a3529ce2ef7361b8046e/addons/stock/wizard/stock_lot_label_layout.py#L40 sentry-7064566500 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where image styles (like transform and width) were incorrectly applied to new media types after an image was replaced. Now, styles are automatically removed when switching between image and other media types, ensuring consistent styling across the HTML editor. This improves the user experience and prevents unexpected visual behavior.
Original PR description
**Current behavior before PR:** - When an image had styles applied to it (such as transform or width) and was replaced with another media type like an icon or document, those styles were incorrectly carried over to the replaced media. **Desired behavior after PR is merged:** - Since transform and width styles are meant to apply only to images, they are now removed when an image is replaced with other media types. task-5373362
This update resolves an issue where invoices with negative tax amounts caused export errors. The fix addresses a technical problem related to how tax calculations were handled during invoice generation, preventing a key error and ensuring accurate UBL document creation. This improves the reliability of invoice printing and exporting.
Original PR description
Steps to reproduce: - Create an invoice with a negative tax on a line. - Confirm - Send & Print Issue: Traceback will show It occurs because when grouping tax subtotal vals we don't handle the withholding taxes properly, causing a KeyError when we later want to retrieve the correct values from `ubl_values` opw-5419227
This update resolves an issue where product documents would stop appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest document version, maintaining accurate product information. This prevents data inconsistencies and ensures users always see the most current document associated with a product.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041
This update resolves an issue where invoice postings in the Chilean Edition tests were incorrectly interpreting dates due to timezone differences. The fix ensures invoices are processed accurately by freezing test times and setting a fixed invoice date, preventing date rollbacks and improving test reliability.
Original PR description
**Issue:** ```python File "/data/build/enterprise/l10n_cl_edi/models/account_move.py", line 744, in _l10n_cl_edi_post_validation raise UserError( odoo.exceptions.UserError: The stamp date and time…
**Issue:**
```python
File "/data/build/enterprise/l10n_cl_edi/models/account_move.py", line 744, in _l10n_cl_edi_post_validation
raise UserError(
odoo.exceptions.UserError: The stamp date and time cannot be prior to the invoice issue date and time. TIP: check in your user preferences if the timezone is "America/Santiago"
```
**Cause:**
Posting an invoice at early local hours (e.g., 2025-12-11 04:00) is converted by the [Chilean timezone (America/Santiago)](https://github.com/odoo/enterprise/blob/ac3f333d97eda5c86a0813490ac6204d4ec5721f/l10n_cl_edi/models/l10n_cl_edi_util.py#L117-L120) to the previous day (e.g., 2025-12-10 19:30).
**Solution:**
- Freeze the test time at a stable CL-safe hour
- Add a fixed `invoice_date` aligned with the frozen timestamp
Reference : [timezone converter](https://dateful.com/time-zone-converter?t=730pm&d=2025-12-10&tz2=Santiago-Chile)
Runbot error: [234755](https://runbot.odoo.com/odoo/runbot.build.error/234755)
Related PR: https://github.com/odoo/enterprise/pull/99518
Forward-Port-Of: odoo/enterprise#101901This update corrects a technical issue affecting the display of expense reports. Previously, column widths weren't calculating correctly due to lost classnames in the expense report override. This fix ensures accurate column widths are applied, improving the user experience when viewing expense reports.
Original PR description
Before this commit, some classnames set on the list renderer were lost in the expense override. As a consequence, the column width logic couldn't be applied correctly. The widths were computed with a wrong available width (the width of table's parent element, which is the renderer itself). 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