Daily updates from Odoo
Monday, January 5, 2026
247 changes
6 changes
Enhancements to existing features
This update enhances the integration with Adyen, a payment processor, by adding crucial information about the Odoo platform to the payment requests. This ensures accurate transmission of key details, leading to smoother and more reliable payment processing. A new test has been implemented to verify the successful completion of payments with this updated information.
Original PR description
Add applicationInfo to the payload sent to Adyen, ensuring that externalPlatform is correctly transmitted. A test was added to verify that applicationInfo is present in the payload and that the payment request succeeds as expected. task-5157863 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238776 Forward-Port-Of: odoo/odoo#233075
Resolved issues and error corrections
This update corrects a minor bug in the live chat feature, ensuring that conversation descriptions now function correctly. The issue stemmed from a subtle code difference that was missed during testing. Adding new tests resolves this problem and improves the reliability of the live chat experience.
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.
This update resolves an issue where Studio was incorrectly loading POS views as default, even when they weren't fully supported in the backend. A new mechanism allows modules to control which views are considered as defaults, ensuring Studio consistently loads the correct views for Studio users. This improves Studio's reliability and user experience.
Original PR description
Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit creates a hook to get the domain used to fetch default views (`_get_default_view_domain()`). This way, modules can override the domain of `_get_default_view_domain()` method in order to exclude some views from being selected as default ones no matter the sequence. Forward-Port-Of: odoo/odoo#237122
This update resolves a problem where Studio was incorrectly loading POS views as default, leading to errors. The change prevents these POS views from being selected by default, ensuring the backend operates with the intended views and improving stability.
Original PR description
..., appointment, l10n_ke_edi_oscu_pos Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit edit the domain of `_get_default_view_domain()` method in order to exclude these POS views from being selected as default ones. Forward-Port-Of: odoo/enterprise#98764
This change corrects a display inconsistency in loyalty promotions. Previously, users could inadvertently link promotion descriptions to discount products, leading to inaccurate discount information. This fix removes the ability to modify this technical field, ensuring consistent discount descriptions are shown to customers.
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. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633 Forward-Port-Of: odoo/odoo#240684
This update corrects a technical issue where the Swedish blackbox feature in Odoo experienced tracebacks when receiving non-UTF-8 characters from serial devices. The fix involves gracefully handling these errors during decoding, ensuring stable operation and preventing disruptions to data collection.
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.
5 changes
Resolved issues and error corrections
This update resolves a warning related to employee compensation calculations within the US payroll module. A recent refactor required adding a 'not' operator to accurately identify employees without worker compensation, ensuring correct reporting and compliance. This change was implemented as a fix before the broader update in the master branch.
Original PR description
> note: to be fw'd till 19.0 (will be fixed in master by https://github.com/odoo/enterprise/pull/99256) 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
This update fixes a visual issue in Odoo's Chatter where attachments and emoji reactions appeared too close together, creating a cluttered look. The change adds spacing to improve readability and maintain a consistent layout for all message types, ensuring a cleaner user experience.
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
This update ensures that future leave requests are accurately reflected in an employee's available time off, 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 that prevented accurate tracking of available vacation days based on accrual status.
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#238977
This update corrects a display inconsistency in loyalty rewards, preventing users from incorrectly associating discount products with promotions. The technical field used for this display was removed to simplify the system and address a previous workaround for an accounting issue. This change ensures accurate discount descriptions are shown to customers.
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. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633 Forward-Port-Of: odoo/odoo#240684
This update addresses errors identified during automated testing (flow tests) and a specific SQL query issue within the l10n_hr_edi module. These fixes ensure the module functions correctly and consistently with newer versions of Odoo, preventing potential disruptions to HR processes.
Original PR description
- Fixing runbot errors raised by the flow tests, consistent with 19.0+ version - Fixing neutralize.sql runbot-237635 runbot-237637 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242007
2 changes
Resolved issues and error corrections
This update corrects a display inconsistency in loyalty rewards, preventing users from incorrectly associating discount products with promotions. The technical field used for this display was removed to simplify the system and address a previous workaround for an accounting issue. This ensures consistent discount descriptions are shown to customers.
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. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633 Forward-Port-Of: odoo/odoo#240684
This update resolves issues identified during testing that were present in the latest Odoo version. Specifically, it corrects errors in the HR EDI flow tests and addresses a problematic SQL query, ensuring smoother operation of the HR EDI module. These fixes improve the stability and reliability of the HR processes.
Original PR description
- Fixing runbot errors raised by the flow tests, consistent with 19.0+ version - Fixing neutralize.sql runbot-237635 runbot-237637 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242007
1 change
Resolved issues and error corrections
This update fixes an issue where helpdesk ticket creation would fail due to incorrect access checks when users were assigned to teams across different companies. The change prevents unnecessary data fetching in sudo, ensuring users only access resources within their own company, resolving a potential access error.
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#102859
19 changes
New functionality added to Odoo
This update simplifies employee payroll management by introducing a 'Simulation' button on the employee form. Clicking this button launches a salary calculator pre-populated with employee data, allowing users to quickly assess potential costs. The monthly cost field has been removed and replaced with an 'Employer Cost' field for clarity and accuracy.
Original PR description
Improve the UX of the Employee Payroll Tab by removing `Monthly Cost` and changing the position of Yearly Cost and renaming it to Employer Cost. Add a `Simulation` button in the employee form view; by clicking it, it leads to the salary calculator view with already loaded data from the employee. task-5387145
Enhancements to existing features
This update enhances the performance of several key Odoo Enterprise modules by replacing array keys with ranges. This change streamlines data handling, leading to faster response times and a more efficient user experience across modules like account reports, appointment scheduling, and sales management. It's an internal improvement focused on optimizing core functionality.
Original PR description
\* = account_reports, appointment, documents, hr_expense_stripe, l10n_fr_fec_import, mail_enterprise, sale_timesheet_enterprise, spreadsheet_edition, spreadsheet_sale_management, web_cohort, web_enterprise, web_gantt, web_map Enterprise counter-part. task-4822140 https://github.com/odoo/odoo/pull/211632
This update enhances the partner search interface within Point of Sale. Specifically, the 'no customer' placeholder is now centered for better visibility, and a top margin has been added to the dialog to prevent the 'Create' button from overlapping the header. These changes improve the user experience and make it easier to find customers.
Original PR description
In this commit: --- - Center the “no customer” placeholder for better visibility. - Add top margin to the dialog to avoid the Create button sticking to the header line. task-5428846 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the integration with Adyen, a payment processor, by adding crucial information about the Odoo platform to the payment requests. This ensures accurate transmission of key details, leading to smoother and more reliable payment processing. A new test has been implemented to confirm the functionality.
Original PR description
Add applicationInfo to the payload sent to Adyen, ensuring that externalPlatform is correctly transmitted. A test was added to verify that applicationInfo is present in the payload and that the payment request succeeds as expected. task-5157863 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238776 Forward-Port-Of: odoo/odoo#233075
Resolved issues and error corrections
This update clarifies warnings displayed on employee profiles when an employee is missing from a pay run. Previously, the system flagged off-cycle payslips, but now it only shows a warning if the employee has no payslip at all for the period. The message is also more user-friendly, guiding users to add payslips.
Original PR description
A warning appears on the Employee profile if an active employee is missing from an open Pay Run. **Before:** - The system checks if the employee payslip is explicitly linked to the open Pay Run. - If…
A warning appears on the Employee profile if an active employee is missing from an open Pay Run.
**Before:**
- The system checks if the employee payslip is explicitly linked to the open Pay Run.
- If they are not linked, it raises a warning ("The pay run is missing this employee"), even if the employee already has an off-cycle payslip for that specific period.
- The system treats this as an issue and prompts the user to add the off-cycle payslip to the run.
**After:**
- The logic now also considers Off-Cycle payslips. If the employee has any
off-cycle payslip covering the pay-period dates, no warning is shown.
- An issue is shown only when the employee has no payslip at all for the period.
- When showing the issue:
If multiple pay runs exist for the period:
Display a single message: "The employee is not currently in any pay run." with an action to view available pay runs.
- If only one pay run exists for the period:
Display a contextual message: "The pay run [payrun name] is missing this employee." with an action "Add payslip to Pay Run".
- If the employee is present in any pay run or has an off-cycle payslip for the
period: No message is displayed.
Task-5387310This update resolves an issue where starting a new timer within a different company would cause an access error when attempting to stop the original timer. The change ensures the timer is correctly stopped regardless of the company context, preventing errors and maintaining accurate timer tracking.
Original PR description
Before this commit, when the user starts another timer from another company, the existing timer should be stopped before starting a new one. However, if industry_fsm module is installed and the…
Before this commit, when the user starts another timer from another company, the existing timer should be stopped before starting a new one. However, if industry_fsm module is installed and the previous timer is running from another company, the user could have an Access Error because he cannot read the task/ticket linked to the timesheet with the timer to stop. This commit makes sure the timer is correctly stopped without any issue even if the record linked is inside another company. Steps to reproduce the issue: ============================ 1. Install industry_fsm module 2. Create a task from a timesheetable project and start a timer from that new task. 3. Create a new company and go inside that company 4. Create a new timesheetable project and a new task inside it 5. Start a new timer from that new task. Expected Behavior: ----------------- The timer form the first task created should be stopped and a timer for the newest task should be running. Actual Behavior: --------------- An access error is raised because the user cannot access to the task linked to the timer to stop. task-5076633 Forward-Port-Of: odoo/enterprise#102788 Forward-Port-Of: odoo/enterprise#96411
This update fixes a bug that caused Odoo calls to crash when users joined from multiple browser tabs. The change ensures a stable call experience, even when users are accessing the same meeting from different tabs, improving reliability and user satisfaction.
Original PR description
**Steps to reproduce:** - Start a meeting with user A - Share the invitation link with user B - Login with user B and join the call - Open another browser tab/window with the same user B - Join the same call in that tab using the invitation link - The call ends for that user as the RTC session is terminated - **_TAB1_**: join the call again - **_TAB2_**: error **Current behavior before PR:** When the same user joined the same call from another tab or during RTC renegotiation, selfSession could temporarily be undefined. **Desired behavior after PR is merged:** This PR ensures that no crash happens when dealing with the RTC Session in a `multi-tab` scenario. task-[5263097](https://www.odoo.com/odoo/project/1519/tasks/5263097) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241907 Forward-Port-Of: odoo/odoo#240881
This update resolves a visual issue that occasionally appeared when using the cookies bar with a Bootstrap modal open. The fix prevents a glitch caused by Bootstrap's automatic class removal, ensuring a smooth and consistent user experience. This improves the overall appearance and functionality of the cookies consent banner.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#241215 Forward-Port-Of: odoo/odoo#240269
This update corrects a technical issue where installing the 'quality_iot' module caused a JavaScript error due to a missing dependency. The fix moves a component to ensure proper module loading and functionality, preventing the error from occurring.
Original PR description
### Issue: The QualityCheck component is defined in the `mrp_workorder` module:…
### Issue: The QualityCheck component is defined in the `mrp_workorder` module: https://github.com/odoo/enterprise/blob/7c64908258d5a0fb9adecd6dd2760e255e46314b/mrp_workorder/static/src/mrp_display/mrp_record_line/quality_check.js#L7 which is not a dependency (even indirectly) of the `quality_iot` module. Hence, if you install the `quality_iot` and enable debug mode, you will raise a JS [error](https://github.com/odoo/odoo/blob/a1583d0564552007a3d5f12d967c2c0036e05e44/addons/web/static/src/module_loader.js#L164-L169) because of missing dependencies: > The following modules are needed by other modules but have not been defined, they may not be present in the correct asset bundle. This happens because commit a13e38006d3cba6cab4565de2b014d294d2c0af3 added a patch of the QualityCheck component in the `quality_iot` https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/quality_iot/static/src/mrp_display/quality_check.js#L4 https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/quality_iot/static/src/mrp_display/quality_check.js#L17 opw-5353986 Forward-Port-Of: odoo/enterprise#100899
This update fixes an issue where refund transactions incorrectly displayed the customer as the author instead of the user who initiated the refund. The change ensures the logged-in user is always identified as the author for refund, capture, and void transactions, improving data accuracy and reporting. This resolves a potential confusion for users managing payments.
Original PR description
Currently, the customer, who did not perform the operation, is set as the author of the refund, capture, and void transaction messages. **Steps to reproduce:** - Install the `sale_management` module…
Currently, the customer, who did not perform the operation, is set as the author of the refund, capture, and void transaction messages. **Steps to reproduce:** - Install the `sale_management` module and enable the `demo` payment provider. - Create a new quotation and from the `gear` icon, select `Mark Quotation as Sent`. - From the `gear` icon, choose `Generate a Payment Link`, and copy the link. - Open the link in an incognito window, and complete the payment. - Return to the original tab and open the payment transaction from the chatter. - Click `Refund` > `Refund` and observe the `author` of the messages in the chatter. **Observation:** The refund messages entry shows the customer as the author instead of the logged-in user who executed the refund. **Root Cause:** At [1] and [2], when the logged-in user is not a superuser, the code assigns the customer (`self.partner_id`) as the author, even during `refund`, `capture`, and `void transactions`, resulting in an incorrect message author. **Fix:** This commit ensures that during refund, capture, and void transactions, the message author is set to the logged-in user instead of the customer. [1]: https://github.com/odoo/odoo/blob/bbf3bd7b0e1d3e015350f9c959fad056384e2318/addons/account_payment/models/payment_transaction.py#L223 [2]: https://github.com/odoo/odoo/blob/5cf325dfff1ffbc1c4b4d0bcfc44ac9f55ea7c51/addons/sale/models/payment_transaction.py#L110 **Before:** <img width="1910" height="624" alt="5379376_before" src="https://github.com/user-attachments/assets/decdd620-d741-488e-9dec-e5c8c9bafc48" /> **After:** <img width="1917" height="622" alt="5379376_after" src="https://github.com/user-attachments/assets/5f38f3c3-fd2c-489e-afc9-d7a356fde23a" /> opw-5379376 Forward-Port-Of: odoo/odoo#241951 Forward-Port-Of: odoo/odoo#239224
This update corrects an issue with the padding within Gantt chart popovers, ensuring a more visually consistent and professional appearance. The change was necessary to address a design flaw identified in a previous development cycle, improving the overall user experience.
Original PR description
This commit fixes wrong padding inside gantt popovers body introduced in #101482. task-5166940 Forward-Port-Of: odoo/enterprise#103210
This update streamlines the planning process by automatically notifying users when employee work emails are missing. Instead of being blocked, users receive a list of affected employees, allowing them to quickly resolve the issue by contacting HR or the employees themselves. This reduces delays and improves overall planning efficiency.
Original PR description
Before this commit, when the planning manager wants to send the planning and for some employees the work email is missing, the user is blocked on the wizard to fill the work email on those employees if he does not edit access to employee model. This commit makes sure the wizard to fill in the missing work email is not displayed if the user cannot edit the information of the employees. It also displays a notification listing the employees for which the work email is missing. By doing that, the user can easily remove those employees to continue his flow or ask to HR user or the employees concerned to complete the missing information. task-5090163 Forward-Port-Of: odoo/enterprise#102819 Forward-Port-Of: odoo/enterprise#96111
This update ensures the 'Reset to Draft' button is consistently displayed for customer invoices, regardless of whether the sales journal is hashed. Previously, invoices with a lock date were hidden from this button. This change improves usability by allowing users to easily revert invoices that don't meet hashing requirements.
Original PR description
Previously, the `Reset to Draft` button was hidden for all invoices in hashed journals, even if the invoice itself was not hashed. Now, the button is visible for invoices that are not hashed. Steps to reproduce: - Create and post a customer invoice dated Feb 2, 2023. - Set the Sales Lock Date to Feb 28, 2023. - Enable the hash setting on the Sales journal. - The 2023 invoice is not hashed due to the lock date. - Create and post a second invoice in 2025 (this one is hashed). - Remove the Sales Lock Date. - Open the 2023 invoice. Before: `Reset to Draft` button was not visible for the 2023 invoice. After: `Reset to Draft` button is now visible for the 2023 invoice. task-4911601 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where Studio could incorrectly load POS views due to sequence priority. Now, modules can override the view selection process, ensuring the correct default views are loaded regardless of sequence. This improves Studio's reliability and prevents unexpected view behavior.
Original PR description
Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit creates a hook to get the domain used to fetch default views (`_get_default_view_domain()`). This way, modules can override the domain of `_get_default_view_domain()` method in order to exclude some views from being selected as default ones no matter the sequence. Forward-Port-Of: odoo/odoo#237122
This update resolves a problem where Studio was incorrectly loading POS views as default, leading to errors. The change prevents POS views from being selected as default, ensuring the backend operates with the intended views and improving stability. This ensures consistent view behavior across the Odoo Enterprise platform.
Original PR description
..., appointment, l10n_ke_edi_oscu_pos Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit edit the domain of `_get_default_view_domain()` method in order to exclude these POS views from being selected as default ones. Forward-Port-Of: odoo/enterprise#98764
This update adds a subtle hover effect to the 'Picture-in-picture' and 'Fullscreen' buttons within Odoo's discuss calls. Previously, these buttons lacked visual feedback on mouse hover, making them difficult to click reliably. This change improves user experience by making the buttons easier to identify and interact with.
Original PR description
Before this commit, when in a discuss call, the buttons "Picture-in-picture" and "Fullscreen" in the bottom right had no mouse hover effect. As these buttons are visually just icons, the lack of hover effect makes it hard to tell which button is hovered thus making the click harder than it should. This commit reduces slightly the opacity of items, so that on mouse hover the opacity is removed. This acts as a small hover effect that makes it easier to click on these buttons reliably.  Forward-Port-Of: odoo/odoo#241920 Forward-Port-Of: odoo/odoo#241873
This update resolves an issue where employees were receiving duplicate deductions on their CFDI payslips. By removing a specific CFDI concept, the payroll system now accurately accounts for existing IMSS contributions, ensuring compliance with Mexican tax regulations. This change impacts the 19.0 release.
Original PR description
Avoid duplicate employee deductions on the CFDI payslip by eliminating the CFDI concept that is currently generating a second retention already accounted for in the “IMSS Total (Employee)” payroll rule. target: 19.0 task-5436851 Forward-Port-Of: odoo/enterprise#102730
This update resolves an issue where products without categories weren't shown correctly when grouping by category in the Point of Sale system. It also ensures that products belonging to multiple categories are displayed only once when filtering by category, enhancing the user experience and data accuracy.
Original PR description
[FIX] point_of_sale: fix group by category feature Task: [#5369658](https://www.odoo.com/odoo/project/1737/tasks/5369658) --- If we check the setting "Group products by category" in POS settings and we don't restrict the categories available in POS, products without category were not shown in the product list. Also when filtering by category, one product with multiple categories was shown multiple times. One time per category it belonged to. This commit fixes the issue by adding products without category at the end of the product list and by only showing products once when filtering by category. If no category is selected, the products will still be shown several times if they belong to multiple categories. Forward-Port-Of: odoo/odoo#241031 Forward-Port-Of: odoo/odoo#238156
Code cleanup and technical improvements
This update refactors how unread message banners are displayed within channels in Odoo. The change moves the logic for showing unread banners to the channel model itself, streamlining the system and improving its efficiency. This ensures that unread message information is consistently and accurately presented to users within channel discussions.
5 changes
Resolved issues and error corrections
This update resolves an issue where Japanese translations were sometimes being incorrectly formatted (line wrapping) within the Equity module. This fix prevents corrupted translation files and ensures accurate Japanese text display in the Odoo Enterprise system.
Original PR description
The current version of Weblate still has issues sometimes with line wrapping in CJK scripts, causing corrupt PO files. This commit fixes the wrapping in the Japanese translation file for the equity module.
This update resolves a reporting issue that appeared when selecting certain cost measures in the Planning / Attendance Analysis report. The fix removes a misconfigured widget, addressing a conflict between the data type and the widget used, ensuring accurate reporting calculations. This change improves report reliability.
Original PR description
### Steps to reproduce: - Navigate to Planning > Reporting > Planning / Attendance Analysis - From measure select Attendance Cost or Cost Difference or Planned Cost - A traceback will pop up ### Cause: We are using widget monetary for the three fields in the view while their field type is float and there is no currency field defined in the model ### Fix: Remove the monetary widget from the view In master we will do something like this commit https://github.com/odoo/enterprise/pull/99059/commits/17f05bef0dad3e9645b6e0ed8df14d3308440812 opw-5438221
This change corrects a display inconsistency in loyalty rewards by removing a technical field that was being incorrectly populated. This field was initially added as a workaround for a previous accounting issue and has now been removed to simplify the system and prevent future errors. The fix ensures consistent discount descriptions across promotions.
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. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633 Forward-Port-Of: odoo/odoo#240684
This update significantly speeds up invoice processing by optimizing how the system determines parent IDs for accounting lines. Previously, the system performed numerous individual updates, leading to performance issues and potential memory errors. Now, the system efficiently updates multiple related lines at once, resulting in a 4-second improvement on invoices with 2000 lines.
Original PR description
Before this commit, computing the `parent_id` of `account.move.line` records, involved looping over the `move_lines` grouped by their `move_id` sorted by the `sequence`. The updates on the move_lines…
Before this commit, computing the `parent_id` of `account.move.line` records, involved looping over the `move_lines` grouped by their `move_id` sorted by the `sequence`. The updates on the move_lines are done per line and this involves an individual write operation on each one of them. The cardinality of the set of possible values of the new `parent_id` may involve a lot of values in cases where a big number of lines have a display type of either 'line_section' or 'line_subsection', in most of the cases it is not the case, so a possible performance improvement in the method is to upper bound the number of write operations by the cardinality of the set of possible values instead of a single write operation on each single `move_line`. This can be done by mapping the values to a record set of move lines and updating the move_lines that share the same value. The benchmark below is done on an invoice that contained **2000** `move.line` records. An individual **write** operation is being done on each one of them. | Scenario | Time (seconds) | |-----------|----------------| | **Before** | **Memory Error** | | **After** | **4s** | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where the chat hub and its message previews appeared too light in dark theme, impacting readability. The change reverts to a darker background style, enhancing accessibility and the visibility of key elements like the close button.
Original PR description
In dark theme, the chat bubble message previews have dark background for improved readability of text. The chat hub hidden menu was intended to use same color scheme, but this was mistakenly removed from style improvements to discuss. The default style of popover is too light in dark theme. This commit reverts to style before 19.0, using darker background. This improves accessibility of item selection and the "x" button. Before / After <img width="278" height="405" alt="Screenshot 2026-01-05 at 18 05 18" src="https://github.com/user-attachments/assets/d764adbf-5378-4d59-870d-baf159920898" /> <img width="288" height="410" alt="Screenshot 2026-01-05 at 18 31 03" src="https://github.com/user-attachments/assets/142605cf-fab6-499d-95fa-71fcbb7ec36a" />
8 changes
Resolved issues and error corrections
This update addresses a critical issue in the l10n_tw_edi_ecpay module by implementing a standard neutralization process. This ensures that database copies created for support investigations won't inadvertently impact the live production system or customer data. It's a necessary step for safe troubleshooting and maintenance.
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
This update clarifies the purpose of the 'force_create' function within the account module. Previously, it was unclear that this function didn't actually create new records but instead updated existing ones. This change ensures better understanding and consistent usage by the team.
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
This update fixes a reporting error in the French P&L reports. The 'owner remuneration' account (644) was incorrectly categorized as 'tax and duties'. It has now been moved to the correct 'wages and salaries' category, ensuring accurate financial reporting for French businesses.
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#103061
This update resolves an issue where color fields weren't correctly saved when editing records within a list view using the 'bottom' editing mode. Previously, changes to color fields were lost. This fix ensures that color selections are reliably saved when using this common list view editing method, improving data accuracy and user workflow.
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
This update fixes a crash that occurred when deleting an employee hierarchy element (like a department) while a default filter was applied. The change ensures the system correctly handles record existence during filter operations, preventing the 'Missing Record' error and improving stability. This resolves a potential disruption to employee data management.
Original PR description
Reproduce the crash: 1- Create departement in Employees. 2- Create a default filter with child_of or parent_of on the previously created departement. 3- Delete the departement. 4- Go back to Employees => Crash 'Missing Record' This commit adds a check for record exitence in `child_of_domain` and `parent_of_domain` in the case where `_parent_store` is True. This change prevents the `Missing Record` Error. task-5217722
This update addresses a critical issue in the l10n_gt_edi module by implementing a 'neutralization' process. This ensures that database copies created for support investigations won't inadvertently impact the live production system or customer data. It allows for safer database analysis and troubleshooting.
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.
This update corrects an issue where product move lines on delivery slips were printed in the wrong order. The fix ensures that move lines are always printed in the correct sequence based on their move IDs, preventing misprints and improving delivery slip accuracy. This impacts the presentation of delivery information.
Original PR description
**Steps to reproduce:** - Add 2 products in a delivery - Add the second's product move lines before the first one. - Validate and print delivery slip **Issue:** We iterate the `move_line_ids` directly which means if we have a new move line for a move with a lower id, it will push the product to the end of the delivery slip. **Example:** If we have `stock.move(1,)` with `stock.move_line(52,)` and `stock.move(2,)` with `stock.move_line(51,)`. `stock.move_line(51,)` will be printed first, which introduces a change in the order of the delivery slip. **Fix:** Iterate on `move_ids` and access `move_line_ids` through it, to print `move_lines_ids` in the same order of the `move_id`. Task: 4570203 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a visual inconsistency in the Point of Sale system. Previously, when searching for partners with wildcard characters, the system would display a 'x partners found' message but not show the results in the list. This change ensures that search results are always displayed, resolving user confusion and improving the overall search experience.
Original PR description
When the client typed `a%t%` into the search bar and pressed 'Enter', we load the partners from the backend using `getNewPartners` and showed a dialog "x partners found", however, we never show those results in the partner list since the search bar didn't support the wildcard ilike pattern. This commit adds support for searching wildcard patterns, to match the SQL behavior more or less. Clients now won't be confused by seeing "x partners loaded" and at the same time seeing an empty list. opw-5395340
1 change
Enhancements to existing features
This update enhances the tracking of driver activities and performance within the Odoo system. By adding logging and performance checks for the longpolling controller, we'll gain better insights into driver operations and identify potential bottlenecks. This change is related to a larger effort for the saas-18.3 release.
Original PR description
This PR adds logging and performance check for the longpolling controller Related PR for >= saas-18.3: https://github.com/odoo/odoo/pull/241467