Wednesday, September 24, 2025
18 changes · master
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
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
Colombian electronic invoices no longer fail when users send an invoice with a debit note operation type but no linked reference invoice. This prevents a blocking error during email/DIAN submission and makes invoice sending more reliable for Colombian companies.
Original PR description
Currently, an error occurs when the operation type (CO) is "Nota Débito que referencia una factura electrónica" and, after confirmation, the user attempts to send the mail. **Steps to Reproduce:** -…
Currently, an error occurs when the operation type (CO) is "Nota Débito que referencia una factura electrónica" and, after confirmation, the user attempts to send the mail. **Steps to Reproduce:** - Install Accounting and l10n_co_dian modules. - Switch company to "CO Company". - Create new customer invoice. (e.g; Operation Type (CO) = Nota Débito que referencia una factura electrónica) - Click on "Send" button. Ensure DIAN is selected in template and then send it. - Error occurs. **Error:** AttributeError - 'bool' object has no attribute 'isoformat' **Cause:** The issue happens because debit_origin_id is not set, which makes reference_invoice equal to None, leading to an error. - [1] In pervious versions, the operation type could not be modified because it was read-only field. From saas-18.4, it became a stored field. Therefore, without debit note, the operation type cannot be changed directly. In this case, the condition at [2] fails, and the method returns None. **Fix:** This commit ensures that a value is only returned if a reference invoice exists; otherwise, it returns None. [1] - https://github.com/odoo/enterprise/blob/8c0217e4e38903783ab7d70ca3eec1c1e3de03de/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L730 [2] - https://github.com/odoo/enterprise/blob/b67a58ffd70952a06b7dd56a54782c433ff673fb/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L1495-L1496 sentry-6810908763 Forward-Port-Of: odoo/enterprise#92714
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
This update fixes issues in Colombia DIAN electronic invoicing where new vendor bills did not show the correct commercial status and repeated event submissions could block the workflow. It also corrects issuer acceptance events so they are accepted properly by DIAN, helping accounting teams process supplier documents more reliably.
Original PR description
this commit solves following issues: - the commercial status was missing on newly created vendor bills - the flow got stuck when an event had already been sent and we tried to send it again - The accept by issuer event generated errors on DIAN's side task: 5064534
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
Merging timesheet entries from the same helpdesk ticket now keeps them connected to that ticket. This prevents lost ticket history and blocks merges when selected timesheets belong to different helpdesk tickets.
Original PR description
…helpdesk ticket **Steps to reproduce** - Register 2 timesheet lines on 1 helpdesk ticket - Go to the timesheets app and select these 2 lines - Go to Actions -> Merge timesheets Issue: the timesheets are merged but unlinked from the helpdesk ticket. **Change** Preserve the link to the helpdesk ticket when merging timesheets. An error is raised if attempting to merge timesheets not having all the same `helpdesk_ticket_id` value. opw-5086090 Forward-Port-Of: odoo/enterprise#94780
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
The Mexican electronic invoicing flow now handles customer names entered with accents when comparing them to official legal names that omit accents. This helps prevent failed invoice validation for self-invoicing customers after point-of-sale purchases.
Original PR description
Currently, the self-invoicing portal lets client request an invoice after making a purchase in PoS. A form allows them to enter their personal informations such as their name. Many of them enter their name with accents, however the government has all the names without any accents which causes errors when trying to match the requesting party with their legal name during the stamping process of the CFDI. task-4952174 Forward-Port-Of: odoo/enterprise#95280 Forward-Port-Of: odoo/enterprise#95207