Daily updates from Odoo
Friday, November 7, 2025
15 changes · master
Resolved issues and error corrections
This fix prevents the AI chat from crashing when a user has no timezone set in their profile. If no timezone is available, the system now uses UTC so users can continue composing emails with AI assistance without interruption.
Original PR description
Currently, an error occurs when opening the AI chat from the mail composer if the user's timezone has been removed. **Steps to Reproduce:** 1. Install AI and Purchase modules. 2. In the user's profile, remove the 'TimeZone'. 3. Open any purchase order and click on _Send PO_. 4. In the _Compose Email_ form, click on AI icon. **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The issue occurs because `self.env.user.tz` returns False when the user's timezone is not set, causing an error when it tries to use `upper()` method on bool value. **Fix:** This commit fixes the issue by defaulting to the UTC timezone when the user's timezone is not set. **Ref:** https://github.com/odoo/odoo/blob/0f40ea82a1332f0e7168d861ad446b7316ab03de/odoo/addons/base/models/res_partner.py#L225-L228 sentry-6961379038 Forward-Port-Of: odoo/enterprise#98435
Archived reconciliation models are now hidden from the list of available options when matching bank transactions. This prevents users from accidentally selecting outdated or disabled rules and keeps the reconciliation workflow aligned with active settings.
Original PR description
Steps to reproduce: ------------------- 1. Install Accounting (with demo data). 2. Go to Accounting > Dashboard and open the "Bank" journal. 3. Click on any unreconciled line and open the dropdown menu. 4. Select “Manage models” and archive one of the reconcile models. 5. Return to the bank journal and open any unreconciled line. Issue: ------- Archived reconcile models are still shown in the available model list. Cause: ------ The [SQL query](https://github.com/odoo/enterprise/blob/6615de3100ac1192039a5f276df278c543f2fabb/account_accountant/models/account_reconcile_model.py#L47-L118 ) does not filter out inactive reconcile models. Solution: ---------- Add a condition to include only active models. opw-5189700 Forward-Port-Of: odoo/enterprise#98372
This fixes manufacturing barcode screens so lot and serial numbers are only shown when the Manufacturing setting allows it, or when those items have already been picked or scanned. It reduces clutter for operators and lowers the risk of selecting or scanning the wrong component.
Original PR description
Issue: ------------------------------------- Lots/serial numbers were always displayed in the barcode module during Manufacturing Order operations, regardless of whether the Show Reserved Lots/SNs…
Issue: ------------------------------------- Lots/serial numbers were always displayed in the barcode module during Manufacturing Order operations, regardless of whether the Show Reserved Lots/SNs option was enabled in the Manufacturing settings. Steps to Produce: ------------------------------------- - In Manufacturing settings, disable the Show Reserved Lots/SNs option. - Create a Manufacturing Order and reserve component lots. - Go to the barcode app - Lots/SNs appear even though the Show Reserved Lots/SNs option is disabled. After this Commit: ------------------------------------- A correct value is now passed to the condition controlling the lot and serial number visibility. Lots/SNs are shown only when Show Reserved Lots/SNs is enabled in Manufacturing settings, or when they have been picked or scanned, helping users focus only on relevant information and reducing the chance of picking or scanning mistakes. Task Id: [3908929](https://www.odoo.com/odoo/project/966/tasks/3908929) Forward-Port-Of: odoo/enterprise#62853
This fixes an issue where connecting an IoT Box could fail while creating its record if the version information was not yet available. The system now checks that the version is present before using it, helping ensure smoother IoT Box setup.
Original PR description
In order to avoid a traceback when creating the IoT Box record after connection, we need to ensure the version is set, before checking whether the first character is a "W". Forward-Port-Of: odoo/enterprise#98871
Philippine check printing now formats amounts with centavos correctly by removing the trailing "ONLY" when decimal amounts are present. The wording for decimal amounts was also adjusted to use lowercase "and", helping printed checks match local formatting expectations.
Original PR description
In phillipines, if any amount has centovas (decimal amount), the amount in words cannot contain 'ONLY' in the end. Additionally, changed 'And' -> 'and' for decimal amount. **task**-5155953 Forward-Port-Of: odoo/enterprise#98535
Completed manufacturing orders can no longer be canceled from the list view. Instead, users receive a clear error, preventing the related stock transfer from being canceled by mistake and keeping production records accurate.
Original PR description
Steps to reproduce:
- Enable multi-step routes.
- Go to Warehouse:
- Manufacturing Operations - Enable 3 steps.
- Create a storable product P1.
- Create a MO to produce one unit of P1.
- Validate the MO.
- Go to the MO list view.
- Select the MO.
- Try to cancel it.
Issue:
The MO is not canceled, but the picking from production to stock is canceled instead.
A done MO should not be cancelable, a UserError should be raised.
opw-5216220
Forward-Port-Of: odoo/enterprise#98954
Forward-Port-Of: odoo/enterprise#98758This fixes how Swiss payroll handles overtime as one-time payments in ELM transmissions. It helps ensure overtime-related payroll data is reported correctly, reducing payroll reporting errors and follow-up corrections.
Original PR description
Forward-Port-Of: odoo/enterprise#98730 Forward-Port-Of: odoo/enterprise#98670
Appointments no longer cap resource bookings at a fixed limit of 12. Businesses can now set a global maximum allowed capacity, so higher-capacity resources can be booked correctly on the website and related reservation flows.
Original PR description
**Steps to reproduce:** - Install Appointment and Website apps - Create a resource with capacity above 12 - Create an appointment_type on `Resources` - Check `Manage Capacities` - Set its assignment method to `Select Time then auto-assign` - Go to the website and select the new resource - The maximum capacity you can book in the drop-down list is stuck to 12 **Issue:** Arbitrary maximum value (12) seemed to be used in the appointment website and controllers, for the resource capacity which can be booked by someone. **Fix:** Added `resource_max_capacity_allowed` setting to configure the maximum allowed value globally. related: https://github.com/odoo/enterprise/commit/2e855b910173b56e8501d0ebe9ee6f83ac5845bc related: https://github.com/odoo/enterprise/commit/db36b59c80b45c6df1da3ac9dc876e79121e5e5e opw-5059177 Forward-Port-Of: odoo/enterprise#98956 Forward-Port-Of: odoo/enterprise#94935
Fixed an issue where repeated navigation in the IoT device screens could leave old event requests running in the browser. This prevents browser connection limits from being reached, keeping IoT device views responsive during normal use.
Original PR description
Steps to reproduce: 1. Pair an IoT box 2. In the IoT form view, click on any device, then click back to return to the IoT form view. 3. Repeat this step multiple times. If you have devtools open, you can see a `/event` fetch request every time you open the device form. Expected behaviour: - When a new request is made, the previous request is cancelled. Actual behaviour: - The previous requests remain active, and eventually no further requests are possible due to browser limits. This behaviour was broken when the longpolling was changed to use the `fetch` method instead of Odoo's `rpc` method. This commit restores the behaviour by using an `AbortController` instance which is aborted when `stopPolling` is called. Manual Forward Port of https://github.com/odoo/enterprise/pull/98985
The mobile search panel now uses colors that fit dark mode better. This improves readability and visual consistency for users working in dark mode on smaller screens.
Original PR description
This commit adapts colors of search_panel for mobile in dark mode. | Before | After | |--------|--------| | <img width="904" height="1022" alt="image" src="https://github.com/user-attachments/assets/9136de22-3ce1-40e3-bb79-8f87c8ee2bf8" /> | <img width="372" height="653" alt="Capture d’écran 2025-10-29 à 08 37 39" src="https://github.com/user-attachments/assets/6aff402b-6dc8-46ce-8e2a-d55887374f51" /> | Requires: - https://github.com/odoo/odoo/pull/234361 task-5121027 Forward-Port-Of: odoo/enterprise#98248
The Planning app now handles missing employee data when opening an avatar popover, such as for archived employees. This prevents an error screen and lets users continue working without interruption.
Original PR description
Purpose of this PR: A guard has been added in the override of `get_avatar_card_data` to handle empty results and prevent traceback errors when data is missing. community PR: [odoo/odoo#231184](https://github.com/odoo/odoo/pull/231184) Forward-Port-Of: odoo/enterprise#98963 Forward-Port-Of: odoo/enterprise#98230
The employee salary offer button now shows all offers linked to the employee across every contract version, instead of only the currently displayed version. This gives HR users an accurate count and avoids missing offers when reviewing employee salary information.
Original PR description
Fix offers count shown in the smart button to show all offers of the mployee in all version, not just the version being displayed. Task-5082700
When a pay run is created from an employee payslip, its dates now automatically match the payslip's pay period. This prevents incorrect default dates and reduces manual corrections for payroll teams.
Original PR description
When creating a pay run directly from the payslip form view, the pay run dates now default to the payslip's period dates instead of the current month. task-5236811 Forward-Port-Of: odoo/enterprise#98799
Folder selection dialogs now show only the expected list options, without document action icons such as open or rename. This prevents confusing choices and avoids crashes when users select folders outside the main Documents app.
Original PR description
Action icons (like 'Open Folder', 'Rename', etc.) were incorrectly appearing in list views outside of the main Documents app, for example, when selecting a folder in a settings menu or a popup dialog. This was confusing and caused a crash when an icon was clicked, as the required functionality was not loaded in those contexts. This fix removes the action icons from these secondary views. To keep the fix stable-proof, the template of the widget was modified, in 19.1 we will fix this in cleaner way. The icons are now correctly restricted to the main Documents list view, where they function as intended. Other views (like folder pickers) now behave as standard selection lists without errors. Task-5166843 Forward-Port-Of: odoo/enterprise#97861
Opening the Timesheets and Planning Analysis view could fail because cost amounts were treated as monetary values without an associated currency. The fix ensures the analysis can load correctly, so project users can access planning and timesheet cost insights without interruption.
Original PR description
### Issue: A traceback occurs when opening Timesheets and Planning Analysis. #### Steps to reproduce: 1- Create a database with `project_timesheet_forecast_sale` installed. 2- Create a project and open the three-dot menu. 3- Click on `Timesheets and Planning Analysis`. ### Cause: The error occurs because currency_id field is not defined, as a result: https://github.com/odoo/odoo/blob/dff0a35413c0bcb106d0ab1086465f9200e25c5d/addons/web/static/src/views/pivot/pivot_renderer.js#L108-L116 currencyIds will cause a traceback as it is undefined. This is due to `planned_costs` and `effective_costs` fields being float but declared as `widget="monetary"` in the pivot view. Since there is no `currency_field`, the pivot renderer fails to resolve currency_id. opw-5176269 Forward-Port-Of: odoo/enterprise#97768