Wednesday, September 24, 2025
115 changes
3 changes
Resolved issues and error corrections
Users applying unsupported filters to image or other binary fields will no longer encounter an unexpected error. The system now records the issue as a warning instead, helping keep filtering workflows stable while still flagging the invalid condition for follow-up.
Original PR description
Currently, an error occurs when user tries to apply an invalid filter on any binary field.
Steps to replicate:
- Add a filter like [('image_1024', 'in', [])] in the custom filter where the image exists(eg, Products) and save.
- Error triggered.
Error:
`ValueError: Binary field stored in attachment, accepts only existence check; skipping domain in condition ('image_1024', 'in', OrderedSet(['']))`
Cause:
- The system encountered an error when users attempted to apply invalid filters on binary fields (e.g., image_1024). The error occurs when operators like 'is in' with empty string values ('') are used, as binary fields are stored as attachments only support existence checks.
Solution:
- Changed the `_logger.exception` to `_logger.warning`.
sentry-6236134077
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prFleet manufacturer pages now count only active vehicle models, so totals better reflect the models currently in use. Users can also filter vehicle models to find archived records when needed, improving record visibility without affecting daily workflows.
Original PR description
- Fixed count of models in manufacturer to count only active models. - Added 'Archived' search filter for 'model' model Task - 4921998 Forward-Port-Of: odoo/odoo#228174 Forward-Port-Of: odoo/odoo#222353
This update fixes a failing automated test for Hong Kong payroll accounting related to leave generation changes. It helps keep payroll file validation stable and reduces the risk of blocked releases due to test failures.
Original PR description
Explanation: _generate_leave method is updated in saas-18.1. build_error-229902 Forward-Port-Of: odoo/enterprise#95084
3 changes
Resolved issues and error corrections
Vehicle manufacturers now show counts based only on active vehicle models, preventing archived models from inflating totals. Users can also filter archived vehicle models more easily, making fleet data clearer and easier to manage.
Original PR description
- Fixed count of models in manufacturer to count only active models. - Added 'Archived' search filter for 'model' model Task - 4921998 Forward-Port-Of: odoo/odoo#228174 Forward-Port-Of: odoo/odoo#222353
1 change
Resolved issues and error corrections
Changing a website theme color and saving immediately no longer triggers an error screen. This makes website customization more reliable, including when debug mode is enabled.
Original PR description
Previously, a traceback occurred when changing the theme color from the color palette and pressing the save button immediately. This PR resolves the issue by adding catch block to handle promise rejections and ensured the correct jquery context is used within the iframe. task-3919146
14 changes
Resolved issues and error corrections
The point of sale test setup now avoids relying on a fixed calendar year when selecting invoices to settle. This makes automated checks more reliable over time and reduces false test failures without changing day-to-day user behavior.
Original PR description
Remove hardcoded year date for selecting invoices to settle. rb-error: 230713 community PR: https://github.com/odoo/odoo/pull/224171 Forward-Port-Of: odoo/enterprise#93166
3 changes
Resolved issues and error corrections
Refreshing appointment slots could fail when no resource was selected because the system tried to read an empty value as a number. This fix handles missing resource selections safely, keeping appointment availability and capacity updates working reliably.
Original PR description
When refreshing the slots, it's possible that the resource_selected_id is equal to None, False or just empty string. This was leading to some error when parsing it to an integer. This commit move the parsing into the method computing the max possible capacity after checking if we got a value. Related commit 3cca7e47ab58f8a7d4e9196dbf60f7068348216b task-5102895 Forward-Port-Of: odoo/enterprise#95144
1 change
Resolved issues and error corrections
Fleet manufacturers now show counts based only on active vehicle models, making the displayed numbers more accurate for day-to-day use. An Archived filter was also added so users can more easily find inactive vehicle models when needed.
Original PR description
- Fixed count of models in manufacturer to count only active models. - Added 'Archived' search filter for 'model' model Task - 4921998 Forward-Port-Of: odoo/odoo#228174 Forward-Port-Of: odoo/odoo#222353
A payroll accounting test for Hong Kong was updated to match a recent change in how employee leave is generated. This helps keep automated quality checks passing and reduces the risk of delays when validating payroll-related updates.
Original PR description
Explanation: _generate_leave method is updated in saas-18.1. build_error-229902 Forward-Port-Of: odoo/enterprise#95084
The product category sidebar now displays nested categories with proper alignment. This prevents awkward spacing or height changes in the shop navigation, giving customers a cleaner browsing experience.
Original PR description
__Issue:__ The nested `<li>` in product categories had a width greater than its parent `<ul>`, causing the parent to expand in height before the child. __Fix:__ Increased the negative margin on the parent container from `ms-n2` → `ms-n5` to align the widths. This fixes the visual layout now that the product aside column is flexible `col` instead of fixed `col-3`. - opw-5075226
This fix prevents online bank synchronization from sending a payment reference field when the related optional accounting module is not installed. It helps avoid failed transaction creation for customers using Odoofin without that extra module.
Original PR description
Odoofin always give the 'end_to_end_uuid' info. But it's a field that is only defined in account_iso20022. So we should not give this field in the create if the module is not installed. Forward-Port-Of: odoo/enterprise#95321
A journal report test was adjusted so it works consistently across different localization setups, including Czech accounting rules. This reduces false build failures and helps keep accounting report updates moving smoothly.
Original PR description
test_document_data_for_bank_journal_with_show_payment_option was failing in builds with l10n_cz installed because - we set move_sales_2.payment_reference = '' in setUpClass and without l10n_cz it stays empty - but with l10n_cz installed it gets recomputed because of precompute=True on taxable_supply_date (which is a stored computed field that triggers an extra write on account.move when the company is in CZ, and that write causes the compute graph to run again, and _compute_payment_reference fills the value back in) this commit solves this issue by not making assumptions about the payment_reference value and would use it as is in the generated data validation build_error-231479 Forward-Port-Of: odoo/enterprise#95014
Refreshing appointment time slots could fail when no resource was selected, preventing capacity from being calculated correctly. This fix handles empty selections safely so users can continue browsing and booking available appointment slots without errors.
Original PR description
When refreshing the slots, it's possible that the resource_selected_id is equal to None, False or just empty string. This was leading to some error when parsing it to an integer. This commit move the parsing into the method computing the max possible capacity after checking if we got a value. Related commit 3cca7e47ab58f8a7d4e9196dbf60f7068348216b task-5102895 Forward-Port-Of: odoo/enterprise#95144
The Belgian payroll Dimona module now prevents direct editing of the student status on employee records when that value comes from the employee version record. This avoids inconsistent HR data and reduces the chance of payroll or reporting errors.
Original PR description
This commit marks `l10n_be_is_student` field as readonly in `hr.employee` model since it is a related field of `hr.version` and it is not editable in `hr.version` and so there is no reason to make in editable in employee model. runbot-error-231303 Forward-Port-Of: odoo/enterprise#95208
The Studio sidebar now has a maximum width outside XML editor mode. This keeps the editing workspace easier to use and prevents the sidebar from taking up too much screen space.
Original PR description
This commit puts a hard limit to the studio sidebar width. task-4935942
The payslip form now hides the warnings area when there are no issues to show. This removes unnecessary empty space and makes the payroll screen cleaner for users.
Original PR description
Before this change, the `issues` field was always rendered on the payslip form, even when there were no warnings to display. This resulted in unnecessary empty space being shown in the UI. task-5071223 Forward-Port-Of: odoo/enterprise#94489
Users can now manually enter a checkout time directly from the Attendance Gantt popup when an attendance is still open. This fixes a visibility issue that previously forced users to leave the Gantt view to complete the checkout information.
Original PR description
The Gantt popup form explicitly set `check_out` invisible when it was empty, which prevented users from manually entering a checkout for an open attendance. This commit removes the overriding xpath so that the form simply inherits the standard `hr_attendance_view_form` behavior, where the `check_out` field is always visible and editable. Users can now set a manual checkout directly from the Gantt modal. task-5026978 Forward-Port-Of: odoo/enterprise#92726
A typo in an accounting reports error message has been fixed so blocked changes are displayed as a properly formatted list. This makes the warning clearer for users when lock dates prevent edits to report external values.
Original PR description
[FIX] account_reports: typo in error message typo in generation of error message saying that lock dates are blocking the modification of a report external value See odoo/enterprise#92949 Forward-Port-Of: odoo/enterprise#95175
Planning now correctly calculates weekly progress for flexible shifts that span across two weeks. This prevents managers from seeing all allocated hours counted in the first week, making workload tracking more reliable.
Original PR description
### Steps to reproduce: - Install Planning app - Create a shift for a flexible employee that starts on Friday and end on the following Tuesday for example - Go to the gantt view for the week that the shift should start at - Notice the progress bar is showing the whole allocated hours not just the week's hours ### Cause: This mainly happening because when the employee is flexible we are getting the value by multiplying the hours_per_day of his schedule by the period.days and the period is the shift period ### Fix: We use the interval we are just checking as the period now so if the shift is extended to the next week we are just going to use the end of the week as the interval end not the shift's end_datetime opw-5022800 Forward-Port-Of: odoo/enterprise#95279 Forward-Port-Of: odoo/enterprise#93404
Barcode lookups now fill in product information only when the relevant fields are empty, instead of replacing an existing eCommerce description. This helps merchants keep their manually written online product descriptions intact while still benefiting from barcode database enrichment.
Original PR description
Scenario: - enable "Barcode Database" in general settings - set an eCommerce description on a product - set a barcode in the database on that product (eg. 799439112766) Result: the eCommerce description has been overwritten by the barcode lookup result. Fix: do like other _update_product_by_barcodelookup methods and only update value that are not yet set. Note: also fixes the return of the overridden methods. opw-5061231 Forward-Port-Of: odoo/enterprise#94098
The Belgian POS blackbox reports no longer show the message "THIS IS NOT A VALID VAT TICKET" on invoices and daily reports. This avoids confusion because the warning is only relevant for POS receipts that are not final VAT tickets.
Original PR description
- Remove the message "THIS IS NOT A VALID VAT TICKET" from the invoices and POS daily reports views. This message is only necessary on POS receipts that are not final TVA tickets. task-id: 5013860 Forward-Port-Of: odoo/enterprise#92287
The website generator help page now points users to the correct support contact instead of an outdated or wrong email. This helps customers reach the right assistance channel when they need help during website setup.
Original PR description
Changing wrong email into the support /help page. Task: odoo.com/odoo/project.task/5100049?menu_id=4720 Forward-Port-Of: odoo/enterprise#95282
This fix prevents an error when users open sale order line details from a product form that includes related invoice lines. It ensures the dialog uses the current record information instead of relying on a search view that is not available there, improving stability for customized product workflows.
Original PR description
…in a dialog Steps to reproduce ================== Prerequisites: Having a product with an SO and an Invoice confirmed. Steps: - Open Product Variant Form - Open Studio - Add new O2M to SOL: Product (Sale Order Line) - Edit subview form - Add invoice_lines - Quit Studio - Click on SOL on Product view → It crashes => TypeError: can't access property "context", ctx.env.searchModel is undefined Cause of the issue ================== In form view dialogs, we don't have a search model Solution ======== We should use the context from the current record opw-4921186 Forward-Port-Of: odoo/enterprise#95259
Fleet manufacturer records now count only active vehicle models, so the displayed totals better reflect currently used data. Users can also filter vehicle models to view archived entries when needed, improving data review without affecting daily workflows.
Original PR description
- Fixed count of models in manufacturer to count only active models. - Added 'Archived' search filter for 'model' model Task - 4921998 Forward-Port-Of: odoo/odoo#228174 Forward-Port-Of: odoo/odoo#222353
Fixes an issue that could block delivery validation when proceeding with products using expiration tracking but missing a removal date. This helps warehouse users complete affected deliveries without encountering an unexpected error.
Original PR description
currently an error occur when user proceed except expired delivery. Steps to Reproduce: - Install the `product_expiry` module. - Create a product with the configuration: - In `Track Inventory`,…
currently an error occur when user proceed except expired delivery. Steps to Reproduce: - Install the `product_expiry` module. - Create a product with the configuration: - In `Track Inventory`, select `By Lots`. - In the `Inventory tab`, check `Expiration Date`. - In the newly created product, click `Lot/Serial Numbers` button, create a new `Lot/Serial Number`, and clear the `Removal Date` of that Lot/Serial Number. - Go back to the newly created product and update the `Quantity On Hand` of the linked `Lot/Serial Number` by clicking `Update`. - Now go to `deliveries` and create a new `delivery` and add the newly created product and `validate` > `Proceed except expired`. `TypeError: '<' not supported between instances of 'bool' and 'datetime.datetime'` This error occurs when user proceed except expired delivery, The removal_date of the move line is computed based on the lot's removal date and the move line's expiration date. If the lot does not have a removal date and the move line also does not have an expiration date, then removal_date on the move line is set to False [1], which raises the error here [2] This commit ensures that it only compares with the move line removal_date if it is present. [1]- https://github.com/odoo/odoo/blob/70a7babcc830f72bd069a5bb1504748363e4e848/addons/product_expiry/models/stock_move_line.py#L56 [2]-https://github.com/odoo/odoo/blob/70a7babcc830f72bd069a5bb1504748363e4e848/addons/product_expiry/wizard/confirm_expiry.py#L48 sentry-6864176071 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226025