Daily updates from Odoo
Monday, October 13, 2025
11 changes · 18.0
Resolved issues and error corrections
Invoice PDFs using the Boxed document layout now show the total amount section in the correct position. This keeps invoice reports visually consistent and professional across layouts.
Original PR description
**Steps to reproduce:** 1. Install Accounting module. 2. Change document layout to `Boxed` from Settings. 3. Print any invoice → notice that `total section` is shifted downward compared to other PDF layouts. **Issue:** <img width="772" height="242" alt="image" src="https://github.com/user-attachments/assets/d4c2aab8-11c1-4584-b544-0fcc7071a06a" /> - The amount `total section` in the invoice PDF is not aligned properly due to extra margin. **Solution:** - Remove the unnecessary margin to ensure the total section is aligned correctly across all layouts. **After Solution:** <img width="777" height="185" alt="image" src="https://github.com/user-attachments/assets/c9cd1060-f210-4154-afc9-22d7d6a9207f" /> **opw - 4911228**
This fix prevents GST return setup from failing when a multi-company tax unit's main company has no purchase journal configured. The system now looks across all companies in the tax unit to find a valid purchase journal, improving reliability for Indian GST reporting.
Original PR description
Before this PR: - The system searched for a purchase journal only in `company_id`. - In a tax unit with multiple companies, if the main company had no purchase journal configured, record creation failed with a 'NOT NULL constraint violated' error. After this PR: - The journal search now checks all companies in `company_ids` (or falls back to `company_id`), - allowing the system to find a valid purchase journal across the tax unit. OPW: 5159518 Forward-Port-Of: odoo/enterprise#96838
Document upload request emails now greet the person being asked to provide the document, instead of showing the sender or document owner's name. Invitation and reminder emails are also sent in the recipient's language, making requests clearer and more professional for users.
Original PR description
Currently, the email template inviting a user to upload a document displays the document owner's name in the greeting instead of the requestee's. This commit updates the template to display the correct name. Steps to reproduce: 1. Log in as Mitchell Admin 2. Go in the Document app 3. Click on the New > Request 4. Enter a document name and select Joel Willis as requestee 5. Send the request by clicking on the "Request" button => The invitation email is correctly sent to Joel Willis but it says "Hello Mitchell Admin" instead of "Hello Joel Willis" Additionally, this PR ensures that the reminders and the invitation emails are sent in the requestee's language rather than the sender's. Task-5130591
The working schedule calendar now keeps the hours-per-week value on one line. This small visual fix makes employee schedule information easier to read and avoids awkward line breaks.
Original PR description
Changed the style of hours/week in working schedule calendar so it doesn't appear on 2 lines Forward-Port-Of: odoo/enterprise#91993
This change prevents an uninstall process from failing when worksheet-related database fields have already been removed. It helps avoid incomplete module removals that could cause problems when reinstalling related apps later.
Original PR description
Recently pull request https://github.com/odoo/enterprise/pull/86084 introduced an ondelete method on `ir.model` that retrieves some worksheet templates to delete them. However, this method breaks…
Recently pull request https://github.com/odoo/enterprise/pull/86084 introduced an ondelete method on `ir.model` that retrieves some worksheet templates to delete them. However, this method breaks when uninstalling module `worksheet`:
```
ir.model.data._module_data_uninstall():
... records are deleted ...
ir.model.fields.unlink():
drop column of corresponding fields
delete ir.model.field records
ir.model.unlink():
drop table of corresponding models
ir.model._unlink_if_uninstalling():
self.env['worksheet.template'].search([('model_id', ...)]).unlink()
delete ir.model records
```
The call to `ir.model.unlink()` crashes when searching for worksheet templates, since column `model_id` has been dropped already. This makes the transaction fail, and it is rolled back to a savepoint just before the call to `ir.model.unlink()`. In other words, the uninstallation manages to drop most of the columns that must go, but fails to drop all the tables that must go. And the uninstallation proceeds anyway...
Now consider uninstalling module `resource`. That module defines model `resource.calendar` with required field `name`, and also defines a record in that model (a default calendar). When the module is uninstalled, module `worksheet` is also uninstalled (because it depends on `resource`), and so the situation above happens. Consequently, most of the columns of table `resource_calendar` are dropped, but the table is not. If we reinstall module `resource` after that, the ORM re-creates column `name` (which is `NULL` on the default calendar at least), but fails to add the `NOT NULL` constraint on that column.
The fix consists in avoiding the `search()` above in the ondelete method if the column `model_id` does not exist anymore.This update fixes payroll-related company filtering so it uses the country set on the company’s linked partner record. This helps Swiss and general payroll processes find the right companies reliably, avoiding issues caused by a non-searchable company country field.
Original PR description
As the country_id field on the company is computed and not searcheable, this commit adapts the domain to search for the country of the associated partner. task-5096037
Spanish Veri*Factu invoices for customers outside Spain now select the correct export regime key instead of the general regime. This helps businesses submit more accurate e-invoicing data and avoid manual corrections for export invoices.
Original PR description
### Steps to reproduce: - Install l10n_es_edi_verifactu and switch too Spanish company - Create an invoice for a partner outside Spain (or with the tax "0% EX G") - Check the "Veri*Factu Regime Key" under the page "Veri*Factu" - It should be "Export" (02) but it's "General Regime Operation" (01) ### Cause: `_l10n_es_edi_verifactu_get_suggested_clave_regimen()` is called on the tax "0% EX G". The line ```taxes.filtered(lambda tax: (tax.l10n_es_type not in main_tax_types or tax._l10n_es_edi_verifactu_get_applicability() != forced_tax_applicability))``` doesn't do what the comment says: remove the main taxes with a different applicability. ### Solution: Change the `!=` to `==` so that the line does the same thing as the comment. opw-5071665 Forward-Port-Of: odoo/odoo#230823
This fix adds a default company reference to the shared analytic setup used by analytic distribution widgets. It helps prevent errors in business records that use analytic distribution without explicitly defining a company, improving reliability with no expected user-facing workflow change.
Original PR description
A previous commit[^1] added a field dependency on `company_id` for the widget `analytic_distribution`, which is supposed to be used with `analytic.mixin` a lot of times. In order to avoid issues when models inherited from that mixin without specifying a company, we add it directly in the mixin as a placeholder. [^1]: 3831c4183bc7dbd370e13d3c9de4a55a5d51bbfd
Changing a user's locale can alter the first day of the week, which affects how spreadsheet pivot data is grouped by day. This fix reloads pivot data after a locale change so reports continue to show accurate day-of-week values.
Original PR description
Chaning the locale can change the first day of the week. But the normalization of the server value depends on this `locale.weekStart`, se we need to reload the pivot when the locale changes, otherwise we might display wrong values for a "day_of_week" grouping. Task: [5149508](https://www.odoo.com/web#id=5149508&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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
Purchase requests created from approvals now use the currency configured for the selected vendor instead of defaulting to the company currency. This keeps RFQ pricing consistent with other purchasing flows and helps avoid currency mismatches.
Original PR description
### Issue: When creating an RFQ from an approval, the created purchase order does not use the currency set on the vendor of the product. Rather, it uses the currency of the company, with the value converted based on the vendor's currency to get the price. This is not consistent with other ways we create RFQs, which all respect the vendor currency. ### Solution: Pass the vendor's currency into the values sent when creating the purchase order. opw-4549937
This fixes tooltip and popover placement so help text is less likely to be cut off when it appears near the edge of the screen. Users get a clearer interface in developer-mode forms, reducing confusion when viewing field information.
Original PR description
**Steps to reproduce:** - Activate Developer mode - Go to CRM -> Activity Type - Click on any model to open its form - On hover the Model field tooltip does not display properly its popover component (cut on the left of the screen) **Issue:** When the element cannot be positioned correctly on the screen, it fallbacks to the default position which is often worse. **Fix:** Backported part of a fix from newer versions (https://github.com/odoo/odoo/commit/ae25a2bb09a92b39fb7643a1bf18eecae8f24fc8) to keep the best position among the evaluated ones. opw-5089577 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr