Daily updates from Odoo
Wednesday, January 8, 2025
75 changes
14 changes
Resolved issues and error corrections
Fixes an issue where grouping journal items by Internal Group could cause an error instead of showing results. This makes financial reporting views more reliable for users organizing accounting entries.
Original PR description
In journal items, when grouping by 'Internal Group', a traceback appears due to referencing a non-existent table `account_account` as it has been joined with `account_move_line`. This commit ensures the referenced table is correctly updated in the case of joins. opw-4405281 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
**Steps to reproduce:** - Install point_of_sale and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Create a product with an UNSPSC Category - In POS settings, enable "Use QR code on ticket" option - Open a POS session - Make an orders with the created product (without invoice) - Print the receipt - Close the POS session - Scan the QR code on the receipt with a mobile (Or just open the link retrieved from the QR code in a browser from the computer without being
Original PR description
**Steps to reproduce:** - Install point_of_sale and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Create a product with an UNSPSC Category - In POS settings, enable "Use QR…
**Steps to reproduce:** - Install point_of_sale and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Create a product with an UNSPSC Category - In POS settings, enable "Use QR code on ticket" option - Open a POS session - Make an orders with the created product (without invoice) - Print the receipt - Close the POS session - Scan the QR code on the receipt with a mobile (Or just open the link retrieved from the QR code in a browser from the computer without being logged) - Enter all the required data - Click several times on "Get my invoice" button quickly to generate the invoice **Issue:** Several concurrent processes are executed to create the invoice. In the Mexican localization, an electronic invoice is also generated and signed. However, an error is raised when trying to commit the electronic invoice document from the concurrent processes. These errors prevents the normal flow to continue after the creation of the invoice and the reversal of the POS closing entry is not generated as expected. **Solution:** Disable the "Get my invoice" button when the form is submitted to prevent concurrent calls to the action. opw-4399540 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192016
When the user tries to reset the password, a traceback will appear. Steps to reproduce the error: - Install ``auth_signup`` - Configure "Outgoing mail server" - Now Log out - Click on Sign in > Reset Password > Enter your email > Click on ``Reset Password`` twice Traceback: ``` InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block File "odoo/http.py", line 2365, in __call__ response = request._serve_db() File "odoo/htt
Original PR description
When the user tries to reset the password, a traceback will appear. Steps to reproduce the error: - Install ``auth_signup`` - Configure "Outgoing mail server" - Now Log out - Click on Sign in > Reset…
When the user tries to reset the password, a traceback will appear.
Steps to reproduce the error:
- Install ``auth_signup``
- Configure "Outgoing mail server"
- Now Log out
- Click on Sign in > Reset Password > Enter your email >
Click on ``Reset Password`` twice
Traceback:
```
InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block
File "odoo/http.py", line 2365, in __call__
response = request._serve_db()
File "odoo/http.py", line 1892, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1955, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1922, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2082, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 331, in _dispatch
result.flatten()
File "odoo/http.py", line 1389, in flatten
self.response.append(self.render())
File "odoo/http.py", line 1381, in render
return request.env["ir.ui.view"]._render_template(self.template, self.qcontext)
File "home/odoo/src/enterprise/18.0/web_studio/models/ir_ui_view.py", line 1315, in _render_template
return super(View, self)._render_template(template, values)
File "odoo/addons/base/models/ir_ui_view.py", line 2185, in _render_template
return self.env['ir.qweb']._render(template, values)
File "odoo/tools/profiler.py", line 306, in _tracked_method_render
return method_render(self, template, values, **options)
File "odoo/addons/base/models/ir_qweb.py", line 597, in _render
template_functions, def_name = irQweb._compile(template)
File "odoo/tools/profiler.py", line 314, in _tracked_compile
return method_compile(self, template)
File "odoo/addons/base/models/ir_qweb.py", line 666, in _compile
return self._load_values(base_key_cache, generate_functions)
File "odoo/addons/base/models/ir_qweb.py", line 2524, in _load_values
return get_value()
File "odoo/addons/base/models/ir_qweb.py", line 635, in generate_functions
code, options, def_name = self._generate_code(template)
File "odoo/addons/base/models/ir_qweb.py", line 691, in _generate_code
element, document, ref = self._get_template(template)
File "odoo/addons/base/models/ir_qweb.py", line 822, in _get_template
doc_or_elem, ref = self._load(ref_alias) or (None, None)
File "odoo/addons/base/models/ir_qweb.py", line 859, in _load
view = IrUIView._get(ref)
File "odoo/addons/base/models/ir_ui_view.py", line 2085, in _get
return self.browse(self._get_view_id(view_ref))
File "odoo/addons/base/models/ir_ui_view.py", line 2073, in _get_view_id
view = self.sudo().search([('key', '=', template)], limit=1)
File "odoo/models.py", line 1717, in search
return self.search_fetch(domain, [], offset=offset, limit=limit, order=order)
File "odoo/models.py", line 1749, in search_fetch
return self._fetch_query(query, fields_to_fetch)
File "odoo/models.py", line 4180, in _fetch_query
fetched = self.browse(query)
File "odoo/models.py", line 6154, in browse
if not ids:
File "odoo/tools/query.py", line 261, in __bool__
return bool(self.get_result_ids())
File "odoo/tools/query.py", line 225, in get_result_ids
self._ids = tuple(id_ for id_, in self._env.execute_query(self.select()))
File "odoo/api.py", line 962, in execute_query
self.cr.execute(query)
File "odoo/sql_db.py", line 354, in execute
res = self._obj.execute(query, params)
```
After this commit, user can not click on ``Reset Password`` button multiple times.
sentry-5661309399
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#190833
Forward-Port-Of: odoo/odoo#184862- add check on `employee_id` to the contract domain to exclude templates from the contract count on the stat buttons as it gives misleading info about the real contracts count Task: 4402795 Forward-Port-Of: odoo/odoo#192145
Original PR description
- add check on `employee_id` to the contract domain to exclude templates from the contract count on the stat buttons as it gives misleading info about the real contracts count Task: 4402795 Forward-Port-Of: odoo/odoo#192145
**Steps to reproduce:** - Install l10n_es_edi_tbai - Switch to a Spanish company (e.g. ES Company) - Create an invoice with "Simplified Invoice Partner (ES)" as customer - Confirm the invoice - Process the invoice with "TicketBAI (ES)" service **Issue:** The generated XML has 2 regime keys (02 and 52) for <ClaveRegimenIvaOpTrascendencia> that are not compatible with each other. From the documentation, regime key "52" (for simplified invoices) can only be associated with regime key "51"
Original PR description
**Steps to reproduce:** - Install l10n_es_edi_tbai - Switch to a Spanish company (e.g. ES Company) - Create an invoice with "Simplified Invoice Partner (ES)" as customer - Confirm the invoice - Process the invoice with "TicketBAI (ES)" service **Issue:** The generated XML has 2 regime keys (02 and 52) for <ClaveRegimenIvaOpTrascendencia> that are not compatible with each other. From the documentation, regime key "52" (for simplified invoices) can only be associated with regime key "51", which is not supported for the moment. **Solution:** If the "Simplified Invoice Partner" is used, only the regime key "52" is used. opw-4332052 opw-4355424 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192687 Forward-Port-Of: odoo/odoo#192448
Issue: In the POS settings, even after disabling the preparation display option, it remains enabled after saving. Steps to reproduce: -In POS configuration -Ensure the Pay after option is set to each order. -Disable self ordering and uncheck the preparation display option, save. Explanation: In res_config_settings.py of pos_self_order, https://github.com/odoo/odoo/commit/8ee8010cf67f20c4eb28a334cc943bfedf2dd0d1 added a check to ensure that the preparation display is enabled if self-orde
Original PR description
Issue: In the POS settings, even after disabling the preparation display option, it remains enabled after saving. Steps to reproduce: -In POS configuration -Ensure the Pay after option is set to each order. -Disable self ordering and uncheck the preparation display option, save. Explanation: In res_config_settings.py of pos_self_order, https://github.com/odoo/odoo/commit/8ee8010cf67f20c4eb28a334cc943bfedf2dd0d1 added a check to ensure that the preparation display is enabled if self-ordering is active. However, it was still automatically enabling the preparation display even when self-ordering was disabled. opw-4225668 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183601
If you create a pricelist rule with a discount that has a valid date range, that discount is only applied if the SO was created in that range. Even if it is confirmed within the valid date range. Fix: For website_sale orders we consider the date to be the current time when computing the price. opw-4375643 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191538
Original PR description
If you create a pricelist rule with a discount that has a valid date range, that discount is only applied if the SO was created in that range. Even if it is confirmed within the valid date range. Fix: For website_sale orders we consider the date to be the current time when computing the price. opw-4375643 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191538
Current behavior before PR: When multiple types of lists were selected and the deleteBackward operation was performed, the list type remained unchanged. Desired behavior after PR is merged: When deleteBackward is pressed with multiple types of lists selected, and all selected content is removed, if the anchor node's list item is empty, that list item type will change to match the type of the list where the deleteBackward operation started. task:4187739 Forward-Port-Of: odoo/odoo#191
Original PR description
Current behavior before PR: When multiple types of lists were selected and the deleteBackward operation was performed, the list type remained unchanged. Desired behavior after PR is merged: When deleteBackward is pressed with multiple types of lists selected, and all selected content is removed, if the anchor node's list item is empty, that list item type will change to match the type of the list where the deleteBackward operation started. task:4187739 Forward-Port-Of: odoo/odoo#191915 Forward-Port-Of: odoo/odoo#180687
In Odoo, an issue araised where the "Expected Arrival" date field was overlapped when zooming in. This was due to the button "action_purchase_vendor_delay_report". To adress this, the related button was encapsulated within a <div> element. This change ensure that the layout remains consistent and the elements does not overlap regardless of the zoom level. opw-4316093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187
Original PR description
In Odoo, an issue araised where the "Expected Arrival" date field was overlapped when zooming in. This was due to the button "action_purchase_vendor_delay_report". To adress this, the related button was encapsulated within a <div> element. This change ensure that the layout remains consistent and the elements does not overlap regardless of the zoom level. opw-4316093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187179
Before this commit: pos_stripe doesn't specify a Stripe version when doing its requests. Because of this, Stripe defaults to the API version defined on the Stripe account. This varies from customer to customer, as it is automatically configured to use the latest API version available when the first API request is received. Stripe regularly makes breaking changes to their API: https://docs.stripe.com/changelog?breaking=true for example removing the `charges` attribute: https://docs.stripe.com
Original PR description
Before this commit: pos_stripe doesn't specify a Stripe version when doing its requests. Because of this, Stripe defaults to the API version defined on the Stripe account. This varies from customer to customer, as it is automatically configured to use the latest API version available when the first API request is received. Stripe regularly makes breaking changes to their API: https://docs.stripe.com/changelog?breaking=true for example removing the `charges` attribute: https://docs.stripe.com/changelog/2022-11-15/removes-charges-attribute-paymentintent which we use in pos_stripe. After this commit: We rely on payment_stripe._stripe_make_request which hardcode the API version number. Such change was already started in `pos_stripe.stripe_capture_payment` opw-4375876 Forward-Port-Of: odoo/odoo#192008
Those constraints are blocking the flow for no good reason as we - don't find them in the official documentation - they don't really make sense in the context of a credit note Therefore we decide to remove them for credit notes. They don't seem to be required for the facturx validity. task-4454115 Forward-Port-Of: odoo/odoo#192495
Original PR description
Those constraints are blocking the flow for no good reason as we - don't find them in the official documentation - they don't really make sense in the context of a credit note Therefore we decide to remove them for credit notes. They don't seem to be required for the facturx validity. task-4454115 Forward-Port-Of: odoo/odoo#192495
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount will still include the amount of the downpayment tax line Steps to reproduce (with SA localization installed and SA company): - Create a SO of 1000$ with 15% tax - Make a downpayment of 100$ with 15% tax and confirm - Make the final invoice with downpayment deducted - Confirm and send e-invo
Original PR description
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount…
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount will still include the amount of the downpayment tax line Steps to reproduce (with SA localization installed and SA company): - Create a SO of 1000$ with 15% tax - Make a downpayment of 100$ with 15% tax and confirm - Make the final invoice with downpayment deducted - Confirm and send e-invoice for validation Issue: The invoice is validated, but a warning is logged ``` Invoice was Accepted by ZATCA (with Warnings) The invoice was accepted by ZATCA, but returned warnings. Please, check the response below: BR-CO-17: VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals. BR-S-09: The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is Standard rated shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119). ``` As the warning states the is an issue with the tax computation. When collecting amounts from the final invoice, we should filter out downpayment amounts, but due to the error correction mechanism introduced to account for manual modification of the journal items, the filter is ignored, so we will have the filtered base amount (1000) and the unfiltered tax amount (135 instead of 150) A possible solution is to avoid the error correction when we know we need to filter invoice lines opw-4380798 Forward-Port-Of: odoo/odoo#191867
…wnload Current behavior before PR: When using the "Download logs" button, from the IoT box form view, an Internal Server Error is raised every time. ```py Internal Server Error : Log file configuration is not set ``` Description of the issue/feature this PR addresses: New IoT Box images are missing the default `logfile` parameter in their config. This parameter is required for log downloading, and cannot be left empty. The `logfile` parameter has been removed from the `odoo.conf`
Original PR description
…wnload Current behavior before PR: When using the "Download logs" button, from the IoT box form view, an Internal Server Error is raised every time. ```py Internal Server Error : Log file…
…wnload Current behavior before PR: When using the "Download logs" button, from the IoT box form view, an Internal Server Error is raised every time. ```py Internal Server Error : Log file configuration is not set ``` Description of the issue/feature this PR addresses: New IoT Box images are missing the default `logfile` parameter in their config. This parameter is required for log downloading, and cannot be left empty. The `logfile` parameter has been removed from the `odoo.conf` config file in PR #169633. However, it is still explicitly mentioned as `/var/log/odoo/odoo-server.log` in two other files: https://github.com/odoo/odoo/blob/451a956a22015034b8c35bd0d9a860b78442af7f/addons/hw_posbox_homepage/controllers/homepage.py#L74 and https://github.com/odoo/odoo/blob/451a956a22015034b8c35bd0d9a860b78442af7f/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh#L28 As such, a fallback to the default `/var/log/odoo/odoo-server.log` is added. Desired behavior after PR is merged: The Logs can be downloaded from the IoT box form view without receiving an Internal Server Error. opw-4443593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192867
Issue: - run the `test_account_manager_user_can_create_product` with `account`and its dependencies as the only modules installed - error is given as `product` is not a valid product type (it is added in the `stock` module) Solution: - replace `product` with a product type that is defined in one of the dependencies --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192462
Original PR description
Issue: - run the `test_account_manager_user_can_create_product` with `account`and its dependencies as the only modules installed - error is given as `product` is not a valid product type (it is added in the `stock` module) Solution: - replace `product` with a product type that is defined in one of the dependencies --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192462
14 changes
Resolved issues and error corrections
A payroll-related automated test was adjusted to match a recent change in how notification messages are displayed. This helps keep Belgian payroll accounting checks reliable without changing the employee or payroll user experience.
Original PR description
Purpose of this commit: Following the changes in https://github.com/odoo/odoo/pull/189853, the o-mail-Message-body class is no longer applied to messages with a message_type of 'notification'. This commit updates the corresponding failing tour. task-4291913
Miscellaneous changes
**Steps to reproduce:** - Install accountant - Create an invoice for $1000 - Register a payment of $100 for the invoice - Register a second payment of $200 for the invoice - Create a batch payment with both payments - Validate the batch payment - Create a bank statement with an amount equal to the batch payment (i.e. $300) - Reconcile the statement with the batch payment **Issue:** A UserError is raised stating that the moves are not balanced. One amount is equal to the sum of the 2
Original PR description
**Steps to reproduce:** - Install accountant - Create an invoice for $1000 - Register a payment of $100 for the invoice - Register a second payment of $200 for the invoice - Create a batch payment…
**Steps to reproduce:** - Install accountant - Create an invoice for $1000 - Register a payment of $100 for the invoice - Register a second payment of $200 for the invoice - Create a batch payment with both payments - Validate the batch payment - Create a bank statement with an amount equal to the batch payment (i.e. $300) - Reconcile the statement with the batch payment **Issue:** A UserError is raised stating that the moves are not balanced. One amount is equal to the sum of the 2 payments (i.e. $300), but the other one is equal to the amount of the payment term line of the invoice (i.e. $1000). **Cause:** When reconciling a batch payment, only "amount_currency" field from the invoice lines are used in "_validation_lines_vals". But in this case, the payments are partial and their sum is not equal to the amount of of the invoice lines. **Solution:** Use the amount from each payment of the batch for the reconciliation instead of the amount from the account move lines. opw-4304772 Forward-Port-Of: odoo/enterprise#76678 Forward-Port-Of: odoo/enterprise#76037
- In version 17.3, the activity view mode is defined for both the project_task_action_fsm action and the project_task_action_fsm_map action. However, it has been observed that a record named project_task_action_fsm_map_view_activity also exists. This redundancy causes the project_task_action_fsm action to not be properly configured with the activity view mode, as no corresponding view link or defined view exists. - Additionally, the record project_task_action_fsm_map_view_activity has the sa
Original PR description
- In version 17.3, the activity view mode is defined for both the project_task_action_fsm action and the project_task_action_fsm_map action. However, it has been observed that a record named…
- In version 17.3, the activity view mode is defined for both the project_task_action_fsm action and the project_task_action_fsm_map action. However, it has been observed that a record named project_task_action_fsm_map_view_activity also exists. This redundancy causes the project_task_action_fsm action to not be properly configured with the activity view mode, as no corresponding view link or defined view exists. - Additionally, the record project_task_action_fsm_map_view_activity has the same name, but no corresponding record has been created. To resolve this issue, I have renamed the record to ensure consistency with its definition in the XML file. see upgrade : odoo/upgrade/pull/6838 [Reference](https://github.com/odoo/enterprise/commit/f16c338c2c20a0424ef749bdf35d1b7863347a8e#diff-170f2bf3c03ad1bf01ffe9fd0d8490e6ee7e193f96da6ad8d8babfe6e3867706R471) **Steps to Reproduce:** 1) Create a database in version saas-17.4 and install the industry_fsm module. 2) Check the project_task_action_fsm action and note that the activity view mode and view are not defined. upg-2202488 tbg-1597 Forward-Port-Of: odoo/enterprise#74465
- Adapt ticket_screen, navbar and tour_invoice_previous_order according to UI changes. task-id: 4331054 community PR: https://github.com/odoo/odoo/pull/191929 Forward-Port-Of: odoo/enterprise#76263
Original PR description
- Adapt ticket_screen, navbar and tour_invoice_previous_order according to UI changes. task-id: 4331054 community PR: https://github.com/odoo/odoo/pull/191929 Forward-Port-Of: odoo/enterprise#76263
Enterprise counter-part. task-4432728 Forward-Port-Of: odoo/enterprise#76489
Original PR description
Enterprise counter-part. task-4432728 Forward-Port-Of: odoo/enterprise#76489
Fixing a leftover traceback when there's no IBAN on the partner's bank. Fixed in 17.0. Task [link](https://www.odoo.com/odoo/project/967/tasks/4254966) task-4254966 Forward-Port-Of: odoo/enterprise#76091
Original PR description
Fixing a leftover traceback when there's no IBAN on the partner's bank. Fixed in 17.0. Task [link](https://www.odoo.com/odoo/project/967/tasks/4254966) task-4254966 Forward-Port-Of: odoo/enterprise#76091
Steps to Reproduce the Bug: - Create a storable product “P1”. - Create a Quality Point with the following settings: - Product: P1 - Operation Type: Receipt - Control Per: Product - Type: Pass-Fail - Create a receipt for 10 units of P1. - Mark it as "To Do". - Set the field "Quantity" to 5 units. - Validate. - A wizard to create a backorder is triggered -> Validate the creation. - A wizard for the quality check is triggered. - Pass the quality check. Problem: A backorde
Original PR description
Steps to Reproduce the Bug: - Create a storable product “P1”. - Create a Quality Point with the following settings: - Product: P1 - Operation Type: Receipt - Control Per: Product - Type: Pass-Fail -…
Steps to Reproduce the Bug: - Create a storable product “P1”. - Create a Quality Point with the following settings: - Product: P1 - Operation Type: Receipt - Control Per: Product - Type: Pass-Fail - Create a receipt for 10 units of P1. - Mark it as "To Do". - Set the field "Quantity" to 5 units. - Validate. - A wizard to create a backorder is triggered -> Validate the creation. - A wizard for the quality check is triggered. - Pass the quality check. Problem: A backorder is created, but the first quality check is incorrectly linked to this new picking instead of creating new one, because the `default_quality_check` was set in the context and not cleared. Before this commit, the picking was not validated after confirming the quality check wizard: https://github.com/odoo/enterprise/commit/936e8f84a3a70a26692cc4620f146539bde81a17#diff-56e04e66113804374104e1d1ccf225cb88ab2040c65743e0eb01a970351cdb7fR106-R107 **Opw-4428051** Forward-Port-Of: odoo/enterprise#76338
Steps to reproduce: 1. Open the `Approvals` app. 2. Select `Create RFQs`. 3. Add any product. 4. Try to create a new vendor for the added product. 5. An error will occur. Explanation of the bug: In order to specify a vendor, one needs to specify the vendor data, the price of the product and the quantity of the product sold for that price. So, when the user starts typing to create a new vendor and then presses on `Create`, an error occurs because it can't be determined
Original PR description
Steps to reproduce: 1. Open the `Approvals` app. 2. Select `Create RFQs`. 3. Add any product. 4. Try to create a new vendor for the added product. 5. An error will occur. Explanation of the bug: In order to specify a vendor, one needs to specify the vendor data, the price of the product and the quantity of the product sold for that price. So, when the user starts typing to create a new vendor and then presses on `Create`, an error occurs because it can't be determined which field should be filled with the entered data. i.e. will the entered data be used to fill the vendor data, the product price or the product quantity? This commit fixes the bug by only allowing `Create and Edit` option for the vendor column. task-4337135 Forward-Port-Of: odoo/enterprise#73936
The dialog content and button is off on mobile and the dialog should promote better the sign app. This commit fixes the design to improve the promotion and better render the content on both mobile and desktop. - No more sign up button -> close button redirect to /app/sign if user is not connected - Close button is always secondary - Reviewed wording and design task-4434783  Forward-Port-Of:
Original PR description
The dialog content and button is off on mobile and the dialog should promote better the sign app. This commit fixes the design to improve the promotion and better render the content on both mobile and desktop. - No more sign up button -> close button redirect to /app/sign if user is not connected - Close button is always secondary - Reviewed wording and design task-4434783  Forward-Port-Of: odoo/enterprise#76552 Forward-Port-Of: odoo/enterprise#76265
When you try to open a non-LU contract while the `l10n_lu_hr_payroll` is installed it raise error as `l10n_lu_meal_voucher_max_value` parameter is not presented in the rule parameter - add `raise_if_not_found=self.country_code == 'LU'` to only raise the error when the contract is LU - add the `or 0` to give a value as it used in the function and None whould raise an error Task: 4420371 Forward-Port-Of: odoo/enterprise#76242
Original PR description
When you try to open a non-LU contract while the `l10n_lu_hr_payroll` is installed it raise error as `l10n_lu_meal_voucher_max_value` parameter is not presented in the rule parameter - add `raise_if_not_found=self.country_code == 'LU'` to only raise the error when the contract is LU - add the `or 0` to give a value as it used in the function and None whould raise an error Task: 4420371 Forward-Port-Of: odoo/enterprise#76242
To reproduce: - Create a BOM for product P with: 1x component A (untracked) consumed in operation OP1 1x component B (lot tracked) consumed in operation OP1 operation OP1 - Create an MO for product P x 1 - Open shop floor, open component A move, set qty to 5 and save - Open shop floor, open component B move, set qty to 3 and save Current behaviour: - compo A move not striked through - compo B move shows 4/1 units Expected behaviour: - compo A move striked through - compo B
Original PR description
To reproduce: - Create a BOM for product P with: 1x component A (untracked) consumed in operation OP1 1x component B (lot tracked) consumed in operation OP1 operation OP1 - Create an MO for product P x 1 - Open shop floor, open component A move, set qty to 5 and save - Open shop floor, open component B move, set qty to 3 and save Current behaviour: - compo A move not striked through - compo B move shows 4/1 units Expected behaviour: - compo A move striked through - compo B move shows 3/1 units Forward-Port-Of: odoo/enterprise#76453
When adding a column that is not in the query result in the partner ledger, such as `amount_residual` for example, we get an ugly traceback when unfolding a partner. With this commit, we raise an UserError instead. opw-4416369 Forward-Port-Of: odoo/enterprise#76521 Forward-Port-Of: odoo/enterprise#76284
Original PR description
When adding a column that is not in the query result in the partner ledger, such as `amount_residual` for example, we get an ugly traceback when unfolding a partner. With this commit, we raise an UserError instead. opw-4416369 Forward-Port-Of: odoo/enterprise#76521 Forward-Port-Of: odoo/enterprise#76284
Steps to reproduce: ------------------- - Install sale_subscription and inventory. - Create a subscription product. - Log in as a non-Sales user (e.g., Inventory user). - Access the product list in Kanban view.(from stock) Issue: ------- Non-Sales users encounter an AccessError when the Kanban view attempts to read product_subscription_pricing_ids. This is due to: - "record.product_subscription_pricing_ids.raw_value.length" Attempted to be computed even if the user does not h
Original PR description
Steps to reproduce: ------------------- - Install sale_subscription and inventory. - Create a subscription product. - Log in as a non-Sales user (e.g., Inventory user). - Access the product list in Kanban view.(from stock) Issue: ------- Non-Sales users encounter an AccessError when the Kanban view attempts to read product_subscription_pricing_ids. This is due to: - "record.product_subscription_pricing_ids.raw_value.length" Attempted to be computed even if the user does not have the access rights. Fix: ----- Updated the Kanban view to conditionally render subscription pricing fields only for users in the Sales group. opw-4404190 Forward-Port-Of: odoo/enterprise#75677
This error occurs when the user enters an ``End Date`` that is one day earlier than the ``Start Date``(e.g. Start Date: '25/12/2024' and End Date: '24/12/2024'). Steps to reproduce: --- - Install the ``account_budget`` module - Create a new budget, fill in all required fields, and add a line - ``Start Date: '25/12/2024' and End Date: '24/12/2024'`` Traceback: --- ``ZeroDivisionError: float division by zero`` At [1], this error occurs because when the ``End Date`` is set to one day
Original PR description
This error occurs when the user enters an ``End Date`` that is one day earlier than the ``Start Date``(e.g. Start Date: '25/12/2024' and End Date: '24/12/2024'). Steps to reproduce: --- - Install the ``account_budget`` module - Create a new budget, fill in all required fields, and add a line - ``Start Date: '25/12/2024' and End Date: '24/12/2024'`` Traceback: --- ``ZeroDivisionError: float division by zero`` At [1], this error occurs because when the ``End Date`` is set to one day before the ``Start Date``, the ``line_timedelta`` becomes zero. As a result, the denominator evaluates to zero. [1]- https://github.com/odoo/enterprise/blob/3cfb6517220ae252d633bb9debc5010a0f14efbe/account_budget/models/budget_line.py#L77-L79 This commit resolves the error by ensuring zero should not be in the denominator. sentry-6174377667 Forward-Port-Of: odoo/enterprise#76176
45 changes
Enhancements to existing features
Demo company records across many country localization modules are now consistently identified as companies. This improves the reliability of sample data used for testing, demonstrations, and onboarding in localized Odoo setups.
Original PR description
Set the field "is_company" to True on each loca demo companies. Backport of https://github.com/odoo/odoo/pull/190699 task-4310530
The HSN code field now appears immediately after the product field in POS order lines. This makes it easier for users handling Indian localization workflows to review product tax classification details in context.
Original PR description
In this commit: === - Move `l10n_in_hsn_code` field in the order lines view to appear after the `product_id` field. task-4432432
Resolved issues and error corrections
The push-to-talk sound effects in Discuss calls are now much quieter. Users can still hear when push-to-talk is turned on or off, but the sounds should no longer be distracting during conversations.
Original PR description
Before this commit, when using push-to-talk during discuss call, the sound effect from press and release of ptt was too loud. This commit reduces the volume drastically, so this can still be heard but it's low enough to not be distracting. Before https://github.com/user-attachments/assets/af330e28-4351-44ab-a1df-46730b658379 After https://github.com/user-attachments/assets/77e34eec-6099-4172-b1b5-f407122bd1ca
Users can now close the “Turn on notifications” suggestion in the messaging menu when they do not want to act on it. This reduces repeated prompts while leaving browser notification permissions unchanged, so users can still manage them later in browser settings.
Original PR description
This commit adds a "X" next to "Turn on notifications" to quickly dismiss the suggestion to enable push notifications. Note that this keeps the push permission to "Ask", as it cannot be changed programmatically. So if the user wants to change the push permissions, it should be manually changed to "Allow" or "Denied" from browser settings or should clear the local storage content in order to display "Turn on notifications" in messaging menu again. Task-4446924 Before  After 
This fixes cases where accounting entry names could appear or disappear incorrectly after the dynamic placeholder feature was introduced. It ensures existing databases behave consistently even if their form views were not manually updated, reducing confusion for accounting users.
Original PR description
Description of the issue this commit addresses: Since the deployment of the new dynamic placeholder feature for move names, the code has been deployed on stable versions starting from 18.0 but the views are still only updated if the user manually does it meaning that moves the account move form view might have a unwanted behavior since the lack of change in the view while the code was updated will show the name when we don't want to and the other way around too in some cases. --- Desired behavior after this commit is merged: This commit modifies the get_view of the account.move model to make sure the invisible attribute of the name is correctly set. --- no task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The first "Record created" message in the chatter now lines up correctly with its header and other note-style messages. This fixes a small visual inconsistency, making the activity history look cleaner and more polished.
Original PR description
Before this commit, the "Record created" message, shown as the very 1st message of chatter, had some horizontal start padding in text content. This was unaligned with header and looks off. This was…
Before this commit, the "Record created" message, shown as the very 1st message of chatter, had some horizontal start padding in text content. This was unaligned with header and looks off. This was happening because the message looks like a logged note, but it didn't have the `.o-note` modifier class to put the appropriate padding for the body of message with such a look. Due to the missing `.o-note` classname, this was assuming the style was the one with a bubble around, which needs extra padding, hence the problematic padding. This commit fixes the issue by adding `.o-note` in classname of such message notification that looks like a logged note, so that the padding matches the one with logged note. task-4291913 Before / After <img width="245" alt="Screenshot 2025-01-08 at 12 51 17" src="https://github.com/user-attachments/assets/8e388a88-705f-4c19-a6ec-d2168f1e6e56" /> <img width="243" alt="Screenshot 2025-01-08 at 12 50 48" src="https://github.com/user-attachments/assets/092b1508-d663-4336-900a-b55875437c05" />
Recruitment users can now see newly uploaded attachments in candidate and application records without manually refreshing the page. This makes reviewing applicant documents smoother and reduces confusion after uploads.
Original PR description
If we upload the attachments on the application or candidate, We need to refresh to see the preview of the attachments. In this PR, we've added the reload_on_attachment attribute to the chatter, which helps us preview the attachments. Task-4414529
This fix ensures that when a customer is selected in Point of Sale, they reliably appear at the top of the customer list across browsers. It removes an inconsistency where Firefox could show the selected customer elsewhere in the list, making cashier workflows more predictable.
Original PR description
Steps to reproduce: 1.Install ``point_of_sale`` in odoo 18.0 2.Open point of sale session and left side there is customer button select the customer. 3.selected partner will show at the top of all partner in chrome but in firefox browser selected partner is not showing at top For fixing it making sorting(compartor) more acurate. opw-4408218 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The HTML editor now handles cases where an external link cannot produce preview information, such as an invalid or placeholder URL. This prevents error messages in the logs and keeps email template editing smoother for users.
Original PR description
Currently, a traceback occurs when the user tries to preview an external link. Steps to produce: 1) Create an email template and add any text in content. 2) Convert text to a URL with a random URL…
Currently, a traceback occurs when the user tries to preview an external link.
Steps to produce:
1) Create an email template and add any text in content.
2) Convert text to a URL with a random URL like 'test'
3) error will occur in log
Error:-
```
TypeError: 'bool' object is not subscriptable
File "odoo/http.py", line 2366, in __call__
response = request._serve_db()
File "odoo/http.py", line 1894, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1957, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1924, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2171, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 329, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/html_editor/controllers/main.py", line 564, in link_preview_metadata
if link_preview_data['og_description']:
```
This error occurs in the following lines when the link_preview_data value is False, leading to the traceback:
https://github.com/odoo/odoo/blob/36e4b6f93bf2123557947e910e1be651c5357319/addons/html_editor/controllers/main.py#L563-L564
The get_link_preview_from_url method may return False from multiple places.
https://github.com/odoo/odoo/blob/36e4b6f93bf2123557947e910e1be651c5357319/addons/mail/tools/link_preview.py#L30-L35
Therefore, an additional check is needed to verify the value of `link_preview_data` before accessing its value.
Adding this extra check will make the code more robust and prevent the
unnecessary tracebacks from occurring.
sentry-6199384889The icon picker search now finds matching icons even when users type names in uppercase. This removes a small source of friction when selecting icons and makes search behavior more consistent.
Original PR description
Description of the issue this PR addresses: Current behavior before PR: Searching for icon names in uppercase was not working. Desired behavior after PR is merged: Icon search now works correctly when names are entered in uppercase. task-4452824 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix keeps the Filipino language setting consistent between the browser and Odoo servers. It prevents crashes caused when browsers automatically rename the Tagalog locale to Filipino using a different code that the server does not expect.
Original PR description
Filipino is a standardized version of Tagalog that was created to be the national language of the Philippines. In Odoo, we use the "tl" locale to refer to Filipino, but this locale is considered "legacy" by standards bodies such as the Unicode Consortium. This is the reason why some APIs, such as the Intl API in the browser, treat "tl" as "fil" and even implicitly replace the former with the latter. This is a problem in Odoo, since the locale we use on the server side is still tl_PH, which leads to crashes when a converted Filipino locale (fil_PH) is sent to the server. While waiting for a better solution, this commit forces the tl locale on the client side. opw-4426799
Fixed an issue where the comments popover could fail to appear when it should open at the very top of the page. This helps users reliably view and interact with comments in Knowledge without losing access due to screen position.
Original PR description
Purpose: -------- The comments popover is not displayed when the computed popover top value is "0". This issue arises from incorrectly using this value as a boolean condition, whereas "0" is an acceptable top value (= top of the body). To fix this issue, we now check if the popover's top is undefined instead of using it as a boolean. Task-4461321
Saving a supplier bill with CIS taxes no longer causes an error when no partner has been selected. This prevents an interruption during bill entry and lets users continue working normally while completing bill details.
Original PR description
Steps to reproduce: 1. Install l10n_uk_reports_cis 2. Open a new bill 3. Set the 20% G tax on a new line. 4. Save without assigning a partner. 5. A traceback is raised. --- Description of the issue this commit addresses: In the l10n_uk_reports_cis module, a tax validation system is implemented that reaches into move.partner_id to check the chosen taxes validity. This causes an issue when the move doesn't have a partner yet, raising a traceback. --- Desired behavior after this commit is merged: No traceback is raised. --- Note on the fix: An additionnal check verifying the move has a partner is done before reaching into its values. The error happens inside the lambda line 20 and is **not** modified in the PR, the next line is modified to remove the `move.partner_id and ` that became redundant with the ` or not move.partner_id` condition added to the initial `if`. --- opw-4365356
Salary configurator benefit options now stay in the order set by the business instead of being automatically alphabetized. This helps users compare choices, such as cars sorted by cost, in the intended sequence.
Original PR description
Since the Select owl componenent is used to display the benefits values, the 'options' of the select are displayed alphabetically. It is caused by the default value to 'true' for the autoSort attribute of the component. As we give the data in a specific order to the select in salary cofigurator we don't want the JS to re-order it. e.g.: the cars are sorted by cost and we don't wan't it in the alphabetical order.
Fixed an issue that could stop Monster recruitment data from being prepared when checking flexible working hours. This helps ensure job posting integrations continue without interruption.
Original PR description
An error occurs while preparing monster data because in code mistakenly uses the attribute name 'is_flexible_hours' instead of the correct attribute name 'flexible_hours' to check the flexible hours of the resource calendar. `AttributeError: 'resource.calendar' object has no attribute 'is_flexible_hours'` To resolve this issue, Give a valid attribute name 'flexible_hours' instead of 'is_flexible_hours'. Sentry-6150854320
The Documents app now hides action menu options that cannot be used on locked documents. This prevents users from selecting actions that would fail or have no effect, reducing confusion and unnecessary errors.
Original PR description
This commit fix the visibility of the buttons in the action dropdown menu where actions were still visible for a locked document altough they threw an error or didn't do anything. Task-4255243
Odoo Studio now shows fields that are intentionally hidden in the list of existing fields, so users can drag them back into a view when needed. This fixes a limitation where hidden fields used for background data or view logic were unavailable for reuse, making view customization more practical.
Original PR description
Before this commit, fields that were always invisible (with an `invisible` attribute equals to True|1) were not listed in the Sidebar's "Existing Fields", and were not available for drag/drop. This was rather impractical as such field may be in the arch just to have their data loaded, not really displayed. Moreover, since odoo/odoo@6f06420e4a9443c52dc0cb427f8f55eb4aecabce, fields may be added in the view automatically based on whether their value will be used in some condition or context elsewhere in the view. After this commit, always invisible fields are always proposed for addition in the view. opw-4450351
Miscellaneous changes
When printing long product names with long variants, the lines were overlapping. Steps to reproduce: ------------------- * Create a product with some long variant names * Setup a kitchen printer * Add the order to a PoS order * Print the order on the kitchen printer > Observation: The product name and variant name are overlapping Before:  After:  After:  opw-4414311 Forward-Port-Of: odoo/odoo#192690 Forward-Port-Of: odoo/odoo#192544
Those constraints are blocking the flow for no good reason as we - don't find them in the official documentation - they don't really make sense in the context of a credit note Therefore we decide to remove them for credit notes. They don't seem to be required for the facturx validity. task-4454115 Forward-Port-Of: odoo/odoo#192495
Original PR description
Those constraints are blocking the flow for no good reason as we - don't find them in the official documentation - they don't really make sense in the context of a credit note Therefore we decide to remove them for credit notes. They don't seem to be required for the facturx validity. task-4454115 Forward-Port-Of: odoo/odoo#192495
Related to https://github.com/odoo/enterprise/pull/73927 Forward-Port-Of: odoo/odoo#188066 Forward-Port-Of: odoo/odoo#187430
Original PR description
Related to https://github.com/odoo/enterprise/pull/73927 Forward-Port-Of: odoo/odoo#188066 Forward-Port-Of: odoo/odoo#187430
Since https://github.com/odoo/odoo/pull/169691, the user volumes were not correctly searched from the settings, this commit fixes this issue. Forward-Port-Of: odoo/odoo#192456
Original PR description
Since https://github.com/odoo/odoo/pull/169691, the user volumes were not correctly searched from the settings, this commit fixes this issue. Forward-Port-Of: odoo/odoo#192456
Currently, ff a popover uses a component that needs to load data, click away before the component is mounted will not make the popover close. Here we fix that by adding the listeners at setup (and removing them at destroy). Forward-Port-Of: odoo/odoo#191240 Forward-Port-Of: odoo/odoo#191135
Original PR description
Currently, ff a popover uses a component that needs to load data, click away before the component is mounted will not make the popover close. Here we fix that by adding the listeners at setup (and removing them at destroy). Forward-Port-Of: odoo/odoo#191240 Forward-Port-Of: odoo/odoo#191135
**Current behaviour before PR:** In website, when trying to apply color or any style on a link from toolbar whole link gets selected. This happens because in `wysiwyg.js` `destroyLinkTools` method gets called when user clicks on toolbar to apply color. **Behaviour after PR:** Now, any style can be applied on a link without selecting whole link. task-4072867 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#1
Original PR description
**Current behaviour before PR:** In website, when trying to apply color or any style on a link from toolbar whole link gets selected. This happens because in `wysiwyg.js` `destroyLinkTools` method gets called when user clicks on toolbar to apply color. **Behaviour after PR:** Now, any style can be applied on a link without selecting whole link. task-4072867 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192297 Forward-Port-Of: odoo/odoo#180616
Before this commit: pos_stripe doesn't specify a Stripe version when doing its requests. Because of this, Stripe defaults to the API version defined on the Stripe account. This varies from customer to customer, as it is automatically configured to use the latest API version available when the first API request is received. Stripe regularly makes breaking changes to their API: https://docs.stripe.com/changelog?breaking=true for example removing the `charges` attribute: https://docs.stripe.com
Original PR description
Before this commit: pos_stripe doesn't specify a Stripe version when doing its requests. Because of this, Stripe defaults to the API version defined on the Stripe account. This varies from customer to customer, as it is automatically configured to use the latest API version available when the first API request is received. Stripe regularly makes breaking changes to their API: https://docs.stripe.com/changelog?breaking=true for example removing the `charges` attribute: https://docs.stripe.com/changelog/2022-11-15/removes-charges-attribute-paymentintent which we use in pos_stripe. After this commit: We rely on payment_stripe._stripe_make_request which hardcode the API version number. Such change was already started in `pos_stripe.stripe_capture_payment` opw-4375876 Forward-Port-Of: odoo/odoo#192008
There are some terms that are defined in `delivery` module but are not translated when you see them on the website. This happens because these strings are defined in the `delivery` module, which is not a frontend module. This commit redefines those strings in the `website_sale` module, which is a frontend module. Task-4328208 OPW-4403072 OPW-4326840 Forward-Port-Of: odoo/odoo#192102
Original PR description
There are some terms that are defined in `delivery` module but are not translated when you see them on the website. This happens because these strings are defined in the `delivery` module, which is not a frontend module. This commit redefines those strings in the `website_sale` module, which is a frontend module. Task-4328208 OPW-4403072 OPW-4326840 Forward-Port-Of: odoo/odoo#192102
In Odoo, an issue araised where the "Expected Arrival" date field was overlapped when zooming in. This was due to the button "action_purchase_vendor_delay_report". To adress this, the related button was encapsulated within a <div> element. This change ensure that the layout remains consistent and the elements does not overlap regardless of the zoom level. opw-4316093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187
Original PR description
In Odoo, an issue araised where the "Expected Arrival" date field was overlapped when zooming in. This was due to the button "action_purchase_vendor_delay_report". To adress this, the related button was encapsulated within a <div> element. This change ensure that the layout remains consistent and the elements does not overlap regardless of the zoom level. opw-4316093 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187179
**Problem**: When selecting all content (`Ctrl+A`) in an empty editable area, the selection includes only a `<br>` element. This causes issues when interacting with non-selectable content inside the selection, leading to unexpected behavior. **Solution**: If the selection contains only on `br` element, reset the selection on click to avoid inconsistent states. **Steps to Reproduce**: 1. Open the editor. 2. Press `Ctrl+A` to select all. 3. Click anywhere within the editable area to hid
Original PR description
**Problem**: When selecting all content (`Ctrl+A`) in an empty editable area, the selection includes only a `<br>` element. This causes issues when interacting with non-selectable content inside the selection, leading to unexpected behavior. **Solution**: If the selection contains only on `br` element, reset the selection on click to avoid inconsistent states. **Steps to Reproduce**: 1. Open the editor. 2. Press `Ctrl+A` to select all. 3. Click anywhere within the editable area to hide the toolbar. 4. Observe that the toolbar remains visible, and the selection state does not update. opw-4438513 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192084
[FIX] portal, point_of_sale: return new instance of fields list This commit contains a backport of https://github.com/odoo/odoo/commit/1e39d5c2e5f4d4c77b0190ea1eb4781e2143657f to fix the following issue: In the l10n_mx localization, the field RFC(VAT) and zipcode should be required to prevent the field from being defaulted to "public en general". How to reproduce: -Install l10n_mx -Go to POS and sell an article to generate the ticket -Go to the POS portal to request an invoice -Fill
Original PR description
[FIX] portal, point_of_sale: return new instance of fields list This commit contains a backport of https://github.com/odoo/odoo/commit/1e39d5c2e5f4d4c77b0190ea1eb4781e2143657f to fix the following issue: In the l10n_mx localization, the field RFC(VAT) and zipcode should be required to prevent the field from being defaulted to "public en general". How to reproduce: -Install l10n_mx -Go to POS and sell an article to generate the ticket -Go to the POS portal to request an invoice -Fill all the fields except for RFC -Odoo does not request this field and allows the client to submit the information -The invoice will be generated to "public en general" and not to the client requesting the invoice (Expected when there is no RFC) opw-4332357 enterprise pr: https://github.com/odoo/enterprise/pull/74072 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192167 Forward-Port-Of: odoo/odoo#187674
Before this commit, it was possible to load pricelists that were not available in the PoS. opw-4423566 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191560
Original PR description
Before this commit, it was possible to load pricelists that were not available in the PoS. opw-4423566 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191560
Current behavior before PR: - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. Desired behavior after PR is merged: - Clicking on a link near the edge of the mailing template now ensures that the link popover opens correctly within the body of the mailing template. task-4237091 Forward-Port-Of: odoo/odoo#187873
Original PR description
Current behavior before PR: - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. Desired behavior after PR is merged: - Clicking on a link near the edge of the mailing template now ensures that the link popover opens correctly within the body of the mailing template. task-4237091 Forward-Port-Of: odoo/odoo#187873
- add check on `employee_id` to the contract domain to exclude templates from the contract count on the stat buttons as it gives misleading info about the real contracts count Task: 4402795 Forward-Port-Of: odoo/odoo#192145
Original PR description
- add check on `employee_id` to the contract domain to exclude templates from the contract count on the stat buttons as it gives misleading info about the real contracts count Task: 4402795 Forward-Port-Of: odoo/odoo#192145
Step to Reproduce: 1. Enter the edit mode of Homepage 2. click on drop zone area having "Drag building blocks here" message. -> sometime the "drag and drop a building block here" unexpectedly moves up. which should stay as it is. Before this commit, all `<p>` and `<div>` elements were considered as potential PowerBox elements, making them editable using the `/` command. This occurred even when the elements had the `o_not_editable` class or `contenteditable="false"` attribute. For
Original PR description
Step to Reproduce: 1. Enter the edit mode of Homepage 2. click on drop zone area having "Drag building blocks here" message. -> sometime the "drag and drop a building block here" unexpectedly moves…
Step to Reproduce: 1. Enter the edit mode of Homepage 2. click on drop zone area having "Drag building blocks here" message. -> sometime the "drag and drop a building block here" unexpectedly moves up. which should stay as it is. Before this commit, all `<p>` and `<div>` elements were considered as potential PowerBox elements, making them editable using the `/` command. This occurred even when the elements had the `o_not_editable` class or `contenteditable="false"` attribute. For example, in the case of the `#wrap` element, it has the `o_editable` class along with `contenteditable="false"`. This caused PowerBox element or placeholders to be added unnecessarily, even though no text editing was allowed. In this commit, we adapted the solution merged[1] in master and specify the selector to make sure that no command hint shown on div while having `o_not_editable` class or `contenteditable=false` attribute. [1] https://github.com/odoo/odoo/commit/302250cdde936a47048b8f3403e024e2e617ace7 Before this PR :  Desired behavior after PR is merged: No hint/placeholder is added to contenteditable false block, resulting in data editor message to stay on its place. task-3443430 Forward-Port-Of: odoo/odoo#192012 Forward-Port-Of: odoo/odoo#153001
When the user tries to reset the password, a traceback will appear. Steps to reproduce the error: - Install ``auth_signup`` - Configure "Outgoing mail server" - Now Log out - Click on Sign in > Reset Password > Enter your email > Click on ``Reset Password`` twice Traceback: ``` InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block File "odoo/http.py", line 2365, in __call__ response = request._serve_db() File "odoo/htt
Original PR description
When the user tries to reset the password, a traceback will appear. Steps to reproduce the error: - Install ``auth_signup`` - Configure "Outgoing mail server" - Now Log out - Click on Sign in > Reset…
When the user tries to reset the password, a traceback will appear.
Steps to reproduce the error:
- Install ``auth_signup``
- Configure "Outgoing mail server"
- Now Log out
- Click on Sign in > Reset Password > Enter your email >
Click on ``Reset Password`` twice
Traceback:
```
InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block
File "odoo/http.py", line 2365, in __call__
response = request._serve_db()
File "odoo/http.py", line 1892, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1955, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1922, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2082, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 331, in _dispatch
result.flatten()
File "odoo/http.py", line 1389, in flatten
self.response.append(self.render())
File "odoo/http.py", line 1381, in render
return request.env["ir.ui.view"]._render_template(self.template, self.qcontext)
File "home/odoo/src/enterprise/18.0/web_studio/models/ir_ui_view.py", line 1315, in _render_template
return super(View, self)._render_template(template, values)
File "odoo/addons/base/models/ir_ui_view.py", line 2185, in _render_template
return self.env['ir.qweb']._render(template, values)
File "odoo/tools/profiler.py", line 306, in _tracked_method_render
return method_render(self, template, values, **options)
File "odoo/addons/base/models/ir_qweb.py", line 597, in _render
template_functions, def_name = irQweb._compile(template)
File "odoo/tools/profiler.py", line 314, in _tracked_compile
return method_compile(self, template)
File "odoo/addons/base/models/ir_qweb.py", line 666, in _compile
return self._load_values(base_key_cache, generate_functions)
File "odoo/addons/base/models/ir_qweb.py", line 2524, in _load_values
return get_value()
File "odoo/addons/base/models/ir_qweb.py", line 635, in generate_functions
code, options, def_name = self._generate_code(template)
File "odoo/addons/base/models/ir_qweb.py", line 691, in _generate_code
element, document, ref = self._get_template(template)
File "odoo/addons/base/models/ir_qweb.py", line 822, in _get_template
doc_or_elem, ref = self._load(ref_alias) or (None, None)
File "odoo/addons/base/models/ir_qweb.py", line 859, in _load
view = IrUIView._get(ref)
File "odoo/addons/base/models/ir_ui_view.py", line 2085, in _get
return self.browse(self._get_view_id(view_ref))
File "odoo/addons/base/models/ir_ui_view.py", line 2073, in _get_view_id
view = self.sudo().search([('key', '=', template)], limit=1)
File "odoo/models.py", line 1717, in search
return self.search_fetch(domain, [], offset=offset, limit=limit, order=order)
File "odoo/models.py", line 1749, in search_fetch
return self._fetch_query(query, fields_to_fetch)
File "odoo/models.py", line 4180, in _fetch_query
fetched = self.browse(query)
File "odoo/models.py", line 6154, in browse
if not ids:
File "odoo/tools/query.py", line 261, in __bool__
return bool(self.get_result_ids())
File "odoo/tools/query.py", line 225, in get_result_ids
self._ids = tuple(id_ for id_, in self._env.execute_query(self.select()))
File "odoo/api.py", line 962, in execute_query
self.cr.execute(query)
File "odoo/sql_db.py", line 354, in execute
res = self._obj.execute(query, params)
```
After this commit, user can not click on ``Reset Password`` button multiple times.
sentry-5661309399
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#190833
Forward-Port-Of: odoo/odoo#184862In the template, /pos/ticket is concatenated to the base_url. But because /pos/ticket is a normal string inside the template, it is translated. ticket-4447566 Forward-Port-Of: odoo/odoo#192308
Original PR description
In the template, /pos/ticket is concatenated to the base_url. But because /pos/ticket is a normal string inside the template, it is translated. ticket-4447566 Forward-Port-Of: odoo/odoo#192308
**Steps to reproduce:** - Install hr_expense - Create 2 alias domains - Go to "Settings / Technical / Email / Aliases" - Check the values for Expense model - Go to Expenses settings - Change the prefix and the domain of the alias - Save - Go to "Settings / Technical / Email / Aliases" - Check the values for Expense model again **Issue:** The prefix has correctly been modified but not the domain. The domain from Expenses settings and the domain of the Expense alias are different.
Original PR description
**Steps to reproduce:** - Install hr_expense - Create 2 alias domains - Go to "Settings / Technical / Email / Aliases" - Check the values for Expense model - Go to Expenses settings - Change the…
**Steps to reproduce:** - Install hr_expense - Create 2 alias domains - Go to "Settings / Technical / Email / Aliases" - Check the values for Expense model - Go to Expenses settings - Change the prefix and the domain of the alias - Save - Go to "Settings / Technical / Email / Aliases" - Check the values for Expense model again **Issue:** The prefix has correctly been modified but not the domain. The domain from Expenses settings and the domain of the Expense alias are different. **Cause:** The domain field in Expenses settings is in fact the Email Domain (alias_domain_id) of the company, which makes no sense to combine the prefix and the domain from 2 different sources. **Solution:** Add a non-stored computed field to map the domain displayed in Expenses settings with the domain of the Expense alias. Not great in stable, but there is no other way if we want to keep the option. opw-4293936 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192571 Forward-Port-Of: odoo/odoo#190252
**Steps to reproduce:** - Install point_of_sale and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Create a product with an UNSPSC Category - In POS settings, enable "Use QR code on ticket" option - Open a POS session - Make an orders with the created product (without invoice) - Print the receipt - Close the POS session - Scan the QR code on the receipt with a mobile (Or just open the link retrieved from the QR code in a browser from the computer without being
Original PR description
**Steps to reproduce:** - Install point_of_sale and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Create a product with an UNSPSC Category - In POS settings, enable "Use QR…
**Steps to reproduce:** - Install point_of_sale and l10n_mx_edi - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Create a product with an UNSPSC Category - In POS settings, enable "Use QR code on ticket" option - Open a POS session - Make an orders with the created product (without invoice) - Print the receipt - Close the POS session - Scan the QR code on the receipt with a mobile (Or just open the link retrieved from the QR code in a browser from the computer without being logged) - Enter all the required data - Click several times on "Get my invoice" button quickly to generate the invoice **Issue:** Several concurrent processes are executed to create the invoice. In the Mexican localization, an electronic invoice is also generated and signed. However, an error is raised when trying to commit the electronic invoice document from the concurrent processes. These errors prevents the normal flow to continue after the creation of the invoice and the reversal of the POS closing entry is not generated as expected. **Solution:** Disable the "Get my invoice" button when the form is submitted to prevent concurrent calls to the action. opw-4399540 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192016
Description of the issue this PR addresses: Current behavior before PR: Triple-clicking to select text, with a nextSibling set as contenteditable false, would reset the selection to its previous state. Desired behavior after PR is merged: Correct the triple click selection when applying font-size. task-4440354 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192387 Forward-Port-Of: odoo/odoo#192139
Original PR description
Description of the issue this PR addresses: Current behavior before PR: Triple-clicking to select text, with a nextSibling set as contenteditable false, would reset the selection to its previous state. Desired behavior after PR is merged: Correct the triple click selection when applying font-size. task-4440354 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192387 Forward-Port-Of: odoo/odoo#192139
On small displays, starting a new website livechat with an operator that has an `user_livechat_username` crashes when rendering the username. Steps to reproduce ----- 1. Select User Menu Icon > My Profile / Preferences > enter an Online Chat Name 2. On a mobile device or small window, open the livechat on the website 3. Send any new message 4. The following traceback occurs ``` Caused by: TypeError: Cannot read properties of undefined (reading 'channel_type') at get authorName ``
Original PR description
On small displays, starting a new website livechat with an operator that has an `user_livechat_username` crashes when rendering the username.
Steps to reproduce
-----
1. Select User Menu Icon > My Profile / Preferences > enter an Online Chat Name
2. On a mobile device or small window, open the livechat on the website
3. Send any new message
4. The following traceback occurs
```
Caused by: TypeError: Cannot read properties of undefined (reading 'channel_type')
at get authorName
```
Cause
-----
On small displays, `thread` for the default operator message becomes undefined when it is reassigned to the new thread. This causes an error in `get authorName()` when the undefined `thread` is accessed directly to detemine the displayed username.
Solution
-----
Add an optional chain (?) when accessing `this.message.thread` to handle the possible nullish value.
opw-4446208
Backport of odoo/odoo#192605
Forward-Port-Of: odoo/odoo#192739- In version 17.3, the activity view mode is defined for both the project_task_action_fsm action and the project_task_action_fsm_map action. However, it has been observed that a record named project_task_action_fsm_map_view_activity also exists. This redundancy causes the project_task_action_fsm action to not be properly configured with the activity view mode, as no corresponding view link or defined view exists. - Additionally, the record project_task_action_fsm_map_view_activity has the sa
Original PR description
- In version 17.3, the activity view mode is defined for both the project_task_action_fsm action and the project_task_action_fsm_map action. However, it has been observed that a record named…
- In version 17.3, the activity view mode is defined for both the project_task_action_fsm action and the project_task_action_fsm_map action. However, it has been observed that a record named project_task_action_fsm_map_view_activity also exists. This redundancy causes the project_task_action_fsm action to not be properly configured with the activity view mode, as no corresponding view link or defined view exists. - Additionally, the record project_task_action_fsm_map_view_activity has the same name, but no corresponding record has been created. To resolve this issue, I have renamed the record to ensure consistency with its definition in the XML file. see upgrade : odoo/upgrade/pull/6838 [Reference](https://github.com/odoo/enterprise/commit/f16c338c2c20a0424ef749bdf35d1b7863347a8e#diff-170f2bf3c03ad1bf01ffe9fd0d8490e6ee7e193f96da6ad8d8babfe6e3867706R471) **Steps to Reproduce:** 1) Create a database in version saas-17.4 and install the industry_fsm module. 2) Check the project_task_action_fsm action and note that the activity view mode and view are not defined. upg-2202488 tbg-1597 Forward-Port-Of: odoo/enterprise#74465
Related to https://github.com/odoo/odoo/pull/187430 Forward-Port-Of: odoo/enterprise#74280 Forward-Port-Of: odoo/enterprise#73927
Original PR description
Related to https://github.com/odoo/odoo/pull/187430 Forward-Port-Of: odoo/enterprise#74280 Forward-Port-Of: odoo/enterprise#73927
Fixing a leftover traceback when there's no IBAN on the partner's bank. Fixed in 17.0. Task [link](https://www.odoo.com/odoo/project/967/tasks/4254966) task-4254966 Forward-Port-Of: odoo/enterprise#76091
Original PR description
Fixing a leftover traceback when there's no IBAN on the partner's bank. Fixed in 17.0. Task [link](https://www.odoo.com/odoo/project/967/tasks/4254966) task-4254966 Forward-Port-Of: odoo/enterprise#76091
When adding a column that is not in the query result in the partner ledger, such as `amount_residual` for example, we get an ugly traceback when unfolding a partner. With this commit, we raise an UserError instead. opw-4416369 Forward-Port-Of: odoo/enterprise#76521 Forward-Port-Of: odoo/enterprise#76284
Original PR description
When adding a column that is not in the query result in the partner ledger, such as `amount_residual` for example, we get an ugly traceback when unfolding a partner. With this commit, we raise an UserError instead. opw-4416369 Forward-Port-Of: odoo/enterprise#76521 Forward-Port-Of: odoo/enterprise#76284
In GanttModel, we markup html values like it is done in the util function parseServerValue so that is it now possible to use t-out on html field values in the gantt popovers (and possibly elsewhere) and have correct results. Task ID: 4382205 Forward-Port-Of: odoo/enterprise#76625 Forward-Port-Of: odoo/enterprise#76530
Original PR description
In GanttModel, we markup html values like it is done in the util function parseServerValue so that is it now possible to use t-out on html field values in the gantt popovers (and possibly elsewhere) and have correct results. Task ID: 4382205 Forward-Port-Of: odoo/enterprise#76625 Forward-Port-Of: odoo/enterprise#76530
Steps to reproduce: ------------------- - Install sale_subscription and inventory. - Create a subscription product. - Log in as a non-Sales user (e.g., Inventory user). - Access the product list in Kanban view.(from stock) Issue: ------- Non-Sales users encounter an AccessError when the Kanban view attempts to read product_subscription_pricing_ids. This is due to: - "record.product_subscription_pricing_ids.raw_value.length" Attempted to be computed even if the user does not h
Original PR description
Steps to reproduce: ------------------- - Install sale_subscription and inventory. - Create a subscription product. - Log in as a non-Sales user (e.g., Inventory user). - Access the product list in Kanban view.(from stock) Issue: ------- Non-Sales users encounter an AccessError when the Kanban view attempts to read product_subscription_pricing_ids. This is due to: - "record.product_subscription_pricing_ids.raw_value.length" Attempted to be computed even if the user does not have the access rights. Fix: ----- Updated the Kanban view to conditionally render subscription pricing fields only for users in the Sales group. opw-4404190 Forward-Port-Of: odoo/enterprise#75677
This error occurs when the user enters an ``End Date`` that is one day earlier than the ``Start Date``(e.g. Start Date: '25/12/2024' and End Date: '24/12/2024'). Steps to reproduce: --- - Install the ``account_budget`` module - Create a new budget, fill in all required fields, and add a line - ``Start Date: '25/12/2024' and End Date: '24/12/2024'`` Traceback: --- ``ZeroDivisionError: float division by zero`` At [1], this error occurs because when the ``End Date`` is set to one day
Original PR description
This error occurs when the user enters an ``End Date`` that is one day earlier than the ``Start Date``(e.g. Start Date: '25/12/2024' and End Date: '24/12/2024'). Steps to reproduce: --- - Install the ``account_budget`` module - Create a new budget, fill in all required fields, and add a line - ``Start Date: '25/12/2024' and End Date: '24/12/2024'`` Traceback: --- ``ZeroDivisionError: float division by zero`` At [1], this error occurs because when the ``End Date`` is set to one day before the ``Start Date``, the ``line_timedelta`` becomes zero. As a result, the denominator evaluates to zero. [1]- https://github.com/odoo/enterprise/blob/3cfb6517220ae252d633bb9debc5010a0f14efbe/account_budget/models/budget_line.py#L77-L79 This commit resolves the error by ensuring zero should not be in the denominator. sentry-6174377667 Forward-Port-Of: odoo/enterprise#76176
2 changes
Enhancements to existing features
This update enhances the Odoo Enterprise softphone functionality by introducing 'infinite scrolling' within the contacts and recent calls tabs. This allows users to seamlessly browse through their call history without page refreshes, improving efficiency and usability. It's a minor enhancement to the user interface.
Original PR description
Backport of a00faee178b94e455a670fb59a3c77c3827b3b49
Resolved issues and error corrections
This update resolves a problem where the system was incorrectly validating RUT numbers during invoice sending in the Uruguay localization module (l10n_uy_edi). This change prevents unnecessary validation, streamlining the invoice process and improving efficiency. It ensures invoices are processed correctly without this redundant check.