Daily updates from Odoo
Thursday, July 24, 2025
10 changes · master
Resolved issues and error corrections
A small internal fix makes the web editor available consistently across automated tours. This helps reduce test issues and supports more reliable validation of Studio-related behavior without changing day-to-day user workflows.
Original PR description
This commit moves the patch of editor into html_editor to expose the editor instance globally for all the tours. Community PR: https://github.com/odoo/odoo/pull/212032 Forward-Port-Of: odoo/enterprise#90764
The AI assistant no longer sends the latest user question twice when building conversation context. This helps produce cleaner, more accurate AI responses and avoids unnecessary processing.
Original PR description
Prior to this commit, we send messages to the llm like the following:
```
[
{'content': Markup('<p>first question</p>'), 'role': 'user'},
{'content': Markup("<p>Sure, I'm here to help. What's your first question?</p>"), 'role': 'assistant'},
{'content': Markup('<p>second question</p>'), 'role': 'user'},
{'role': 'system', 'content': "You are a RAG assistant.\n\nToday's date to be used: 2025-07-18"},
{'role': 'user', 'content': 'second question'}
]
```
We're actually duplicating the user's prompt and this is because of the retrieval of the chat history. Before calling generate_response, we post the user's message. Therefore, he's message is already recorded in the db. We should then skip the most recent message to assemble the chat history since its just the same to the prompt.
Forward-Port-Of: odoo/enterprise#90665
Forward-Port-Of: odoo/enterprise#90502The 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
The automated Field Service stock test was adjusted to match the updated task list behavior. This keeps quality checks aligned with the product and helps prevent false test failures after related platform changes.
Original PR description
This commit adapts the `industry_fsm_stock_test_tour` tour according to the changes made in community. That is, now the main list view of tasks will now be readonly as before instead of editable with a open form view button. Forward-Port-Of: odoo/enterprise#89585
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
Point of Sale now stops zero-amount customer deposits before they are processed and shows a warning instead. This prevents an unexpected error screen and helps cashiers continue their workflow smoothly.
Original PR description
Steps to reproduce: =================== - From the POS UI, select a customer - Select Deposit Money - Try to deposit `0` amount by clicking Validate button Issue: ====== A traceback is raised when attempting to validate a deposit with zero amount. Cause: ====== The system does not check for zero-amount orders when creating a deposit payment line. Fix: ==== Add a dialog warning when the deposit amount is zero to prevent further processing. Task: 4862811 Forward-Port-Of: odoo/enterprise#90739 Forward-Port-Of: odoo/enterprise#87709
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