Saturday, August 9, 2025
5 changes · saas-18.4
Resolved issues and error corrections
This update fixes internal tests so they pass consistently when an optional file-detection library is installed. It helps keep quality checks stable across environments without changing customer-facing behavior.
Original PR description
Those tests are failing when python-magic is installed. Since 26f9c82b99 Odoo > saas-18.4 has this lib as a requirement and comes with appropriate fixes. This commit adapts some test for versions prior to saas-18.4 to also work when the python-magic lib is installed. Forward-Port-Of: odoo/odoo#221408 Forward-Port-Of: odoo/odoo#221045
This fixes an installation failure in the Spanish VeriFactu e-invoicing module when certain optional tax records have been removed. Businesses can now install the module more reliably without being blocked by a validation error related to missing tax setup.
Original PR description
In case some taxes for which we specify Applicability info (field `l10n_es_applicability`) do not exist the module can not be installed. I.e. the `_l10n_es_edi_verifactu_post_init_hook` raises. Reproduce 1. Install `l10n_es` without installing `l10n_es_edi_verifactu` 2. Delete tax with xmlid `account_tax_template_s_iva_e` (sales tax with description "VAT 0% export (services)") 3. Install `l10n_es_edi_verifactu` 4. A "Validation Error" appears ``` The operation cannot be completed: - Create/update: a mandatory field is not set. - Delete: another model requires the record being deleted. If possible, archive it instead. Model: Tax (account.tax) Field: Tax Name (name) ``` opw-5003231 opw-4996685 opw-4999922 Forward-Port-Of: odoo/odoo#222385 Forward-Port-Of: odoo/odoo#222225
Invoice PDFs now handle very long product descriptions more reliably when line tables continue onto another page. This prevents descriptions from overlapping the table header, making printed invoices clearer and more professional for customers.
Original PR description
**Steps to reproduce**: 1. Install the `account` module. 2. Create a Invoice using this any product. 3. add long descripition (approx. 40-45 lines). 4. Print the PDF of Invoice (via gear icon).…
**Steps to reproduce**: 1. Install the `account` module. 2. Create a Invoice using this any product. 3. add long descripition (approx. 40-45 lines). 4. Print the PDF of Invoice (via gear icon). **Observation**: The long product description overlaps with the table header when the table spans multiple pages in the generated PDF. **Issue**: wkhtmltopdf does not handle multi-page table headers properly by default. causing header/content overlap when the table breaks across pages. **Solution**: Apply a known wkhtmltopdf workaround by explicitly setting: `<thead style='display: table-row-group;'>` This ensures headers will not repeat same as this. [#53909](https://github.com/odoo/odoo/pull/53909) before: <img width="818" height="231" alt="image" src="https://github.com/user-attachments/assets/8bcc6ced-5911-4abd-b91e-97ffa8fb735e" /> after: <img width="821" height="253" alt="image" src="https://github.com/user-attachments/assets/2ccc6995-c239-4beb-8f68-53d548b7f2f2" /> opw-4982735 Forward-Port-Of: odoo/odoo#222286 Forward-Port-Of: odoo/odoo#221681
This fixes a mismatch in the test setup for importing spreadsheet files, so the test behaves consistently across environments with different file detection tools installed. It reduces false test failures and helps keep account import quality checks reliable.
Original PR description
[FIX] account_base_import: fix mime type The `test_duplicate_journals_import` test fails when the magic lib is present. While the `xlsx` detection is supported, the test calls the import wizard with `xlsx` files but `application/vnd.ms-excel` as the file type which is for `xls` files. With this commit, the appropriate file type is given and the test works in all cases. (tested with Docker16, PureNoble and PureBookworm docker files) Forward-Port-Of: odoo/enterprise#91450 Forward-Port-Of: odoo/enterprise#91267
Rental order confirmation now continues processing planning shifts even when one line has no available resource. This prevents shift creation from stopping early and helps ensure all eligible rental order lines are handled correctly.
Original PR description
Before this commit, when rental order containing a plannable rental product is confirmed, some shifts will be generated according to the rental order lines with such product. The problem is when there is no available resource, the method in which we expect to return vals list of planning.slot model will return vals because it will break the loop instead of continuing to the next iteration. This commit makes sure the `_planning_slot_vals_list` always return list of vals.