Tuesday, November 4, 2025
26 changes · 19.0
Enhancements to existing features
This change adds a shared set of helper methods for accounting tests, making it easier to create invoices, sales orders, reversals, and other common test records. It helps establish a single standard that future accounting test work can reuse, improving consistency and reducing duplicated test setup code.
Original PR description
This commit adds bunch of helper methods on AccountTestInvoicingCommon to make it easier to do generic accounting test actions, such as: - creating invoice - creating sale order - reversing invoice - skipping test if module isn't installed - creating down payment invoice ... and many more. We're aware that there are thousands of different helpers for creating invoice out there in different localizations. This commit serves as the first necessary step to create one standard that can be extended across all other test helpers. This is a simplified version of the merged commit in master. We are not refactoring/rewriting any other test to use these new helpers. Our goal is just to make it available for everyone to start using this helper on their accounting-related tests. task-4891206 Forward-Port-Of: odoo/odoo#234036 Forward-Port-Of: odoo/odoo#233724
This update adds the "Wage on signature" field to the contract version list and the "Company Car" field to the employee list. It makes these values visible at a glance, helping users review important HR information more quickly without opening each record.
Original PR description
*: hr_contract_salary,l10n_be_hr_payroll_fleet Added the "Wage on signature" field to versions list view, and "Company Car" to employee list view. task-5231169
Receipts are now included by default in the invoice and bill views, alongside regular customer invoices and vendor bills. This makes it easier for users to see all related accounting documents without adjusting filters manually.
Original PR description
This commit Shows by default receipts along side invoices/bills from customer invoices or vendor bills pages. task-5187350 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The deferred date fields now use a range-style date picker, making it simpler to enter matching start and end dates. If the end date is left blank, it will automatically match the start date, which avoids errors and supports accrual entries without unnecessary warnings.
Original PR description
* use the widget `daterange` on `deferred_start_date` and `deferred_end_date` * auto fill `deferred_end_date` when it is empty to `deferred_start_date` to avoid double encoding of the same value, and avoid raising an error * remove the warning `has_abnormal_deferred_dates` when the date is the same, this can be used to do an accrual entry. task-5207293
Resolved issues and error corrections
This update improves how ribbons and status bars are displayed in pop-up forms. It prevents the ribbon from blending into the status bar and keeps the form layout cleaner when users scroll inside a modal window.
Original PR description
Previously, `position: static` was added on `.o_form_sheet` in modal forms to fix an issue where the ribbon looked ugly (not pinned to the top right) due to the absence of borders in modals. See…
Previously, `position: static` was added on `.o_form_sheet` in modal forms to fix an issue where the ribbon looked ugly (not pinned to the top right) due to the absence of borders in modals. See commit: https://github.com/odoo/odoo/commit/1ac2ff5b7dd64ccfe1bfb9c3fb7bb8a758e887d7 However, when a statusbar is present, this rule caused the ribbon to merge into the statusbar, making its display worse. In addition, on scrolling in a modal, the statusbar and the form contents were getting merged. This commit refines : - the selector so that `position: static` is only applied when a modal form has a ribbon but no statusbar. When a statusbar exists, the ribbon remains visually separated from the statusbar. - the statusbar background-color logic so that inside modals it uses the proper `$o-view-background-color`, ensuring a clean separation even on scrolling. task-4873636 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232315 Forward-Port-Of: odoo/odoo#226074
Code cleanup and technical improvements
The way product revaluation values are prepared has been moved into a separate method. This does not change the user experience, but it makes the stock accounting process easier for custom extensions to adapt safely.
Original PR description
This allows to make it hookable by custom addons This was split from https://github.com/odoo/odoo/pull/160527 cc @pfertyk @sys-odoo @Whenrow --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232739 Forward-Port-Of: odoo/odoo#228204
This update fixes how Chilean states are identified in customer addresses. It replaces placeholder numeric codes with the official standard codes, so addresses display and validate correctly.
Original PR description
**Steps to reproduce:** 1. Go to Sales > Create and edit a new customer. 2. Select Chile as the country and choose a state. **Issue:** - State codes appear as numbers (e.g., 01, 02, 03...) which are not ISO-compliant. **Cause**: - State codes in the CSV file were defined as simple numbers instead of proper ISO codes. <img width="601" height="146" alt="image" src="https://github.com/user-attachments/assets/a941c200-467b-4ad5-8f79-ca9e8a92d7b4" /> <img width="443" height="131" alt="image" src="https://github.com/user-attachments/assets/dc1df1b0-2267-499f-ad1d-bb5c9381cd66" /> **Solution**: - Updated all state codes to match the official ISO 3166-2:IQ codes (Reference: https://www.iso.org/obp/ui/#iso:code:3166:CL) **opw-5148562** Forward-Port-Of: odoo/odoo#230963
This change adds an automated test to verify that invoice PDFs show both the product name and the added description correctly. It helps prevent a recurring display issue from affecting customer invoices and ensures future updates do not reintroduce it.
Original PR description
Issue: If a description is added on a product line, the printed invoice PDF only shows the description without the product name. Purpose of this PR: To add a test to ensure that the product description is correctly reflected on invoice PDF. Original issue was fixed by this PR: https://github.com/odoo/odoo/pull/222589 opw-4985815 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221612
The website editor now avoids showing the same text highlight twice when a new highlight overlaps an existing one. This keeps highlighted text cleaner and prevents confusing visual duplication for editors and visitors.
Original PR description
Problem: When a text highlight is applied on a node that has an ancestor with the same text highlighted, both highlights remain. The ancestor's highlight should be removed before applying the new one. Cause: When applying highlight, it is done on the text node (leaf node). However, one of the ancestors might already have the highlight applied. This is not removed, leading to duplicate highlights. Solution: When applying the highlight, check if an ancestor has the same text and highlight style applied. If so, remove it before applying the new highlight. Steps to reproduce: 1. Add text "ABC". 2. Apply text highlight on "B". 3. Apply animation on "B". 4. Apply text highlight on "ABC". 5. In the DOM, "B" has two highlights (visually noticeable). opw-5014674 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222862
This change adjusts the order of steps in the wishlist test so the wishlist count has time to update properly. It helps prevent random test failures and makes the website shop testing more stable.
Original PR description
Modify the steps order to make sure the wishlist quanity has enough time to get updated runbot-229616 Forward-Port-Of: odoo/odoo#233998
This change corrects a failing language-related test so it behaves consistently when only one app is installed. It ensures the test uses the user-defined default language instead of assuming the first language in alphabetical order, preventing false failures in setups that activate Arabic during installation.
Original PR description
Description of the issue/feature this PR addresses: test_lang_computation_form_view fails since l10n_gcc_invoice activated the arabic language during post_init since the default language expected…
Description of the issue/feature this PR addresses: test_lang_computation_form_view fails since l10n_gcc_invoice activated the arabic language during post_init since the default language expected becomes arabic instead of English even though the created partner's language is in English. to reproduce: - install l10n_gcc_invoice - run the test test_lang_computation_form_view. - will fail since it expects the partner default lang to be arabic but it is in english. Current behavior before PR: before this commit, test_lang_computation_form_view failed on l10n_gcc_invoice or any of the depending modules. because activating arabic makes the test expect arabic as the default language when it is english. Desired behavior after PR is merged: with this commit the test is passed as we install the arabic language only during the activation of dual language in the company settings rather than during the post_init. runbot:231711 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The inventory settings page now makes it clearer that users can assign accounts to inventory loss and production locations. A direct link and short help text were added so businesses can find the right configuration more easily and avoid setup confusion.
This update fixes a stock test that had incorrectly passed even though it contained conflicts, helping ensure the test suite catches real issues before changes are merged. It also updates the test to match a recent refactoring, keeping the codebase consistent and reducing the risk of future regressions.
Original PR description
Due to an issue in the runbot, the test associated with the PR: odoo#230199 passed despite underlying conflicts and the PR was merged. This PR addresses and resolves those issues to ensure the test functions correctly. We also align the PR with the refactoring done in odoo#212679 and replace `procurement.group` with `stock.rule` Impacted versions: - 19.0 - master --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Selection fields in signed documents now correctly display their placeholder text before a choice is made. This makes the signing experience clearer and helps signers understand what value is expected.
Original PR description
To reproduce: ============= - upload a document to sign and add a selection field on it - set a placeholder for the selection field - open the document to sign -> the placeholder is not displayed Problem: ======== the placeholder is not displayed because there is no option holding the placeholder value. Solution: ========= Add an option at the beginning of the select options to hold the placeholder value. opw-5140676 Forward-Port-Of: odoo/enterprise#97887
This fix ensures that default values in mock fields are preserved when a model is extended in tests. As a result, timestamps and similar automatically filled values are applied correctly again, making test behavior more reliable.
Original PR description
Before this commit, default values in mock fields defined by functions would be lost when extending a model, because by doing so the fields were JSON-copied and the default functions were lost. To fix this, this commit introduces another way to copy field definitions that preserves functions, allowing default values (typically for the 'create_date' and 'write_date' fields) to be applied correctly. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234106
This change updates a few HTML Builder tests to use the correct base option component. It helps keep the test suite aligned with the current implementation and prevents avoidable test issues during development.
Original PR description
In PR https://github.com/odoo/odoo/pull/220746, we forgot to replace the use of Component with BaseOptionComponent in few tests. This commit fixes that. 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#234153
The website loading progress bar now uses the primary brand color instead of black. This makes it easier to see in dark mode and keeps the site’s look more consistent.
Original PR description
This commits changes the website loader progress bar color, from black to `$primary`. This provides a better contrast in dark mode as well as better consistency. task-5170115 | Before | After | |--------|--------| | <img width="1920" height="1186" alt="image" src="https://github.com/user-attachments/assets/cd9525cf-b9d6-40dd-9ffb-ed0027020ab5" /> | <img width="1920" height="1172" alt="image" src="https://github.com/user-attachments/assets/3f7d9a4b-4a3e-4fbd-a1be-826c898466cd" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232875
This change makes replenishment tests reliable when demo data is used in different time zones. It prevents the system from creating an extra purchase order line by ensuring date checks are compared consistently, so existing orders are reused as expected.
Original PR description
The `test_replenish` test was failing with demo data because replenishment created an extra Purchase Order line. The `_run_buy` search domain included `date_planned_mps` with an equality check on a datetime stored in `UTC`. With demo data loaded in a non-UTC timezone (e.g. Europe/Brussels), the forecast date was converted to `2025-07-31 22:00:00 UTC`, which did not match the existing PO at `2025-08-01 00:00:00 UTC`. As a result, no PO was found and a duplicate was created. Changes: Set the test user timezone to `UTC` so that `date_planned_mps` comparisons are stable when using demo data. This ensures replenishment reuses the existing PO instead of creating a duplicate. [runbot-230425](https://runbot.odoo.com/odoo/error/230425)
This update fixes how Odoo handles missing skill-matching data for job applicants. When no matching score is available, the system now falls back to 0 instead of 100, keeping results consistent with earlier versions and avoiding misleadingly high match scores.
Original PR description
- The [PR] added a fallback value for matching score as `100`, whereas in the versions `saas-18.4` and before... we had the fallback value as `0` [source]. - Therefore, to maintain consistency this commit changes the fallback value for `matching_score` to 0. - Also added a testcase for the same. [PR]: https://github.com/odoo/odoo/pull/230323 [source]: https://github.com/odoo/odoo/blob/d13ea53ef64d0281387ad0daf66c90163dded63b/addons/hr_recruitment_skills/models/hr_applicant.py#L47-L51 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change prevents stopped call ringtones from being restarted with the Play/Pause key after a call has ended. It improves call handling behavior and avoids confusing audio playback for users.
Original PR description
Before this commit, users can resume "stopped" ringtones by pressing the Media Play/Pause key of their keyboard/headphones, even after the call has ended. After this commit, stopping the ringtone clears the audio source, effectively preventing it from being resumed. Task-5222704 opw-5186087 Forward-Port-Of: odoo/enterprise#98660
This update corrects the badge display in list views so colored badges now appear as expected. It improves visual consistency and helps users recognize statuses more easily at a glance.
Original PR description
Purpose ======= Fix the rotting variant of the badge selection field in list views which should properly support the color field option. Specification ============= The 'ListBadgeSelectionRotting' widget was inheriting from the 'BadgeSelectionField' which doesn't support any color in badges. It should inherit from the list variant of the badge selection field called 'ListBadgeSelectionField' which supports the color field option. Task-5186979 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a broken warehouse test so it no longer appears to pass when it should fail. It helps ensure future changes in stock handling are validated properly and reduces the risk of hidden issues reaching users.
Original PR description
Due to an issue in the runbot, the test associated with the PR: odoo#229958 passed despite underlying conflicts and the PR was merged. This PR addresses and resolves those issues to ensure the test functions correctly. Impacted versions: - 18.0 - saas-18.2 - saas-18.3 - saas-18.4 19.0 and master are addressed in odoo#230685 to replace `procurement.group` with `stock.rule` --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230687
This change corrects a spelling mistake in the Attendance module, replacing “Beetween” with “Between.” It improves the clarity and professionalism of the interface for users reviewing overtime rules.
Original PR description
This pull request fixes a typo in the hr_attendance module where the word `Beetween` was displayed instead of `Between`. Before Fix: <img width="1920" height="927" alt="before_fix" src="https://github.com/user-attachments/assets/ffe5e7c2-1d87-47fd-ac82-2b7d80f36448" /> After Fix: <img width="1920" height="927" alt="after_fix" src="https://github.com/user-attachments/assets/961f1f9f-9318-4ab0-8c61-56b8e87b9924" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a warning in the Hong Kong payroll localization so the related process can run cleanly again. It does not change business rules; it simply ensures the system uses the proper access check and avoids the build error.
Original PR description
Use `check_access` instead build-error-233453
When an employee does not have a bank account linked, the payslip now displays a clear payment line instead of leaving it blank or showing a placeholder. This makes payslips easier to read and avoids confusion for payroll users and employees.
Original PR description
### Before: - While printing payslip previously if an employee do not have any bank linked we were not printing anything,. ### After: - If no bank account present we will use: Amount to be paid to [employee_name]: [amount] task- 5101235
This update prevents chat bubbles from shifting down briefly when they are tapped on mobile devices. It keeps the chat widget in the correct position so the interface feels steadier and more polished.
Original PR description
**Description of the issue/feature this PR addresses:** when clicking on chat bubble in mobile, the chat bubbles were moving down temporarily **Current behavior before PR:** when clicking on chat…
**Description of the issue/feature this PR addresses:** when clicking on chat bubble in mobile, the chat bubbles were moving down temporarily **Current behavior before PR:** when clicking on chat bubble in mobile, the chat bubbles were moving down temporarily. this happens because in some contexts, the chat hub bubbles are lift up, like in discuss app and at bottom of website page. This was done with a `transform: translateY()` but when the button was being clicked the chat bubble temporarily resets its unlifted position, as if no `transform: translateY()` was in effect. **Desired behavior after PR is merged:** This fixes the issue by using `bottom` CSS style rule. Chat hub bubbles part has a bottom value, the lift up is now designed to combine with the static bottom value, thus bubbles part stay at the desired position even when being clicked. Backport of #225757 task-[4914438](https://www.odoo.com/odoo/project/1519/tasks/4914438) Before  After  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234269