Daily updates from Odoo
Tuesday, January 6, 2026
132 changes · master
New functionality added to Odoo
This update simplifies asset management for Odoo users in Indonesia by automatically creating asset models. It also establishes links between assets, expenses, and depreciation, and adds a default tax (TVA) for improved accounting accuracy. This enhances the Odoo application's usability and compliance within the Indonesian market.
Original PR description
As odoo wants to simplify the using of its app for users in Indonesia, the assets models for each asset was added so that the users don't have to register the model manually each time. Also, each fixed asset was linked to an expense account and its corresponding depreciation account, Moreover, a default tax (TVA) was added to each fixed asset. task-5249077 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update introduces a new system for tracking job referral invitations sent via email or SMS. When an invitation is sent, a record is created to store the details, providing better visibility into the referral process. Currently, this tracking is managed programmatically and cannot be directly accessed through the user interface.
Original PR description
In this PR, - A 'share' model has been created. - When you send an invitation via email or SMS for a job position a record will be generated to store the details of that invitation. - It is not possible to create 'share' records through the UI. Task-4543548
This update adds helper functions to manage slot selections within the Point of Sale system. These functions will be used during training tours to guide users through scheduling orders with specific time slots. This enhancement improves the clarity and usability of the slot selection process for Point of Sale operations.
Original PR description
Add utils function `selectSlotDays` & `selectPresetTimingSlotIndex` to select the nth day and nth timing slot in the slot selection dialog. These functions will be used in POS tours to manage orders with slots. enterprise PR: https://github.com/odoo/enterprise/pull/95136 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241644 Forward-Port-Of: odoo/odoo#233920
This update adds a new automated test to ensure the ‘no recent call result’ feature correctly updates the contacts tab in Odoo. This test validates that the contacts tab remains clean when a call doesn't result in a new contact. This improves the reliability of the Odoo Enterprise application.
Original PR description
Add a test for the feature introduced at [1]. [1]: https://github.com/odoo/enterprise/commit/87f33e56ab484640f42691d80811cf59dbe3c124 Related to task-5443726
This update integrates Satispay as a new payment option within the existing Stripe payment provider. This expands our payment method offerings, potentially attracting new customers who prefer Satispay. The change is part of an internal improvement to our payment processing system.
Original PR description
Add Satispay as an available payment method in the Stripe payment provider. task-5354744 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update introduces new leave types specifically for the Turkish localization, including maternity, paternity, bereavement, and excuse leave. It also incorporates salary rules for annual leave provision and food allowance, ensuring compliance with Turkish regulations and providing employees with a more comprehensive set of leave options.
Original PR description
-Salary rules for Annual leave provision and Food Allowance haven been added. -The following leave types has been added to the Turkish localization: - Maternity leave - Paternity leave - Bereavement leave - Excuse leave. Task #4868680
Enhancements to existing features
This update enhances the way Odoo identifies and understands its services, primarily benefiting developers. By updating the type definitions, it allows IDEs and development tools to accurately infer service types, leading to a smoother and more efficient development experience. This change improves the overall developer workflow within the Odoo platform.
Original PR description
The OdooEnv.services type previously referenced Services, which did not accurately reflect the structure needed for proper type inference. This commit updates it to ServiceFactories, allowing IDEs and TypeScript tooling to correctly infer service types and improve developer experience. Before / After: <img width="755" height="367" alt="image" src="https://github.com/user-attachments/assets/5fb7a288-b323-442a-9dbb-98872574c21d" /> <img width="772" height="356" alt="image" src="https://github.com/user-attachments/assets/20d5fb8e-a83b-4507-8f00-b8b4776cf6c2" />
This update simplifies the mass mailing process by allowing users to consistently see the exclusion list option, regardless of the mailing source (like events or marketing cards). Previously, this setting was only available on dedicated servers. This change improves user experience and flexibility within the mass mailing functionality.
Original PR description
Purpose ======= At the moment, we can change `use_exclusion_list` only if a dedicated server is used for the mailing. We want to always show the option (except for mailing contact and mailing list). When coming from event, slides or marketing card, we automatically skip the exclusion list. Task-5149177
This update enhances the display of phone number fields by adding an option to wrap icons when the text is too long. This improves readability, particularly in scenarios like VoIP where phone numbers are displayed in read-only fields. This change was initially driven by a need in the Enterprise version of Odoo.
Original PR description
[[IMP] web: add wrapping option to phone field.](https://github.com/odoo/odoo/pull/241543/changes/bd7dee1aeeb9f3dbce90328040454a86c077ee89) This commit adds the option to wrap the icons next to the phone number when the line is too long. It was first needed in VoIP in the readonly phone number. Task-5437330 Enterprise: https://github.com/odoo/enterprise/pull/102876
This update enhances the user interface for inactive accounts within the Odoo system. A new warning indicator will be displayed, alerting users to inactive accounts during configuration settings. This improves clarity and helps ensure accurate financial reporting.
Original PR description
This task will add a widget on account in the configuration to display a warning when the account is inactive. task-5424613 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the user interface for accounts by adding a warning indicator when an account is marked as inactive. This provides clearer visibility for users, helping them avoid potential errors or confusion related to inactive accounts within the financial system. It improves the overall usability and accuracy of account management.
Original PR description
This task will add a widget on account to display a warning when the account is inactive. task-542461
This update enhances the email templates used when users sign documents within Odoo Enterprise. The changes improve the responsiveness of the emails across different devices and update the visual styles for a more polished look. These improvements ensure a better user experience for signing documents.
Original PR description
Improves the sign email templates for better responsiveness and updates their styles with minor content adjustments. task-4423436
This update enhances the Point of Sale category system by allowing users to delete categories only when they aren't actively used in POS sessions. It also streamlines product creation from POS sessions, ensuring new products always appear on the relevant POS. Design improvements include a refined form view and enhanced Kanban/List views for better category organization.
Original PR description
**Functional** - Removed the restriction of deleting pos categories while sessions are open and replaced it with a restriction on removing categories which are used by POS. If the category is not in…
**Functional** - Removed the restriction of deleting pos categories while sessions are open and replaced it with a restriction on removing categories which are used by POS. If the category is not in use by any POS deleting it will have no side-effects. - Moved the definition of pos_config_ids from the pos_self_order override of the pos.category to the base class in point_of_sale so it can be always accessed, not only when the self_order is installed. - Creating a new product from a POS session with a category which is not displayed on the current POS session will automatically add the category to the POS session config and reload the data to show the new products. This way when a user creates a new product, it will always show up on their POS from where they created the product. **Design (Categories)** - [Form View] For a better design will align the category title with the rest of the fields on the form view. Also added a placeholder on the pos_restaurant course field. - [Kanban] Improved the kanban view to show the color, parent category and course if they are present directly on the card. - [List] Made the parent category and color display by default. Added the points of sale where the category is used to the list Task - 5172551 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update allows users to schedule invoice and EDI sending from the account move send wizard, providing greater control over delivery timing. It categorizes sending methods (email, EDI, etc.) for efficient scheduling and ensures accurate invoice data is prepared for each scheduled message. Additionally, the system now validates invoice data before scheduling to prevent errors during the sending process.
Original PR description
PURPOSE - The purpose of this commit is to allow users to schedule the execution of the Invoice and EDI sending in the future from the account move send wizard. - Users have control to schedule the…
PURPOSE - The purpose of this commit is to allow users to schedule the execution of the Invoice and EDI sending in the future from the account move send wizard. - Users have control to schedule the e-mail, EDIs, and other sending methods on different dates and times, as there will be separate scheduled messages for all these sending methods and EDI requests. TECHNICAL DETAILS - Introduced basic scheduling functionalities similar to the mail compose message wizard into the account move send wizard. - Categorising the selected checkboxes into 3 categories of scheduled messages: 1. For email sending method 2. For all the selected extra EDIs 3. For all the other selected sending methods (snailmail, peppol, ...) - Classifying the calculated `invoice_data` based on the selected checkboxes and preparing the invoice_data for individual scheduled messages. - Preserving this invoice_data in the `notification_parameter` of the scheduled message to retrieve it later when posting the scheduled messages and calling the actual `_generate_and_send_invoices` process. - Manually added attachments in the scheduled message will also be added to the `mail_attachments_widget` in invoice_data to consider it for the email sending method. Related Enterprise PR: https://github.com/odoo/enterprise/pull/92857 Task: 4677423
This update simplifies the employee search experience by removing redundant fields and filters. The employee list view has also been cleaned up for better clarity and usability. This change focuses on improving user efficiency when managing employee data.
Original PR description
- Reduced and removed employee search fields. - Removed and renamed filters. - Clean up employee list view. task-5441509 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update simplifies the employee search experience by removing redundant fields and filters. The employee list view has also been cleaned up for better clarity and usability. This change focuses on improving user efficiency when managing employee data.
Original PR description
- Reduced and removed employee search fields. - Removed and renamed filters. - Clean up employee list view. task-5441509
This update enhances order reporting within Odoo by allowing users to group orders and order analysis data by hour. This provides more granular insights into sales trends and helps businesses better understand customer behavior and operational efficiency. The change impacts the 'Orders' and 'Order analysis' views.
Original PR description
After this commit: == - Views of `Orders` and `Order analysis` can be grouped by hour. task: 5022973
This update resolves an issue where 'Validate' and 'Discard' buttons in the Quality Worksheet Template form were non-functional, preventing users from easily navigating back. The team has removed these buttons and implemented a Kanban view to enhance visibility and usability, streamlining the template management process.
Original PR description
In the Quality Worksheet Template form view, the "Validate" and "Discard" buttons were non-functional and blocked users when navigating back after designing a worksheet. This commit removes these buttons and adds a Kanban view to improve visibility and usability. These enhancements streamline the interface and make it more intuitive for users managing Quality Worksheet Templates. Task - [4637037](https://www.odoo.com/odoo/project/966/tasks/4637037)
This update enhances the system's ability to process Electronic Data Interchange (EDI) orders by learning from previous order files. It automatically identifies and reuses customer product references, reducing manual effort for sales staff and improving order accuracy. This change streamlines the EDI workflow, particularly for repeat customers.
Original PR description
This commit add functionality to make edi more efficient by learning it from past PO order files extracted. Working: - when we extract file and didn't find any matching products for line then store that customer product reference on SOL after then Sales person will set proper product from his DB or create one and set product then confirm order so On order confirmation we extract product customer reference and store it on `customer.product.reference` then when we extract new file from same customer we look and don't find matching product then we will look for product in `customer.product.reference` and if we find matching product then set that product on SOL. task-4086173
This update automatically sends email notifications to applicants when a recruiter declines their application, provided a pre-defined email template is available for that reason. This streamlines the recruitment process by ensuring timely communication and reduces manual effort for the HR team. The change improves applicant experience and efficiency.
Original PR description
In this commit, we make the toggle button "Send Email" enabled by default whenever the refusal reason has an email template, including the reason selected by default in the wizard. TaskID: 5245023 Forward-Port-Of: odoo/odoo#234759
This update refactors the user re-authentication logic within Odoo, separating the core verification process into the `base` and `web` modules for better maintainability and future development. This change allows for more flexible and efficient user re-authentication, ensuring a smoother user experience.
Original PR description
The `auth_timeout` module contains a user re-authentication mechanism based on presence. This mechanism can be split in order to incorporate the main logic into the `base` and `web` modules. Presence management remains in the `auth_timeout` module. This allows other developments to use the backend and frontend parts of the re-authentication mechanism. Re-authentication occurs when a `CheckIdentityException` exception is raised (handled in the dispatcher's error handling). The `ir.http` model is responsible for verification using two methods: `_must_check_identity` and `_check_identity`. task-4281529
This update adds a 'Responsible' field to sign template forms, allowing for clearer assignment of responsibility during signature processes. Access to this field is restricted to authorized users and administrators, enhancing security and control. The change also filters portal users from appearing in the selection list.
Original PR description
Add the 'Responsible' field to sign.template form view that is visible only in debug mode. Edit rights are restricted to the responsible user and Sign Administrators (group_sign_manager). Filtered Authorized Users to internal users only by applying share = False domain, preventing portal users from appearing in the selection. task: 5392158
This update moves the core payroll data and structure definitions to the demo data set. This ensures consistency between the development and production environments, simplifying testing and preventing potential conflicts with live payroll configurations. It's a standard maintenance step to keep development aligned with production.
Original PR description
The general data for payroll structure and payroll structure types have been migrated to demo data.
This update moves all standard payroll data – including structure and type definitions – to the demo environment. This ensures that new development and testing are based on a clean, consistent baseline, preventing conflicts with live payroll configurations. It’s a routine maintenance task to maintain a stable development environment.
Original PR description
The general data for payroll structure and payroll structure types have been migrated to demo data.
This update enhances the VoIP AI feature by preventing users from enabling transcription without a valid OpenAI API key. Now, a warning message appears in the configuration settings, guiding users to set up their API key. This improves data security and ensures proper functionality.
Original PR description
*: ai, ai_app - Phone -> Configuration -> Providers - Enable transcription => Now display an error if trying to do it without a configured OpenAI key in the settings (with a button to go to the settings) task-5431534
This update enhances the job posting experience by automatically populating job descriptions with the detailed 'description' field from the job form. This replaces a pre-configured summary, reducing user frustration and providing more relevant information to potential applicants. The changes also split the website description into description and rating fields to maintain the existing layout.
Original PR description
- made the value of the job description in the job page change with the description field in the job form view. task-id: 5050599 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request updates the website's job description functionality to ensure accurate and consistent display. A change was made to align a key test case with how job descriptions are calculated, resulting in a more reliable presentation of information for potential candidates. This improves the overall user experience for job seekers.
Original PR description
- changed `test_default_post_html` to be compatible with the compute of `website_description` task-id: task-5050599
This update enhances the internal structure of the Odoo Enterprise system by making key JavaScript utilities and services more easily accessible. Previously, these components were isolated, but now they can be imported into other parts of the system, promoting better code organization and potential future development. This change supports ongoing system maintenance and improvements.
Original PR description
This commit puts export in front of some of the blackbox js utils/services/constants to make them importable from other files in the future. Forward-Port-Of: odoo/enterprise#99445 Forward-Port-Of: odoo/enterprise#99391
This pull request updates the wording in the Odoo stock module to replace the informal term "Todo" with the more professional "To Do". This change ensures a consistent and polished user experience, aligning with Odoo's overall brand standards.
Original PR description
Currently used word "Todo" is informal and should be replaced by a more professional "To Do". Task: 5387557 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
This update enhances the Odoo code editor by allowing users to enable line wrapping within code blocks. This prevents long lines from requiring horizontal scrolling, improving readability and the user experience for editing code snippets. It's a simple change that makes the editor more user-friendly.
Original PR description
- Introduce new `lineWrapping` prop in CodeEditor and apply on `wrap` option via Ace session.
- Extend AceField to expose a `lineWrapping` widget option.
- Allow views to enable wrapping using: options="{'lineWrapping': True}".
The ace `wrap` option enables line wrapping, making long lines visible without horizontal scrolling for better readability.
Example:
without `wrap`:
<img width="672" height="76" alt="image" src="https://github.com/user-attachments/assets/f78e517e-003b-41d3-b054-a8427783025e" />
with `wrap` set to true:
<img width="670" height="67" alt="image" src="https://github.com/user-attachments/assets/abccb4b6-a9b3-4da2-9e4d-e53260a21322" />
part of Task-5136867This update enhances how salary rules are applied to employee payslips by allowing them to be associated with multiple joint committees. The system now intelligently determines which rules apply based on the payslip's joint committee membership, simplifying payroll configuration and improving accuracy. UX improvements were also made to the salary rule views for a better user experience.
Original PR description
In this commit: Salary rules can be associated with zero or more joint committees, A rule will only be applied on a payslip if one of the following applies: - rule applies on all joint committees (no joint committees set on the rule). - version of payslip belongs to a joint committee part of a joint committee set on the rule. A joint committee 'A' is considered part of another joint committee 'B', if the code of 'B' prefixes the code of 'A'. UX improvements were added as well to the views of salary rules. Task-5136867
This update allows users to request appraisal feedback from any contact – not just employees – across different companies. Previously, feedback was limited to internal employees. This broader approach will provide a more comprehensive view of feedback and improve the overall appraisal process.
Original PR description
### Before: - The user could only select employees from the current organization as recipients for appraisal feedback. ### After: - Users are no longer restricted to selecting only employees as recipients for appraisal feedback. - Feedback can now be requested from any contact (res.partner) across any company. ### Impact: - This change allows users to request feedback from contacts in other companies, broadening the scope for gathering feedback. task-4926132
This update makes the close register popup UI more consistent and user-friendly. It adjusts the size of the popup based on the number of payment methods used, ensuring a better visual experience for users. This is a minor UI improvement.
Original PR description
Little improvement of the close register popup UI. - If there is only the cash pm (which is always present), it takes the whole size of the popup. - If there is an odd number of pm, the last one takes the whole size too. - But if there is an even number of pm, they take half size each as befor this commit. task-id: 5410451 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures the homepage consistently uses the `/` URL as its canonical link, which is crucial for search engine optimization. It also updates the sitemap.xml to accurately reflect the homepage URL, resolving a previous issue where non-homepage URLs weren't included. This improves website visibility and data accuracy.
Original PR description
This PR updates the canonical of a page if it's the homepage. The canonical of a homepage is always `/` now. Also updates the sitemap.xml, if the homepage is not `/`, then the homepage url does not appear in the sitemap.xml. Example: the user selected `/a` as the homepage. 1 - Page `/a` and `/` indicate as a canonical URL `/` 2 - `/a` is not in the sitemap.xml If there are multiple languages installed in the website, the language reference should stay in the canonical url. The canonical URL of `/fr/a` will be `/fr`. task-4563867
This update simplifies the talent pool view by removing irrelevant fields and streamlining the search functionality. The changes improve the user experience by focusing on the specific information needed for talent pools, enhancing efficiency for recruiters.
Original PR description
Description of the issue/feature this PR addresses: Since the talent pools share the same views as all applicants, some of the fields in the view that exist for all applicants don't make sense for talent pools. This commit aims to hide these fields from the talent pools and do general improvements on the list and search views. - replaced talent pool domain to be for all talent pools with the `active_ids` as default talent pool in search, instead of the domain being the `active_ids`. - removed the `action_talent_pool_add_applicants` button from talent pool. task-5184168
This update ensures vehicle contract statuses accurately reflect their real-time state (cancelled or expired) by automatically calculating the status upon creation. The status bar is now non-interactive, relying on contract dates, and new buttons have been added for manual contract cancellation and reactivation.
Original PR description
Only show cancelled or expired states of vehicle contract when the contract is in that state. Also make the status bar non clickable and rely on automatic state updates based on the contract start and expiration dates. Since the state can no longer be changed by clicking on the status bar, this meant that the state should be correct at all times, this lead to a change where the state is computed upon creation (previously, it would go to the default state regardless of the contract start and expiration dates). Also buttons were added to allow the user to manually cancel and reactivate contracts. Task-ID: 5176374 [Related PR](https://github.com/odoo/enterprise/pull/98141)
Resolved issues and error corrections
This update ensures that future leave requests are accurately reflected against an employee's available vacation time, even when they have ongoing accrual allocations. Previously, employees with past accruals wouldn't have their future leaves properly deducted. This change fixes a bug where future leaves weren't counted against available days if an employee could still accrue more time off.
Original PR description
Description of the issue/feature this PR addresses: This ticket: https://www.odoo.com/odoo/project/49/tasks/5218745 In the above ticket, an employee Norbert Loibl had an accrual allocation from Feb.…
Description of the issue/feature this PR addresses: This ticket: https://www.odoo.com/odoo/project/49/tasks/5218745 In the above ticket, an employee Norbert Loibl had an accrual allocation from Feb. 2023 to May 2024. Since then, all his allocations have been regular allocations, so he is no longer accruing vacation days. But, Norbert’s future leaves do not get counted against the “Days Available” displayed on his Time Off Dashboard. Current behavior before PR: If an employee had an accrual allocation (of the relevant type, e.g. past vacation allocations won’t affect sick leave) at any point in time, their future leaves do not get counted against the “Days Available” on their Time Off Dashboard. Desired behavior after PR is merged: If an employee has an accrual allocation between today’s date and the date of a future leave, that future leave does not get counted against the “Days Available” on their Time Off Dashboard. That way, we will count a leave against “Days Available” unless there is a possibility of accruing more days off before the leave. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241216 Forward-Port-Of: odoo/odoo#238977
This update resolves a warning related to employee compensation calculations within the US payroll module. The team re-added a necessary logic to correctly identify employees without worker compensation, ensuring accurate reporting and compliance. This fix improves the reliability of payroll data.
Original PR description
description: following the refactor (https://github.com/odoo/enterprise/pull/83136), the warning (`hr_payroll_dashboard_warning_employee_wa_without_worker_compensation`) has been altered. fix: this commit adds back `not` to compute the `employees_without_worker_compensation` accurately. :) task-5407490 Forward-Port-Of: odoo/enterprise#101663
This update fixes an issue where the DIN5008 invoice report didn't show Incoterm information. The change adds the necessary logic to include Incoterm codes and locations on this specific invoice layout, ensuring compliance with accounting standards. This improves invoice accuracy and reporting for international transactions.
Original PR description
**Steps to reproduce:** 1. Install the modules account and l10n_din5008. 2. Go to Settings and set DIN5008 as the default invoice report template. 3. Navigate to Configuration → Settings and set a default Incoterm. 4. Create a new customer invoice. 5. Print the DIN5008 Invoice Report. **Issue:** The DIN5008 invoice report did not display the Incoterms, while other invoice layouts printed them correctly. **Cause:** This was due to missing logic in l10n_din5008 report to include Incoterm data. Confirmed with TSB that the DIN5008 layout should display Incoterms. **Fix:** This commit adds the Incoterm information to the DIN5008 template data: - Always include the Incoterm code - If an Incoterm location is set, display it as `CODE - LOCATION` **opw-5349267** Forward-Port-Of: odoo/odoo#240688 Forward-Port-Of: odoo/odoo#238682
This update corrects a bug that caused a 'singleton' error when marking Field Service tasks as complete, specifically related to linking timesheets to sales orders. The change ensures the system correctly associates timesheets with the first applicable sales order line when multiple options exist, maintaining consistent functionality. This prevents errors and ensures accurate timesheet tracking.
Original PR description
Steps to reproduce: ------------------------------ 1. Install `industry_fsm_sale` module. 2. Open the settings of the field-service project and open the invoicing page 3. Add one employee on the…
Steps to reproduce:
------------------------------
1. Install `industry_fsm_sale` module.
2. Open the settings of the field-service project and open the invoicing page
3. Add one employee on the Invoicing page and create a new product with a Unit Price
4. On the product form, set the same value in the Sales Price field
5. Create a Sale Order with two sale order lines that use the same product and the same quantity
6. In Field Service create a Task for the same customer and set one of the sale order lines in the Sales Order Item field.
7. Create one timesheet for the task using the same employee added in the Invoicing page. Save the timesheet and click Mark as done
Observation:
------------------------------
A singleton traceback occurs when marking the task done:
```
raise ValueError('Expected singleton: %s' % record)
ValueError: Expected singleton: sale.order.line(62, 63)
```
Issue:
------------------------------
In the following code:
https://github.com/odoo/enterprise/blob/31663b503c75dc2a83cc9585280df02f4d704e89/industry_fsm_sale/models/project_task.py#L507-L511
According to our scenario, we will get two SOL for the same product `id` and `price_unit` Which on further used to link the SOL to timesheet. Following code assumes the single SOL and gives singleton error https://github.com/odoo/enterprise/blob/31663b503c75dc2a83cc9585280df02f4d704e89/industry_fsm_sale/models/project_task.py#L553-L554
Solution:
------------------------------
When building the `sols_by_product_and_price_dict` using the key
(product_id, price_unit), When multiple sale order lines exist for the same key,
only keep the one that comes first in the sequence to maintain the consistency.
as in following code:
https://github.com/odoo/enterprise/blob/a7b79f79d90a37fb2458f05bcf439c109f1d756f/industry_fsm_sale/models/account_analytic_line.py#L15-L20
This ensures the timesheet always links to the first applicable sale
order line, matching existing behavior.
opw-5373018
Forward-Port-Of: odoo/enterprise#101774This update fixes a visual issue in Odoo's Chatter where attachments and emoji reactions would overlap, creating a cluttered and difficult-to-read message view. The change adds spacing to ensure attachments and reactions are clearly separated, improving the overall user experience and readability of messages.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- In version 19, when a message in the Chatter includes an attachment and an emoji reaction is…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- In version 19, when a message in the Chatter includes an attachment and an emoji reaction is added, both elements appear visually too close to each other. This overlap creates a cluttered look and reduces readability in the message view. **Current behavior before PR:** ---------------------------------------------- - Emoji reactions and attachment previews are rendered too close together. - Negative or insufficient top margin on the reactions container causes overlap. - Visual inconsistency between text-only messages and messages with attachments. **Desired behavior after PR is merged:** ---------------------------------------------- - Proper spacing between attachments and emoji reactions in the Chatter. - Consistent, clean layout across all message types. - Improved readability without affecting compactness for text-only messages. Task-5259482 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237943
This update ensures that the highlight color used in the website footer automatically adjusts when the website's theme is changed. Previously, the highlight color remained a default purple, regardless of the selected theme. This change improves the visual consistency and branding of the website.
Original PR description
Steps to reproduce: 1. Go to the theme tab and change the colors of the main preset. 2. Select any text in the footer. 3. Expand the toolbar and click the highlight option. Issue: The highlight…
Steps to reproduce: 1. Go to the theme tab and change the colors of the main preset. 2. Select any text in the footer. 3. Expand the toolbar and click the highlight option. Issue: The highlight selector still uses the default purple color instead of adapting to the updated theme preset. This happens because the text highlight color uses "--o-color-1", which does not update when the theme colors are modified. Fix: Used "var(--hb-cp-o-color-1)" as the default text highlight color instead of "--o-color-1", ensuring the highlight automatically adapts to theme changes. Before This Fix: | highlight selector color before changing theme preset | highlight selector color after changing theme preset | |-----------------------------|---------------------------------| | <img width="450" height="404" alt="image" src="https://github.com/user-attachments/assets/c92eed7e-1856-4e08-879a-a74e2506ab9c" /> | <img width="399" height="389" alt="image" src="https://github.com/user-attachments/assets/9a938e80-9e01-49fd-b6a1-cf9baaa64358" /> | After This Fix: | highlight selector color before changing theme preset | highlight selector color after changing theme preset | |-----------------------------|---------------------------------| | <img width="394" height="413" alt="image" src="https://github.com/user-attachments/assets/674958bc-7df7-44fa-97c0-5ae78608dc6a" /> | <img width="408" height="428" alt="image" src="https://github.com/user-attachments/assets/1d48ca49-7d18-4681-8443-b9887eef0dbf" /> | task-5375414 Co-author: Alay Patel <alap@odoo.com> Forward-Port-Of: odoo/odoo#238471
This update adds the functionality to generate and submit the required annual VAT return for Luxembourg businesses within Odoo. This ensures compliance with local tax regulations and simplifies the reporting process for our Luxembourg clients.
Original PR description
This commit will add the support of return for the annual vat report. task-5145333
This update enhances the compatibility of the import action feature, allowing users to specify the target model when importing data. This change addresses a previous issue and ensures existing import actions continue to function correctly. It's a minor fix to maintain backward compatibility.
Original PR description
This commit follows up the commit [1] and allows adding an `model` to the parameters of the `import` action, for retrocompatibility purposes. Note that, this retrocompatibility existed before the commit [2], which was partially reverted by the commit [1]. [1] https://github.com/odoo/odoo/commit/7e351d87a5b6faad5bef447bdb077b7637f9c936 [2] https://github.com/odoo/odoo/commit/033d6afe36426067a7bada8b812898169d7968de Forward-Port-Of: odoo/odoo#241993
This update removes a previously implemented fix for the account import action. A similar correction has already been addressed in a related extended class, making this reversion unnecessary. This ensures consistent functionality within the account import process.
Original PR description
Since [1] the fix on account_import_action is not needed anymore, a similar fix is done in the extended class. [1] https://github.com/odoo/odoo/commit/7e351d87a5b6faad5bef447bdb077b7637f9c936 Forward-Port-Of: odoo/enterprise#103216
This update clarifies the behavior of a specific function within the Odoo account module. Previously, colleagues were under the impression that this function created new records when it actually only updated existing ones. This change ensures consistent understanding and prevents potential misinterpretations of the account system.
Original PR description
I have adding a docs for force_create that I have added in a previous task as it was not clear for some colleagues that it do not create but still updates the available records 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#241995
This update fixes a visual issue on the user profile page where course tags were being cut off. The change adjusts the layout to ensure all tags are fully visible, maintaining a consistent and professional appearance. This improves the user experience by preventing information truncation.
Original PR description
In the website profile page, the course tags are slightly cut on the bottom. This commit adapts the block size to fit the entire tag. Note that the combo of fixed height / hidden overflow is actually intended to only show a single line of tags and not all of them, to avoid having a variable course card total height. Task-5457464 Forward-Port-Of: odoo/odoo#241897
This update corrects a bug where subscription order processing was repeatedly triggered, leading to inefficiencies. The fix ensures that order progress is accurately tracked, preventing redundant processing steps and improving order management. This resolves a potential issue with order completion times.
Original PR description
Before this commit, when the continue instruction was called before the _subscription_commit_cursor call, the order would be reprocessed again and and again. Commit with a progress=1 was commited but if the continue was called before, progress with 0 was never called. Forward-Port-Of: odoo/enterprise#102142
A technical issue causing errors when accessing holiday attests in the payroll module has been fixed. The update ensures the system correctly handles data related to payslips, preventing a crash during the process. This improves the reliability of holiday request workflows.
Original PR description
Issue: in debug mode, the function `validateProps` is called on the component so it raises an error because `payslipsYear` is in the props but not defined in the schema Steps to reproduce (developer mode): - fill in the departure notice period and payslip wizard - try to open departure: holiday attests from the cog menu - you get a traceback because of unknown key `payslipsYear` Fix: added `payslipsYear` to the props definition task-id: 5398621 Forward-Port-Of: odoo/enterprise#101605
This update fixes a minor typo in a report generation method within the Odoo Enterprise application. The change ensures consistent naming conventions and improves the overall readability of the code. This ensures accurate address formatting in reports.
Original PR description
Self explanatory. formated -> formatted and _get is more consistent with Odoo naming conventions. No task ID
This update fixes an issue where clicking on employee avatars within vehicle records didn't open the employee details. The outdated widget was replaced with a new, supported version, ensuring users can now easily access employee information from vehicle records. This improves the user experience and data accessibility.
Original PR description
**Steps to reproduce:** - Install the Fleet and Employees modules. - Navigate to the Fleet app. - Open any vehicle record. - Click on the employee avatar displayed on the vehicle form. **Issue:** - Clicking on the employee avatar does not open the employee details card. **Cause:** - The currently used widget is outdated and no longer functions correctly. **Fix:** - Replaced the old widget with the new, supported widget. task-5410251
This update fixes a reporting issue in the French P&L reports. The 'owner remuneration' account (644) was incorrectly categorized as 'tax and duties'. This change ensures accurate reporting of wages and salaries for French businesses, aligning with accounting standards.
Original PR description
Account '644 owner remuneration' was in the 'tax and duties' category in the french P&L but it belongs to the 'wages and salaries' category task-5446018 Forward-Port-Of: odoo/enterprise#103214 Forward-Port-Of: odoo/enterprise#103061
This update enhances the security of our expense tracking system by adding a crucial layer of protection during database copies. This ensures that database copies created for support investigations won't inadvertently impact the live production system or customer data, providing a safer environment for troubleshooting.
Original PR description
This commit adds a complement to the neutralization necessary for the hr_expense_stripe module. The main neutralization is handled by the certificates module, but this covers a rare edge case (creation of new accounts in production mode for companies that do not already have an account), and makes the overall neutralization more bullet proof. ---------------------------------------------------------------------- The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. Forward-Port-Of: odoo/enterprise#102702
This update addresses an issue where the Swedish blackbox feature in Odoo would generate tracebacks when receiving non-UTF-8 characters from connected devices. The fix silently ignores these decoding errors, preventing disruptions and ensuring reliable data transmission from serial devices.
Original PR description
If a non utf-8 chracter is returned by a serial-connected device, the supported method of the swedish bb raises a traceback. Forward-Port-Of: odoo/odoo#242114
This update resolves an issue where color fields within editable lists weren't consistently saving changes when using the 'bottom' editing mode. Previously, edits to color fields were lost. This fix ensures that color field changes are now reliably saved when the list is in 'bottom' mode, improving data accuracy and usability.
Original PR description
This commit fixes the issue where editing a field with widget="color" does not save it when the list is in editable="bottom" mode. project.task~5262582 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#238644
This update adjusts how preset options are displayed in the self-order mode, ensuring that available presets are only shown when appropriate (e.g., kiosk or with a table identifier). Previously, a single, unavailable preset was always used as the default. Now, users can see the correct options based on their current context, requiring a slight adjustment to the 'service_at' field for kiosk or mobile menu views.
Original PR description
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset…
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset was not available in self, this preset was used as the default one. But now, it's not the case anymore. We only use it if, and only if, it is available in self. The second thing was to fix the "Dine In" preset availability in the eating location choices. A dine-in preset is a preset which have service_at == table as attribute. If this preset (is `available_in_self`) and has `service_at === table`, we only show it when there is a table_identifier in the URL or when we are in the kiosk. In all other cases, it'll never be shown. If user wants to see this preset in the kiosk or in the mobile menu without table_identifier, user needs to change the `service_at` field at `counter` (or `delivery`) and put the product as `available in self` as well. task-id: 5190541 enterprise pr:https://github.com/odoo/enterprise/pull/103063 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241739 Forward-Port-Of: odoo/odoo#234522
This update ensures that preset options are only displayed in self-service modes (kiosk, mobile menu) when they are actually available for that specific order type. Previously, a preset would be shown even if it wasn't suitable for self-service. Users may need to adjust product settings to ensure availability in these modes.
Original PR description
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset…
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset was not available in self, this preset was used as the default one. But now, it's not the case anymore. We only use it if, and only if, it is available in self. The second thing was to fix the "Dine In" preset availability in the eating location choices. A dine-in preset is a preset which have service_at == table as attribute. If this preset (is `available_in_self`) and has `service_at === table`, we only show it when there is a table_identifier in the URL or when we are in the kiosk. In all other cases, it'll never be shown. If user wants to see this preset in the kiosk or in the mobile menu without table_identifier, user needs to change the `service_at` field at `counter` (or `delivery`) and put the product as `available in self` as well. task-id: 5190541 community pr:https://github.com/odoo/odoo/pull/234522 Forward-Port-Of: odoo/enterprise#103099 Forward-Port-Of: odoo/enterprise#103063
This update corrects a minor layout issue in the partnership module. A recent change shifted the grade ID field, and this fix restores it to its original position. This ensures data is displayed correctly and consistently within the system.
Original PR description
The following commit [1] modified the position of the VAT field, which caused the grade_id field to be shifted. So this commit updates the xpath to restore grade_id to its original location. [1]: https://github.com/odoo/odoo/commit/3a56f59d466e72b3bf99f241c479cd3130173b41 task-5461569 Forward-Port-Of: odoo/odoo#242006
This update fixes an issue where Odoo incorrectly processed partner names with only one word. Previously, single-word names resulted in an empty first name field. Now, single-word names are correctly assigned to the first name, ensuring accurate data entry and reporting for partner information.
Original PR description
Description of the issue/feature this PR addresses: The name splitting logic fails when the partner name contains only one word, resulting in an empty first name. Current behavior before PR: Splitting a single-word name returns an empty first name and assigns the word to the last name. Desired behavior after PR is merged: A single-word name is correctly assigned to the first name field, leaving the last name empty. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241926
This update fixes a potential issue where printing failed on Windows systems. By adding a catch-all exception handler, the system now gracefully manages printing errors, preventing disruptions to users. This enhances the overall stability and reliability of the IoT device printing functionality.
Original PR description
This commit adds the try/except block around print_raw method of the virtual iot box to allow catching exceptions when printing on Windows Forward-Port-Of: odoo/odoo#238774 Forward-Port-Of: odoo/odoo#238633
This update resolves a crash that occurred when exporting data from the MRP MPS view. The issue was caused by a recent change that incorrectly pulled data from a related model. Now, the export function correctly displays the expected fields from the 'mrp.product.forecast' model, ensuring data exports work as intended.
Original PR description
Steps to reproduce: - Go to MPS - Select one or more records - Click on Action > Export - Search and expand "Forecasted quantity at date" - Select "Forecasted quantity at date/Minimum to Replenish" - Export Before: A traceback is raised with the following error: "ValueError: Invalid field 'min_to_replenish_qty' on 'mrp.product.forecast'" This is caused by the model being overwritten by "mrp.production.schedule". The regression was introduced by commit ac52882, which added a default model "mrp.production.schedule". After: The export works correctly with sub fields. https://github.com/odoo/enterprise/commit/ac52882891a9ede6a5b008ac39fc62b82b7bf813 opw-5406704 Forward-Port-Of: odoo/enterprise#103097
This update fixes a problem where payments made on the website weren't correctly reflected in the POS. Now, the POS automatically recognizes and accounts for payments made through ecommerce, creating down payment lines and preventing duplicate payments. Users can still create invoices through the standard Odoo Sale app.
Original PR description
Before, if you paid for something on the website with ecommerce, it would create a sale order with a transaction linked to it, but no invoice. So in the POS the order would show up in the…
Before, if you paid for something on the website with ecommerce, it would create a sale order with a transaction linked to it, but no invoice. So in the POS the order would show up in the Quotation/Order menu, but the POS didn't have any reference on the payment, so you would have to create another duplicate payment. Now the amount_paid (which is the amount already paid in transactions) is taken into account when calculating what's left to pay in the POS. So anytime you open a sale order in the POS it should create a down payment line for anything already paid on the website (the same as we were already doing for invoices). Also to avoid double payments, now the sale orders which have been already paid in full, even if they are not invoiced yet, will not show up in the POS. The invoice can still be created normally from the Sale app in Odoo. Task-5138081 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230809
This update resolves a bug that prevented sale orders with zero unpaid amounts from appearing in the POS menu, causing test failures. The change increases the sale order quantity to 1, ensuring the order is visible and the tests can run correctly. This improves the reliability of the POS functionality.
Original PR description
Because of https://github.com/odoo/odoo/pull/230809, it will cause the quotations/orders menu to filter out any sale orders which have an unpaid amount of 0. The test_rental_pos test tries to create a sale order with a quantity of 0 and then settle it in the POS, but because of the filter, the sale order will not show up in the menu causing the test to fail. This PR is to increase the quantity in the sale order to 1 so that the order shows up and the test can be executed properly. Task-5138081 Forward-Port-Of: odoo/enterprise#96876
This update fixes an issue where assigned values in project properties would disappear after saving. The problem stemmed from how the system handled data retrieval, specifically when creating Many2one relationships. The fix ensures that property values are correctly saved and displayed.
Original PR description
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as…
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as `Contact`. - Now assign value to Property 1 > Click on `External button` > Click on `Save & Close`. **Issue:** - The assigned value disappears after saving. **Root cause:** - At [1], since `id` is not an active field (see [2]), it is not present in record.data, which is expected. However, record.data is then passed to m2oTupleFromData, which assumes that the data includes an id because it is normally used on data coming directly from the ORM. - Additionally, since display_name is also not present, m2oTupleFromData falls back to record.data.name, which is not proper. **Solution:** - Use an ORM read to retrieve the proper display_name of the record before constructing the Many2one tuple. [1]: https://github.com/odoo-dev/odoo/blob/24ccc3faf14ade70b21bf253af16a534df726fc8/addons/web/static/src/views/fields/properties/property_value.js#L87-L89 [2]: https://github.com/odoo/odoo/blob/369ca1e5a154235e80b9ea6af7b3f10442c0939f/addons/web/static/src/model/relational_model/record.js#L793-L795 Before: <img width="589" height="68" alt="bef" src="https://github.com/user-attachments/assets/b2aeba0c-1c52-4663-9f94-5c7808a882db" /> After: <img width="613" height="81" alt="after1" src="https://github.com/user-attachments/assets/a3b3d733-929d-4a24-9e17-c73d9569e9b7" /> **opw-5257819** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240443 Forward-Port-Of: odoo/odoo#238052
This update enhances the preparation display filters in the Point of Sale module, providing more flexible options for managing order preparation. Specifically, it adds multi-select time filters, a multi-select preset filter, and ensures the category filter is always visible, streamlining the process for staff.
Original PR description
- Time filter: * Remove "All" option (now default) * Add "Now" option for unscheduled and next-slot orders * Allow multi-selection - Preset filter: * Add multi-select preset filter * Only shown if related POS configs use presets - Category/Product filter: * Always show pos.category filter (even if no preparation card contains this category) * Move category/product filters below Time and Preset filters task: https://www.odoo.com/odoo/project/1737/tasks/5060221 community PR: https://github.com/odoo/odoo/pull/233920 Forward-Port-Of: odoo/enterprise#103091 Forward-Port-Of: odoo/enterprise#95136
This update removes the document selector from scheduled messages generated for EDI processes (like 'EDI, by Post'). This prevents users from adding attachments to these system-generated messages, aligning with how they're intended to be used. This change supports a new requirement for invoice validation errors before scheduling.
Original PR description
PURPOSE: - This commit makes the document selector invisible on the scheduled messages, which are generated from the account_move_send_wizard, like scheduled messages for 'EDI, by Post' methods. - Because we don't want to allow users to add attachments to such messages, as these messages are system-generated. Related to 'Schedule the send & print invoice' task. Related Community PR: https://github.com/odoo/odoo/pull/210730 Task: 4677423
This update fixes an issue where the recruiter selection dropdown in the Job Position form displayed all company users, regardless of their recruitment access rights. The change now restricts the dropdown to only employees with Recruitment Officer or Administrator roles, ensuring recruiters only see authorized candidates.
Original PR description
#### Issue In Recruitment → Job Position form, the Recruiter dropdown lists all company users, including those without recruiter rights. #### Fix - Replace the `user_id` field in `hr.applicant`, `hr_recruitment_reports`, and `hr.job` with `recruiter` for clarity, using `hr.employee` instead of `res.users`. - Restrict the dropdown to employees whose linked users have the correct recruiter access rights (Recruitment Officer or Administrator). - Update SQL queries accordingly. task-5083125
This update fixes an issue where the recruiter dropdown in job postings displayed users without the necessary permissions. The change now restricts the dropdown to only employees with Recruitment Officer or Administrator roles, ensuring recruiters only see authorized personnel. This improves the efficiency and accuracy of the recruitment process.
Original PR description
#### Issue In Recruitment → Job Position form, the Recruiter dropdown lists all company users, including those without recruiter rights. #### Fix - Replace the `user_id` field in `hr.applicant`, `hr_recruitment_reports`, and `hr.job` with `recruiter` for clarity, using `hr.employee` instead of `res.users`. - Restrict the dropdown to employees whose linked users have the correct recruiter access rights (Recruitment Officer or Administrator). - Update SQL queries accordingly. - Update demo data and replace Marc Demo with Mitchell Admin for consistency with domain condition in recruiter selection. #### Additional - Rename recruiter-related fields/classes/tests to make consistent with the changes from `user_id` to `recruiter_id`. task-5083125
This update fixes a minor issue where job application emails incorrectly displayed 'your applicant' in the subject line. The change now ensures the subject line accurately reflects 'your application,' improving clarity and professionalism for applicants. This ensures a better user experience.
Original PR description
Before this commit, when you applied for a job, the email notification you received incorrectly showed "your applicant" in the subject line (or header) instead of the: "your application." This change fixes that issue by correcting the header name in the email. task-5270293
This update improves the speed of account reports by optimizing how the system checks for specific issues like unknown partners and overdue payments. By streamlining data queries, the reports now run more efficiently, reducing processing times and improving overall system performance. This change focuses on internal improvements to the account reporting module.
Original PR description
* For unknown partner checks, instead of generating the lines twice, perform one query similar to report. * For overdue payable/receivable checks, instaed of building the report to get the `Older` period total, perform a limit query to have same info. * Consider return dates in the action of openning the report. task-5429134
This update resolves a technical issue related to the l10n_gt_edi module, specifically adding a 'neutralization' process. This ensures that database copies created for support investigations are safe and won't unintentionally impact the live production system or customer data.
Original PR description
This commit adds the missing neutralization necessary for the l10n_gt_edi module The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. Forward-Port-Of: odoo/enterprise#102695
This update fixes an issue where newly added buttons in the form editor weren't correctly focused or displayed in the sidebar. The fix ensures a smoother workflow for users creating and editing buttons within the Odoo Enterprise web_studio interface. This improves usability and efficiency.
Original PR description
Have an arch with many conditional button in the header Click on Add a button in the form editor. Before this commit, the new button was not correctly focused and the sidebar did not display the properties of the new button. This was because we gave the wrong xpath coordinates to focus to the editor. After this commit, this flow works as expected task-5364798 Forward-Port-Of: odoo/enterprise#102380 Forward-Port-Of: odoo/enterprise#101059
This update corrects a display inconsistency in promotions where the discount product name was incorrectly linked to the promotion description. This issue stemmed from a technical workaround introduced previously to address an accounting problem. Removing this field ensures accurate discount descriptions are shown to users.
Original PR description
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: -…
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1 point 2- Using debug mode, in promotion's reward view, change the `Description on order` to `AAA 10%`. Save the promotion and you can see the `Discount product`'s name is set to the same description. 3- Create another promotion called `BBB`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1000 points. 4- In promotion reward's view change the `Discount product` to `AAA 10%` which is promotion `AAA`'s discount product. 5- Change the `Description on order` to `BBB 10%` and save. 6- You can see the name of `Discount product` is changed as well. 7- In promotion `AAA` and you can see the description and the name of `Discount product` mismatch. 8- Navigate to shop, and add a product to cart with a price of more than 50. 9. You can see after applying promotion `AAA` the description from promotion `BBB` is shown. ### Cause: The technical field `Discount product` is never meant to be changed, and this field is introduced for reporting purposes and showing the discount applied in cart. However, this field is added to view in #132857. This is done as a hack to find the `Discount product` created for the promotion, as a workaround for an accounting issue due to adding account to `Discount product`, and originally `discount_line_product_id` was not supposed to be shown or changed through form. After discussion with PO, we decided this field should be removed from the view. Also removing this field will not undo the main fix of #132857, and that workaround was introduced only to find the `Discount product` for that specific client's use case. opw-5229633 Forward-Port-Of: odoo/odoo#240684
This update enhances the reliability of our accounting tests by preventing unnecessary invoice line creation. Previously, tests were sometimes failing due to duplicate invoice line IDs. This change ensures tests run smoothly and consistently, reducing the risk of false failures and improving overall test stability.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/102632 Forward-Port-Of: odoo/odoo#241288
This update fixes an issue where deferred accounting for misc entries wasn't correctly handling different account types. The change now analyzes the individual line's account type to determine the appropriate deferred account, providing more accurate and granular accounting. This ensures proper revenue and expense deferral calculations for misc entries.
Original PR description
The commit 42f823d6b8aa3d1cd171ae1603549ee95fc9d0f0 allows to use deferred on misc entries. However, there are many places in the code that were not updated. Usually they were in the form of `if move_type is sale, then deferred_type = income, else expense`. However we cannot rely on the move_type anymore for misc entries, because it will always take the `else` branch of the condition. Instead, if we have a misc entry, we should rely on the account type of the line that is being deferred, so we have more granularity. For this, we now compute the deferral account/journal for each line, and not per move. The logic inside the computation remains the same. Steps to reproduce: 1. Create a misc entry with two deferred lines (one expense, one revenue) 2. Post it 3. Check the generated deferrals, they all use the same deferred account and journal even though we have different account types opw-5194305 Forward-Port-Of: odoo/enterprise#100295
This update fixes a visual issue where the search panel was being cut off when navigating deep within the hierarchy view. The change allows the entire hierarchy to scroll properly, ensuring a fully functional and usable experience for users. This resolves a test failure and maintains the integrity of the UI.
Original PR description
Issue: - The search panel was getting clipped when navigating deep into the hierarchy. - `.o_content` enforced `height: 100%` and `overflow: hidden`, preventing the hierarchy from expanding and blocking vertical scroll. - The JS test "drag node to scroll" queried `.o_content`, which is no longer the actual scrollable container in the hierarchy view, causing intermittent test failures. Fix: - Allow `.o_content` to grow and remove overflow restrictions only in the hierarchy view. - Enable vertical scrolling on `.o_hierarchy_view.o_action` to support large hierarchies. - Update the test to query `.o_hierarchy_view.o_action` so it targets the correct scrollable element. Impact: - Restores proper scrolling behavior. - Prevents search panel truncation and preserves full UI usability. - Stabilizes the hierarchy drag-scroll test without impacting other views. Task: 5326054 Forward-Port-Of: odoo/odoo#236823
This update corrects a minor bug in the live chat feature that prevented conversation descriptions from working correctly. The issue stemmed from a subtle coding difference that wasn't detected by existing tests. Adding new tests ensures this functionality now operates as expected.
Original PR description
*: im_livechat Accidental regression from https://github.com/odoo/odoo/pull/237749 The code had getter named `allowDescriptionsTypes` and the patch was `allowDescriptionTypes`. While this looks the same at a glance, there's is a "s" in "description(s)" that differs. This subtle change was not caught due to lack of test coverage, which this commit adds. Forward-Port-Of: odoo/odoo#242070
This update resolves an issue where unnecessary dialogs appeared during One-click Payment in the POS system, leading to errors. The fix prevents the creation of new orders during One-click Payment, ensuring a smoother checkout process for customers. It also corrects a bug where the Delivery preset was incorrectly removed.
Original PR description
steps: - Configure a default preset as Delivery or Takeout and enable One-click Payment - Open the POS restaurant. - Open any table and add a product. - Click the One-click payment method. issue: - Unnecessary dialogs appear on the ReceiptScreen (e.g., customer selection or time-slot selection), followed by traceback. reason: - The order is validated on the ProductScreen during One-click Payment and ProductScreen creates new draft order. fix: - After this commit, new order will not be created on the ProductScreen with One-click Payment.. - If validation fails (e.g., an RPC error), it will redirected back to the previous screen. - In case of Delivery preset, on discard do not remove Delivery preset. task-5391389 Forward-Port-Of: odoo/odoo#241906 Forward-Port-Of: odoo/odoo#239038
This update resolves an issue preventing duplex (double-sided) printing on the Windows IoT device. We've replaced the problematic Ghostscript with SumatraPDF, a simpler PDF viewer that natively supports duplex printing. This ensures reliable and accurate PDF printing for our users.
Original PR description
When printing a PDF using the Windows IoT, first the PDF file is temporarily saved, and then it is printed using Ghostscript which handles parsing the PDF and saving it to the printer. Unfortunately, Ghostscript is unable to print using duplex (double-sided) no matter what settings are provided. To fix this, we replace Ghostscript with [SumatraPDF](https://github.com/sumatrapdfreader/sumatrapdf), which is an open source PDF viewer for Windows, but it is also capable of being used from the command line to print. We simply provide the duplex printing option in the command to SumatraPDF, and it works as expected. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a previous issue where attendance managers could modify their own attendance records. The change removes this automatic permission from the 'Officer: Manage attendances' group, ensuring accurate attendance tracking and data integrity. This improves the reliability of attendance data.
Original PR description
Currently, attendance managers of some employee are assigned implicitly the right to self edit their own attendance, which should not be the case. This PR removes the implicit right of self attendance edit from the "Officer: Manage attendances" group. Task: 5384284
This update adds a critical neutralization process for the l10n_tw_edi_ecpay module, allowing support teams to safely examine database copies without risking changes to the live system. This ensures investigations of duplicate databases are conducted securely and without impacting our customers or production data.
Original PR description
This commit adds the missing neutralization necessary for the l10n_tw_edi_ecpay module introduced in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/odoo/pull/223132 Forward-Port-Of: odoo/odoo#240975
This update includes a new test to ensure that work entries are generated correctly within the HR module. This fix addresses a potential issue with the work entry generation process, improving the reliability and accuracy of HR data. The test confirms the fix implemented in a previous pull request.
Original PR description
This commit adds a test for this fix PR: https://github.com/odoo/odoo/pull/239855 task-5413594 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#240185
This update includes a new test to verify the correct generation of work entries within the Belgian HR payroll module. This ensures accurate payroll calculations and compliance with local regulations. The test was added in response to a previous fix.
Original PR description
This commit adds a test for this fix PR: https://github.com/odoo/odoo/pull/239658 task-5413594 Forward-Port-Of: odoo/enterprise#102217
This update fixes an issue where helpdesk ticket creation would fail due to incorrect access checks across different companies. The change prevents unnecessary fetching of resource IDs in sudo, ensuring users only access resources within their own company. This resolves a potential error when assigning tickets to helpdesk teams with members in other companies.
Original PR description
Before this commit, the `resource_ids` field in `res.users` model was fetched in sudo due to the `resource_calendar_id` related field in `res.users` and so the user will get the resources of members…
Before this commit, the `resource_ids` field in `res.users` model was fetched in sudo due to the `resource_calendar_id` related field in `res.users` and so the user will get the resources of members in a helpdesk team from another company than the current one(s). The problem is since the current user does not have access to those resources due to the multi company rule, he will get a traceback when he will try to create a ticket from that helpdesk team if the assignement method is ramdom and a user with resource exists in another company. This commit makes sure the resource_ids field in res.users is not fetched in sudo to correctly determine which user to set to the ticket when the current user tries to create a ticket. Steps to reproduce the issue: ---------------------------- 1. Install helpdesk module 2. Create a new company B 3. Create a new user with helpdesk user access right (or use Marc demo) and give the company B to that user 4. Select that new company created in step and go to helpdesk app. 5. Create an helpdesk team with auto-assignment set to "randomly" and set admin user as members in that helpdesk team 6. log in as the user created in step 3 7. make usre the company selected is the one created in step 2 8. create a ticket in the helpdesk team created in step 5 Expected behavior: ----------------- The ticket should be created without any issue. Actual behavior: --------------- An access error is raised because the current user does not have access to the resource of admin user since it is not in the same company than the current one. opw-5223717 Forward-Port-Of: odoo/enterprise#102910 Forward-Port-Of: odoo/enterprise#102859
This update fixes a minor issue where navigation using the up/down arrow keys within the HTML editor was not functioning correctly when inserting stars. The fix ensures that all lines, including those with stars, are accessible via keyboard navigation, improving the user experience. This resolves a previous bug related to cursor placement.
Original PR description
When put on a single line, the `o_stars` blocks are not reachable by up/down keyboard navigation because they lack `FEFF` characters to put the cursor. This commit fixes this be removing the outdated `200B` characters that were introduced in [1] and making `o_stars` surrounded by `FEFF`. Steps to reproduce: - Write two lines of text - Add a third line between the two by pressing enter at the end of the first one - Insert stars with `/stars` - Navigate with up/down arrow - Notice that the line with the stars is not skipped - Press Backspace before the stars and before the third line so that everything is on the same line - Press Enter before and after the stars to put then back in three lines - Navigate with up/down arrow => The line with the stars was skipped task-5392572 Forward-Port-Of: odoo/odoo#239432
This update resolves an error that prevented users with basic employee management rights from accessing employee appraisals. The fix ensures that only approvers and administrators can view appraisals, improving security and preventing unexpected application behavior. This change aligns with the intended access controls for the Appraisals module.
Original PR description
An error occurs when a user with `Employee Management` rights, but without any appraisal rights, tries to open an employee’s appraisals. **Steps to Reproduce:** 1) Install Appraisals App.(with Demo).…
An error occurs when a user with `Employee Management` rights, but without any appraisal rights, tries to open an employee’s appraisals. **Steps to Reproduce:** 1) Install Appraisals App.(with Demo). 2) Log in as admin, open Marc Demo in Settings > Users & Companies > Users, and set `Employees: Officer (Manage all employees)` under HR section. 3) Log in as Marc Demo and open any employee profile (e.g., Anita Oliver). 4) Click on `Appraisals smart button`. **Error:** `IndexError: tuple index out of range` **Root Cause:** When a user has only employee management rights, `self.appraisal_ids` received in the method at [1] becomes an empty tuple. Accessing `self.appraisal_ids[0].id` therefore raises an `IndexError`. **FIX:** If no `appraisal_ids` are available, return the list view of appraisals, matching the behavior from previous versions. [1]- https://github.com/odoo/enterprise/blob/3ee1df0b806f9c73d79b8b55fcc7d55b530d9e6b/hr_appraisal/models/hr_employee.py#L169-L180 sentry-7032734789 Forward-Port-Of: odoo/enterprise#102994 Forward-Port-Of: odoo/enterprise#99662
This update resolves a problem causing test failures related to the calendar popover's animation. The change simplifies the test by reducing reliance on strict timing, ensuring the test consistently passes and accurately verifies the popover's final placement.
Original PR description
This commit addresses a timing issue in the calendar popover rendering test. Previously, `runAllTimers` was used to wait for the popover animation to complete before verifying its position. However, this approach was not fully reliable, leading to flaky test results. The solution removes the dependency on `runAllTimers` and slightly relaxes the position assertion. This allows the test to pass even if the animation has not fully completed, prioritizing the correctness of the final placement logic over the animation timing. runbot-error-237534 Forward-Port-Of: odoo/odoo#242074
This update resolves an accessibility issue by removing the `<main>` element from Odoo's Kanban views. The change ensures compliance with web standards, preventing multiple `<main>` elements within a single document, which can improve usability for users with disabilities. This update focuses on enhancing the user experience and accessibility of the Odoo platform.
Original PR description
For accessibility reasons, there should never be more than one `<main>` element in the document [1]. In kanban, we use the main tag in archs, and the kanban compiler leaves it as is in the compiled template. As a consequence, there's one `main` element inside each kanban card (see the Contact kanban view for instance). This commit converts the `main` node in the kanban compiler into a `<div class="o_record_main"/>` and adapts the css and selectors accordingly. [1] https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/main task-5423577
This update addresses an accessibility issue by preventing multiple `<main>` elements within Odoo's Kanban views. The change converts the original `<main>` tag to a custom `<div>` element, ensuring compliance with web standards and improving the user experience for individuals using assistive technologies. This ensures a more accessible and consistent interface.
Original PR description
For accessibility reasons, there should never be more than one `<main>` element in the document [1]. In kanban, we use the main tag in archs, and the kanban compiler leaves it as is in the compiled template. As a consequence, there's one `main` element inside each kanban card (see the Contact kanban view for instance). This commit converts the `main` node in the kanban compiler into a `<div class="o_record_main"/>` and adapts the css and selectors accordingly. [1] https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/main task-5423577
This update corrects a bug where vehicle contracts were incorrectly created in a 'running' state, regardless of their start and end dates. The fix adjusts contract dates in tests to align with recent changes, resolving broken test cases related to payroll and accounting calculations. This ensures accurate reporting and data processing.
Original PR description
Previously, any vehicle contract was created in the running state regardless of the start and end dates of the contract but this has been fixed and contracts are created with the appropriate state. Some tests relied on the old assumption and had dates in the past which made them created as expired and not taked into consideration in some calculations which in turn caused those tests to break. This commit updates the creation and expiration dates of some contracts used in the broken tests to make them work again. Task-ID: 5176374 [Related PR](https://github.com/odoo/odoo/pull/232966)
This update resolves a technical error that prevented users from utilizing the AI-powered refusal feature for applicants. The issue stemmed from a missing required field within the application, causing a system error. Adding the necessary field now allows users to correctly utilize this functionality.
Original PR description
Step to reproduce: - install hr_recruitment. - go to any applicant in any job position. - click on refuse button. - click on AI button Issue: - traceback occurs Reason: - required field for using this widget is not defined. - so it tries to slice the res_ids field which is still not defined Solution - add the necessary fields required for the widget. task-5058510
This update resolves a technical error that prevented users from utilizing the AI-powered refusal feature for applicants. The issue stemmed from a missing required field within the module, causing a system crash. The fix adds the necessary field definitions to ensure the AI functionality operates correctly.
Original PR description
Step to reproduce: - install hr_recruitment. - go to any applicant in any job position. - click on refuse button. - click on AI button Issue: - traceback occurs Reason: - required field for using this widget is not defined. - so it tries to slice the res_ids field which is still not defined Solution - add the necessary fields required for the widget. task-5058510
Features or functions removed from Odoo
This update removes the 'Referred By' field from the Applicant search view within the HR Referral module. This simplifies the search experience for recruiters and improves data clarity by focusing on relevant applicant information. The change was implemented to streamline the applicant search process.
Original PR description
This commit is an extension of odoo/odoo@718c85eb3a48ed2b2301156c619878ec6e63d240 Task-5184168
This update removes redundant string escaping functionality within Odoo's codebase. The system's markup template engine now automatically handles escaping, eliminating the need for manual escaping steps. Using `htmlEscape` is now recommended for manual escaping to prevent issues with double escaping in templates.
Original PR description
All occurrences have been removed. markup template automatically escapes its params, so there should be no need to manually escape strings before passing them to a template. If escaping manually is necessary, `htmlEscape` should be used instead, as it wraps its result into markup which prevents double escaping when used in templates and other HTML utility functions.
Code cleanup and technical improvements
This update standardizes the codebase by replacing outdated references to `odoo.tools._` with the more modern `env._` method within various accounting modules. This change improves code consistency and maintainability across the Odoo accounting system, ensuring a smoother development experience.
Original PR description
`*` includes all the modules related to accounting, including l10n modules PURPOSE - The purpose of this pr is to replace the usage of `odoo.tools._` method with `env._` method from the Environment class in accounting-related module. Related PR: https://github.com/odoo/enterprise/pull/102688 PRs for remaining modules - COM: https://github.com/odoo/odoo/pull/241594 - ENT: https://github.com/odoo/enterprise/pull/103020 Task-5431538
This update standardizes how the accounting modules access core system functions. Previously, the modules relied on a less efficient internal library. This change improves code consistency and maintainability across the entire accounting suite, ensuring smoother future updates and integrations. It impacts several key accounting features.
Original PR description
`*` includes all the modules related to accounting, including l10n modules PURPOSE - The purpose of this pr is to replace the usage of `odoo.tools._` method with `env._` method from the Environment class in account related module. Related PR: https://github.com/odoo/odoo/pull/240704 PRs for remaining modules - COM: https://github.com/odoo/odoo/pull/241594 - ENT: https://github.com/odoo/enterprise/pull/103020 Task-5431538
This update standardizes the use of `env._` instead of `odoo.tools._` throughout the codebase. This improves code consistency and simplifies access to environment-specific data, leading to more maintainable and efficient development. It impacts a wide range of Odoo modules.
Original PR description
`*` includes all the remaining modules other than accounting PURPOSE - The purpose of this pr is to replace the usage of `odoo.tools._` method with `env._` method from the Environment class in every module. Related PR: https://github.com/odoo/enterprise/pull/103020 PRs for accounting modules - COM: https://github.com/odoo/odoo/pull/240704 - ENT: https://github.com/odoo/enterprise/pull/102688 Task-5431538
This update standardizes the use of `env._` instead of `odoo.tools._` throughout various Odoo modules, improving code consistency and simplifying access to environment-specific data. This change enhances maintainability and reduces potential errors related to outdated dependencies. It impacts numerous modules including sales, accounting, and customer support.
Original PR description
`*` includes all the remaining modules other than accounting PURPOSE - The purpose of this pr is to replace the usage of `odoo.tools._` method with `env._` method from the Environment class in every module. Related PR: https://github.com/odoo/odoo/pull/241594 PRs for accounting modules - COM: https://github.com/odoo/odoo/pull/240704 - ENT: https://github.com/odoo/enterprise/pull/102688 Task-5431538
This update simplifies the user interface for key dialogs within the iot_drivers module, making them more intuitive and focused. The update process has been streamlined to only display weekly update information and provide a direct update button, improving user experience. Documentation links have also been added to all relevant dialogs.
Original PR description
- Replace the `header` slot in dialogs by a standard `name` + `(optional) help`, - Remove the use of `identifier` props and compute it from provided `name`, - simplify the update dialog to only inform about the weekly update and show an update button, - add documentation link on all concerned modals.
This update enhances the debugging process for Odoo tours by introducing specific 'debug only' keys – pause, break, and observe – within the tour creation environment. These tools allow developers to more effectively troubleshoot tour behavior during development, particularly when encountering unexpected issues. The previous, unused indeterminism detection function has been removed to streamline the debugging process.
Original PR description
With this commit, we allow few keys (pause, break, observe) for a step only in debug mode. - pause: pause the step with a promised infinite timeout to be resolved by hand with play() in console - break: set a break point at the start of step - observe: an helper to debug a step if a undeterminism is suspected in a step. This helper watch for mutations or modifications of the trigger. 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