Daily updates from Odoo
Navigate
Branch
Thursday, January 11, 2024
65 changes
29 changes
Enhancements to existing features
The GST return period screen structure was reorganized to make it easier to read and maintain. This should help future updates be made more reliably, with little to no direct impact on day-to-day users.
Original PR description
This commit message indicates that the changes made involve restructuring the gst return period view for better readability and ease of maintenance. It's concise and provides a clear understanding of the purpose of the commit.
The room booking calendar now limits the daily Gantt view to meetings scheduled for that specific day. This makes it easier for users to understand room availability without unrelated bookings appearing from nearby dates.
Original PR description
This PR removes `dynamic_range` attribute from the room booking gantt view. which clarifies the daily view by only showing the meetings of that specific day. Task-3623958
A demonstration video has been added to the Knowledge demo article to help users discover and understand the /clipboard command. This improves onboarding by showing what the command does and how to use it in practice.
Original PR description
Currently, users may not know that the /clipboard command exists, may not know what they can do with it and may not know how to use it. To improve the onboarding experience and showcase the /clipboard command, we will integrate a demonstration video in the demo article. After watching this demonstration video, people should better understand the purpose of the /clipboard command and should know how to use it. task-3676051
New tasks created from the project Gantt view now receive suggested allocated hours automatically. The estimate is based on the selected planned dates and the assignees' workable hours, while remaining fully editable by users.
Original PR description
When a user creates a new task from the gantt view, we add default allocated hours based on the planned dates set by the user and on the workable hours of the assignee(s) during this interval of time. It is only a default value set when creating a record, It can be changed afterwards by the user at anytime. taskid:3432125
This update adjusts payroll, timer, and VoIP behavior so more read-only operations stay read-only and can be routed more efficiently across multiple databases. It helps reduce unnecessary database writes, supporting better performance and reliability for users.
Original PR description
task-id-3151997 odoo/odoo#112000
Accounting XML invoices that include an embedded PDF can now show a preview directly in Documents, and users can open that PDF from the preview. The update also standardizes how document previews and thumbnails are generated, making the experience more consistent across file types.
Original PR description
Purpose ======= In accounting, some XML invoice documents have PDF embedded in base 64. We want to show a preview of the embedded PDF, and also to view that PDF when we click on the preview. We support the UBL format > https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice In addition to that, many cleans have been done - We use an explicit thumbnail status to generate the preview, `client_generated` instead of `False` - We use the same route to preview the PDF and to preview other files (before the preview of the PDF was done with a different route) - We do not support images without thumbnail, and so we simplified some templates Task-3537562
This update adds automated checks to ensure the help center correctly highlights top forum posts, knowledge articles, and courses. It helps protect the redesigned help center experience from future regressions without changing day-to-day user workflows.
Original PR description
*=forum, knowledge, slides For Odoo 17, the helpdesk center was re-design to include top-item lists for the different help center items: forum posts, knowledge articles, and courses. This commit adds tests in the respective bridge modules to test the compute methods that compute these top items. task-3559939
When a field service worksheet template is archived, it is now automatically unlinked from any projects that were using it. This helps prevent teams from accidentally continuing to use inactive templates and keeps project settings cleaner.
Original PR description
This commit enhances the 'action_archive' method.The improvement ensures that when a worksheet template is archived, it is automatically disassociated from any linked projects and updating the 'action_archive' method for inactive worksheet templates. task-3557343
Resolved issues and error corrections
This update fixes how manufacturing work orders track manual component consumption during mass production. It helps keep production data consistent after related workflow changes around serial number handling.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/148612 Upgrade PR: https://github.com/odoo/upgrade/pull/5508
This fix corrects how payroll holiday dashboard warnings are calculated, preventing an error caused by counting records in the wrong way. Business users should see more reliable dashboard warnings for payroll-related holidays without any change to their workflow.
Original PR description
We apply the len operator on an integer result, which is not correct, we fix that by calling search instead of search_count
The automated report generation test was updated to handle Luxembourg payroll/accounting setups where the related Luxembourg reports module is not installed. This prevents false test failures and helps keep internal validation stable without changing business functionality.
Original PR description
With https://github.com/odoo/odoo/commit/11f73899ef60d56f9e4258d8d9732c8954b288fb, when installing l10n_lu_hr_payroll_account, l10n_lu_reports is not installed (as there is no luxemburgese company). The test test_generate_all_export_files then fails because it expects l10n_lu_reports to be installed if l10n_lu is, and so, some fields don't exist. => To solve, we make the test more robust by ensuring that the fields put on the company do actually exist on the model. Linked to runbot errors 55130, 55131
Code cleanup and technical improvements
Messaging channel data and latest message previews are now fetched together instead of through separate requests. This should make Discuss-related views feel more responsive across connected apps such as Documents, VoIP, Live Chat, and WhatsApp while simplifying the underlying data flow.
Original PR description
In particular merging fetch channels and channel previews (last message) as they are done in succession. And more generally, changes going towards reducing the number of RPC and returning as flat data as possible instead of nested duplicates (still heavily in progress). https://github.com/odoo/odoo/pull/148549
Miscellaneous changes
The dimension data is not required for shiprocket package to calculate the rate. Calculate the rate based on the total weight of the packages when multiple packages are there. task - 3535687 Forward-Port-Of: odoo/enterprise#48842
Original PR description
The dimension data is not required for shiprocket package to calculate the rate. Calculate the rate based on the total weight of the packages when multiple packages are there. task - 3535687 Forward-Port-Of: odoo/enterprise#48842
2 strings related to creating a new app within studio weren't being correctly translated, so we make them translatable now. Note that the solution before v16 is different (uses getter) because for some reason `<t t-set="variable">Some string</t>` isn't correctly parsed as a string by the props, so an error is thrown while in debug mode. Forward-Port-Of: odoo/enterprise#53967 Forward-Port-Of: odoo/enterprise#53585
Original PR description
2 strings related to creating a new app within studio weren't being correctly translated, so we make them translatable now. Note that the solution before v16 is different (uses getter) because for some reason `<t t-set="variable">Some string</t>` isn't correctly parsed as a string by the props, so an error is thrown while in debug mode. Forward-Port-Of: odoo/enterprise#53967 Forward-Port-Of: odoo/enterprise#53585
This commit fixes a bug where the article items were considered as valid parents when using the **move to** button. These articles should not be considered as such because you could easily lose them when moving them in another hierarchy. We changed the search domain inside the `get_valid_parent_options` function to not include items. task-3627789 Forward-Port-Of: odoo/enterprise#53884 Forward-Port-Of: odoo/enterprise#52307
Original PR description
This commit fixes a bug where the article items were considered as valid parents when using the **move to** button. These articles should not be considered as such because you could easily lose them when moving them in another hierarchy. We changed the search domain inside the `get_valid_parent_options` function to not include items. task-3627789 Forward-Port-Of: odoo/enterprise#53884 Forward-Port-Of: odoo/enterprise#52307
Previously, the sheetName was allowed to be left empty or unchanged after displaying a warning dialog, contrary to the desired behavior. This commit addresses the issue, ensuring that after user confirmation, the sheetName regains focus. Task-3588208 Forward-Port-Of: odoo/enterprise#51654
Original PR description
Previously, the sheetName was allowed to be left empty or unchanged after displaying a warning dialog, contrary to the desired behavior. This commit addresses the issue, ensuring that after user confirmation, the sheetName regains focus. Task-3588208 Forward-Port-Of: odoo/enterprise#51654
Forward-Port-Of: odoo/enterprise#54057
Original PR description
Forward-Port-Of: odoo/enterprise#54057
Steps: - Install subscription app. - Install and set up stripe provider. - Create a subscription and make first payment with stripe. - Now go to portal and click on Manage payment button. - Create new token from Manage my payment button. Issue: - Subscription goes to `Pending Transaction` state and because of that recurring invoice for that subscription stops. Cause: - Transaction with `validation` flow does not reconcile transaction after done via `_reconcile_after_done` and becaus
Original PR description
Steps: - Install subscription app. - Install and set up stripe provider. - Create a subscription and make first payment with stripe. - Now go to portal and click on Manage payment button. - Create new token from Manage my payment button. Issue: - Subscription goes to `Pending Transaction` state and because of that recurring invoice for that subscription stops. Cause: - Transaction with `validation` flow does not reconcile transaction after done via `_reconcile_after_done` and because of that when `validation` transaction create it set subscription to `Pending Transaction` and it stays in it for `validation` PR https://github.com/odoo/odoo/pull/106300 why we do not call `reconcile_after_done` for `validation` transaction. Fix: - Handle `reconcile_after_done` for validation transaction in payment and alter some code/condition in subscription to properly handle all type of transaction. task-3652206 Forward-Port-Of: odoo/enterprise#53374
This commit adds some constraints to the length of the strings sent to Sendcloud. opw-3627831 Forward-Port-Of: odoo/enterprise#53763 Forward-Port-Of: odoo/enterprise#53598
Original PR description
This commit adds some constraints to the length of the strings sent to Sendcloud. opw-3627831 Forward-Port-Of: odoo/enterprise#53763 Forward-Port-Of: odoo/enterprise#53598
This PR solves an issue about the dropdown toggle from the topbar navigation not being highlighted on `:focus` state. This comes from a color issue, the `background-color` of the toggle being the same as the navbar one in dark mode. To solve this issue, we redefine the variable in dark mode, and set it to `$o-gray-300`. task-3607749 Forward-Port-Of: odoo/enterprise#51285
Original PR description
This PR solves an issue about the dropdown toggle from the topbar navigation not being highlighted on `:focus` state. This comes from a color issue, the `background-color` of the toggle being the same as the navbar one in dark mode. To solve this issue, we redefine the variable in dark mode, and set it to `$o-gray-300`. task-3607749 Forward-Port-Of: odoo/enterprise#51285
Steps to reproduce: - Install Accounting and Inventory - Activate "Units of Measure" in Inventory settings - Activate "Intrastat" in Accounting settings - Create a product: (e.g. Product X) * Unit of Measure: Dozens * Purchase UoM: Dozens * Cost: [any] * Commodity Code: [any] (e.g. 01012100 Pure-bred breeding horses) * Supplementary Units: 0.33 - Create a vendor bill: * Intrastat Country: [any] * Invoice Lines: - Product: Product X - Quantity: 126 - Confirm v
Original PR description
Steps to reproduce:
- Install Accounting and Inventory
- Activate "Units of Measure" in Inventory settings
- Activate "Intrastat" in Accounting settings
- Create a product: (e.g. Product X)
* Unit of Measure: Dozens
* Purchase UoM: Dozens
* Cost: [any]
* Commodity Code: [any] (e.g. 01012100 Pure-bred breeding horses)
* Supplementary Units: 0.33
- Create a vendor bill:
* Intrastat Country: [any]
* Invoice Lines:
- Product: Product X
- Quantity: 126
- Confirm vendor bill
- Go to "Accounting / Reporting / Audit Reports / Intrastat Report"
- Filter on the vendor bill period
=> The value of "Supplementary Units" is displayed with a lot of decimal digits (i.e. 498.96000000000004).
Cause:
Floating point issue during the computation of the field.
Solution:
Round "Supplementary Units" field to the decimal accuracy configured for "Product Unit of Measure".
opw-3464654
Forward-Port-Of: odoo/enterprise#52264### Steps to reproduce - install the following modules: - Accounting - Studio - Saudi Arabia - Accounting (l10n_sa) - Go to Settings > Users & Companies > Companies and create a New Company (named S**A Company** for example) with Saudi Arabia as the country in the address - Switch to the new **SA Company** - Go to Settings > Accounting - Choose Saudi Arabia package as the Fiscal Localization package - Go to Accounting and click on the studio icon (the one left of the user
Original PR description
### Steps to reproduce - install the following modules: - Accounting - Studio - Saudi Arabia - Accounting (l10n_sa) - Go to Settings > Users & Companies > Companies and create a New Company (named…
### Steps to reproduce
- install the following modules:
- Accounting
- Studio
- Saudi Arabia - Accounting (l10n_sa)
- Go to Settings > Users & Companies > Companies and create a New Company (named S**A Company** for example) with Saudi Arabia as the country in the address
- Switch to the new **SA Company**
- Go to Settings > Accounting
- Choose Saudi Arabia package as the Fiscal Localization package
- Go to Accounting and click on the studio icon (the one left of the user profile avatar)
- Click on reports
- Clear the filters
- Click on Invoices
- Click on the **Company tagline** box
- In the select box shown, choose `elif: o._get_name_invoice_report() == '|10n_gccarabic_english_invoice'`
- U can notice how the template is not rendered correctly
### Investigation:
- the major issue was the `flex-direction: column;` that caused the table header to be viewed as blocks
https://github.com/odoo/enterprise/blob/e892bc8f022ed3962de06a61c1be181c89cdc831/web_studio/static/src/client_action/report_editor/report_iframe.scss#L170C1-L187C2
- Some xml tags / classes needed to be refined to enhance the layout
opw-3544938
Forward-Port-Of: odoo/enterprise#51711Before this PR when we log in as internal user it is giving access error when trying to open url of the task. So in this PR we have fixed the issue by adding sudo task-3430762 Forward-Port-Of: odoo/enterprise#53911 Forward-Port-Of: odoo/enterprise#44530
Original PR description
Before this PR when we log in as internal user it is giving access error when trying to open url of the task. So in this PR we have fixed the issue by adding sudo task-3430762 Forward-Port-Of: odoo/enterprise#53911 Forward-Port-Of: odoo/enterprise#44530
Before this commit: When a user creates a new spreadsheet in all workspace, the trash workspace was included in the selection. After this commit: The trash workspace is no longer available in the selection when creating a new spreadsheet in all workspace. Task-3584275 Forward-Port-Of: odoo/enterprise#50347
Original PR description
Before this commit: When a user creates a new spreadsheet in all workspace, the trash workspace was included in the selection. After this commit: The trash workspace is no longer available in the selection when creating a new spreadsheet in all workspace. Task-3584275 Forward-Port-Of: odoo/enterprise#50347
https://eservices.minfin.fgov.be/myminfin-web/pages/public/fisconet/document/9e9a6b60-c329-4132-9d57-a4fd33aafe0e Forward-Port-Of: odoo/enterprise#53877 Forward-Port-Of: odoo/enterprise#53548
Original PR description
https://eservices.minfin.fgov.be/myminfin-web/pages/public/fisconet/document/9e9a6b60-c329-4132-9d57-a4fd33aafe0e Forward-Port-Of: odoo/enterprise#53877 Forward-Port-Of: odoo/enterprise#53548
Before this commit, in the Operations Types Barcode Apps configuration, if the setting for Destination Location or Put in Pack was set on "After group of Products", once in the app, if the user scans multiple products then scan a destination, the destination is actually applied only to the last scanned product. For the put in pack, all the scanned product were placed in the package, except when an existing package is scanned (in this case, like for the destination, only the last scanned produc
Original PR description
Before this commit, in the Operations Types Barcode Apps configuration, if the setting for Destination Location or Put in Pack was set on "After group of Products", once in the app, if the user scans…
Before this commit, in the Operations Types Barcode Apps configuration, if the setting for Destination Location or Put in Pack was set on "After group of Products", once in the app, if the user scans multiple products then scan a destination, the destination is actually applied only to the last scanned product. For the put in pack, all the scanned product were placed in the package, except when an existing package is scanned (in this case, like for the destination, only the last scanned product was concerned.) This worked like that because in fact, this setting's option reflected the old optional setting and should work like before the creation of those settings. But the label, "After group of Product", was misleading and it could be verify interesting to make those settings work like the label said and applied the destination and the package after a group of scanned product. This commit do that. But this change implies an issue: what should happen if you scan partially a reserved line then scan a destination or a package ? Should all the quantity be moved there ? To avoid this issue, we split the reservation before to assign the package or destination on an uncompleted reserved line. task-3599397 Forward-Port-Of: odoo/enterprise#51603
* Show the current value of the cell in the edit popover * Replace the input by a textarea when the cell figure_type is 'string'. It gives more space for the user to write. Forward-Port-Of: odoo/enterprise#52623
Original PR description
* Show the current value of the cell in the edit popover * Replace the input by a textarea when the cell figure_type is 'string'. It gives more space for the user to write. Forward-Port-Of: odoo/enterprise#52623
Steps to reproduce the bug: - Create a storable product “P1”: - Tracking: SN - Update the qty: 1 unit, “SN1” - Create a SO with and validate it - Go to the delivery and validate it - Create a return and validate - Create a return of return Problem: error message: RecursionError: maximum recursion depth exceeded while calling a Python object The `_get_origin_moves` and `_get_destination_moves` functions add the list of origin or destination moves, but the functions themselves are ca
Original PR description
Steps to reproduce the bug: - Create a storable product “P1”: - Tracking: SN - Update the qty: 1 unit, “SN1” - Create a SO with and validate it - Go to the delivery and validate it - Create a return and validate - Create a return of return Problem: error message: RecursionError: maximum recursion depth exceeded while calling a Python object The `_get_origin_moves` and `_get_destination_moves` functions add the list of origin or destination moves, but the functions themselves are called with that list, creating an infinite loop. opw-3659818 Forward-Port-Of: odoo/enterprise#53695
Forward-Port-Of: odoo/enterprise#53669 Forward-Port-Of: odoo/enterprise#53627
Original PR description
Forward-Port-Of: odoo/enterprise#53669 Forward-Port-Of: odoo/enterprise#53627
36 changes
Enhancements to existing features
A demonstration video has been added to the Knowledge module's demo article to help users discover and learn how to use the /clipboard command. This improvement enhances the onboarding experience by providing visual guidance on the clipboard feature's purpose and usage, making it easier for users to understand this helpful functionality.
Original PR description
Currently, users may not know that the /clipboard command exists, may not know what they can do with it and may not know how to use it. To improve the onboarding experience and showcase the /clipboard command, we will integrate a demonstration video in the demo article. After watching this demonstration video, people should better understand the purpose of the /clipboard command and should know how to use it. task-3595599
The Shiprocket shipping integration has been improved to calculate shipping rates based on total package weight when handling multiple packages, rather than requiring dimension data for each package. This simplifies the shipping rate calculation process and makes it more flexible for orders with multiple packages.
Original PR description
The dimension data is not required for shiprocket package to calculate the rate. Calculate the rate based on the total weight of the packages when multiple packages are there. task - 3535687 Forward-Port-Of: odoo/enterprise#48842
The Italian EDI (Electronic Data Interchange) module will no longer be automatically installed when you install the Italian localization. This change allows businesses using external accounting modules or alternative EDI solutions to avoid unnecessary software installations. Users who need the Italian EDI functionality can still manually install it when required.
Original PR description
Description of the issue/feature this PR addresses: ### Current behavior before PR: l10n_it_edi is auto_installed if you install l10n_it ### Desired behavior after PR is merged: l10n_it_edi is not auto_installed becauseIs it not always required (for example if you use external accounting modules) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The warning message displayed when E-Invoices fail due to API or GST number mismatches has been corrected to provide clearer guidance. Instead of directing users to create API users in the NIC portal, the new message now instructs users to verify their GST number in company settings and ensure API verification is complete. This helps users quickly resolve configuration issues.
Original PR description
Before this PR: --- The warning message displayed for E-Invoices with API and tax ID mismatch was incorrect. It stated: '[0] Unable to send e-Invoice. Create an API user in NIC portal, and set it using the top menu: Configuration > Settings.' After this PR: --- The warning message for E-Invoices with API and tax ID mismatch has been updated. The new warning message now reads: 'Ensure GST Number set on company setting and API are Verified.' task ID: 3380094 Forward-Port-Of: odoo/odoo#127348
Resolved issues and error corrections
Fixed the timesheet grid view on mobile devices to always show overtime hours instead of only displaying them on hover. This makes it clear to mobile users that overtime information is available and improves the overall mobile experience for employees tracking their work hours.
Original PR description
Steps(small device): - Install hr_timesheet - Go to timesheet > My timesheet - Hover on data in grid view - Daily overtime and weekly overtime is displayed Issue: - In mobile view, we don't have any indication that elements is clickable and overtime hours are shown. Improvement: - For mobile view, the overtime hours are kept constant rather than on hovering them. task-3429433
This update resolves a crash that occurred when users tried to edit the rainbow effect styling on buttons in the Studio editor. The fix also corrects how the fade-out setting is displayed and removes an unnecessary white border to match the editor's appearance. These improvements make the button customization feature more reliable and user-friendly.
Original PR description
This commit fixes a crash occuring when editing the 'effect' attribute being set on a button. task-3613476 Forward-Port-Of: odoo/enterprise#52679
A spelling error in the Colombian tax reporting module has been corrected. This fix ensures that tax certification reports display correctly without any text errors, improving the accuracy and professionalism of official tax documents.
Original PR description
Forward-Port-Of: odoo/enterprise#53217
This update adds validation constraints to ensure that text fields sent to Sendcloud shipping service don't exceed maximum length limits. This prevents delivery processing errors when customer information or order details contain longer text values, improving the reliability of shipment submissions to Sendcloud.
Original PR description
This commit adds some constraints to the length of the strings sent to Sendcloud. opw-3627831 Forward-Port-Of: odoo/enterprise#53598
This fix resolves a crash in Studio that occurred when creating a many-to-many field linking to a model with group-restricted fields. The issue happened because Studio was attempting to fetch restricted fields in subviews, even though they were marked to be skipped. The fix ensures that restricted fields are properly ignored during field creation in all view contexts.
Original PR description
In Studio, creating a many2many field towards a model containing a group restricted field causes a crash. The group restricted field in the arch is tagged with the `studio_no_fetch` attribute to avoid studio from fetching it. However, this attribute is not parsed when placed in subviews. This commit prevents the group restricted field in subviews from being fetched by studio. Steps to reproduce: - Install CRM, Studio and Project - Go to CRM, open a record - Open Studio - Create a new Many2many field with a relation to Project - Crash -> Studio read stage_id which is group protected opw-3603635
This update fixes a bug in the partner commission tests that was causing incorrect commission calculations when certain country localizations were installed. The tests have been updated to work independently of localization settings, ensuring they produce consistent and accurate results regardless of which country-specific features are enabled in the system.
Original PR description
Do not use main company in tests as it leads to issues if a localization is installed. This is also the opportunity to use AccountTestInvoicingCommon instead of creating accounting records manually. **steps to reproduce:** - install l10n_cz,partner_commission - run test test_commission_plan_assignation **before this commit:** - AssertionError: 5.76 != 18 : Commission is wrong **after this commit:** - tests do not use the localizations opw-3590037 Forward-Port-Of: odoo/enterprise#54092 Forward-Port-Of: odoo/enterprise#53475
The Thailand VAT report was incorrectly trying to retrieve company branch information using a method that doesn't return values. This fix corrects it to use the proper stored field instead, ensuring branch names display correctly on VAT reports.
Original PR description
Current behaviour: - VAT report is using _l10n_th_get_branch_name() to get the company info value. However _l10n_th_get_branch_name() is a compute method which will not return any values. Expected behaviour: - It should use l10n_th_branch_name instead of _l10n_th_get_branch_name() Explanation: - _l10n_th_get_branch_name() is a compute method. The value should be stored in l10n_th_branch_name. X-original-commit: 0a79698 Forward-Port-Of: odoo/enterprise#54100 Forward-Port-Of: odoo/enterprise#54005
This update removes duplicate filter options that were appearing in the depreciation schedule view. The fix reorganizes how filter settings are applied to ensure users see clean, non-duplicated options when managing asset depreciation schedules.
Original PR description
The aim of this commit is changing the position of xpath for "replace" instead of "after" for the extra options depreciation schedule filters. no task id Forward-Port-Of: odoo/enterprise#54054 Forward-Port-Of: odoo/enterprise#54018
This fix prevents the virtual keyboard from automatically appearing when users access the home menu on touch-enabled devices like tablets or hybrid laptops. Previously, the system would trigger the keyboard regardless of whether the user was actually using touch input, causing an annoying interruption. Now the keyboard only appears when the user is actively using the touch screen.
Original PR description
This commit fixes the behavior of the focus on the home menu when using a touch oriented device. Before this commit, only the OS was considered, and touch screen PCs always displayed the virtual keyboard when accessing the home menu, since an invisible input was focused. Now, this input is no longer focused, and the user is not annoyed by the keyboard popping up on the screen. The hasTouch helper is used, since it can differentiate whether the laptop is currently using the touch screen or the physical inputs. task-3627697 Forward-Port-Of: odoo/enterprise#52221
This fix resolves an issue where subscriptions would get stuck in a "Pending Transaction" state when customers updated their payment method through the portal, preventing recurring invoices from being generated. The problem occurred because payment validation transactions weren't being properly processed. The fix ensures all payment transaction types, including validation flows, are correctly reconciled so subscriptions can continue operating normally.
Original PR description
Steps: - Install subscription app. - Install and set up stripe provider. - Create a subscription and make first payment with stripe. - Now go to portal and click on Manage payment button. - Create new token from Manage my payment button. Issue: - Subscription goes to `Pending Transaction` state and because of that recurring invoice for that subscription stops. Cause: - Transaction with `validation` flow does not reconcile transaction after done via `_reconcile_after_done` and because of that when `validation` transaction create it set subscription to `Pending Transaction` and it stays in it for `validation` PR https://github.com/odoo/odoo/pull/106300 why we do not call `reconcile_after_done` for `validation` transaction. Fix: - Handle `reconcile_after_done` for validation transaction in payment and alter some code/condition in subscription to properly handle all type of transaction. task-3652206 Forward-Port-Of: odoo/enterprise#53374
This fix resolves an error that occurred when trying to edit section lines or notes in a confirmed sales order. The system was incorrectly attempting to compare unit of measure (UOM) for non-product lines, which caused the operation to fail. Now the system properly checks whether a line is a product before performing UOM comparisons.
Original PR description
[FIX] repair: prevent uom comparison for non products Issue: When updating section line or note in a confirmed SO, the system tried to compare uom of them causing an error Steps to reproduce: 1- Install sale and repair apps 2- Create a sale order with adding a product and a section line 3- Confirm sale order 4- Modify section line 5- Save Solution: We need to check if the order line is a product before performing the uom comparison opw-3644939 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#147772
This fix improves how errors are handled when using the record observer feature in the web interface. Previously, errors occurring in the observer callback would go unnoticed and cause unexpected behavior. Now these errors are properly caught and can be handled through the standard error management system, making the application more stable and easier to debug.
Original PR description
Have a fieldWidget using useRecordObserver. In its callback, have a line that will throw an error. Before this commit, the Promise created by the hook was not rejected, leaving the error untreated and popping until the window's onunhandledrejection event handler. After this commit, the error appears on the owl errors stack, catchable with the hook onError. opw-3667395 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 fix restores the visual outline effect that appears when users focus on kanban cards, a feature that was lost in a recent redesign. The solution simplifies the code by reverting to a proven approach from the previous version, removing problematic workarounds that were causing double borders and drag-and-drop issues.
Original PR description
Since milk redesign the kanbancard lost their outline bottom on focus state. Previous fixes where applied to solve this issue in commit d8fcc218bc70caff4f4368309d7aa3be8b8ddaa5 and commit 2495bfa7259dcbd482b10c95a55313f86d594fcb. These fixes were a Catch-22: fixing a behavior here, creating an issue there (double borders, issue on drag..) which lead to more custom code. In this PR, we remove the code added by the previous fixes and apply a solution used in version 16.0 and prior. Relying on a negative margin to hide the border of the following `kanban_record` and applying an outline effect and a greater `z-index` on focus to make it appear on top of the border. This z-index is set to 2 to compensate the `z-index-1` on the kanban column when a card is focused and dragged. task-3580229 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143345
The Point of Sale date search feature was using a fixed date format that didn't match your system's regional settings. This fix updates the date search to automatically use your system's configured date format, ensuring consistency across the application and making it easier for users in different regions to search for transactions.
Original PR description
Prior to this commit, the date search was hardcoded to "yyyy-MM-dd HH:mm a", inconsistent with the system's date format display. This commit adjusts the date search to align with the system date format. opw-3677157 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds Flex ERP as an author of the Danish localization module to recognize their significant contribution to implementing this feature. This is a minor administrative change that properly credits the partner organization involved in the module's development.
Original PR description
As Flex ERP help us a lot to implement this localization, we add them as author of the module. issue id: #148085 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix resolves an error that occurred when users without employee access rights tried to change their language preference in their user profile. The system was attempting to read employee information it didn't have permission to access. The fix ensures that only the necessary user-readable fields are accessed during profile updates, preventing the error while maintaining proper security restrictions.
Original PR description
Steps to reproduce: ------------------- - install the "hr" module; - remove access rights for "Employees"; - change language on the user profile. Issue: ------ There's an Access Error because we can't read the `private_street` field on the employee that corresponds to the user. Cause: ------ The new version of onchange fetches the record values on the server side, unlike the old version which used the values in the view. In the old version, as we were using view values, this didn't cause any problems, as the values came from a read that which took into account `SELF_READABLE_FIELDS`. Note: We do not have access to the value of the `private_street` field because it is a related field with the attribute `related_sudo=False` and we do not have access rights for the `hr.employee` model. Solution: --------- Use the cache and place the values of the fields in `SELF_READABLE_FIELDS` in it before performing the onchange logic. opw-3664929
This update fixes the visual presentation of the taxes table in Indian EDI invoice previews. The taxes column was appearing cramped and difficult to read due to inherited formatting styles. By removing these inherited attributes, the tax information now displays more clearly and is easier to read for users reviewing invoices.
Original PR description
In this PR ------------- Before this commit: - The taxes column on invoice preview were displayed abit congested due to inherited attributes After this commit: - We have removed inherited attributes which resolves the above mentioned issue #### Before  #### After  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#148433
This fix prevents SQL constraints from being accidentally deleted when upgrading modules in Odoo. Previously, upgrading a module would remove its SQL constraints, causing confusing error messages instead of the intended validation errors. Now, these constraints are preserved during upgrades, ensuring proper error handling and data validation.
Original PR description
… module: base
Description of the issue/feature this PR addresses:
- Keep the _sql_constraints after upgrading module
Current behavior before PR:
- When upgrading module, the _sql_constraints of the module is removed if exists (deleted in table ir_model_constraint)
- It leads to the result that Odoo can not show the error message of _sql_constraints but shows this error instead:
```
odoo/odoo/tools/translate.py", line 382, in translate_sql_constraint
return cr.fetchone()[0]
~~~~~~~~~~~~~^^^
TypeError: 'NoneType' object is not subscriptable
```
Desired behavior after PR is merged:
- Keep the _sql_constraints of the module
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fix corrects how Odoo tracks the version numbers of installed apps and modules. Previously, version numbers were incomplete (e.g., showing "1.0" instead of "15.0.1.0"), which caused errors when switching themes or upgrading modules. This fix ensures complete version information is stored, preventing installation failures and theme switching errors.
Original PR description
Uploadable modules latest_version is not fully defined (ex: 1.0 instead of 15.0.1.0), which lead to issues in the MigrationManager. **Steps to reproduce (in 17.0):** - make sure you have the industry…
Uploadable modules latest_version is not fully defined (ex: 1.0 instead of 15.0.1.0), which lead to issues in the MigrationManager. **Steps to reproduce (in 17.0):** - make sure you have the industry repository in the addons-path and the upgrade one in the upgrade-path - create an empty database - On 'Hair Salon', click 'Activate' - On the 'Install an App' popup window, click 'Install' - Wait for the Hair Salon Industry to install > Once finished, go to the Website - Click 'Edit' to open the website editor - Click 'Theme' - Next to the 'Theme' field under the 'Website' section, click 'Switch Theme' - Click 'Ok' on the Confirmation popup window - Click 'Use this theme' for the BEAUTY them - The 'Building your website...' animation begins ``` An error is thrown File "/home/odoo/src/odoo/17.0/odoo/addons/base/maintenance/migrations/theme_common/9.saas~13.1.1/pre-views.py", line 4, in <module> from openerp.addons.base.maintenance.migrations import util ModuleNotFoundError: No module named 'openerp' ``` opw-3589376 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144393
This fix improves error handling when users try to reload their chart of accounts with outdated localization modules. Instead of showing a confusing technical error, the system now displays a clear message suggesting the user update their accounting module first. This prevents confusion and helps users resolve the issue quickly.
Original PR description
Steps to reproduce: 1. Install a localization. For example l10n_ee. 2. Delete some tags to mimic an outdated module `DELETE FROM account_account_tag WHERE name->>'en_US' SIMILAR TO '(\+|-)1_1%';` 3. Click the reload button in accounting settings => Traceback This happens because we didn't update the localization module first, thus the tag is not yet created in the database. We now raise a UserError telling the user he probably needs to update the module. Forward-Port-Of: odoo/odoo#148866
This fix ensures that activity notifications are properly generated when timesheet entries are added to duplicated sales orders. Previously, when a sales order was copied and timesheet hours were logged against it, no activity notification would be created. This update restores the expected notification behavior for duplicated orders, helping teams stay informed about timesheet activity across all sales orders.
Original PR description
Steps to reproduce: - Create a service product with Project & Task created on order - Make an SO for 1 hour and confirm it - In the task add 5 hours of timesheet - An activity should be made in the SO - Copy the SO and add the 5 hour of timesheet like before Issue: No activity is made. opw-3660169 Forward-Port-Of: odoo/odoo#148782 Forward-Port-Of: odoo/odoo#148322
This fix addresses an annoying issue where the virtual keyboard would repeatedly pop up when navigating between views on tablets and touch-screen devices. The system now properly detects touch capability instead of relying on screen size, preventing unnecessary keyboard interruptions and improving the user experience when working with Odoo on touch devices.
Original PR description
This commit fixes an annoying issue when using Odoo on a tablet or a PC when using the touch screen primarly. The virtual keyboard popped way too much when navigating in between views and screens, since the focus is often set on inputs (mostly the search bar with useAutofocus). To fix the useAutofocus hook, hasTouch is now being used instead of relying on the size of the screen. Autofocus test with isSmall has been adapted to specify that touch isn't modified, and that the autofocus is still present. And another test has been added asserting the behavior on a touch device. task-3627697 Forward-Port-Of: odoo/odoo#145207
This fix resolves a timing issue in manufacturing order creation where finished product movements were being calculated before their dependencies were properly set up. This ensures that all movement tracking information is correctly recorded when manufacturing orders are created, preventing data loss in the system.
Original PR description
During the creation of 'mrp.production' '_compute_move_finished_ids' may be called before 'move_dest_ids' is set. However, move_finished_ids depend on move_dest_ids (in the method _get_move_finished_values). This may cause the move_orig_ids and move_dest_ids of the component and finished moves to not be set. OPW-3652916 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#148297 Forward-Port-Of: odoo/odoo#148161
Product attribute images were not displaying correctly in the Point of Sale system due to a technical conflict in how images were being retrieved. This fix ensures that product attribute images now display properly when customers configure products, improving the shopping experience.
Original PR description
Previously, product attributes were not displaying correctly due to image retrieval from "product.attribute.value" conflicting with searches based on "product.template.attribute.value" IDs. This commit resolves the issue by ensuring the correct image display. opw-3666883 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix resolves a system crash that occurred when trying to validate a purchase receipt after creating a bill without posting it. The issue affected products using AVCO costing method with ordered quantity control policy. Users can now successfully validate receipts in this scenario without encountering errors.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- Product category > Costing method: AVCO
- Purchase tab:
- Vendor: Azure interior - 190$
- Control Policy: On Ordered quantities
- Create a Purchase order with P1:
- Confirm
- Create a bill and don’t post it
- Try to validate the transfer
Problem:
A traceback is triggered:
```
File "/home/odoo/src/odoo/saas-16.4/addons/purchase_stock/models/stock_move.py", line 76, in _get_price_unit
price_unit = float_round(remaining_value / remaining_qty, precision_digits=price_unit_prec)
ZeroDivisionError: float division by zero
```
opw-3667533
Forward-Port-Of: odoo/odoo#148721This fix corrects how the Kenya EDI module processes tax information when invoices are sent to devices. A recent update allowed multiple taxes on invoice lines, but it was using an unavailable method. The fix switches to the correct method and updates how tax data is read to work properly with current system versions. This ensures invoices with multiple taxes are processed correctly.
Original PR description
A recent commit (03466c2) introduced a change that allowed for users to place multiple taxes on a line (provided only one of them was a VAT tax) when sending invoices to the device. This made use of the _prepare_edi_tax_details method, which is only available from the account_edi module. This fix adapts the function to make use of the _pepare_invoice_aggregated_taxes method (available from) the account move model instead. The references to the keys in the returned tax details dictionary have also be corrected (since the structure of the dictionary between from version 16 onward). Forward-Port-Of: odoo/odoo#148730 Forward-Port-Of: odoo/odoo#148635
Non-admin users in Saudi Arabia companies were unable to access invoice attachments when sending and printing invoices, resulting in errors. This fix restores proper access permissions so all authorized users can view and send invoices with their required attachments, improving the user experience for accounting teams.
Original PR description
Steps to reproduce: - Install Accounting and l10n_sa_edi - Connect with a non-admin user (e.g. Marc Demo) - Switch to a SA company - Create an invoice - Click on "SEND & PRINT" => A traceback is raised when trying to access the attachment linked to the ZATCA document. Cause: Since this commit https://github.com/odoo/odoo/commit/44a4cdb3944a4b722dcfbca5e2947a4372b8501d the attachment of an EDI document is restricted to users with "Administration: Settings" rights. opw-3663305 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#148892
This update significantly improves the speed of displaying list views with many records. The system was recalculating selection information for each row, causing slowdowns when viewing lists with hundreds of records. The fix calculates this information once per view load instead, reducing load time from 1.8 seconds to 0.25 seconds for a 600-record list.
Original PR description
The ListRenderer disables the checkbox of all lines corresponding to a record which cannot be selected. Unfortunately, because `canSelectRecord` is a getter, it is invoked once per line, and this getter in turns invokes the `editedRecord` getter which scans all record to find which record is selected. This operation is O(n²), so it's very slow when there are a lot of records. This commit fixes that by computing the value once per render. Time to render the list view of views (technical > User Interface > views) with 600 records visible: - before: ~1800ms - after: ~250ms
This fix resolves an issue where users couldn't save a subtask's form after assigning it to the same project as its parent task. The system now properly saves the visibility settings for subtasks in project views, allowing users to control whether subtasks appear in the main project task list or only under their parent task.
Original PR description
Before this commit when the user creates a task with a subtask and save the form view and then go to the form view of the subtask and set as project the same than the one set on the parent task, he…
Before this commit when the user creates a task with a subtask and save the form view and then go to the form view of the subtask and set as project the same than the one set on the parent task, he cannot save the form view. The reason is because the framework JS considers there is nothing to save since in fact , the project set is the same than the parent by default, it is just not displayed in the interface thanks to the value of `display_in_project` field. The reason is to be able to let the user choose if he wants to see the subtask in the main views (list/kanban) of tasks linked to the project or just below the parent task. This commit fixes the issue by forcing to update the `display_in_project` field even if it is not in the active fields since it is invisible in the interface and only the widget set on the project field will read and update it. Steps to reproduce: ================== - Install Project app - Go to the project app - Create project A - Create a task inside that Project A - Go to the form view of that task - Create a subtask - Save the form view - Go to the form view of the subtask - Set the project A as project for that subtask - Save the form view Current Behavior: ================ The form view cannot be saved because the framework JS considered there is in fact, nothing to save since `display_in_project` is not in the active fields and there is no force_save="1" set on the field in the view definition. Expected behavior: ================= The form view should be saved. 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 fix corrects how Spanish addresses are formatted when displayed. Previously, if a state/region wasn't specified, addresses would show empty parentheses, creating an unprofessional appearance. The update now properly positions the state information below the zip code and city line, following standard Spanish address conventions and eliminating the empty parentheses issue.
Original PR description
Commit 8889a896f introduced the state in the address format for spain between parentheses, however if the state is unset this leads to weird values like ``` Isabella López Navarro () Spain ``` which is bad. This commit instead formats spanish addresses by adding the state below the Zip+City line and above the Country, as suggested here: https://en.wikipedia.org/wiki/Address#Spain This avoids empty parentheses. Task-3679058
This update fixes an issue where changing cash rounding settings after confirming an invoice would cause an error. The system now prevents recalculating rounding amounts on confirmed invoices, which protects the integrity of finalized financial records and eliminates the error users encountered when modifying rounding methods.
Original PR description
Steps: 1. Install the Accounting module. 2. Enable cash rounding for Customer Invoices in the settings. 3. Activate Developer mode. 4. Navigate to Accounting > Configuration > Management > Cash…
Steps: 1. Install the Accounting module. 2. Enable cash rounding for Customer Invoices in the settings. 3. Activate Developer mode. 4. Navigate to Accounting > Configuration > Management > Cash Rounding. 5. Create a Cash Rounding rule with the following settings: a. Rounding Precision = 1 b. Rounding Method = UP c. Rounding Strategy = Add a rounding line. 6. Create a bill and apply the rounding rule. Add invoice lines with products priced at $99.5 and a tax rate of 15%. 7. Confirm the invoice. 8. Access the cash rounding settings and change the Rounding Method to Down. 9. Open the bill, navigate to the "Other Info" page, and select the "To Check" option. This will result in a UserError: "You cannot modify the taxes related to a posted journal item, you should reset the journal entry to draft to do so." Reason: If there is any change in the rounding method after the journal entry is confirmed, the compute method of tax_totals is triggered when some field of that record is modified. This may lead to the creation of another journal item or changes to existing ones based on the new rounding configuration. However, performing this on a confirmed entry is restricted so it will raise UserError. Solution: Don't compute rounding according to the amount_total after its conformation. Instead, count it using journal items for type-rounding Task - 3468308 Forward-Port-Of: odoo/odoo#139422
Documentation and clarification updates
This update adds new team members from Modoolar to the Contributor License Agreement (CLA) file. The change ensures that all current contributors from the Modoolar organization are properly registered and authorized to contribute to Odoo, maintaining compliance with the project's legal requirements.
Original PR description
Description of the issue/feature this PR addresses: Submit additional team members to the modoolar CLA file 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