Monday, September 15, 2025
13 changes · master
Resolved issues and error corrections
The update adjusts self-billing tests so they no longer depend on an optional Peppol feature being installed. This helps keep automated checks reliable across more test environments without changing customer-facing invoicing behavior.
Original PR description
The self-billing tests in `account_edi_ubl_cii` write on the `res_company.peppol_activate_self_billing_sending` field, which exists only if `account_peppol` is installed. To enable those tests to be run even if `account_peppol` isn't installed, we instead patch `_get_move_constraints` to enable the UBL to be generated via the `account.move.send` wizard. runbot-231735 Forward-Port-Of: odoo/odoo#225952
The stock picking screen now shows the correct "Add a Product" button label on phones instead of the less clear "Add Stock Moves" text. This removes a small source of confusion for warehouse users working from mobile devices.
Original PR description
Have the "Add a Product" button correctly display that instead of "Add Stock Moves" while in phone view on a picking. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226832
This update adjusts accounting test setup so it works whether the journal field is visible or hidden. It prevents avoidable test failures after a recent display rule change, helping keep accounting development stable without changing user-facing behavior.
Original PR description
- Before [#222209](https://github.com/odoo/odoo/pull/222209), the `journal_id` field was always visible, so `init_invoice` could reliably set the `journal_id` value in tests. Now that the field is only shown when two or more journals exist, this PR updates `init_invoice` to handle cases where `journal_id` may be invisible, preventing test failures. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226819
The Support Payment Methods widget now hides card brands when their main payment method is deactivated. This prevents customers from seeing payment options that cannot actually be used, reducing confusion during payment setup or checkout.
Original PR description
On the Support Payment Methods widget, we only wanna display the brands where the associated primary method is active, as those are the ones we can actually pay with. When deactivating the Card (primary) payment method, the related brands (Mastercard, VISA, ...) will be removed from display. <img width="555" height="272" alt="image" src="https://github.com/user-attachments/assets/969abb83-6dc7-44e7-9870-9773df56d27d" /> opw-5083539
The web app now handles visits to a scoped app link when no app ID is provided. Instead of showing an error, users are redirected to the main page, improving stability for custom calls and edge cases.
Original PR description
Currently, calling `/scoped_app` without providing an `app_id` raises an error. **Error:** `TypeError: WebManifest.scoped_app() missing 1 required positional argument: 'app_id'` **Cause:** The `scoped_app` route defined `app_id` as a required positional argument. However, in custom RPC calls, the parameter may be empty, which triggers the error. **Fix:** This commit handles the case when the app id is not provided and redirects to the main page instead of raising an error. sentry-4952598215
This fix restores a consistent fixed size for employee avatar images in the HR employee views. It prevents profile pictures from appearing uneven or incorrectly scaled, improving the visual consistency of employee records.
Original PR description
The changes made in this PR: https://github.com/odoo/odoo/pull/215597 were wrongly reverted in this PR: https://github.com/odoo/odoo/pull/218194 This PR re-introduces the changes (the employee avatar image has a fixed size). Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226905
Survey participants will now see the full progress text while completing a survey. This fixes a display issue where part of the progress indicator was missing, helping users better understand how far they are through the survey.
Original PR description
Issue: When filling in a survey, the progress in the bottom right of the page does not show progress correctly. Only part of the text appears. Cause: Part of the text is not encompassed by any tag, so they are a loose node. Because this javascript code has migrated to the OWL framework these loose nodes are not rendered directly anymore. Solution: Encapsulate all the text in spans Task-5062196
Payslip simulations now use the normal default pay period instead of forcing the employee contract start date. This helps avoid errors when salary rule parameters are not available for older contract dates, making payroll simulations more dependable.
Original PR description
Issue: by specifying the payslip date_from to the contract date start when simulating a payslip, there was a risk that some salary rule had no parameter for that date. Solution: not specify the date and let the payslip compute the default dates, which will default to this month. Forward-Port-Of: odoo/enterprise#94601
This fixes an issue where state or government checks in an audit could not be turned off. Businesses can now manage audit checks as intended, reducing unnecessary review steps when those checks are not needed.
Original PR description
State/Governement checks inside an Audit couldn't be disabled. Forward-Port-Of: odoo/enterprise#94614
The Planning app now handles schedules grouped by multiple fields more safely. This prevents an error screen when users group planning data without choosing resource as the first grouping, making schedule review more reliable.
Original PR description
Steps to reproduce: - Open planning and use multi groupby. - Dont use resource as first groupby. Issue: - Traceback Reason: - When we multi-groupby each row has a id, and we try to extract resource id, but we dont get it undefined/open rows. - Missed proper error handling. Fix: - Add better error handling to prevent further traceback using optional chaining. task-5065999 Forward-Port-Of: odoo/enterprise#93922
The AI live chat snippet now handles cases where the standard live chat widget is not present, such as a new database without demo data or deleted live chat channels. This prevents website visitors from encountering an error when starting a chat with the AI agent.
Original PR description
Steps to reproduce: - Go to the livechat app. - Delete all the livechat channels. - Open the website app. - Click on edit -> Contacts & Forms and add the ai_livechat snippet. - Set the 'AI Agent' on the snippet and save. - Start chatting with the ai agent using the snippet. - An error occurs. This error will happen in any case such that the livechat isn't available. For example: - Deleting all the livechat channels. - Installing a fresh db without demo data. This will result in the element '.o-livechat-root' not appearing on the website. This causes the ai_livechat component to have an error when trying to hide that element. This commit fixes the issue by adding optional chaining before accessing the class list of the element '.o-livechat-root'. Forward-Port-Of: odoo/enterprise#94622
This fix makes the AI assistant more reliable when gathering information from discussion records. It prevents errors in cases where related conversation details are not available, helping users avoid interruptions.
Original PR description
This commit adds optional chaining to access thread properties in the getRecordInfo function. Forward-Port-Of: odoo/enterprise#94555
A display issue on account return cards has been corrected so users no longer see two "Reset" buttons. This reduces confusion when managing accounting and Intrastat returns and ensures the form shows the right action controls.
Original PR description
Two buttons "Reset" are shown in the card of an account return. This is due to the invisible attributes that wrongly computes the value. Indeed, it is not possible to write something like "type_id.is_intrastat_return_type" in an invisible condition, so we need to make a related field. Forward-Port-Of: odoo/enterprise#94393