Wednesday, December 24, 2025
37 changes · saas-19.1
Resolved issues and error corrections
This update corrects a bug where the 'convert' option repeatedly appeared in the Todo breadcrumb after a task was created from a Todo. This prevented users from correctly managing converted tasks, particularly when changing project assignments. The fix hides the 'convert' option when a project is assigned, streamlining the task management process.
Original PR description
Steps to reproduce: - Create a Todo and convert into task using cog Menu option. - Todo is converted to task and is displayed. - Through breadcrumb go back to Todo - Try to convert it again Issue: - The converted todo is again converted (change of project etc) Fix: - Hiding the convert cog menu when a project is set. task-5075327 Forward-Port-Of: odoo/odoo#240821 Forward-Port-Of: odoo/odoo#230031
This update fixes an issue where opening invalid account return records previously displayed all related `account.move.line` records, even when only one or none matched. The change ensures that the check action is correctly applied, preventing inaccurate record displays and improving data reliability.
Original PR description
Before this PR, opening invalid records from account return checks could show all `account.move.line` records when there were 0 or 1 matching record(s). Technical Reason: In `_get_records_action` domain is only applied when there are multiple records, so without a domain, all records are opened. With this PR, the domain is passed through the method arguments, and also action will be none if there are no records. task-5427746 Forward-Port-Of: odoo/enterprise#102424
This update prevents guest users from seeing the unpin button in the PinnedMessagesPanel, resolving a confusing user experience. Previously, guests could click the button but the server rejected their attempts to unpin, leading to frustration. This change ensures guests only see the functionality they are authorized to use, improving overall usability.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- Currently, guest users in PinnedMessagesPanel can see the unpin button on pinned messages, but…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- Currently, guest users in PinnedMessagesPanel can see the unpin button on pinned messages, but the server correctly rejects their unpin requests. This creates confusion and a poor user experience where external users see functionality that doesn't work for them. **Current behavior before PR:** ---------------------------------------------- - Guest users see the unpin button on pinned messages - Clicking the unpin button results in server rejection - UI shows functionality that guest users cannot actually use **Desired behavior after PR is merged:** ---------------------------------------------- - Guest users cannot see the unpin button on pinned messages - Internal users continue to have full pin/unpin functionality - UI accurately reflects user permissions and capabilities - Better user experience with appropriate access control Task-5033295 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240979 Forward-Port-Of: odoo/odoo#229211
This update fixes a minor inconvenience where users had to manually refocus the composer after replying to a note. Now, clicking 'reply' automatically brings the composer back into focus, making the note response process smoother and faster. This improves user efficiency and overall usability.
Original PR description
**Current behavior before PR:** When the composer is already open, clicking reply on a note does not refocus the composer. The user must manually click inside the composer before typing. **Desired behavior after PR is merged:** When clicking reply on a note, the composer is automatically focused, even if it was already open, allowing the user to continue typing immediately. task-[5410878](https://www.odoo.com/odoo/project/1519/tasks/5410878) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240666
This update resolves a crash in the Point of Sale mobile view when editing payments and viewing customer information. The fix ensures that necessary data related to customer activity is loaded, preventing the POS from freezing. This improves overall stability and user experience for our POS users.
Original PR description
Steps to reproduce: =================== - Use the POS in mobile view - Complete a payment - Click on "Edit Payment" - Select customer or Edit customer Issue: ====== - POS crashes when rendering the partner kanban view - Frontend error occurs because `activity_state` is missing in the record Cause: ====== - The partner kanban view references activity-related fields - `activity_state` was not loaded when the view is rendered in POS Fix: ==== - Explicitly load `activity_state` in the kanban view (invisible) Task:5406890
This update fixes a bug that caused the ClickEverywhere function to repeatedly test all applications after a page reload. Now, the function correctly stores the application's ID, ensuring it only tests the intended application, improving test reliability and efficiency.
Original PR description
The clickEverywhere function can be executed with one app. To accomplish this, the xmlID should be passed as a parameter to the function. Before this commit, the xmlID of the requested application was not stored in the status of the current execution saved in localStorage. If a reload occurs while the clickEverywhere function is executing, it will lose this information and continue testing all applications instead of only the requested one. runbot.build.error: 234747 Forward-Port-Of: odoo/odoo#240943
This update speeds up the calculation of product quantities, particularly for databases with many products where most have zero stock. By optimizing the computation process, the system now runs significantly faster – reducing processing time by over 50% when dealing with a large number of products. This improves overall system responsiveness and efficiency.
Original PR description
In databases with a large number of products, most of them will have 0 quantities on hand. This commit fast-tracks the computation of 0 qty products, skipping unnecessary `uom_id` and `float_round()` computations in _compute_quantities_dict and skipping unnecessary `__set_item__` in _compute_quantities. Benchmark | `product.product` count | Before this PR | After this PR | | ----------------------- | -------------- | ------------- | | 700,000 | 52.84s | 28.33s | opw-4930856 Forward-Port-Of: odoo/odoo#241017 Forward-Port-Of: odoo/odoo#239687
This update corrects a minor inaccuracy in the documentation for VoIP phone settings. The previous reference to a non-existent method has been updated to accurately reflect the correct method used within the system. This ensures clarity and consistency for users configuring VoIP features.
Original PR description
A mention to `_voip_get_phone_field` appeared in [1] but this seems to never have existed. In any case, `_phone_get_number_fields` was used by the codebase in the end and should thus be the one mentioned. [1]: https://github.com/odoo/enterprise/commit/52b3065993c41c6b7c65dda586a66fdd865b3afd Forward-Port-Of: odoo/enterprise#102804
This update fixes a problem where taxes weren't correctly applied to Point of Sale transactions, specifically down payments and full settlements. Now, taxes set on Sale Orders are consistently applied to POS transactions, ensuring accurate tax calculations for all sales. Additionally, the color styling of buttons has been updated for a more consistent user experience.
Original PR description
Before this commit: ------------------- - If a tax was set on the Sale Order line, it was not applied on the down payment created from the POS. - If no tax was set on the Sale Order line, the POS settlement incorrectly applied the product’s default tax when settling the order. After this commit: --------------------- - The tax defined on the Sale Order line is now consistently applied to both down payments (partial settlements) and full settlements from the POS. - If the Sale Order line has no tax, then no tax is applied on either partial or full settlements and if have tax the tax will be applied. - Added consistent color styling to all buttons. task: 5269354 Forward-Port-Of: odoo/odoo#238051
This update resolves a restriction preventing users without the 'hr' group from accessing bank account information. Previously, a technical requirement limited access to a related field, causing errors. This fix ensures all users can manage bank accounts correctly.
Original PR description
The field `employee_salary_amount_is_percentage` is computed, but the computation[^1] relies on `hr_employee.salary_distribution`, a field restricted[^2] to members of `hr.group_hr_user`. If you try…
The field `employee_salary_amount_is_percentage` is computed, but the computation[^1] relies on `hr_employee.salary_distribution`, a field restricted[^2] to members of `hr.group_hr_user`. If you try to check a bank account without an hr group, you will get an access error: ``` odoo.exceptions.AccessError: You do not have enough rights to access the field "salary_distribution" on Employee (hr.employee). Please contact your system administrator. Operation: read User: 21 Groups: allowed for groups 'Employees / Officer: Manage all employees' ``` This also happens during the mock crawl test of upgrades if the admin lacks the group. To reproduce in standard: - Install contacts and hr. - Use a user without hr permissions. - Try to create a new bank account. [^1]:https://github.com/odoo/odoo/blob/57573994313988837d89329d77ab1def63a8cfdd/addons/hr/models/res_partner_bank.py#L26 [^2]:https://github.com/odoo/odoo/blob/57573994313988837d89329d77ab1def63a8cfdd/addons/hr/models/hr_employee.py#L147 --- I've also added another commit to make the percentage symbol stick to the salary amount. Before: <img width="366" height="38" alt="image" src="https://github.com/user-attachments/assets/ef890852-50ca-40b1-8c09-07c4aa2d330d" /> After: <img width="219" height="35" alt="image" src="https://github.com/user-attachments/assets/88e4a6c4-bc3f-483e-97f9-3080c6aa85c9" /> I know the number is not formated correctly but I don't think I can do more just from the view. Forward-Port-Of: odoo/odoo#239298
This update resolves a bug that prevented administrators with the 'group_system' access level from editing standard views within the Odoo website. The fix restores the necessary permissions, ensuring all users can manage views correctly. This improves usability and prevents disruptions for administrators.
Original PR description
There was an issue where, if someone was to install `mass_mailing` without `website`, a user with `group_system` could not read `ir.ui.view` records. Steps to reproduce: - install mass_mailing, web_studio - connect as an admin user - try to edit a view (not a snippet) with studio Issue: - access error In a previous [commit], new rules were introduced in `mass_mailing` to allow `group_mass_mailing_user` to handle custom snippet (views). However, a superseding rule for `group_system` was missing in `mass_mailing`, to allow an admin to continue to manage other types of views. [commit]: https://github.com/odoo/odoo/commit/6d39d72453842cf0d22880e14b1fa182c23538e6 task-5436780
This update fixes a minor translation issue within the Odoo accounting modules for Belgium and the Netherlands. Specifically, the English names of certain accounts have been updated to match their correct translations, ensuring accurate reporting and data consistency. This change improves the overall accuracy of financial data within the Odoo system.
Original PR description
Following odoo#227754, a couple of translations for changed accounts need to be updated to correctly reflect their english name. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241069
This update corrects a recent change that incorrectly included legal reserves in the Belgian Balance Sheet reports. This change was unnecessary as legal reserve requirements have been removed since 2024. This reversion ensures accurate reporting for our Belgian clients.
Original PR description
In #95062, the BE Balance Sheet was changed to include Legal Reserves. However, since this is not needed since 2024, this change can be reverted. no-task Forward-Port-Of: odoo/enterprise#102766
This update fixes a bug where product templates were incorrectly calculating discounted prices, resulting in inflated prices being displayed. The issue stemmed from a misidentification of product types – specifically, templates were not being recognized correctly. This change ensures accurate discounted price calculations for all product types, including templates, improving price accuracy in the catalog.
Original PR description
Steps to reproduce: 1- Add a product that has variants to a vendor pricelist. 2- Set the vendor's unit for this product to a one different than the product's unit. 3- Create an RFQ with from that vendor. 4- Open the catalog. Issue: `discounted_price` is miscalculated and causes wrong price calculation, it shows the price multiplied by its factor. i.e if a price of pack of 6 is 10$, it will be shown as 60$. Cause: We only check for `product_id` not for `product_tmpl_id` when computing the `price_discounted`, so if its a template, `product_id` is false, and its sent with `_compute_price()` and the same price is returned since there's no unit and after that its sent to `_get_product_price_and_data` where its converted to the new unit. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241115 Forward-Port-Of: odoo/odoo#240519
This update simplifies the payment screen by removing the unnecessary guest count field and automatically defaulting the numpad to the last entered value. Discarding the input now correctly maintains the last guest count, streamlining the ordering process for customers. This change improves user experience and reduces potential errors.
Original PR description
after this commit: - The payment screen no longer shows extra guest count. - The numpad will display the last guest count. - Discarding will keep the last guest count unchanged. - Use hotkey handling so Enter confirms input only, ignoring any numpad button currently in focus. task: 5364073 Forward-Port-Of: odoo/odoo#237877
This update ensures users retain their last selected spreadsheet dashboard when navigating back through the application's breadcrumb navigation. Previously, returning to the dashboard reset it to the default. This change improves user experience by maintaining the user's current view.
Original PR description
### Description After [PR#223171](https://github.com/odoo/odoo/pull/223171/), `useSetupAction` `getLocalState` exports the active dashboard through the loader state (`dashboardLoader.activeDashboardId`). The restore path still read `state.activeDashboardId`, so returning via the breadcrumb reset to the first dashboard. Read the saved loader state to keep the last selected dashboard. Task: [5391349](https://www.odoo.com/odoo/project/2328/tasks/5391349) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239172
This update fixes a minor inconvenience for users. Previously, clicking 'Jump to Present' would cause the composer to lose focus, requiring manual adjustment. Now, the composer automatically regains focus on desktop after this action, improving the user experience.
Original PR description
**Current behavior before PR:** clicking "Jump to Present" caused the composer to lose focus, forcing users to manually focus the input before typing. **Desired behavior after PR is merged:** The composer automatically regains focus on desktop after clicking "Jump to Present". task-[5035977](https://www.odoo.com/odoo/project/1519/tasks/5035977) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241113 Forward-Port-Of: odoo/odoo#227781
This update corrects a bug where inactive accounts were incorrectly displayed in financial reports. The change replaced a deprecated field with an 'active' field, which now prevents inactive accounts from being included in report calculations and audits. This ensures accurate reporting for all accounts, regardless of their status.
Original PR description
In replacing the deprecated field with the special `active` field the account_codes prefix engine no longer displays values for accounts that are inactive.
This disables the active test in:
- computing the domain for accounts
- auditing the value (since the domain is `('account_id.code', 'in'...)`
opw-5226153
Forward-Port-Of: odoo/enterprise#101540
Forward-Port-Of: odoo/enterprise#100885This update adds a field to the salary configuration to allow users to specify the correct bank account holder name. This is a security enhancement to prevent payment delays caused by incorrect account holder information, ensuring timely and accurate payroll processing. Related tests and documentation have also been updated.
Original PR description
Law is now more secure and you need to have the correct name on the bank account holder otherwise payment need to be manually confirmed everytime. Therefore a field is added to the salary config to allow the user to set his account holder name separately from his actual name in case it is different. Task-5222712 [Related PR](https://github.com/odoo/odoo/pull/233965) Forward-Port-Of: odoo/enterprise#98572
This update prevents non-member internal users from seeing a misleading close confirmation dialog when closing a livechat window. Previously, this dialog incorrectly suggested they could end the session, leading to a confusing user experience. Now, non-members simply close the window without any prompts, ensuring a clearer and more accurate livechat interaction.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- When an internal user who is not a member of a livechat channel opens a chat window for a…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- When an internal user who is not a member of a livechat channel opens a chat window for a conversation in “looking for help” mode, closing the window incorrectly displays the Leave Conversation confirmation dialog. This is misleading because non-members cannot actually end the livechat session—the confirmation dialog suggests an action they do not have permission to perform. **Current behavior before PR:** ---------------------------------------------- - Non-member internal users see the close confirmation dialog - The dialog implies they can leave/end the livechat, which is not true - UI shows functionality that does not apply to them - Poor user experience and inconsistent behavior **Desired behavior after PR is merged:** ---------------------------------------------- - Confirmation dialog is shown only to actual livechat members(assigned agent or visitor) - Non-members close the chat window immediately without any prompt - UI accurately reflects real permissions - Clearer and more consistent livechat experience Task-5384846 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240029
This pull request resolves a bug in the Salary Calculator that prevented it from displaying correctly when an employee had a resource calendar assigned. The fix ensures the calculator functions properly regardless of whether an employee is linked to a calendar, improving payroll accuracy. This impacts all users who utilize the Salary Calculator feature.
Original PR description
This commit fixes an issue in the Salary Calculator where all fields were displayed as empty when selecting an employee with a resource_calendar_id set. Steps to Reproduce : First Change to either…
This commit fixes an issue in the Salary Calculator where all fields were displayed as empty when selecting an employee with a resource_calendar_id set. Steps to Reproduce : First Change to either the default company (MyCompany) or Demo Belgian company Payroll -> Employee -> Salary Calculator -> choose an employee. Bug : All fields in the Salary Calculator view are empty (evaluated as False). Root Cause : Inside _compute_salary, the method _generate_salary_simulation_payslip writes on payslip.version_id using: payslip.version_id.write(new_payslip_vals) Because the is_simulation_offer key was missing from the context, this write triggered a full payslip computation, generating payslip lines. During this computation, compute_sheet() performs an unlink() on existing payslip lines. Since the Salary Calculator view fields are only cached at that point, the unlink causes the cached values to be lost, resulting in all fields being evaluated as False. Fix : Ensure that is_simulation_offer is present in the context when writing to payslip.version_id, preventing payslip line generation and avoiding the unintended unlink() during salary simulation. Task - 5387155
This update fixes a technical error that prevented some users from opening timesheets, specifically when using the demo data. The fix involves adjusting menu sequences and granting necessary access permissions to ensure all users can correctly access and manage their timesheets. Additionally, a problem with fake data generation was resolved to prevent validation errors.
Original PR description
Steps to reproduce: - Login through user who has user:own timesheets only access or group_hr_timesheet_user only (basically `user demo` when demo data is installed). - Open timesheets apps. Issue: -…
Steps to reproduce: - Login through user who has user:own timesheets only access or group_hr_timesheet_user only (basically `user demo` when demo data is installed). - Open timesheets apps. Issue: - Traceback appears. Reason: - Here due to manually pushing `Timesheet Assistant Menu` having lower sequence(7) than `My Timesheets` (default sequence 10), so action is called which tries to search for which a base user will never have access to. Thus a traceback. - Also own timesheets user doesnt have access to `aw.rule` model which is need to open `Timesheet Assistant Menu`. Fixes: - Added sudo to search through action windows which is needed. - Reorder menu items sequence so we have `My Timesheets` in the starting and then `Timesheet Assistant Menu` is loaded. - Added a entry in model access CSV to give read access to aw.rule model records. Another small issue was when we generate fake data using `AwFakeEventsService` we source out all type of projects and tasks, which might cause some errors as they dont have account_id needed to make timesheets thus throwing validation on save. Fixed that by adding domain in fetch non-template data. task-5438048
A technical issue with a test for the HTML editor's link functionality was resolved. The fix addressed a problem where the test wasn't waiting properly, causing the link popover to close prematurely and disrupting subsequent steps. This ensures the link functionality works reliably.
Original PR description
Description of the issue this PR addresses: This test was not awaiting a step properly which somehow moved the selection to the overlay container which made the link popover to close resulting in further steps not working properly. runbot-234926 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a sporadic failure in the stock barcode tour due to timing issues. By adding a check to ensure data is loaded before proceeding, the tour now runs reliably. The changes also simplify the tour and add extra steps to prevent future disruptions.
Original PR description
Test `test_no_split_uncompleted_done_move` is failing non-deterministically after https://github.com/odoo/enterprise/pull/98184 Because it was going too fast and sometimes the lines wouldn't have been loaded by the time its the step's turn. A check was added in order to make sure the lines are loaded before moving onto the next steps This commit also simplifies the tour and adds extra steps to avoid failure. Runbot: 234351 Forward-Port-Of: odoo/enterprise#100329
This update resolves a technical issue related to how the system supports Peppol document types. The old CNAME logic has been removed, aligning with the current Peppol standard (NAPTR). This ensures correct document handling when using the DK Company accounting module.
Original PR description
The function `_check_document_type_support` is extended in `l10n_dk_nemhandel` (from `account_peppol`). The function causes an issue since it contains the old CNAME logic while peppol does not use it anymore; but the newer NAPTR. This commit removes the function - It does not do anything different than the version in `account_peppol` (and it would cause issues if it did) - The function is only called in `account_peppol` - The module does not depend on `account_peppol` Reproduce: - Install `l10n_dk_nemhandel`; check that `account_peppol` is installed - Select `DK Company` - Activate Peppol in test mode - Go to the `DK Company` contact (customers) - Select "By Peppol" and "EU Standard (Peppol Bis 3.0)" - Traceback should appear opw-5232123 Forward-Port-Of: odoo/odoo#241237 Forward-Port-Of: odoo/odoo#241083