Daily updates from Odoo
Saturday, April 18, 2026
3 changes · master
Resolved issues and error corrections
This update allows users to start and stop timesheet timers directly from the systray, regardless of whether the `hr_attendance` app is installed. Previously, users needed this app to stop the timer when taking a break. Check-in and check-out data is stored locally in the browser for convenience, but is overwritten daily.
Original PR description
## Behavior Before the Commit When users interacted with the `timesheet`` systray, they were unable to stop the `timesheet` timer unless they had the `hr_attendance` app installed. This caused issues when a user went on break, as the timer continued running. ## Behavior After the Commit Users can now check in directly from the `timesheet` systray and later check out, which correctly stops the timesheet timer and doesn't require the `hr_attendance` module. ## Additional Information Daily check‑in and check‑out data is stored locally in the user’s browser. This ensures persistence across sessions without requiring database writes. Data from previous days is overwritten, meaning it can be lost if not recorded elsewhere. ---- task-[5969277](https://www.odoo.com/odoo/project/4105/tasks/5969277)
This update resolves a crash that occurred when users clicked on the Analytic Distribution field within the expense form. The issue stemmed from how the system handled JSON fields, specifically when determining the OCR box type. The fix adds optional chaining to ensure the system gracefully handles these fields without errors, improving the user experience.
Original PR description
**Problem:** Clicking on the Analytic Distribution field in the expense form triggers a traceback: "Cannot read properties of undefined (reading 'fields')". **Steps to reproduce:** 1. Enable Analytic…
**Problem:** Clicking on the Analytic Distribution field in the expense form triggers a traceback: "Cannot read properties of undefined (reading 'fields')". **Steps to reproduce:** 1. Enable Analytic Accounting in Settings > Accounting 2. Go to Expenses > New 3. Click on the Analytic Distribution field 4. Observe the JS error in the console **Current behavior:** TypeError: Cannot read properties of undefined (reading 'fields') in HrExpenseFormRenderer.getBoxType **Expected behavior:** Clicking the Analytic Distribution field should not cause any error. **Cause of the issue:** The `ExtractMixinFormRenderer` mixin listens to all `focusin` events and calls `getBoxType` to determine the OCR box type for the focused field. When a nested widget like `AnalyticDistribution` gains focus, `getFullFieldName` returns a dot-separated name (e.g. `analytic_distribution.x_plan_id`), causing the code to enter the dotted-name branch in `getBoxType`: `this.props.record.data[parentField]?._config.fields[fieldName]` The `analytic_distribution` data is a JSON object, not a relational record, so it has no `_config` property. Optional chaining on `data[parentField]` prevents a crash when the field is missing, but the missing `?.` on `_config` causes `undefined.fields` to throw. **Fix:** Adding optional chaining on `_config` is consistent with the existing defensive pattern already used on the same line for `data[parentField]?` and `[fieldName]?.type`. This makes `getBoxType` gracefully return no box type for non-relational nested fields, which is correct since OCR box overlay is not applicable to them. opw-6108576
This update ensures Rental Orders consistently require both a start and end date when specifying rental periods. Previously, the system allowed open-ended dates, which wasn't aligned with the core functionality of rental orders. This change improves data accuracy and simplifies the rental process.
Original PR description
When clearing rental dates on a Rental Order, the daterange widget switches to an open-ended daterange input. However, Rental Orders require both a start and an end date. This commit ensures the input always requires a strict range. Follow-up of task-6003684