Daily updates from Odoo
Thursday, July 24, 2025
11 changes · master
Enhancements to existing features
This update replaces the old internal Persona model with standard partner and guest records across messaging-related features. It helps align AI, VoIP, WhatsApp, and live chat behavior with the main Odoo contact model, reducing duplication and improving consistency for future maintenance.
Original PR description
This PR removes the model Persona and replaces it with res.partner and mail.guest models. Task-4675821 PR community: https://github.com/odoo/odoo/pull/212683
Opening a certified Belgian PoS no longer stops users with an error when required company details are missing. Instead, the company settings open directly in a modal so users can add the address and VAT number without leaving the PoS flow.
Original PR description
Instead of displaying an error when opening a certified PoS on a company missing its addresss and VAT number, we now display the company settings in a modal to allow updating without going back to the settings.
The Point of Sale integration has been adjusted to stay compatible with recent product-related changes in Odoo. This helps ensure product attribute information continues to work correctly for businesses using the UrbanPiper POS enhancements.
Original PR description
task-4731792
Point of Sale and self-ordering flows using IoT devices no longer need an extra database check when listening for device updates. This helps shops continue operating more reliably when connectivity is limited or offline.
Original PR description
As it prevents the pos from working offline, we removed the call to the db to get a payload signature. Community PR: odoo/odoo#219865 Forward-Port-Of: odoo/enterprise#90688 Forward-Port-Of: odoo/enterprise#90624
The bank synchronization dashboard now uses a more efficient service to retrieve connected financial institutions. This should make the dashboard more responsive and improve the reliability of bank connection information without changing user workflows.
Original PR description
https://github.com/odoo/odoofin/pull/419 introduces a new more efficient endpoint to get dashboard institutions. This commit updates the `account_online_synchronization` module to use this new endpoint. Task ID: 4801302
Resolved issues and error corrections
The Czech VAT Control Statement export now uses the official date field name for B2 vendor bill entries. This prevents the Czech tax portal from leaving that date blank when businesses upload the XML file.
Original PR description
**Steps to reproduce**: 1. Install `l10n_cz` and `l10n_cz_reports_2025`. 2. Create a vendor bill with a vendor whose place of supply is in-country, set the bill amount to more than 10,000, and…
**Steps to reproduce**: 1. Install `l10n_cz` and `l10n_cz_reports_2025`. 2. Create a vendor bill with a vendor whose place of supply is in-country, set the bill amount to more than 10,000, and confirm the bill. 3. Go to Reporting → Tax Return → VAT Control Statement (CZ). 4. You will see the bill listed under section B2. Now export the XML. 5. In the exported XML, the field `dan_dppd` is present. **Observations**: When exporting XML from the VAT Control Statement report, the date field in the B2 section is incorrectly named `dan_dppd`. According to the official CZ VAT Control Report documentation ([link](https://adisspr.mfcr.cz/dpr/adis/idpr_pub/epo2_info/popis_struktury_detail.faces?zkratka=DPHKH1#110009830_dppd)), As a result, when importing the generated XML into the CZ portal, the field appears blank because it is not recognized. **Issue**: The export template uses the incorrect tag `dan_dppd` instead of the correct `dppd` for the B2 section. **Solution**: The export template was updated to use `dppd` instead of `dan_dppd` in the B2 section, as per the official documentation. opw-4868515 Forward-Port-Of: odoo/enterprise#90394
Fixes a crash that could happen when moving dependent project tasks in the Gantt view if related tasks were missing start or deadline dates. This helps project teams reschedule work more reliably without being blocked by an unexpected error.
Original PR description
Currently, an error occurs when rescheduling a task's date from the Gantt view. **Steps to Reproduce:** - Install the `project_enterprise` module. - Go to `Settings` and enable `Task Dependencies`. -…
Currently, an error occurs when rescheduling a task's date from the Gantt view. **Steps to Reproduce:** - Install the `project_enterprise` module. - Go to `Settings` and enable `Task Dependencies`. - Go to `Projects`, create a `project`, and add `two tasks` (Task 1 and Task 2) under that project. - Open `Task 2` > `Blocked By`, click `Add a line`, and select `Task 1`. - Return to the `project's tasks`, switch to `Gantt View`, and choose `Auto-Reschedule (Keep Buffer)` as the rescheduling method. - `Double-click` on any date in the unassigned block, select `Task 1`, and `drag it to next date`. `TypeError: '>' not supported between instances of 'bool' and 'datetime.datetime'` This error occurs when rescheduling a task to a forward date, and a dependent task has no start date. When the parent task is rescheduled, the system attempts to reschedule the dependent task as well, but since it has no start date, an error occurs [1] due to condition at [3]. The same error occurs when rescheduling a task to a backward date, and a depends on task has no deadline date. When the child task is rescheduled, the system attempts to reschedule the parent task as well, but since it has no deadline date, an error occurs [2] due to condition at [3]. **Steps to Reproduce for backward rescheduling:** - Follow the first 5 steps from the forward rescheduling steps. - Remove the Deadline from Task 1, if it has. - Double-click on any date in the unassigned block, select Task 2, and drag it to previous date. This commit ensures that the incorrect condition is removed from [3]. Now, it checks whether the record is a candidate for moving, and both forward and backward rescheduling are handled safely. [1]- https://github.com/odoo/enterprise/blob/aaad26c28fd4bc1e94e99717076ecbcf74f5f357/project_enterprise/models/project_task.py#L1209 [2]- https://github.com/odoo/enterprise/blob/8cc8443dc11c176b55f7eb3efa07db5edb7e6b0c/project_enterprise/models/project_task.py#L1221 [3]- https://github.com/odoo/enterprise/blob/302f1a5e82ffbf383d37f003820fe780654fae2f/project_enterprise/models/project_task.py#L1203 sentry-6738017612 Forward-Port-Of: odoo/enterprise#90025
Swedish SIE4 accounting file imports now use UTF-8 decoding so Swedish characters are read correctly. This reduces import errors and avoids garbled text for customers using Swedish accounting data.
Original PR description
The aim of this commit is using UTF8 instead of ISO-8859-1 for the file decoding. We received feedback from customers that the previous decoding wasn't handle correctly swedish characters. The documentation tends to say that we should follow CP437. As UTF8 is a superset of CP437, we are now using it. opw-4868415 Forward-Port-Of: odoo/enterprise#90498
Employees without expense management rights can now submit expenses created from OCR uploads without being blocked by an access rights error. This prevents a submission failure caused by updating OCR status after the expense was no longer editable for that user.
Original PR description
How to reproduce the issue: - Upload a pdf via the OCR with a user without expense right. On submitting the expense, an access rights error on the write is thrown. When the expense is created by OCR, on submit, we pass through the action_submit method in hr_expense_extract, which performs validate_ocr, and writes on the expense's extract_state field after the super().action_submit call, which changes the state of the expense from draft to submitted. However, the rule ir_rule_hr_expense_employee_not_draft forbids modifying the expense if it is not in draft state. opw-4855000 Forward-Port-Of: odoo/enterprise#90616
Batch payments now handle currency exchange differences correctly when linked to bank statement lines. This prevents accounting entries from incorrectly ending up in suspense with a zero foreign-currency amount, improving reconciliation accuracy. The update also adds a safeguard so batch payments only group payments with compatible payment methods.
Original PR description
This commit will add the possibility to have exchange diff on batch payment. That was a problem that cause the move of the bank statement line to have a suspense with an amount currency at zero. task-4921741 Forward-Port-Of: odoo/enterprise#89717
This fixes an access problem that blocked standard internal users from creating or editing Colombian contacts with a NIT tax ID. The system can now check the required DIAN certificate information without showing an “Access Denied” popup, reducing friction for day-to-day contact management.
Original PR description
When entering a Colombian Tax ID (NIT), the onchange checks `company.l10n_co_dian_certificate_ids`, which reads `certificate.certificate` records , resulting in an “Access Denied” popup. This changes Wrap the certificate lookup in `company.sudo()` so that the NIT VAT‐onchange can fetch the DIAN certificate records. Steps to Reproduce: 1. Install the l10n_co_dian module and switch to CO company 2. Create a user with only the “Internal User” (base.group_user) group—do not grant Administration/Settings. 3. Log in as that non-admin user. 4. Go to Contacts -> Create. 5. Set Country = Colombia and Identification Type = NIT. 6. Enter any VAT (NIT) number and leave the field. 7. “Access Denied” error for certificate.certificate. opw-4936604 Forward-Port-Of: odoo/enterprise#90176