Daily updates from Odoo
Tuesday, August 26, 2025
7 changes · 18.0
Resolved issues and error corrections
When invoice OCR finds several contacts with the same VAT number, it now chooses the most relevant customer or supplier based on their business activity ranking. This prevents invoices from being linked to the wrong address or related contact, improving accuracy in automated invoice processing.
Original PR description
It's possible that multiple partners are sharing the same VAT number, for example, when multiple addresses are set on it (each address will be a child `res.partner` with the same VAT number). Previously, when the OCR matched such partners from their VAT number, it would select one "at random" (based on the default sort of `res.partner`). Now, it will match the one with the highest supplier/customer rank. opw-[4954057](https://www.odoo.com/odoo/49/tasks/4954057) Forward-Port-Of: odoo/enterprise#92398
This update prevents an error when several appointment calendar events are processed at the same time. It ensures each event gets the correct video call redirection link, improving reliability for appointment scheduling.
Original PR description
When computing `videocall_redirection`, the method `get_base_url()` was called directly on a recordset containing multiple `calendar.event` records. Since `get_base_url()` expects a singleton, this raised the error: Traceback: --- `ValueError: Expected singleton or no record: calendar.event(4, 6, 1, 5)` This commit ensures the computation is done per record, avoiding the singleton issue and allowing correct videocall redirection values to be set on multiple events. Reference review: https://github.com/odoo/enterprise/pull/53569#discussion_r1543135425 sentry-6819406171
Fixed an issue where projects that exceeded an expense budget could still show the budget status in green instead of red. This helps users quickly identify budget overruns from the project dashboard and avoid misleading financial signals.
Original PR description
**Step to reproduce:** - install "project_account_budget" - go to accounting > accounting > Analytic Budget - create a budget of type expense,say test budget - select analytic account `Asustek - Wood…
**Step to reproduce:**
- install "project_account_budget"
- go to accounting > accounting > Analytic Budget
- create a budget of type expense,say test budget
- select analytic account `Asustek - Wood Corner`
- set budget amount => 500. open the budget
- create a new project 'test project"> open setting > Analytic Page
- add `Asustek - Wood Corner` analytic account in project field
- create a PO with amount > 500
- in analytic distribution column, add `Asustek - Wood Corner` in project column
- confirm PO and create Bill
- Go to `test project` settings > Dashboard smart button
**Observation:**
- For exceeding expense budget, we have green color in budget section
- It should be red
**Cause:**
The conditional class for budget progress was incorrectly evaluated due to missing parentheses around the `and` condition.
In expressions like:
`(true and (1 == 1 ? 'a' : 'c')) or (1 == 1 ? 'b' : 'd') → 'a'` ✅
`true and 1 == 1 ? 'a' : 'c' or 1 == 1 ? 'b' : 'd' → 'b'` ❌
Without parenthesis, the `or` clause is evaluated unexpectedly, even when the `and` branch is intended to take precedence.
This commit wraps the `and` condition in parentheses to ensure the correct evaluation order and consistent class assignment.
Budget:
<img width="1203" height="291" alt="budget 4968162" src="https://github.com/user-attachments/assets/2d8223d5-0344-4ad0-b33c-2598ea167f2d" />
Before fix:
<img width="623" height="195" alt="before fix 4968162" src="https://github.com/user-attachments/assets/4ac749bf-fa93-4835-963a-5dfbdd05559d" />
After fix:
<img width="643" height="225" alt="after fix 4968162 " src="https://github.com/user-attachments/assets/4fd228f9-e32f-48d9-b6ef-55251b21d601" />
opw-4968162Swiss payroll ELM transmissions now include contact person details only when all required contact fields are filled in. This helps avoid sending incomplete contact information and reduces the risk of rejected or unclear declarations.
Original PR description
Contact person information should only be transmitted if all 3 fields are filled Forward-Port-Of: odoo/enterprise#93084
The field service report guided tour was adjusted so it waits for the correct action button instead of matching a condition that was always true. This makes the tour more reliable and helps prevent interruptions during guided workflows or automated checks.
Original PR description
In this commit, we fix the tour industry_fsm_tour by removing "body:not(.modal-open) nav.o_main_navbar" (this trigger is always true) from trigger to let only button[name="action_generate_new_template"].
A failing rental point-of-sale test is fixed by ensuring a needed price list is available during the test setup. This helps keep automated checks reliable without changing customer-facing behavior.
Original PR description
The test was failing because available_pricelist_ids was empty although it was not since it is filled in the setup
but this line `self.env['res.config.settings'].create({'group_rental_stock_picking': False}).execute()`,
empty it and the test expected at least one pricelist to be available for the POS configuration.
This caused the test to fail when it tried to access the first element of an empty list.
This change adds a check, and if no pricelist exists, it creates one and links it to the POS config.
build_error-223356Code cleanup and technical improvements
This draft update removes or simplifies parts of the automated onboarding tour checks for Helpdesk and Planning. The change appears to be internal test maintenance, with minimal expected impact on day-to-day business users.