Daily updates from Odoo
Tuesday, June 16, 2026
41 changes · master
New functionality added to Odoo
This update adds sample data and an interactive onboarding tour specifically for appointment types like account payments, HR recruitment, and restaurant bookings. This allows new users to quickly understand and experience the appointment functionality within Odoo Enterprise, improving the initial user experience.
Original PR description
*=appointment_account_payment,appointment_hr_recruitment,pos_restaurant_appointment This PR adds demo events for selected appointment types and introduces an onboarding tour. Task-6233604
This update enhances the company's payroll reporting for employees using eco-friendly company vehicles. It adds a new salary rule and reports contributions to the DMFA (under code 868), accurately reflecting the tax benefits associated with these vehicles. This ensures compliance and provides employees with correct financial reporting.
Original PR description
For employees benefiting from a mobility budget and using an eco-friendly company vehicle: - add a dedicated salary rule; - report the contribution amount in the DMFA under code 868; - add code 1 for eco-friendly vehicles in the list of the company cars. task-259958
This update expands the Odoo mail API to include support for 'Cc' (carbon copy) recipients. Previously, the API only supported 'To' recipients. This enhancement allows users to send emails with multiple recipients, improving email communication flexibility within Odoo.
Original PR description
We adapt the code to support "Cc" recipient in the mail API (odoo/odoo#256333). various: account_followup, ai, helpdesk, hr_contract_salary, web_studio Task-5910857
Enhancements to existing features
This update adds dropzones to controller pages within the Enterprise module, improving the user experience for tasks like appointments and helpdesk requests. Standardizing dropzone messages ensures a more consistent and intuitive workflow for users interacting with these features.
Original PR description
*: appointment, website_appointment, website_helpdesk This commit introduces the missing dropzones for controller pages and standardizes the dropzone messages. task-4430461 Community: https://github.com/odoo/odoo/pull/233738
This update adjusts the number of badges displayed on shift templates to a maximum of 4. Previously, the limit was lower, which could restrict the visibility of important scheduling information. This change improves usability and ensures all relevant details are easily accessible for shift planners.
Original PR description
This commit changes the maximum visible badges limit to 4 for shift templates. task-3705263
This update improves the report editor by displaying a clear warning in the sidebar if a report block is shared with another user. This helps ensure collaborators understand who is editing a report and prevents potential conflicts. It's a simple but important enhancement for team collaboration.
Original PR description
In the report editor, the sidebar show if the currently editing block is shared. If so, the name and a warning is shown in the sidebar. TASK-6144417
This update introduces a new boolean field in fleet vehicles to manage CO2 emission calculations. When selected, it intelligently copies CO2 values from similar vehicle models (diesel or gasoline) if available, or multiplies the default value by 2.5. This ensures more accurate tracking of vehicle emissions.
Original PR description
[IMP] l10n_be_hr_payroll: false hybrid:
1 - false hybrid boolean field is added to the fleet_vehicle_model
1.1 - I added it to fleet_vehicle as a related field
1.2 - It is displayed in fleet_vehicle_model view conditionally
2 - When Plug-in diesel is selected and false_hybrid is ticked as true
2.1 - Look to other diesel model with same name and if there are any, take its default_co2 and use it in this model
2.2 - If not, multiply the current default_co2 by 2.5
3 - When one of the Plug-in gasoline/full-hybrid is selected and false_hybrid is ticked as true
3.1 - Look to other gasoline model with the same name and if there are any, take its default_co2 and use it in this model
3.2 - If not, multiply the current default_co2 by 2.5
task - 6146410This update simplifies the naming of new fields created within Odoo's Studio interface. Previously, fields received random, complex names, making them difficult to manage. Now, fields are named with a consistent 'x_studio_[field_type]_[n]' format, ensuring clarity and ease of identification.
Original PR description
Currently, a new field created with Studio will have a randomly generated name (ie: `x_studio_integer_field_p1a_c0s291499`). This commit simplifies the generation as follows: `x_studio_[field_type]_[n]` with `n` being an increment to avoid duplicates. (ie: `x_studio_integer_1`). task-6241678
This update adds a confirmation popup when users reset manually modified salary rules. This ensures users understand the potential impact on database salary rules, preventing unintended consequences and improving data accuracy. It's a small change designed to enhance data integrity.
Original PR description
A new confirmation popup will be displayed to the user in case they reset a manually modified salary rule in order to inform them of the effects of that reset on the salary rules in the DB. Task: 6222776
This update streamlines the process of managing synced calendar accounts by removing unnecessary options and simplifying the user interface. The change improves usability by focusing on the core functionality of syncing events, addressing a previous complexity that rarely benefited users.
Original PR description
The user settings contained a wizard for disconnecting a synced account. This task simplifies it, removing some of the unnecessary options. A part of the wizard relating to re-sync policies was removed - the use cases where it would be useful are minimal, and letting the user decide which events to sync and which not to could lead to inconsistencies in the events Task-5346620
This update streamlines the inventory counting process by automatically focusing on the quantity field when a user edits a product barcode. Previously, operators had to navigate through multiple steps to enter quantities, now it's reduced to just a single input. This improves efficiency and reduces wasted time during inventory operations.
Resolved issues and error corrections
This update resolves an issue preventing printing receipts from the Odoo Mobile App. The fix allows the app to correctly print receipts, mirroring the functionality available on the desktop and web versions. This improves the mobile user experience for order review and fulfillment.
Original PR description
**Steps to reproduce:** - Go on the Odoo App, start the PoS - Go to orders, and go to paid ones - Click on review - Click on Print Receipt - It doesn't do anything but it prints correctly on browser or desktop **Why the fix:** This is a partial backport of 41e4549 that fixes the app to allow the way we created IFRAMES in PoS since 19.2, allowing us to print on the app again. Community PR: https://github.com/odoo/odoo/pull/265024 opw-6186261 Forward-Port-Of: odoo/enterprise#120043
This update corrects a misleading error message that prevented new online account connections for Canadian bank accounts (which don't use IBANs). The fix skips the journal duplication check when an account number is missing, ensuring a fresh journal is created and preventing unnecessary errors. This improves the user experience for a common scenario.
Original PR description
…unt number When a provider returns an account without `account_number` (typical for Canadian banks, which do not use IBANs), the existing-journal search ran with `bank_account_number = False`.…
…unt number When a provider returns an account without `account_number` (typical for Canadian banks, which do not use IBANs), the existing-journal search ran with `bank_account_number = False`. Because `bank_account_number` is a related field on `bank_account_id.account_number`, that search matched every bank journal in the user's allowed companies whose `bank_account_id` was unset. If any of those journals was tied to a connected online link, the new sync was blocked with the misleading error "There's already a synchronized journal linked to this IBAN", even though no IBAN was involved. Skip the search entirely when `account_number` is falsy: without an identifier there is nothing meaningful to dedup against, and the downstream code already handles `existing_journals` being empty by creating a fresh journal. Note: when the provider omits `account_number`, a delete-and-recreate of the connection will now create a fresh journal rather than coincidentally reusing an unlinked empty-`bank_account_number` journal. That reuse path already failed (with a spurious "IBAN already connected" error) as soon as the user had more than one such journal, so the prior behavior was not reliable. The supported recovery path remains the reconnect button on the existing journal, which uses the `active_id` branch and is unchanged. opw-6253563 Forward-Port-Of: odoo/enterprise#119848
This update resolves a visual issue in dark mode and improves the user experience of the Gantt holiday view. Specifically, the way users select holidays has been corrected to accurately reflect the number of selected days, enhancing usability and data accuracy.
Original PR description
- changed selected value in the view to be number of selected cells instead of number of selected records - fixed a visual bug in dark mode where the create popup has ugly background task-id: 6124765 Forward-Port-Of: odoo/enterprise#119253 Forward-Port-Of: odoo/enterprise#116229
This update resolves an issue where the Balance Sheet report incorrectly displayed zero amounts when using the 'Ledger' grouping option. The fix ensures the 'Ledger' group is only applied when appropriate (multicompany or different journal groups are present), preventing incorrect calculations.
Original PR description
[FIX] account_reports: only restore horizontal group from previous_options when it's available The 'Ledger' group will only be available when in multicompany or using different journal groups. It was…
[FIX] account_reports: only restore horizontal group from previous_options when it's available
The 'Ledger' group will only be available when in multicompany or using different journal groups. It was still restored from previous options, even when it shouldn't have been available.
=============================================
[FIX] account_reports: properly compute Ledger group when there's no journal group
To reproduce the issue
1) Populate the db with some data impacting the Balance Sheet
2) Delete all the journal groups that would be created by default
3) Open the Balance Sheet, with multiple companies active.
4) Select the "Ledger" horizontal group
====> The report is displayed horizontally grouped by company, but all amounts are 0.
This happens because, when no journal group exists, the "Ledger" horizontal group creates a column group per company, applying a domain doing ('journal_id', 'in', []), so nothing matches. This is caused by the fact that, in this case, options['journals'] will require to match all journals, and will hence be an empty list. We fix it by properly searching for all journals to build the horizontal group's domain when options['journals'] is empty.
Forward-Port-Of: odoo/enterprise#119418This update corrects a potential issue in the Swiss payroll module where users could incorrectly request refunds on payslips. Swiss regulations limit employees to one payslip per month, so the system now guides users to cancel and re-create the payslip for any necessary corrections. This ensures compliance with Swiss payroll rules.
Original PR description
Prevent refunds for CH payslips since only one payslip per month is allowed for Swiss payroll. Users should cancel the payslip and create a new one to apply corrections. task-5951981 Forward-Port-Of: odoo/enterprise#107943
This update ensures that when users open links in new tabs or windows, the current debug mode settings are automatically carried over to the new page. Previously, this functionality was broken, causing debug information to be lost. This improvement maintains a consistent user experience and simplifies debugging workflows.
Original PR description
Before this commit, opening a link in a new tab or window via middle-click or Ctrl+click would lose the active debug state, as the query parameter was not forwarded to the new page context. This commit ensures that the debug status is copied from the current window and appended to the target URL when a user opens a link in a new window. task-6285277
This update adds a temporary mock model to the spreadsheet dashboard edition module, resolving an issue that prevented test cases from running correctly. This ensures the stability and reliability of the dashboard's testing process, allowing for continued development and quality assurance.
Original PR description
This commit introduces a mock `SpreadsheetDashboardFavoriteFilter` model in the `spreadsheet_dashboard_edition` module. It ensures that test cases relying on favorite filters can run correctly. Task: [5114625](https://www.odoo.com/odoo/2328/tasks/5114625)
This update fixes a visual issue where the 'suggestion' icons weren't appearing in the Assistant when it detected tasks. The change ensures the Assistant correctly identifies activity types, allowing the icons to display accurately and provide better guidance to users. This improves the Assistant's usability and effectiveness.
Original PR description
- When the Assistant detected activities such as 'Working on task', the suggestion icon was not displayed because the event type was not assigned. Unlike `aw.rule` matches, the Odoo URL resolver only set the label and related record information, but did not set the activity type required by `getIcon()`. - Expose the activity type through `get_assistant_data` and assign the activity type when resolving model URLs in extractWatcherActivity. task-6259793 Forward-Port-Of: odoo/enterprise#120370
This update resolves a bug where the employee field in appraisals wouldn't automatically populate when using the appraisal smart button from the employee record. The fix ensures the correct employee ID is passed through the system, regardless of the user's navigation path, improving the appraisal process flow.
Original PR description
[FIX] hr_appraisal: fix auto-fill of employee in appraisal Bug production: 1 - employee app -> department -> select employees -> select any employee -> use appraisal smart button in top ->…
[FIX] hr_appraisal: fix auto-fill of employee in appraisal
Bug production:
1 - employee app -> department -> select employees -> select any employee -> use appraisal smart button in top -> employee_id is not coming
Bug cause:
1 - When we press smart button of appraisal action_send_appraisal_request in hr_employee is called.
2 - It send the self.env.context as a context and active_model and active_id.
3 - In hr_appraisal, _get_default_employee function calculates the default employee_id by looking to context and especially by looking to active model and id.
3.1 - If active_model is hr.employee and there is active_id, it finds the employee automatically (that is the case when we are coming directly from employee -> smart button hr_appraisal)
3.2 - When we first click to department and then we click to employee and smart button, active_model is hr.department and default_employee_id cannot be calculated in default version.
Bug solution:
1 - I have passed the default_employee_id to the context in action_send_appraisal_request function. Since we know the employee in the action_send_appraisal_request function we can pass it directly.
task - 6285434
Forward-Port-Of: odoo/enterprise#119737This update fixes a bug where the 'Due' button wasn't appearing on customer forms when a balance existed, specifically for customers linked only at the journal entry line level. The fix ensures the button is always visible, regardless of how the customer is linked to accounting records, improving user experience and financial reporting accuracy.
Original PR description
Steps to Reproduce: 1. Install Accounting module (without Point of Sale). 2. Create a customer. 3. Create a journal entry with that customer set only at line level. 4. Post the journal entry. 5. Open…
Steps to Reproduce: 1. Install Accounting module (without Point of Sale). 2. Create a customer. 3. Create a journal entry with that customer set only at line level. 4. Post the journal entry. 5. Open the customer form. Issue: The Due smart button is not visible on the partner form even though an outstanding balance exists for the customer. Note: This issue does not reproduce when Point of Sale is installed, as the POS module overrides `_compute_has_moves` with its own implementation that checks the outstanding balance directly. Root Cause: The `_compute_has_moves` method queries only `account.move `for partner matching. When a partner is referenced only at the account.move.line level, the partner is never picked up by this query, resulting in `has_moves = False` and the Due button remaining hidden. Fix: Replaced the EXISTS-based implementation with a UNION-based approach as the EXISTS implementation evaluated the query per partner row, whereas UNION processes all partners in a single batch query. Additionally extended the UNION to also include account.move.line partner matching, ensuring partners referenced only at the line level, are correctly detected and has_moves is set to True. Result: The Due smart button is now correctly visible for all partners with an outstanding balance, regardless of whether the partner is set at the journal entry level or only at the line level. owp = 6243562 Forward-Port-Of: odoo/enterprise#120492 Forward-Port-Of: odoo/enterprise#119084
This update resolves an issue where account reports were displaying with incorrect styling due to a missing CSS class. The change ensures that all lines within the reports are rendered with the correct visual formatting, improving the overall presentation and readability of financial data. This ensures consistent and accurate reporting.
Original PR description
commit introducing the issue: https://github.com/odoo/enterprise/commit/6608d5c21a7fb9d57786c2a7618b878e244bd420 Forward-Port-Of: odoo/enterprise#120532
This update resolves an accessibility issue with tooltips on smartphones and tablets. By using the `data-tooltip` attribute instead of the native `title` attribute, the tooltip service now provides a consistent and reliable experience for all users, including those using keyboard or touch devices.
Original PR description
Treat the `title` attribute as `data-tooltip` in the tooltip service. On touch devices (like smartphones, tablets) the native `title` based tooltip is unreliable and inaccessible, so we now read `title` and expose it via `data-tooltip` to provide consistent behavior. - Many user agents do not expose the `title` attribute in an accessible way (for example they require a pointing device to show a tooltip), which excludes keyboard-only and touch-only users [1] - This change ensures the same appearance and behavior for tooltips triggered via `title` and via `data-tooltip` - We no longer have duplicate tooltips caused by nested `data-tooltip` and `title` attributes. task-6159644 [1]: https://html.spec.whatwg.org/multipage/dom.html#the-title-attribute
This update resolves an issue where the account audit status on reports wasn't updating correctly. By using a more efficient method to load the status data, the display now reflects the most current information, ensuring accurate reporting. This change addresses a technical dependency update related to Odoo's rendering engine.
Original PR description
Load the account audit status record via asyncComputed instead of a useLayoutEffect-triggered async method, so the record is returned as a reactive value rather than written as a side effect on useState state. WHY: useLayoutEffect deprecated with OWL3
This update resolves a technical issue where the Urbanpiper order information screen displayed customer details even when no customer was associated with the order, causing a traceback. The fix ensures customer details are only shown when a customer is correctly linked to the order, improving the user experience.
Original PR description
Steps to reproduce: ==== - Place an order through Urbanpiper. - Edit the order and remove the customer. - Open the ticket screen and click the info button. - A traceback occurs. Cause: ==== - Customer details were rendered even when no customer was linked to the order. Fix: ==== - Display customer details only when a customer is present on the order. task-6233812 Forward-Port-Of: odoo/enterprise#120521 Forward-Port-Of: odoo/enterprise#118147
This update fixes an issue where multiple taxes applied on Brazilian sales orders were displayed on a single line, making them difficult to read. The change adds a line break to separate tax details, improving clarity and usability for users. This ensures accurate tax reporting and a better user experience for Brazilian customers.
Original PR description
Upon creating a SO in the Brazilian localization and computing taxes, tax details are displayed on the SO lines. However, when multiple taxes are applied, all tax details are shown on a single line, making them difficult to read. Add a line break between tax details so that each tax is displayed on a separate line. Before: https://www.awesomescreenshot.com/image/61178015?key=703ceba935bbf0b97f4b45c649722827 After: https://www.awesomescreenshot.com/image/61178078?key=3b980b91b7657aa48dec9b825549ebeb opw-6234768 Forward-Port-Of: odoo/enterprise#120527
This update resolves an issue where inactive taxes were incorrectly displayed and selectable within the bank reconciliation process. The fix ensures that only active taxes are available for selection, improving data accuracy and preventing users from inadvertently using archived tax information. This enhances the reliability of financial reconciliation reports.
Original PR description
### Issue:
When editing a line within the bank reconciliation widget, inactive and archived taxes are incorrectly available for selection
### Cause:
The bank reconciliation edit line form view carried the `{'active_test': False}` context on the `tax_ids` field
This context allowed archived taxes to be loaded and selected during creation and manual edition
### Fix:
Explicitly force `active_test: True` in the view context for the tax field to ensure only active taxes can be searched and selected by the user
### Steps to reproduce:
- Install `account_accountant`
- Create a new tax and set it to inactive
- Go to the Bank Reconciliation widget
- Create a bank statement line
- Set the account to 600000 Expenses
- Edit the line by clicking on the pencil icon
- Open the Taxes selection dropdown
Before the fix, the inactive tax is visible and available for selection by default
opw-6245641
Forward-Port-Of: odoo/enterprise#119522This update fixes an issue where the reconciliation dialog only displayed posted journal items, hiding draft items. Removing a default filter ensures the dialog shows all matching items, providing a more complete and accurate reconciliation view. This improves the user's ability to resolve discrepancies.
Original PR description
The reconcile badge counts draft and posted journal items, but the matching dialog forces a posted filter by default, this makes the dialog show fewer lines than count as it discards the draft ones. Remove the default posted search filter so the dialog displays all matching items. task-6234801 Forward-Port-Of: odoo/enterprise#118146
This update resolves a bug that was causing a warning related to minimum wage calculations for Belgian employees. The fix ensures the system correctly identifies the appropriate job category and wage scale, preventing inaccurate reporting. This ensures compliance and accurate payroll processing for our Belgian clients.
Original PR description
**Description:** Select Belgium company, employee, select student and make its contract as 1st of January. Error appears. For repetition look to the provided link. **Implemntation:** . Add a check for l10n_be_job_category_id, as it is required to determine the minimum wage scale. . Add corresponding tests task-6302901
This update fixes an issue where the Balance Sheet report export was incorrectly including all accounts instead of the selected one when changing date filters. The fix removes a filtering mechanism that was unintentionally introduced, ensuring the report accurately reflects the user's chosen account selection.
Original PR description
Steps: - Open Balance Sheet report and unfold lines - Open the General Ledger from a line with an account - On GL report, change date filter - Export XLSX report -> We export all accounts instead of the one selected in the search bar Cause: Since f8dceec74e44ffe4aef67655be8811c96da91eba we filter out the filter if a default account is defined in the context which is the case in the `caret_option_open_general_ledger` method Fix: Remove the filtering as the behavior that was fixed by the mentioned commit does not happen anymore. opw-6234427 Forward-Port-Of: odoo/enterprise#119588 Forward-Port-Of: odoo/enterprise#119156
This update resolves an issue where HR users without payroll access couldn't view employee type configurations. The change adds HR Manager permissions to the field, allowing all users to access this setting. This ensures consistent functionality across the system.
Original PR description
**Steps to Reproduce** 1. Create a database on v19.3. 2. Install `hr` and `hr_payroll`. 3. Create or log in as a user who only has access rights for the Employee app (`hr`) and no Payroll access. 4.…
**Steps to Reproduce**
1. Create a database on v19.3.
2. Install `hr` and `hr_payroll`.
3. Create or log in as a user who only has access rights for the Employee app (`hr`) and no Payroll access.
4. Go to **Employees → Configuration → Employee → Employee Types**. Opening the Employee Types menu raises the following error:
```python
You do not have enough rights to access the field "employee_type_id" on
Employee Contract (hr.version). Please contact your system administrator.
Operation: read
User: 2
Groups: allowed for groups 'Payroll / Assistant'
```
**Issue Description:**
The field `employee_type_id` is defined in both modules with different group restrictions:
* In `hr/models/hr_version.py`, the field is restricted to **HR Managers**. [field](https://github.com/odoo/odoo/blob/f7e87637d5c47047ebffda0f3c929c25022c3f27/addons/hr/models/hr_version.py#L184)
* In `hr_payroll/models/hr_version.py`, the field is extended with the **Payroll / Assistant** group.
[field](https://github.com/odoo/enterprise/blob/acd831acd0f59f7b8c15bccfb6da0c3969fc3f6d/hr_payroll/models/hr_version.py#L41) When both modules are installed, access to `hr.version.employee_type_id` requires Payroll permissions.
In v19.3, PR #241780 introduced the `employee_count` [computation](https://github.com/odoo/odoo/blob/f7e87637d5c47047ebffda0f3c929c25022c3f27/addons/hr/models/hr_employee_type.py#L25) on `hr.employee.type`. During this computation, `_read_group()` is executed on `hr.employee` using the domain.
[pr] : https://github.com/odoo/odoo/pull/241780/changes
HR-only users (without hr_payroll.group_hr_payroll_user) cannot read the field, causing below traceback.
**Solution**
added `group_hr_manager` group to the field `employee_type_id` so both groups can view employee_type.
**Traceback**
```python
File "/home/odoo/src/odoo/saas-19.3/addons/hr/models/hr_employee_type.py"
line 25, in _compute_employee_count
employee_count_by_employee_type = dict(self.env['hr.employee']._read_group(
...
File "/home/odoo/src/odoo/saas-19.3/odoo/orm/models.py", line 2732, in
check_field_access
raise AccessError(error_msg)
odoo.exceptions.AccessError: You do not have enough rights to access the field
"employee_type_id" on Employee Contract (hr.version).
Operation: read
User: 8
Groups: allowed for groups 'Payroll / Assistant'
```
opw-6246367
upg- 4302826
tgb- 2751
Forward-Port-Of: odoo/enterprise#120233This update adjusts the certification checksum to align with recent changes to the core Odoo system. Specifically, a new scale driver was implemented to reduce exception handling, necessitating this checksum update for accurate certification verification. This ensures continued compliance and proper operation of the l10n_eu_iot_scale_cert module.
Original PR description
As we updated the scale driver to reduce the amount of exception caught, we need to update the certification checksum. see odoo/odoo#268796 Forward-Port-Of: odoo/enterprise#119683
This update ensures that all properties from records – previously missing from spreadsheet exports – are now included. This change aligns the export behavior across different views (kanban, list, spreadsheet) and resolves a previous limitation, ensuring complete data transfer for spreadsheet users. It’s a fix to improve data consistency.
Original PR description
* = [documents_spreadsheet] When exporting properties from records in the web kanban and list views, sub-properties created within a record were previously not supported. Support for exporting these sub-properties has now been added. However, in spreadsheet this should only be enabled from saas-19.2 onwards (where it is already available). To keep the behavior aligned with the usual flow on earlier versions, this filters out the sub-properties exported from the record in `spreadsheet_edition`. community: https://github.com/odoo/odoo/pull/264267 task-6123524 Forward-Port-Of: odoo/enterprise#119675 Forward-Port-Of: odoo/enterprise#118913
This update fixes an error that occurred when downloading the asset template, specifically when a user removed the account code from their Fixed Assets account. The change allows for optional account codes, ensuring the system correctly identifies the asset account name instead of throwing an error. This prevents disruption to the asset template download process.
Original PR description
Currently, an error occurs when downloading the asset template. **Steps to Reproduce:** - Install the `account_asset` module without demo data. - Go to `Accounting` > `Configuration` > `Accounting` >…
Currently, an error occurs when downloading the asset template. **Steps to Reproduce:** - Install the `account_asset` module without demo data. - Go to `Accounting` > `Configuration` > `Accounting` > `Chart of Accounts`. - Open the `Fixed Assets` account, set a `Depreciation` value, and remove the `account code`. - Go to `Accounting` > `Accounting` > `Assets & Liabilities` > `Assets`. - Click `With our template` on the screen. `TypeError: startswith first arg must be str or a tuple of str, not bool` After this [recent commit], account codes became optional and can be removed. As a result, when the code is removed from the Fixed Assets account and when donloading the asset template, the system checks whether the account name starts with the account code [1]. Since the account code is `False`, it raises an error. This commit ensures that the check is only performed when the account code exists; otherwise, the account name is used directly for the asset account. [recent commit]: https://github.com/odoo/odoo/commit/c3313b336b9f1305c363097745926f2bdf61e277 [1]- https://github.com/odoo/enterprise/blob/421fce171dc158faa3b13406b6cea5c1c907ee49/account_asset/controller/asset_template_controller.py#L46-L49 sentry-7487406857 Forward-Port-Of: odoo/enterprise#117580
This update ensures that if a warning card fails to load on the payroll dashboard, the user will see an error message instead of a traceback. Crucially, the remaining warning cards will still load and display, providing a more complete and accurate view of potential issues. This enhances the user experience and data visibility.
Original PR description
Prior to this, if loading a warning caused a traceback, the loading of the remaining warnings would be stopped and the user would only see the traceback. Now, if loading a warning card fails, the error will be shown, but the remaining cards will keep loading and be displayed as well. task-6298866
This update fixes a potential issue in the Belgian HR payroll module where the base amount for holiday pay could exceed an employee's regular wage. The change ensures that holiday pay calculations are accurately capped at the employee's standard earnings, improving payroll accuracy and compliance. This resolves a previous error that could have resulted in overpayment.
Original PR description
The base amount should never be more than the employee's wage. Forward-Port-Of: odoo/enterprise#120681
A technical issue prevented users with limited time-off permissions from accessing the Attendances Gantt View when viewing leave requests. This fix ensures that the Gantt View correctly displays leave information for all users, regardless of their specific access rights. The change involved a minor code adjustment to improve data access.
Original PR description
Version: - 19.0 Steps to reproduce: - Install Attendances and Time Off - Create an internal user. - Give the user: Attendances Officer access & No Time Off Officer/Manager rights - Create an employee…
Version: - 19.0 Steps to reproduce: - Install Attendances and Time Off - Create an internal user. - Give the user: Attendances Officer access & No Time Off Officer/Manager rights - Create an employee linked to the user. - Configure the employee with a Flexible Working Schedule. - Create and approve a Time Off request for the employee. - Open: Attendances -> Gantt View - Navigate to the month containing the employee's approved leave. Issue: - An access error is raised when opening a month that contains the employee's approved leave. Cause: - In `_handle_flexible_leave_interval`, the code accesses `leave.holiday_id` to read fields such as `request_unit_half`, `request_unit_hours`, and `request_hour_from/to` on the `hr.leave` model. - When the current user has Attendances Officer rights but no Time Off access(rare cases), the ORM access check on `hr.leave` raises an AccessError, even though this read is purely for internal calendar computation and does not expose leave data to the user interface. Fix: - Added sudo() on holiday_id to access the employee's leave details and compute the work interval as expected. Task-6264510 Forward-Port-Of: odoo/enterprise#120668 Forward-Port-Of: odoo/enterprise#119116
This update resolves a bug that occurred when sorting financial reports by account code. The issue was caused by attempting to compare numeric and string values, leading to a crash. The fix ensures correct sorting even when account codes are missing (None), improving the reliability of financial reports.
Original PR description
If you're grouping by account_code on a line using an account_code
engine, and there's a None value, it will crash.
To get that, you can (with demo data):
- install l10n_be
- set "BE Company COA" as the main, keeping "My Company (San Francisco)"
activated
- go to the profit and loss "Profit and Loss (Abbr) (BE)", set the date
as the current year
- set "Consolidation" filter
- Unfold "60/61 - Goods for Resale,..."
```
Traceback (most recent call last):
...
File "... in _compute_formula_batch_with_engine_account_codes
results_list.sort(key=lambda x: math.inf if x[0] is None else x[0])
TypeError: '<' not supported between instances of 'float' and 'str'
```
Because in case of `None`, we compare with `math.inf` but the account
codes are string.
no-task
Forward-Port-Of: odoo/enterprise#120641
Forward-Port-Of: odoo/enterprise#120531Code cleanup and technical improvements
This pull request updates the employee field in the HR module to improve data consistency and clarity. The change ensures a more standardized approach to recording employee information, which will help with reporting and data analysis. This is a refactoring effort focused on internal HR processes.
This update simplifies the bank reconciliation process within Odoo Enterprise by restructuring the core function. The changes enhance readability and maintainability, making it easier for developers to understand and update the code. This ultimately contributes to a more stable and efficient accounting system.
Original PR description
Reworked the try_auto_reconcile function to make it more readable by creating helper functions and splitting the function into multiple smaller ones. task-6171727 Forward-Port-Of: odoo/enterprise#120500 Forward-Port-Of: odoo/enterprise#116958
This update modernizes the Live Chat component to align with Odoo's OWL3 framework. The change replaces outdated React hooks with newer Signal/useEffect equivalents, resolving a deprecation issue. A small adjustment using setTimeout ensures the chat interface refocuses correctly after AI responses.
Original PR description
Replaces proxy/useRef/useLayoutEffect with signal/useEffect (OWL3 APIs). setTimeout is used when refocusing after AI response because OWL3's useEffect fires synchronously on signal change, before the DOM patch that re-enables the textarea. WHY: useLayoutEffect is deprecated in OWL3