Daily updates from Odoo
Navigate
Branch
Thursday, September 26, 2024
76 changes
14 changes
Resolved issues and error corrections
This fix restores the ability for users to mark or unmark a product as a favorite from the product form. It corrects a previous restriction that was applied too broadly, improving day-to-day product management without changing broader workflows.
Original PR description
readonly was added to product template in commit 0d75323600a14dd8964b0b3d29d69aa0fde3ee45 When it should've just been on product.product, so users were no longer able to set as favorite from form view. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change reverts a previous update to internal web test routes because those routes should not change in stable versions. It helps keep testing behavior consistent for the 17.2 release without affecting everyday user workflows.
Original PR description
Test routes were not meant to be changed in stable (17.2 and 17.4). This reverts commit d9035ae6b4a506044da4a499f112c3ac1f0e0b5d. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale receipts can now be printed through the web browser when an ePoS printer encounters an error. This prevents failed printer connections from blocking receipt printing, helping stores keep checkout operations moving smoothly.
Original PR description
Before this commit, if there was an issue with printing via an ePoS printer, the system did not allow for printing the receipt through the web as a fallback. This was due to the erroneous passing of the error object instead of the receipt content. opw-4209073 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Restores the ability to mark and unmark products as favorites directly from the product form. This fixes a regression so users can continue using the familiar star button workflow without interruption.
Original PR description
A change was made in https://github.com/odoo/odoo/pull/168464 that made the favorite button unusable on the view. Customers were expecting the functionality to continue working as it has and being able to star and unstar on the form. opw-4142528
Miscellaneous changes
Updated the tax names, descriptions, and invoice labels to be more clear. Added an additional tax group for exempt. task-4196993 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180766
Original PR description
Updated the tax names, descriptions, and invoice labels to be more clear. Added an additional tax group for exempt. task-4196993 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180766
Situation: Field `ir.models.fields.field_description` has value `{"en_US": "Foo", "fr_FR": "", "nl_NL": "Baz"}` in database. When using `EXCLUDED.{quote(fname)}`, the value of keys `fr_FR` and `nl_NL` will be lost. Solution: Use `ir.models.fields.field_description || EXCLUDED.field_description` to overwrite part of the value instead of replacing the old value. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#18097
Original PR description
Situation:
Field `ir.models.fields.field_description` has value `{"en_US": "Foo", "fr_FR": "", "nl_NL": "Baz"}` in database. When using `EXCLUDED.{quote(fname)}`, the value of keys `fr_FR` and `nl_NL` will be lost.
Solution:
Use `ir.models.fields.field_description || EXCLUDED.field_description` to overwrite part of the value instead of replacing the old value.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#180970In de29ff9cee5be830b8d2aaf2c703f4f13ee24dec, we missed a tag for credit notes on PST tax for saskatchewan tax report. opw-3955926 Forward-Port-Of: odoo/odoo#181004
Original PR description
In de29ff9cee5be830b8d2aaf2c703f4f13ee24dec, we missed a tag for credit notes on PST tax for saskatchewan tax report. opw-3955926 Forward-Port-Of: odoo/odoo#181004
Steps to reproduce the bug: - Create a storable product “P1”: - vendors: -Azure interior, code: Vendor 1 - Deco Addict, code: Vendor 2 - Create a purchase order: - product P1 - Vendor: Azure interior > Description P1 [Vendor 1] - Create an Alternative PO: - Vendor: Deco Addict - Copy products: True Problem: The description of POL is incorrect: P1 [Vendor 1] instead of P1 [Vendor 2] opw-4133933 Forward-Port-Of: odoo/odoo#180798 Forward-Po
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- vendors:
-Azure interior, code: Vendor 1
- Deco Addict, code: Vendor 2
- Create a purchase order:
- product P1
- Vendor: Azure interior
> Description P1 [Vendor 1]
- Create an Alternative PO:
- Vendor: Deco Addict
- Copy products: True
Problem:
The description of POL is incorrect: P1 [Vendor 1] instead of P1 [Vendor 2]
opw-4133933
Forward-Port-Of: odoo/odoo#180798
Forward-Port-Of: odoo/odoo#179487template data of model res.company: {id: values} template data of model account.journal, account.tax...: {xmlid: values} An error occurred when adding the x2many field to res.company and try load template --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180816
Original PR description
template data of model res.company: {id: values}
template data of model account.journal, account.tax...: {xmlid: values}
An error occurred when adding the x2many field to res.company and try load template
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#180816### Steps to reproduce: - Have two companies: COMP1, COMP2 - In the settings Enable Multi-step routes Prior to 17.2: - Inventory > Configuration > Warehouse Management > Locations - Unarchive: Virtual Locations/Inter-company transit and set is Return Locations - With COMP1: Create and confirm a PO with COMP2 as vendor for 10 units of a storable product - Validate the receipt and return. Select the Virtual Locations/Inter-company transit as return location and validate #### > On the POL
Original PR description
### Steps to reproduce: - Have two companies: COMP1, COMP2 - In the settings Enable Multi-step routes Prior to 17.2: - Inventory > Configuration > Warehouse Management > Locations - Unarchive:…
### Steps to reproduce: - Have two companies: COMP1, COMP2 - In the settings Enable Multi-step routes Prior to 17.2: - Inventory > Configuration > Warehouse Management > Locations - Unarchive: Virtual Locations/Inter-company transit and set is Return Locations - With COMP1: Create and confirm a PO with COMP2 as vendor for 10 units of a storable product - Validate the receipt and return. Select the Virtual Locations/Inter-company transit as return location and validate #### > On the POL the received quantity went from 10 to 20 rather than 0 ### Note: Starting from 17.2, the Inter-company transit location is the default location destination of the return rather than (Partner/Vendor). It also changed its reference to `stock_location_inter_company` so that the fix should be adapted in that version. ### Cause of the Issue: Currently, the qty_received is computed with respect to moves linkes to the POL. However, a move is flagged as a return only if the usage of its destination supplier (dropshipping and subcontracting flow excluded): https://github.com/odoo/odoo/blob/f494496b5142af23ee46ce249a1063f9d6caf403/addons/purchase_stock/models/stock_move.py#L247-L249 and if it is not flagged a return, its quantity is counted positively rather than negatively in the received quantity: https://github.com/odoo/odoo/blob/f494496b5142af23ee46ce249a1063f9d6caf403/addons/purchase_stock/models/purchase.py#L348-L370 opw-4190647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181126 Forward-Port-Of: odoo/odoo#180846
Steps to reproduce: - Install "Sendcloud Delivery" and configure it for belgium with a belgium website. - Once configured buy a product and go through the checkout process. - During carrier selection select any "Point relais". - Go back to the previous step (Shipping address selection). - Go again to checkout. Issues: The previous location is shown but we also see available point relais as if we didn't select it. In order to solve this issue we need to not reset access point if `fo
Original PR description
Steps to reproduce: - Install "Sendcloud Delivery" and configure it for belgium with a belgium website. - Once configured buy a product and go through the checkout process. - During carrier selection select any "Point relais". - Go back to the previous step (Shipping address selection). - Go again to checkout. Issues: The previous location is shown but we also see available point relais as if we didn't select it. In order to solve this issue we need to not reset access point if `forceClickCarrier` is on. We also call `_getCurrentLocation` before potentially clicking on the carrier, if we found a location `forceClickCarrier` is set to false as we have don't need to show point relais. Another issue was also met when testing the fix. If we changed shipping methods access point was not reseted to fix this we reset `access_point_address` in the `/shop/cart/update_address` route. opw-4050542 Forward-Port-Of: odoo/odoo#176030
This change allows us to practically revive the 'real price' costing method via customization, specifically using the stock_valuation_fifo_lot OCA module. By making `qty_taken_on_candidate` adjustable in the `_run_fifo()` method, we can fine-tune the FIFO calculation to better suit real price costing needs. @qrtl QT4650 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180245
Original PR description
This change allows us to practically revive the 'real price' costing method via customization, specifically using the stock_valuation_fifo_lot OCA module. By making `qty_taken_on_candidate` adjustable in the `_run_fifo()` method, we can fine-tune the FIFO calculation to better suit real price costing needs. @qrtl QT4650 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180245
Before this commit, the IOT was using an old system to render pages on the IOT box. This commit refactors the homepage to use the new owl system. taskId: 4134163 Forward-Port-Of: odoo/odoo#177895
Original PR description
Before this commit, the IOT was using an old system to render pages on the IOT box. This commit refactors the homepage to use the new owl system. taskId: 4134163 Forward-Port-Of: odoo/odoo#177895
In the Inventory Adjustments view, it is currently possible to select any user for a count request or assign any user to a specific stock.quant, even portal users. This fix ensures only stock users are selected. task 4207784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181376
Original PR description
In the Inventory Adjustments view, it is currently possible to select any user for a count request or assign any user to a specific stock.quant, even portal users. This fix ensures only stock users are selected. task 4207784 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181376
20 changes
New functionality added to Odoo
Adds support for assigning the collection rights of Chilean electronic sales invoices to a third party, helping businesses access cash earlier through factoring. The feature generates the required electronic assignment file for Chile's tax authority, creates the related accounting entry, and reconciles it with the original invoice, including demo-mode simulation and Spanish/Latin American translations.
Original PR description
The `l10n_cl_edi_factoring` module allows the credit and rights of a generated sales invoice to be yielded to a third party. The third-party will advance the invoice money, charging a commission or interest on the amount as compensation. This feature enhances financial flexibility and cash flow management for businesses using our Odoo instance. The module complies with requirements from the SII (Servicio de Impuestos Internos) regarding the electronic execution of the yield. It includes the generation of the AEC (Archivo Electrónico de Cesión) file, the creation of the account move for the yield, and the reconciliation of the invoice with the yield account move. This is also compatible with l10n_cl_edi demo mode, generating and simulating the send and acceptation of the AEC to the SII. Task [link](https://www.odoo.com/odoo/project/967/tasks/3982234?cid=3) task-3982234
Enhancements to existing features
Field service tasks created from online appointments now keep a direct link to the appointment and carry over key booking details. This helps teams see assigned staff, appointment duration, guests, and customer question responses without manually cross-checking records.
Original PR description
Prior to this commit, when a SO is confirmed through the Appointment Web Interface, for an appointment type which creates a Task in a Field Service project, a task is created but with two issues: 1. There is no link between the Appointment and the related task. 2. Following data are missing in the task: selected users or resources, duration, questions and answers of the appointment. This commit introduce a bridge module for Field Service, Appointment and Websale, allowing to set data on the task according to what was defined in the appointment, and a stat button to navigate to the appointment from the task view. Task-3823058 Community PR: https://github.com/odoo/odoo/pull/162578
Loan-related asset group pages now open reliably even when no assets or loans are linked, avoiding an error for users. Loan confirmation and reversal processing is also much faster for long-term loans, reducing wait times for large loan schedules.
Original PR description
See commits
This change prevents users from downloading dashboard JSON files from list views in debug mode, because those downloads could contain an outdated initial version rather than the latest dashboard. Users now receive a warning instead, reducing confusion and avoiding reliance on stale dashboard data.
Original PR description
### [IMP] Disable download of dashboard json file in list view When downloading a dashboard's json file in debug mode, we get the initial version of the dashboard file and not the latest (without the revisions). This commit's goal is to prevent downloading the dashboard's json file and displaying a warning message to the user. task-4196930
The shop floor view no longer applies the previous “This Station” default filter, so users can see relevant manufacturing orders without manually changing the filter. This change is possible because later performance improvements and loading limits now keep the view responsive without needing that restriction.
Original PR description
The 'This Station' default filter was introduced in [1] as a stopgap solution for limiting the amount of MOs loaded simultaneously in the view, to avoid performance bottlenecks. Since the introduction of a limit (also in [1]), as well as later performance improvements from [2], the performance of the shop floor is now acceptable without this filter, so we proceed with removing it completely in this PR. [1] https://github.com/odoo/enterprise/pull/64551 [2] https://github.com/odoo/enterprise/pull/66898
Financial reports now show the exact start and end dates of the selected period when a company's fiscal year does not match the calendar year. This helps users avoid confusion over whether month and quarter filters refer to calendar dates or fiscal-year periods.
Original PR description
Before this commit when the fiscal year was not set for December 31, the report would still show the abbreviated period name (Dec 2024, Q2 2024, etc). People struggled with that when they changed the fiscal year because they thought quarters or months filters were aligned to their fiscal year. The goal here is to show the actual period boundaries on the report when the fiscal year is set to something different than the calendar year. That way they will know exactly on which period the report is calculated for. task-4200096
Adds four new appraisal templates to the demo data so users can better understand how appraisal templates can be structured and used. This makes the HR Appraisal experience clearer for evaluators and HR teams exploring the module.
Original PR description
4 news appraisals templates have been added to improve their understanding for users. task-4206744
Archived employees are now excluded by default from the attendance Gantt and list views. This keeps workforce planning screens focused on active employees and reduces clutter for HR users.
Original PR description
With this commit, by default, The gantt view and list view don't dispayed archived employees. task-4208052
Resolved issues and error corrections
Duplicating a financial report now creates a clearly labeled copy and includes its budget lines. This helps users create new financial budgets from existing reports without rebuilding them manually.
Original PR description
Enable the copy of a financial report. Right now, when duplicating a financial report (or several at the same time), only the name is copied (same name, not even a "(copy)" after. We want to improve it by adding this "(copy)" in the title, and also copy the budget lines. This will enable a user to not start from scratch every time he wants to create a new financial budget. task-4207202
Fixes an issue where action buttons in Documents could remain incorrect after switching folders while previewing a document. This helps users see the right controls for the folder they are working in and avoids confusion during document management.
Original PR description
…ewing This commit fixes the remaining actions after switching folders while previewing a document.
Fixes an issue where dragging a single document could show an unclear “undefined” message in kanban and list views. It also keeps the owner avatar and activity icon consistently positioned at the bottom of document cards, making the interface cleaner and easier to read.
Original PR description
This commit fix the 'undefined' message when trying to drag and drop a single document in the kanban and list view. It also fix the owner avatar and activity icon to always stick to the bottom of the kanban card.
The asset modification wizard now refreshes the residual value when users change the date, giving a more accurate preview before confirming changes. Related accounting fields also adjust based on the recalculated gain or loss, reducing confusion and helping users make better decisions.
Original PR description
When the date in the modify wizard for assets is changed, the residual_value should be updated to give a better view to the user. task-3981380
Miscellaneous changes
The aim of this commit is to add an extra security in the test of the reporting framework. Context: Those line_id are used to recognize lines in the framework and also in the frontend by owl as t-key. Those line_id not being unique would result in a crash in the front-end framework (only from 17.0 as OWL is used starting version 17.0 on accounting reports). Before the commit: There isn't any test performed on the line_id property. After the commit: assertLinesValues will make sure th
Original PR description
The aim of this commit is to add an extra security in the test of the reporting framework. Context: Those line_id are used to recognize lines in the framework and also in the frontend by owl as t-key. Those line_id not being unique would result in a crash in the front-end framework (only from 17.0 as OWL is used starting version 17.0 on accounting reports). Before the commit: There isn't any test performed on the line_id property. After the commit: assertLinesValues will make sure that each line_id is unique for the generated data. Back-ports the following commits: - https://github.com/odoo/enterprise/commit/fa3f03d859a35595990f34606c0864f9868e13fc - https://github.com/odoo/enterprise/commit/74000d6d5c8435bcaad93f7baf143abdf8593064 - https://github.com/odoo/enterprise/commit/fed41d1b3042414823345d995eb173f7acb3c6dc Co-authored-by: Brice Bartoletti <bib@odoo.com> task-4063612 Forward-Port-Of: odoo/enterprise#70566 Forward-Port-Of: odoo/enterprise#68840
website_id is not defined on sale teams... website_ids is. "False" should be False... task-4210343 Forward-Port-Of: odoo/enterprise#70639
Original PR description
website_id is not defined on sale teams... website_ids is. "False" should be False... task-4210343 Forward-Port-Of: odoo/enterprise#70639
Community: https://github.com/odoo/odoo/pull/181487 Design Themes: https://github.com/odoo/design-themes/pull/939 Forward-Port-Of: odoo/enterprise#70692
Original PR description
Community: https://github.com/odoo/odoo/pull/181487 Design Themes: https://github.com/odoo/design-themes/pull/939 Forward-Port-Of: odoo/enterprise#70692
This commit is the counter part of https://github.com/odoo/odoo/pull/181354 and adapt a test to the fix of the pivot view in spreadsheet. Task: 4207668 Forward-Port-Of: odoo/enterprise#70632
Original PR description
This commit is the counter part of https://github.com/odoo/odoo/pull/181354 and adapt a test to the fix of the pivot view in spreadsheet. Task: 4207668 Forward-Port-Of: odoo/enterprise#70632
Forward-Port-Of: odoo/enterprise#70662
Original PR description
Forward-Port-Of: odoo/enterprise#70662
**How to reproduce** Create a Table Booking appointment from the Action helper Go to the booking page for that appointment it looks like this - https://tinyurl.com/29q2ktjb **After this PR** Now that appointment name will be Table instead of Table Booking Backport of this commit - https://github.com/odoo/enterprise/pull/70643/commits/209aeae1f5d6689ef15fd8016cbcd08b03710f6f Task-4210749 Forward-Port-Of: odoo/enterprise#70699
Original PR description
**How to reproduce** Create a Table Booking appointment from the Action helper Go to the booking page for that appointment it looks like this - https://tinyurl.com/29q2ktjb **After this PR** Now that appointment name will be Table instead of Table Booking Backport of this commit - https://github.com/odoo/enterprise/pull/70643/commits/209aeae1f5d6689ef15fd8016cbcd08b03710f6f Task-4210749 Forward-Port-Of: odoo/enterprise#70699
before this commit: On mobile devices, the `Locating new addresses` and `Set up token` Bootstrap alerts are overlapping. after this commit: On mobile devices, the `Set up token` alert only becomes visible after the `Locating new addresses` process has been completed. Task-3928322 Forward-Port-Of: odoo/enterprise#70552 Forward-Port-Of: odoo/enterprise#69822
Original PR description
before this commit: On mobile devices, the `Locating new addresses` and `Set up token` Bootstrap alerts are overlapping. after this commit: On mobile devices, the `Set up token` alert only becomes visible after the `Locating new addresses` process has been completed. Task-3928322 Forward-Port-Of: odoo/enterprise#70552 Forward-Port-Of: odoo/enterprise#69822
Currently, a traceback is occurring if the net To reproduce this issue: 1) Install accounting 2) Create a confirmed customer invoice with a product and tax 2) Open `Tax report` report from reporting Error:- ``` TypeError: unsupported operand type(s) for /: 'float' and 'str' ``` This error is occurring after the recent changes from the commit https://github.com/odoo/enterprise/pull/68632/commits/f2bf719665dc3d19024d585e95d4913643b12572 We get `net_value` as an empty string from
Original PR description
Currently, a traceback is occurring if the net To reproduce this issue: 1) Install accounting 2) Create a confirmed customer invoice with a product and tax 2) Open `Tax report` report from reporting Error:- ``` TypeError: unsupported operand type(s) for /: 'float' and 'str' ``` This error is occurring after the recent changes from the commit https://github.com/odoo/enterprise/pull/68632/commits/f2bf719665dc3d19024d585e95d4913643b12572 We get `net_value` as an empty string from the below line https://github.com/odoo/enterprise/blob/7f3c71f03ff21dbfdda2763862f609445c4c9103/account_reports/models/account_generic_tax_report.py#L969-L970 But here `net_value` is used to calculate the error value, which leads to the above traceback https://github.com/odoo/enterprise/blob/7f3c71f03ff21dbfdda2763862f609445c4c9103/account_reports/models/account_generic_tax_report.py#L1076-L1077 sentry-5842821270 Forward-Port-Of: odoo/enterprise#70620
31 changes
Enhancements to existing features
Inventory barcode workflows now provide clearer feedback during RFID scans, including total reads, unique reads, scan duration, and read rate in a temporary pop-up. The update also improves multi-barcode handling, allows the same serial number across different products, and makes related barcode screens and tests more reliable.
Original PR description
RFID Count ========= While scanning RFIDs, instead of displaying the usual "Processing n/N barcodes", a pop-up with information (total reads count, unique reads count, read time and read rate) wille be displayed. This pop-up closes itself after 5 seconds. ______________ Follows this PR: odoo/enterprise#68825 [task-4089638](https://www.odoo.com/odoo/project.task/4089638)
Appointment bookings that require manual confirmation now use clearer email templates for request-based bookings. Customers receive a confirmation email when a requested appointment is approved and marked as booked, improving communication and reducing uncertainty.
Original PR description
This commit globally improves the bookings that need manual confirmation: - Adapt the mailing templates to take into account 'request' bookings ; - Send a confirmation email when the appointment status changes to 'booked' ; - Slightly tune the manual confirmation conditions. Task-3918889
Approval requests are now automatically cleared when certain business records, such as sales orders, are reset to an earlier draft stage. This ensures a fresh approval process starts after a major change or rollback, reducing the risk of relying on outdated approvals.
Original PR description
This commit implements the feature of removing every entries related to a recordset. This is useful in following use case: - Have approvals on Sale Order - The sale order's life goes on and with it the approval flow - The sale order has a major problem business-wise down the line - It is rollbacked to the "draft" status => In that case we want all approval entries to be deleted, since the approval lifecycle must start from scratch when the sale order is resetted to draft. This commit implements this feature via the creation of Base Automations and Server Actions task-4123521
Documents users can now pin and unpin embedded actions themselves. This makes frequently used document actions easier to access and gives standard document users more control without requiring higher permissions.
Original PR description
We want members of the documents_user group to be able to pin/unpin embedded actions. task-3373836
Financial reports now show both the start and end dates for quarter labels. This reduces confusion for companies whose fiscal year does not match the calendar year, making report periods easier to understand.
Original PR description
Before this commit quarter strings on reports were not always explicit. If the fiscal year was not aligned to the calendar year, people would get confused by thinking the quarter was aligned on the fiscal year Now to avoid that we show the start and the end of the quarter. task-4200096
Studio exports have been optimized so repeated data lookups are prepared once instead of recalculated many times. This should make exporting Studio customizations faster and smoother, especially for larger configurations.
This update improves Odoo's automated test suite by adapting enterprise tests to newer Hoot testing behavior and cleaner test syntax. It helps maintain product quality and reduces the risk of issues reaching users, without changing normal business workflows.
Original PR description
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4:…
## Pull Request HOOT (PRHOOT) - part 23 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Part 11: https://github.com/odoo/odoo/pull/156255 / https://github.com/odoo/enterprise/pull/58135 Part 12: https://github.com/odoo/odoo/pull/156869 Part 13: https://github.com/odoo/odoo/pull/158384 / https://github.com/odoo/enterprise/pull/59019 Part 14: https://github.com/odoo/odoo/pull/158916 Part 15: https://github.com/odoo/odoo/pull/160292 / https://github.com/odoo/enterprise/pull/59971 Part 15.5: https://github.com/odoo/odoo/pull/166463 Part 16: https://github.com/odoo/odoo/pull/166311 Part 17: https://github.com/odoo/odoo/pull/168328 Part 18: https://github.com/odoo/odoo/pull/171004 / https://github.com/odoo/enterprise/pull/65657 Part 19: https://github.com/odoo/odoo/pull/171242 / https://github.com/odoo/enterprise/pull/65767 Part 20: https://github.com/odoo/odoo/pull/173332 / https://github.com/odoo/enterprise/pull/66895 Part 21: https://github.com/odoo/odoo/pull/174337 Part 22: https://github.com/odoo/odoo/pull/176777 / https://github.com/odoo/enterprise/pull/68721 Community: https://github.com/odoo/odoo/pull/179660 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#69728
Studio approvals are more reliable and easier to manage. Mobile users no longer hit a debug-mode crash when opening approval options, approval changes now refresh the record and chatter, and authorized users can revoke approvals from lower-priority rules.
Resolved issues and error corrections
The mobile app now handles expected permission-related responses during startup without showing or logging disruptive unhandled errors. This helps make app launch more reliable when native device permissions are requested for the first time.
Original PR description
In the Native Mobile Apps when we use a Native method that requires a permission the promise is rejected on the first call. This commit avoids to generate `unhandledrejection` in this case.
Bank statement reconciliation is now handled in the background instead of during the user's on-screen workflow. This prevents long loading times when bank statement data is processed, making the experience more responsive.
Original PR description
Previously, the _cron_try_auto_reconcile_statement_lines method was called directly from _fill_document_with_results, which could cause significant delays when triggered from the UI, resulting in long loading times for users. This commit resolves the issue by scheduling the reconciliation process as a background cron job, improving the responsiveness of the _fill_document_with_results function. Original task-4061457
This fix prevents styling meant for grid views from affecting empty-state messages in other parts of Odoo. Users should see more consistent layout behavior across views, with the grid view still displaying its no-content helper correctly.
Original PR description
Before this commit, the 3c7775f4c7a3efaa891bc31072c41abff24edfad commit adds some style to correctly display the noContent helper inside the grid view. The problem is the selector used to apply that styling is too generic and not specific to the grid view which can alter the position of the no content helper in other views. This commit makes sure the style added for the grid view is only applied inside the grid view and not somewhere else. task-4207210
This fix prevents an error when calculating allocated hours for open shifts that do not yet have a resource assigned. It improves reliability in planning by safely checking that a resource exists before using its scheduling settings.
Original PR description
Before this commit, the compute of the allocated hours could be raised a traceback if the shift is an open one because we check if the resource is flexible before checking if there is a resource set on the shift. This commit makes sure a resource exists on the shift before checking if the resource is flexible or not. task-4206945
A Web Studio automated test now checks that required optional apps are installed before running. This prevents false failures in limited test environments and helps keep release validation stable without changing business features.
Original PR description
**Before this commit** Tests on test_23_export_hardcoded_models_and_fields function break on single app tests because we are trying to find models from PRESET_MODELS_DEFAULTS in runbot that do not actually exist in self.env if we do not install extra modules like hr, crm, etc. **After this commit** This test checks beforehand if some needed modules are all installed.
This fixes the layout of the SMS and Chat buttons so they no longer appear too close together. The change improves readability and makes the visitor contact options look cleaner for users.
Original PR description
before this commit there is no space between 'sms' and 'chat' buttons. after this commit added a space between both buttons.
Portal users can now switch to the document list view without seeing a client error. This keeps document browsing reliable for external users who need list-based navigation.
Original PR description
When portal users try to switch to the list view, they get a client error. The error is solved by keeping the studio service accessible to the ListRenderer. task-3373836
Creating multiple restaurant appointments in a row no longer triggers an error in the back-office calendar. The calendar now relies on its normal data update process, preventing the wrong booking from being reloaded.
Original PR description
Before when creating two appointment one by one, an error was raised for the second appointment. This was due to the fact that the calendar view was refreshed with a wrong active id. This commit remove the view refresh since the view itself make a RPC to get the new data.
Users customizing Kanban views in Studio can now reliably turn bold formatting on or off for fields. This fixes a styling issue so visual changes made in the editor are correctly reflected in the view.
Original PR description
Before this commit, toggling the bold attribute on a field in a (new API) kanban view didn't work. This was because the feature wasn't fully implemented (in web) for new API kanban. Indeed, the class "o_text_bold" was correctly set, but the associated css rule was scoped for legacy kanban records. Instead of fixing it in web, we rather want to promote the use of bootstrap utility class. So instead of setting the `bold` attribute, we toggle the `fw-bold` classname.
The appointment demo setup now shows the table booking appointment as "Table" instead of "Table Booking". This avoids a confusing label on the booking page and keeps the demo experience aligned with the intended naming.
Original PR description
**How to reproduce** Create a Table Booking appointment from the Action helper Go to the booking page for that appointment it looks like this - https://tinyurl.com/29q2ktjb **After this PR** Now that appointment name will be Table instead of Table Booking Backport of this commit - https://github.com/odoo/enterprise/pull/70643/commits/209aeae1f5d6689ef15fd8016cbcd08b03710f6f Task-4210749
Portal users can now switch to the document list view without seeing a client error. This improves reliability for external users accessing shared documents through the portal.
Original PR description
When portal users try to switch to the list view, they get a client error. The error is solved by keeping the studio service accessible to the ListRenderer. task-3373836
This fixes an issue where marketing automation for website sales used the wrong website field when filtering sales teams. Campaign targeting should now work more reliably for businesses using multiple websites or website-specific sales flows.
Original PR description
website_id is not defined on sale teams... website_ids is. "False" should be False... task-4210343
Spreadsheet pivot views now correctly support using the same field with multiple calculation methods. This prevents incorrect or missing pivot results and keeps spreadsheet reporting aligned with the related pivot view fix.
Original PR description
This commit is the counter part of https://github.com/odoo/odoo/pull/181354 and adapt a test to the fix of the pivot view in spreadsheet. Task: 4207668
Code cleanup and technical improvements
This update reorganizes how editor overlays, such as pop-ups and helper panels, are managed so they are easier for developers to use consistently. It also centralizes how these overlays close and improves editing behavior when users interact with fields inside them, reducing duplicated logic and potential interface glitches.
Original PR description
The purpose of this PR is to make it easier to use overlays in the editor. 1. Clarify the createOverlay API. ================================ Before, we mixed up the positioning hook options and the…
The purpose of this PR is to make it easier to use overlays in the editor. 1. Clarify the createOverlay API. ================================ Before, we mixed up the positioning hook options and the EditorOverlay props. After, put all the positioning options in the positionOptions props and move the sequence to the last param, which corresponds to the overlay system options. 2. Automatically manage the close at pointerdown. ================================================= Before, the logic for closing overlays outside the overlay was duplicated in each component use by createOverlay. After, the overlay editor is responsible for closing overlays when a pointerdown occurs outsite of the overlay. You can disable this functionality with the closeOnPointerdown=‘false’ props. 3. Managing setSelections when the selection is not in the editable =================================================================== For example, the selection is in the input of an overlay. From this commit, when you call setSelection, if the selection is not in the editable, you no longer force the selection to be moved into the editable, you just update the activeSelection. When you want to force the restoration of the selection in the editable, for example when you close an overlay, you call the focusEditable function. This change makes it possible to call functions that manipulate the selection from the outside without having to refocus in the editor.
Miscellaneous changes
Starting d1a94147060083da54f9423f8c379676fbb7db66, when making ingenico payment, the pos app sends an `NaN` as `TransactionID`. As a result, users are unable to receive payments from Ingenico terminal. This change proposes to take the last 13 characters of the payment's uuid (after removing the `-` separators) and convert it as integer which will serve as the `TransactionID`. We're only taking the 13 characters because it's the number of characters that can be converted to JS int without exponen
Original PR description
Starting d1a94147060083da54f9423f8c379676fbb7db66, when making ingenico payment, the pos app sends an `NaN` as `TransactionID`. As a result, users are unable to receive payments from Ingenico terminal. This change proposes to take the last 13 characters of the payment's uuid (after removing the `-` separators) and convert it as integer which will serve as the `TransactionID`. We're only taking the 13 characters because it's the number of characters that can be converted to JS int without exponent. Forward-Port-Of: odoo/enterprise#70672
Due to legal reasons, we need to send a zip containing the PDF and the xml. The xml is an UBL `AttachedDocument` containing both the initial xml representing the invoice and the `ApplicationResponse` returned when calling the GetStatus webservice of DIAN. The `ApplicationResponse` is an xml representing the state of the invoice on the DIAN server. task-4133688 backport of https://github.com/odoo/enterprise/pull/70171 Forward-Port-Of: odoo/enterprise#70664
Original PR description
Due to legal reasons, we need to send a zip containing the PDF and the xml. The xml is an UBL `AttachedDocument` containing both the initial xml representing the invoice and the `ApplicationResponse` returned when calling the GetStatus webservice of DIAN. The `ApplicationResponse` is an xml representing the state of the invoice on the DIAN server. task-4133688 backport of https://github.com/odoo/enterprise/pull/70171 Forward-Port-Of: odoo/enterprise#70664
Before this commit, changing the partner in POS for the EC localization was raising an OWL error. This error happens because missingFields got stripped from most of the codebase, including PartnerList, leading to an "Invalid Props" error in Owl. This was preventing users from selecting a partner other than the default "consumidor final". After this commit, clicking the partner button correctly opens the "partner selection" popup. opw-4171779 opw-4192162 Forward-Port-Of: odoo/enterpr
Original PR description
Before this commit, changing the partner in POS for the EC localization was raising an OWL error. This error happens because missingFields got stripped from most of the codebase, including PartnerList, leading to an "Invalid Props" error in Owl. This was preventing users from selecting a partner other than the default "consumidor final". After this commit, clicking the partner button correctly opens the "partner selection" popup. opw-4171779 opw-4192162 Forward-Port-Of: odoo/enterprise#70559
The aim of this commit is to add an extra security in the test of the reporting framework. Context: Those line_id are used to recognize lines in the framework and also in the frontend by owl as t-key. Those line_id not being unique would result in a crash in the front-end framework (only from 17.0 as OWL is used starting version 17.0 on accounting reports). Before the commit: There isn't any test performed on the line_id property. After the commit: assertLinesValues will make sure th
Original PR description
The aim of this commit is to add an extra security in the test of the reporting framework. Context: Those line_id are used to recognize lines in the framework and also in the frontend by owl as t-key. Those line_id not being unique would result in a crash in the front-end framework (only from 17.0 as OWL is used starting version 17.0 on accounting reports). Before the commit: There isn't any test performed on the line_id property. After the commit: assertLinesValues will make sure that each line_id is unique for the generated data. Back-ports the following commits: - https://github.com/odoo/enterprise/commit/fa3f03d859a35595990f34606c0864f9868e13fc - https://github.com/odoo/enterprise/commit/74000d6d5c8435bcaad93f7baf143abdf8593064 - https://github.com/odoo/enterprise/commit/fed41d1b3042414823345d995eb173f7acb3c6dc Co-authored-by: Brice Bartoletti <bib@odoo.com> task-4063612 Forward-Port-Of: odoo/enterprise#70566 Forward-Port-Of: odoo/enterprise#68840
Community: https://github.com/odoo/odoo/pull/181488 Design Themes: https://github.com/odoo/design-themes/pull/940
Original PR description
Community: https://github.com/odoo/odoo/pull/181488 Design Themes: https://github.com/odoo/design-themes/pull/940
The common SAFT test class has tags that will be passed to all inheriting test classes. We don't want that. Hence, we remove to tags and let the lower level test classes define those test tags. Runbot error 99192 Forward-Port-Of: odoo/enterprise#70634
Original PR description
The common SAFT test class has tags that will be passed to all inheriting test classes. We don't want that. Hence, we remove to tags and let the lower level test classes define those test tags. Runbot error 99192 Forward-Port-Of: odoo/enterprise#70634
before this commit: On mobile devices, the `Locating new addresses` and `Set up token` Bootstrap alerts are overlapping. after this commit: On mobile devices, the `Set up token` alert only becomes visible after the `Locating new addresses` process has been completed. Task-3928322 Forward-Port-Of: odoo/enterprise#70552 Forward-Port-Of: odoo/enterprise#69822
Original PR description
before this commit: On mobile devices, the `Locating new addresses` and `Set up token` Bootstrap alerts are overlapping. after this commit: On mobile devices, the `Set up token` alert only becomes visible after the `Locating new addresses` process has been completed. Task-3928322 Forward-Port-Of: odoo/enterprise#70552 Forward-Port-Of: odoo/enterprise#69822
## Description Currently the ebay module logs as `INFO` the whole content of the JSON response coming from the Ebay API. This can bloat excessively the logs of databases, forcing customers to quickly exceed their disk quotas. We can just log this type of information as a DEBUG log. ## Reference opw-4192547 Forward-Port-Of: odoo/enterprise#70626
Original PR description
## Description Currently the ebay module logs as `INFO` the whole content of the JSON response coming from the Ebay API. This can bloat excessively the logs of databases, forcing customers to quickly exceed their disk quotas. We can just log this type of information as a DEBUG log. ## Reference opw-4192547 Forward-Port-Of: odoo/enterprise#70626
Currently, a traceback is occurring if the net To reproduce this issue: 1) Install accounting 2) Create a confirmed customer invoice with a product and tax 2) Open `Tax report` report from reporting Error:- ``` TypeError: unsupported operand type(s) for /: 'float' and 'str' ``` This error is occurring after the recent changes from the commit https://github.com/odoo/enterprise/pull/68632/commits/f2bf719665dc3d19024d585e95d4913643b12572 We get `net_value` as an empty string from
Original PR description
Currently, a traceback is occurring if the net To reproduce this issue: 1) Install accounting 2) Create a confirmed customer invoice with a product and tax 2) Open `Tax report` report from reporting Error:- ``` TypeError: unsupported operand type(s) for /: 'float' and 'str' ``` This error is occurring after the recent changes from the commit https://github.com/odoo/enterprise/pull/68632/commits/f2bf719665dc3d19024d585e95d4913643b12572 We get `net_value` as an empty string from the below line https://github.com/odoo/enterprise/blob/7f3c71f03ff21dbfdda2763862f609445c4c9103/account_reports/models/account_generic_tax_report.py#L969-L970 But here `net_value` is used to calculate the error value, which leads to the above traceback https://github.com/odoo/enterprise/blob/7f3c71f03ff21dbfdda2763862f609445c4c9103/account_reports/models/account_generic_tax_report.py#L1076-L1077 sentry-5842821270 Forward-Port-Of: odoo/enterprise#70620
11 changes
Resolved issues and error corrections
Fixed an issue where exporting the Thai Sales Tax Report (xlsx) would fail when using a branch company. The system now correctly looks up tax group information from the parent company when it's not found in the branch, allowing the export to complete successfully.
Original PR description
### Steps to reproduce * install `l10n_th_reports` * create a Thai company and its branch * using the company selector, ensure the current company is the branch company, while selecting both parent and branch company * open the Thai Tax Report * attempt to export the "Sales Tax Report (xlsx)" You should be met with a traceback about a tax group External ID not being found ### Cause The system looks for an XML ID which is only present in the parent company, while using the branch company opw-4181071
This update fixes a tooltip positioning issue in the Documents module's search panel. The change aligns the Documents tests with improvements made to the core platform, ensuring the search interface displays correctly and provides better user experience when hovering over search options.
Original PR description
This commit adapts documents tests to changes made in https://github.com/odoo/odoo/pull/180776
This fix restores the date display on receipts for Chilean Point of Sale transactions. Previously, a system update removed the date field, causing receipts to appear without transaction dates. The fix ensures dates are properly shown on all POS receipts for Chilean companies.
Original PR description
When validation an order in a Chilean shop, the date is not show on the receipt. Steps to reproduce: ------------------- * Change the company for the Chilean one **CL Company** * Go to the **Point of…
When validation an order in a Chilean shop, the date is not show on the receipt. Steps to reproduce: ------------------- * Change the company for the Chilean one **CL Company** * Go to the **Point of sale** App * Open shop session * Make and order and validate it > Observation: The date is not reported on the receipt Why the fix: ------------ Commit https://github.com/odoo/enterprise/commit/1ce4eaa025426354c640e6e6c69269b1e6b2c7d1 moved the date on receipt in the header for the chilean localization. Header uses the data from `props.headerData` https://github.com/odoo/odoo/blob/5f748c9d5731fe2e7e519ee9625da25e2bb219bc/addons/point_of_sale/static/src/app/navbar/cash_move_popup/cash_move_receipt/cash_move_receipt.xml#L6 The date field in `headerData` is computed in `getReceiptHeaderData` https://github.com/odoo/enterprise/blob/923dfe962b714797ee41e8f7beed2cb2d6df7048/l10n_cl_edi_pos/static/src/overrides/models/pos_store.js#L48 However, this commit https://github.com/odoo/odoo/commit/5cb7639160cef5401ada8cdde5a5522d8d29c9a9 removed the field `receiptDate` on the pos order. We thus use the same logic to set the date in `headerData`. opw-4136943
The Accounting and Benchmark dashboards had a problem where selecting quarterly filters would cause errors because the underlying formulas were only designed to work with monthly data. This fix disables the quarter filter option to prevent users from encountering broken dashboards and ensure the filtering functionality works as intended.
Original PR description
The Accounting and Benchmark dashboards were designed with a global filter working with months. But when filtering by quarter, everything breaks because formulas do not expect an input such as "Q4/2020". This commit disable the possibility to select quarters. Task: 4184088
The eBay module was logging complete API responses at INFO level, which caused excessive log file growth and disk space issues for customers. This fix changes API response logging to DEBUG level, reducing unnecessary log bloat while keeping detailed information available when needed for troubleshooting.
Original PR description
## Description Currently the ebay module logs as `INFO` the whole content of the JSON response coming from the Ebay API. This can bloat excessively the logs of databases, forcing customers to quickly exceed their disk quotas. We can just log this type of information as a DEBUG log. ## Reference opw-4192547 Forward-Port-Of: odoo/enterprise#70626
This update fixes the Swiss HR payroll module (l10n_ch_hr_payroll_elm) to properly handle module updates. The change ensures that payslip processing works correctly when the module is updated, preventing potential data inconsistencies or processing errors for Swiss payroll operations.
This fix resolves an issue where only the first bank account could be added to a customer during bank reconciliation. Previously, when reconciling multiple bank accounts with the same customer, only the first account would be saved. Now all bank accounts are properly added to the customer record, allowing businesses to maintain complete banking information for their partners.
Original PR description
Create a bank statement line with: - Label - No partner - Bank Account number [BNK1] - Amount Go to reconciliation widget Reconcile with a manual statement having partner [TEST] [BNK1] will be added to the bank accounts of [TEST] Repeat the steaps with another account [BNK2] Issue: [BNK2] will not be added to the bank accounts of [TEST] This occurs because, when validating a statement line, we don't add a new bank account to the partner if there is already one defined opw-4145124
This fix resolves an issue where completing a repair order would incorrectly duplicate the original return item in the product return list. When ending a repair, the system was mistakenly linking the repair's internal stock movement to the customer's return shipment, causing the returned item to appear twice. This fix ensures repair movements are properly separated from return shipments.
Original PR description
### Steps to reproduce: - Create a Helpdesk team with the options "Return" and "Repairs" - Create a product, sell 1 unit and deliver it. - Create a ticket for the Helpdesk Team, select the customer…
### Steps to reproduce: - Create a Helpdesk team with the options "Return" and "Repairs" - Create a product, sell 1 unit and deliver it. - Create a ticket for the Helpdesk Team, select the customer who bought the product > create and validate a return of the product to your warehouse through the ticket. - Create a repair order and mark it as done. #### > If you go back to the product return, the stock move of the original return appears twice. ### Cause of the Issue: Clicking on the `End Repair` button of the repair will call the `action_repair_end` with a `default_picking_id` equal to the `picking_id` of the `repair.order` in the context. However, during this call a stock move groing from repair location to the repair location will be created and mark as done for the final product to be assocaited with the repair order: https://github.com/odoo/odoo/blob/e3a5d82f8ea6a92ced59c287c50f7cd33277a4bd/addons/repair/models/repair.py#L379-L382 https://github.com/odoo/odoo/blob/e3a5d82f8ea6a92ced59c287c50f7cd33277a4bd/addons/repair/models/repair.py#L417-L442 https://github.com/odoo/odoo/blob/e3a5d82f8ea6a92ced59c287c50f7cd33277a4bd/addons/repair/models/repair.py#L444-L449 Since no `picking_id` is specified in its `move_vals`, the default `picking_id` (that is the return) will be added to the vals of the create here: https://github.com/odoo/odoo/blob/e3a5d82f8ea6a92ced59c287c50f7cd33277a4bd/odoo/models.py#L4564 So that the newly created move will be linked to the return move even thought this makes no sense. opw-4159779
This update fixes the IoT (Internet of Things) integration in the manufacturing shop floor system, enabling proper communication with IoT devices like cameras and sensors. The changes allow workers to scan workorder barcodes and use IoT equipment for quality checks, improving the efficiency and accuracy of the manufacturing process.
Original PR description
Make ShopFloor use IoT task: 4017327
This fix corrects an error where the system was using the wrong XML template (from Trial Balance instead of Chart of Accounts) when uploading account data to the Mexican tax authority (SAT). This was causing cryptography errors during the submission process. The fix ensures the correct template is applied for Chart of Accounts submissions.
Original PR description
Está tomando el xlst de balanza de comprobación en lugar del xlst de catalogo de cuentas. Me genera error de criptografía al subir al sat el catálogo de cuentas
Fixed a bug in the manufacturing shop floor where the Quality Checks button would remain visible and cause an error when clicked after quality checks were already completed. The issue was that production data wasn't being refreshed properly on screen. This update ensures the system always displays the most current production status, preventing users from attempting duplicate quality checks.
Original PR description
## Steps to reproduce: 1. Create a quality control point for the operation type Manufacturing 2. Create a manufacturing order and plan it 3. Go to the Shop floor 4. Register the production & do the quality checks 5. The Quality Checks button is still there; clicking again displays a traceback because the quality checks are already done. ## Before this commit: Upon reloading the production, the new data is not propagated to `this.record`. ## After this commit: Change `this.record` to a getter so it always contains the correct reference to the record. opw-4176393