Saturday, May 24, 2025
22 changes · saas-18.3
Enhancements to existing features
Users pairing an IoT Box in SaaS will now see a clearer message when the box has a valid security certificate but cannot be reached due to likely DNS delays. This helps users understand why the device may temporarily be unavailable and reduces confusion during setup.
Original PR description
When the user pairs an IoT box in the SaaS, it automatically receives a TLS certificate from odoo.com so that it can be accessed via HTTPS. However, sometimes the user's DNS will not be able to resolve the IoT box's new address straight away, making it unreachable. We cannot detect this error directly, and there is nothing we can do on our end to alter the user's DNS setup. Instead, this commit adds an error message mentioning the DNS issue in the event that an IoT box has a valid certificate but we are unable to reach it. Community PR: https://github.com/odoo/odoo/pull/211165 task-4787494
Resolved issues and error corrections
This fixes an issue that could prevent WinBooks accounting imports from creating records correctly after a platform change. The update keeps the import workflow compatible so businesses can continue importing accounting data without interruption.
Original PR description
Due to this commit: https://github.com/odoo/odoo/commit/420c64c9e9d4b3b0f3e51f1a41774587a04fbf2e (PR: https://github.com/odoo/odoo/pull/197868), create now only accepts list or tuples and this one raise because it was using dict_values. opw-4803277
Miscellaneous changes
- Create a sub company from the main company. - On only the sub-company create a new followup level. - While being in both the main company and the sub-company at the same time, try to access the newly created followup level in the followup report view. The following traceback appears: File "/home/odoo/src/odoo/addons/web/models/models.py", line 128, in web_read vals = many2one_data[values[field_name]] KeyError: 9 This commit hide the statusbar for the child company if there is followu
Original PR description
- Create a sub company from the main company. - On only the sub-company create a new followup level. - While being in both the main company and the sub-company at the same time, try to access the newly created followup level in the followup report view. The following traceback appears: File "/home/odoo/src/odoo/addons/web/models/models.py", line 128, in web_read vals = many2one_data[values[field_name]] KeyError: 9 This commit hide the statusbar for the child company if there is followup level in the parent as per the specification of https://github.com/odoo/enterprise/commit/bbcd54519706539d7e2e313118c956200ea70c91 and the implementation of https://github.com/odoo/enterprise/commit/f82ef250560957046be0590f8c2a08039bcc34ca#diff-c502b098cfa2c57bc70c144ae4f0e1fbe1c0116f392ed1a63743f12a51b82084 opw-4669397 Forward-Port-Of: odoo/enterprise#85977 Forward-Port-Of: odoo/enterprise#82324
When a calendar event is linked to an existing sales opportunity, the system now checks whether a meeting reminder already exists before creating a new one. This prevents duplicate activities, reducing clutter and helping sales teams keep opportunity follow-ups accurate.
Original PR description
Prevent scheduling a meeting activity if one already exists when linking a calendar event to an existing opportunity. Also ensures that activities are only created when necessary by checking for existing activities on the opportunity, avoiding redundant calls to `activity_schedule`. Task-4747036
Fixes crashes that happened when restaurant staff cleared product or category filters, or selected a time filter, in the preparation display. This makes the preparation screen more reliable during daily point-of-sale operations.
Original PR description
Steps to reproduce: - Select a category/product filter in the preparation display - Click on "clear all filters" => traceback - Select a time filter => traceback Fix: The first traceback is caused by a refactoring mistake where preparationDisplay was changed by prepDisplay. The second traceback is due to calling a method that doesn't exist, the method is now added in this commit.
This change ensures barcode inventory tests always enable lot and serial number tracking before running. It prevents occasional test failures caused by missing setup, improving confidence in the barcode workflow checks without changing user-facing behavior.
Original PR description
This test assumes the lot/serial setting was enable before the test but it was not guarantied. Meaning the tour steps was sometimes failing on the `lot_id` field being invisible. runbot: 182040
The AI feature now handles property tag and selection fields that have no configured options without causing an error. This prevents interruptions when users click the AI button on incomplete or empty property settings.
Original PR description
Bug === When clicking on the AI button of a property tags, without tags (or on a selection without option / m2x without model), a traceback is raised. Task-4712395
The Barcode app no longer performs an unnecessary readiness count when opening manufacturing operations. This reduces avoidable background work and helps the manufacturing barcode screen load more efficiently without changing user workflows.
Original PR description
Issue ===== In `StockBarcodeKanbanRenderer` `onWillStart`, the python method `get_model_records_count` is called to fetch the number of ready picking or batch picking. The issue is this method is useless for manufacturing order but is called anywway. With this commit, this method is called only when needed. How to reproduce ================ - Install Inventory, Manufacturing and Barcode; - Inventory > Configuration > Settings > check "Batch, Wave & Cluster Transfers"; - Go in Barcode > Operations > Manufacturing: If you inspect calls, you'll see `get_model_records_count` is called.
Repro steps: 1.Install l10n_lu_reports module 2. Go to Reporting > Tax Return > Annual VAT Declaration 3. Click on `Appendix to Operational Expidenture` 4. You will get a traceback error Cause: As of this PR in 18.1: https://github.com/odoo/enterprise/pull/70280 The function `registerCustomComponent` changed in 2 ways: 1. It now expects a module name 2. It registers the component by its name These changes were not applied in l10n_lu_reports module hence causing the error of the comp
Original PR description
Repro steps: 1.Install l10n_lu_reports module 2. Go to Reporting > Tax Return > Annual VAT Declaration 3. Click on `Appendix to Operational Expidenture` 4. You will get a traceback error Cause: As of this PR in 18.1: https://github.com/odoo/enterprise/pull/70280 The function `registerCustomComponent` changed in 2 ways: 1. It now expects a module name 2. It registers the component by its name These changes were not applied in l10n_lu_reports module hence causing the error of the component not being found in the registery This commit solves this issue by applying those changes in l10n_lu_reports module task-4816146 Forward-Port-Of: odoo/enterprise#86284
missing group attribute for ytd_balance_ids (private field) build_error-162969 Forward-Port-Of: odoo/enterprise#83688
Original PR description
missing group attribute for ytd_balance_ids (private field) build_error-162969 Forward-Port-Of: odoo/enterprise#83688
Currently a traceback is occurring when the user tries to generate a payslip report. To reproduce this issue: 1) Install `l10n_in_hr_payroll` and shift to Indian company 2) Create an employee and a bank account in the private information of employee 3) Remove the `Bank Identifier Code` from the `Bank` while creating a bank record 4) Create a new `payslip` record with a `running contract` 5) Confirm the payslip and click the `Create Payment Report` Error:- ``` TypeError: expect
Original PR description
Currently a traceback is occurring when the user tries to generate a payslip report. To reproduce this issue: 1) Install `l10n_in_hr_payroll` and shift to Indian company 2) Create an employee and a bank account in the private information of employee 3) Remove the `Bank Identifier Code` from the `Bank` while creating a bank record 4) Create a new `payslip` record with a `running contract` 5) Confirm the payslip and click the `Create Payment Report` Error:- ``` TypeError: expected string or bytes-like object, got 'bool' ``` As the `bank_bic` is not a required field, user can removes it. if there is no `bank_bic`, it leads to the above traceback from the below line. https://github.com/odoo/enterprise/blob/e2a9442ac33579c9833f65f59cf8341b3c6eafc8/l10n_in_hr_payroll/models/hr_employee.py#L24 sentry-6199042870 Forward-Port-Of: odoo/enterprise#81682
…o switzerland Forward-Port-Of: odoo/enterprise#86183
Original PR description
…o switzerland Forward-Port-Of: odoo/enterprise#86183
Before this commit, if a user attempted to open a spreadsheet they lacked access to or that did not exist, they would get a traceback due to improper error handling. This commit resolves the issue by handling server errors when fetching the spreadsheet and redirecting the user to the documents app. Steps to reproduce: - Create a spreadsheet with Mitchell Admin. - Copy a hyperlink. - In another browser, log in as Marc Demo and paste the hyperlink. - You get a traceback and you don't unders
Original PR description
Before this commit, if a user attempted to open a spreadsheet they lacked access to or that did not exist, they would get a traceback due to improper error handling. This commit resolves the issue by handling server errors when fetching the spreadsheet and redirecting the user to the documents app. Steps to reproduce: - Create a spreadsheet with Mitchell Admin. - Copy a hyperlink. - In another browser, log in as Marc Demo and paste the hyperlink. - You get a traceback and you don't understand what's going on. task-4551255 Forward-Port-Of: odoo/enterprise#81276
### **Version:** saas-18.1 --- ### **Steps to reproduce:** 1. Open a sign template. 2. Make **no changes** to the template. 3. Try to send or reuse the template which has sign_request. 4. A warning appears. --- ### **Issue:** The warning dialog is incorrectly triggered even when the template hasn't been modified. This leads to unnecessary interruption and confusion, especially when the user only intends to reuse or send the existing template without editing it. ---
Original PR description
### **Version:** saas-18.1 --- ### **Steps to reproduce:** 1. Open a sign template. 2. Make **no changes** to the template. 3. Try to send or reuse the template which has sign_request. 4. A warning appears. --- ### **Issue:** The warning dialog is incorrectly triggered even when the template hasn't been modified. This leads to unnecessary interruption and confusion, especially when the user only intends to reuse or send the existing template without editing it. --- ### **Cause:** The `saveTemplate()` method did not verify whether the template had any actual changes. --- ### **Solution:** Added a check to ensure the warning is shown when the user made actual changes to the template. task-4778666 Forward-Port-Of: odoo/enterprise#85335
Currently you are able to select the button to settle customer account/ deposit money even though the config does not have access to a paylater payment method. This will never settle the customer account. Steps to reproduce: ------------------- * Remove the customer account payment method from the config * Open the pos session * Find a customer that has an amount due * Select "Settle due accounts" * Process > Observation: The customer account is never settled. Why the fix: --------
Original PR description
Currently you are able to select the button to settle customer account/ deposit money even though the config does not have access to a paylater payment method. This will never settle the customer account. Steps to reproduce: ------------------- * Remove the customer account payment method from the config * Open the pos session * Find a customer that has an amount due * Select "Settle due accounts" * Process > Observation: The customer account is never settled. Why the fix: ------------ If there is no payment method of type "pay_later" we should not show the button whose purpose is to use such payment method. opw-4488571 Forward-Port-Of: odoo/enterprise#86133 Forward-Port-Of: odoo/enterprise#83995
This commit fixes an issue with the Facebook app and the management of pages. For Facebook to identify the user as able to manage a page, we need to provide another permission to the scope. The permission `business_management` is needed for the API to understand that the user is able to manage its pages. Thus we are adding it to the scope but as an optional permission. Some users may not have this permission set up for their own applications, thus we are adding the system parameter `social.
Original PR description
This commit fixes an issue with the Facebook app and the management of pages. For Facebook to identify the user as able to manage a page, we need to provide another permission to the scope. The permission `business_management` is needed for the API to understand that the user is able to manage its pages. Thus we are adding it to the scope but as an optional permission. Some users may not have this permission set up for their own applications, thus we are adding the system parameter `social.facebook_no_business_management`. This parameter blocks the addition of the permission to the scope if set to any value, if not set it adds the permission to the scope. task-4719790 Forward-Port-Of: odoo/enterprise#86137 Forward-Port-Of: odoo/enterprise#84032
Single app require an additional query. Let us fix runbot, and investigate when we have time (aka: haha). Forward-Port-Of: odoo/enterprise#86116
Original PR description
Single app require an additional query. Let us fix runbot, and investigate when we have time (aka: haha). Forward-Port-Of: odoo/enterprise#86116
Currently, entering only spaces in the Full Name field when signing in auto mode enables the sign button, allowing users to proceed without a valid name. Steps to reproduce: 1. Sign > Create a request 2. Attempt to sign in auto mode with only spaces in the Full Name field 3. Observe that the sign button becomes enabled Cause: The system does not checks for whitespace-only name Solution: Add a validation to disable the sign button if the trimmed name is empty in auto mode. opw-462
Original PR description
Currently, entering only spaces in the Full Name field when signing in auto mode enables the sign button, allowing users to proceed without a valid name. Steps to reproduce: 1. Sign > Create a request 2. Attempt to sign in auto mode with only spaces in the Full Name field 3. Observe that the sign button becomes enabled Cause: The system does not checks for whitespace-only name Solution: Add a validation to disable the sign button if the trimmed name is empty in auto mode. opw-4628577 Forward-Port-Of: odoo/enterprise#85996 Forward-Port-Of: odoo/enterprise#84613
Currently if you make a mistake in the name of your employee and create a payslip, it's name will never be corrected since there is no direct dependency on the field. Forward-Port-Of: odoo/enterprise#86201
Original PR description
Currently if you make a mistake in the name of your employee and create a payslip, it's name will never be corrected since there is no direct dependency on the field. Forward-Port-Of: odoo/enterprise#86201
Summary ----- When you generate an entry via the deferred revenue report, if the original journal item has an analytic distribution at x%, then the lines of the deferred entries have an analytic distribution at -x%. Steps to reproduce ----- 1. In Accounting > Settings, enable the analytic accounting and set the "Generate Revenue Entries" as "Manually & Grouped". 2. Create an invoice with an analytic distribution, a start date and an end date. 3. Generate an entry with the deferred reven
Original PR description
Summary ----- When you generate an entry via the deferred revenue report, if the original journal item has an analytic distribution at x%, then the lines of the deferred entries have an analytic distribution at -x%. Steps to reproduce ----- 1. In Accounting > Settings, enable the analytic accounting and set the "Generate Revenue Entries" as "Manually & Grouped". 2. Create an invoice with an analytic distribution, a start date and an end date. 3. Generate an entry with the deferred revenue report by selecting a period including the created invoice. 4. Observe the negative analytic distribution in the generated entries. opw-4502556 Forward-Port-Of: odoo/enterprise#85039 Forward-Port-Of: odoo/enterprise#82594
When an expense is manually created, the document is sent to the OCR, and the ocr modifies the values of the document. The issue is that the user cannot see that values have been modified and submit the expense with the wrong values (the ones returned by OCR which are not displayed on the form during submission). So to avoid such behaviour, we've made different fixes: - We display the banner that it has been sent to the OCR immediatly (not after a refresh) - We make work the refres
Original PR description
When an expense is manually created, the document is sent to the OCR, and the ocr modifies the values of the document. The issue is that the user cannot see that values have been modified and submit…
When an expense is manually created, the document is sent to the OCR, and the ocr modifies the values of the document. The issue is that the user cannot see that values have been modified and submit the expense with the wrong values (the ones returned by OCR which are not displayed on the form during submission). So to avoid such behaviour, we've made different fixes: - We display the banner that it has been sent to the OCR immediatly (not after a refresh) - We make work the refresh button diplayed in the banner - We don't change the name and/or product of the expense if the name of the expense has been entered manually (to know that we check if the name is the generated one when we create from attachment or not) - We don't modify the status of the expense to draft (if it has been submited before the response of the OCR we don't want modifications) The test have been modified the use case, because to correctly work if the expense is sent to the OCR, it means that there is an attachment linked to this PR. Also when we want to check the completion of the OCR, the attachment name is set as expense name (expense name is required) The issue comes from an internal feedback Forward-Port-Of: odoo/enterprise#84897
pain.001.001.09 is a newer version of the ISO20022 format. Before this commit, we only supported it for SEPA Credit Transfer, using the same selection field as the one allowing to choose national variants of SEPA. This fix only intends to solve the issue for existing customers by using a system parameter that needs to be switched from "False" to "True". A cleaner solution will come in the future, after a refactoring of the payment methods. task-4647016 Forward-Port-Of: odoo/enterprise#86094
Original PR description
pain.001.001.09 is a newer version of the ISO20022 format. Before this commit, we only supported it for SEPA Credit Transfer, using the same selection field as the one allowing to choose national variants of SEPA. This fix only intends to solve the issue for existing customers by using a system parameter that needs to be switched from "False" to "True". A cleaner solution will come in the future, after a refactoring of the payment methods. task-4647016 Forward-Port-Of: odoo/enterprise#86094 Forward-Port-Of: odoo/enterprise#85597