Daily updates from Odoo
Wednesday, May 6, 2026
17 changes · master
Resolved issues and error corrections
This update resolves an issue where the payroll system incorrectly flagged users as unauthorized document owners in multi-company environments. The fix replaces a dependent field with a stored employee flag, ensuring accurate validation regardless of the company context. This prevents errors during payroll processing.
Original PR description
Steps to reproduce- 1) In a multi-company environment, create an employee in a secondary company. 2) Link a Portal User to this employee via the user_id field. 3) Create and validate a payslip for…
Steps to reproduce- 1) In a multi-company environment, create an employee in a secondary company. 2) Link a Portal User to this employee via the user_id field. 3) Create and validate a payslip for this employee. 4) Run the 'Payroll: Generate pdfs' cron. Error - ValidationError: The following user(s) cannot own root documents/folders: portal_employee: Payslip - portal_employee Cause - The validation logic uses the employee_id field on res.users to check if a user is an employee. Since employee_id is a non-stored computed field, its value depends on the current company context (self.env.company). When the payroll cron runs under the OdooBot user in the default company context (ID = 1), it cannot resolve the employee_id for users belonging to other companies. The field evaluates to False, causing the system to incorrectly flag the user as an unauthorized document owner. Fix - Replace the validation check with the employee boolean field. Unlike the computed Many2one, employee is a stored field that is not restricted by the active company context. This ensures that a user's employee status is correctly identified during background tasks across all companies. opw-6143042 Co-authored by Tina Lin (liti) Forward-Port-Of: odoo/enterprise#115570
This update resolves an issue in the Belgian payroll module where holiday attestation occupations were being calculated incorrectly. The fix replaces a direct field access with a more reliable method, ensuring accurate holiday entitlement calculations for employees. This improves payroll accuracy and compliance.
Original PR description
. use _get_hours_per_week() method instead of calling the field on the version task-6185339 Forward-Port-Of: odoo/enterprise#115990
This update simplifies the sales credit limit process by removing a confusing toggle in the contact form. The credit limit is now automatically applied through global settings, ensuring consistent enforcement regardless of the toggle's state. This streamlines the user experience and avoids unnecessary manual adjustments.
Original PR description
Steps to reproduce: 1- Install Accounting and Contacts 2- Enable "Sales Credit Limit" in the settings and set a default limit 3- Open any contact form and go to the accounting tab 4- You will find…
Steps to reproduce: 1- Install Accounting and Contacts 2- Enable "Sales Credit Limit" in the settings and set a default limit 3- Open any contact form and go to the accounting tab 4- You will find "Partner Limit" field with a toggle next to it 5- Enable the toggle, save and refresh Issue: The toggle shows as disabled again Why this happens: The Partner Limit field depends on the `use_partner_credit_limit` attribute to display/hide the credit limit. The expression evaluated to true if the partner's credit limit is not equal to the default credit limit. Hence, running the compute method with the default limit always resulted in a disabled toggle and the credit limit was hidden, indicating the limit check was disabled. Fix: The Sales Credit Limit is automatically applied to all partners via the global accounting settings, despite not showing as "enabled" in the contact form. The `Partner Limit` toggle is a redundant manual override that does not affect the actual enforcement of the limit when the global setting is enabled, so should be removed opw-6113301
This update corrects formatting issues in the documentation for a key function within our Point of Sale (POS) platform. This change ensures the documentation adheres to new standards, improving consistency and maintainability. It's a routine update to maintain code quality and align with internal development practices.
Original PR description
This commit fixes the docstring formatting of the `_prepare_order_values_from_data` function. This is to ensure compliance with the docstring linter, which is now enabled for all PoS/IoT modules (see odoo/odoo#262741).
This update resolves an issue where record lines persisted during manual cleaning mode would be skipped when switching to automated mode. By removing these old lines, the system now correctly processes all records through the scheduled cron job, ensuring accurate data cleaning and deduplication. This improves the reliability of automated data processes.
Original PR description
When a model mode (deduplication or cleaning) is changed from manual to automated, previously generated record lines remain. These lines are skipped by automated actions, leading to confusion as they should be processed by the cron. This commit removes existing record lines when switching to automated mode, ensuring they are properly handled during the next cron run. task-5979884
A test related to rental stock management was failing due to demo data. The fix prevents the creation of duplicate 'out of stock' ribbons, which were being triggered by the test's attempt to create a second ribbon with the same configuration. This ensures the test runs successfully.
Original PR description
Currently, running test `test_out_of_stock_ribbon_is_not_applicable_for_rentals` with demo data enabled leads to a validation error: `Only one ribbon with the "assign when out of stock" option is allowed.` This happens because, with demo data loaded, an "out of stock" ribbon is already created via XML data. The test then attempts to create another ribbon with the same configuration, triggering the constraint and causing the failure. Related PR: https://github.com/odoo/enterprise/pull/112660 runbot-[242457](https://runbot.odoo.com/odoo/error/242457) --- Forward-Port-Of: odoo/enterprise#116162
This update removes a confusing setting that was incorrectly mixing withholding tax (WHT) closing entries with VAT closing entries. This ensures that financial reports are accurate and separate, preventing errors in tax calculations. The change improves the clarity and reliability of financial reporting.
Original PR description
WHT does not require a closing entry. The current return type is causing VAT closing entry to mix with WHT closing entry or vice versa. task-6157814 Forward-Port-Of: odoo/enterprise#115576
This update resolves an issue where users unregistering from GST would receive a 'Missing Required Fields' error. The fix ensures the GST username field is only required when the GST section is enabled, allowing users to modify settings correctly regardless of their GST registration status.
Original PR description
**Steps to reproduce:** * Install `l10n_in` module. * Go to Accounting > Settings. * Check 'Fetch Vendor E-Invoiced Document` and clear the GST Username * Uncheck `Registered Under GST`. * Try to…
**Steps to reproduce:** * Install `l10n_in` module. * Go to Accounting > Settings. * Check 'Fetch Vendor E-Invoiced Document` and clear the GST Username * Uncheck `Registered Under GST`. * Try to modify any setting and save. **Observed behavior:** * A `Missing Required Fields` error is raised even though no visible field is missing a value. **Cause:** * The `l10n_in_gstr_gst_username` field is placed inside a `div` that is hidden when `l10n_in_is_gst_registered` is `False`. * However, its `required` condition only checked `l10n_in_gst_efiling_feature or l10n_in_fetch_vendor_edi_feature`, without accounting for `l10n_in_is_gst_registered`. * Since both features default to enabled, the field remained required even when invisible, blocking any settings save. **Fix:** * Update the `required` attribute on `l10n_in_gstr_gst_username` to include `l10n_in_is_gst_registered` as a condition, so the field is only required when the GST section is visible and either `GST E-Filing & Matching` or `Fetch Vendor E-Invoiced Document` is enabled. opw-6133001 Forward-Port-Of: odoo/enterprise#116174 Forward-Port-Of: odoo/enterprise#114423
This update resolves an issue where live chat channels with AI agents were not appearing correctly. The fix corrected a coding error that was preventing the system from accurately counting agents associated with each channel. This ensures all live chat channels, including those with AI agents, are visible to users.
Original PR description
The number of agents linked to a livechat channel was always 0 because of a mistake in the code. This prevented livechat channels with AI agents from appearing to users. This commit fixes the problem. task-5409200 Forward-Port-Of: odoo/enterprise#114404 Forward-Port-Of: odoo/enterprise#111574
This update fixes a minor issue in the Odoo HTML editor by clarifying how text content is handled. Specifically, it replaces a specific method with a more general one, ensuring consistent behavior and better performance. This change improves the reliability of text manipulation within the editor.
Original PR description
Description of the issue this PR addresses: This commit replace `editableSelection.textContent()` with `toString()` and review `textContent`/`innerText` usages. task-6014428 community-https://github.com/odoo/odoo/pull/260619
This update ensures that the Point of Sale configuration correctly resets when optional modules (like appointment scheduling) are removed. Previously, the configuration would retain outdated settings, leading to potential issues. This change guarantees a clean state after module uninstallation, improving stability and usability.
Original PR description
PURPOSE: ------------ Prevent POS configuration from keeping stale flags after uninstalling optional modules such as pos_appointment or pos_avatax. STEPS TO REPRODUCE: ------------- 1. Enable Appointment in POS config (module_pos_appointment=True). 2. Uninstall pos_appointment. → The “Appointment” option in POS config remains checked. FIX: --------------- Added uninstall_hook in __init__.py of each POS addon: - pos_appointment - pos_avatax - pos_iot - pos_urban_piper Each uninstall hook resets the corresponding module_pos_* flag to False in all pos.config records. Task-5166200 Related PR-https://github.com/odoo/odoo/pull/235255
This update adds warnings to the payroll dashboard for employees in India who have missing or invalid bank information (IFSC codes). This ensures accurate payroll processing and compliance by proactively identifying and resolving potential payment issues related to bank account details.
Original PR description
Purpose: - Ensure employees have valid bank identification codes for payroll payments by showing warnings when bank BIC/SWIFT/IFSC codes are missing or invalid. This PR includes: - Added related field `partner_country_code` on bank accounts to determine the partner country. - Updated bank account form view to dynamically display the label: - 'BIC/SWIFT/IFSC' when the contact country is India. - 'BIC/SWIFT' when the contact country is outside India. - Modified validation logic to detect missing or invalid bank identification numbers depending on the employee contact country. - Added payroll dashboard warning 'Missing or invalid bank BIC/SWIFT/IFSC' to highlight employees with incomplete or incorrect bank details and restricted it to Indian companies and employees. task-5921423
This update resolves a technical issue preventing proper tracking of expenses within the Stripe module. The change ensures that tracking values are correctly linked to mail messages, improving the reliability of expense reporting. This ensures accurate expense data is captured and managed.
Original PR description
tracking_value_ids are used in _transfer_messages_to_card but since the seperation of tracking values from mail, it's failing. task-6186968 Forward-Port-Of: odoo/enterprise#116213
This update resolves an issue where users lacking specific permissions on employee records would encounter an access error when trying to view attendance data. The change corrects a technical error related to accessing employee information, ensuring all users can access attendance records regardless of their permission level. This improves usability and prevents disruptions for users.
Original PR description
Steps to reproduce: ---------------------------------------- - Connect with a user having no rights on Employee - Try to open Attendances - Access error Cause: ---------------------------------------- Since 218b91cad3e50b27a84624145c89ed6bb23f18c5 we read the field `is_flexible` on employee which is a field only accessible to `hr.group_hr_user` ([src](https://github.com/odoo/odoo/blob/70ade77937bfc171a3352e70c5c78bfd87ceb4d1/addons/hr/models/hr_version.py#L154)). opw-6179252 Forward-Port-Of: odoo/enterprise#116052
A minor typo in the French Profit & Loss report (P&L) has been fixed. The term 'exceptionnel' was incorrectly using masculine form when it should be feminine to accurately reflect charges. This ensures correct reporting and compliance with French accounting standards.
Original PR description
There was a small typo in section 8 of the pnl report. "exceptionnel" must go feminine when referring to charges. Forward-Port-Of: odoo/enterprise#116198
This update clarifies French Profit and Loss reports by splitting account 649 into two new accounts (6491 and 6492). This separation accurately reflects social security charges and salaries, aligning with French accounting standards (ANC PCG 2026). The original account remains for legacy systems.
Original PR description
Splitting account 649 into two new accounts (6491 and 6492) is necessary to handle the Profit and Loss report properly. This ensures we can accurately separate social security charges from salaries in the report. Reference: ANC PCG 2026, page 445, note (h) https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/recueil/RECEUIL-PCG-2026-AVEC-COUVERTURE.pdf task-6053784 Forward-Port-Of: odoo/enterprise#114412 Forward-Port-Of: odoo/enterprise#111420
This update fixes a bug in the payroll calculation process. Previously, the system incorrectly skipped remuneration declarations when all worked days fell under a specific code, leading to missed payments for year-end bonuses or other non-worked day payments. This change ensures accurate declaration of all remuneration amounts, particularly for scenarios like end-of-year bonuses.
Original PR description
Forward-Port-Of: odoo/enterprise#116191 Forward-Port-Of: odoo/enterprise#106689