Daily updates from Odoo
Navigate
Branch
Wednesday, January 8, 2025
91 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
17 changes
Enhancements to existing features
Internal users can now open the Documents app directly from the main menu, even if they are not members of the Documents user group. This makes personal HR-related documents easier to find and access without changing broader document permissions.
Original PR description
The `documents_hr` addon provides access to Documents app from the internal user profile. But only members of the documents_user group can access it from the root menu. This commit adds to `documents_hr` a new Documents root menu for basic users, giving them another way to access their documents. task-3872372
Resolved issues and error corrections
Amazon FBA orders containing products tracked by serial or lot number can now be synchronized successfully. The system uses the serial number provided by Amazon before confirming the stock movement, preventing failed order imports and reducing manual intervention.
Original PR description
Currently, when syncing an Amazon order selling a product that's tracked by serial/lots number, the order failed to be synchronized due to the missing serial number that's required. We will now take that number from Amazon and applied it before confirming the move. task-3539358 See also: - https://github.com/odoo/odoo/pull/157443
This fix prevents barcode label generation from failing when tracked products do not yet have a finalized lot record. The system now uses the entered lot name when needed and shows a clear warning instead of raising an unexpected error when no tracking number is available.
Original PR description
Main: Encoding a SGTIN EPC requires a tracking number to make the tag unique. When the product is not tracked, a "fake" tracking number is used. Otherwise, we use the tracking number registered on…
Main: Encoding a SGTIN EPC requires a tracking number to make the tag unique. When the product is not tracked, a "fake" tracking number is used. Otherwise, we use the tracking number registered on the Move Line. However, depending on the state of the Move Line, lot_id may not be set and the tracking number will rather be available in lot_name. Currently, we only rely on lot_id, which may lead to an empty tracking number list, which in turn raises an unhandled exception. - We should try getting the tracking number from lot_name when lot_id is not set; - We should handle the case where the tracking number list is empty. N.B. : Only an empty tracking number list is problematic, the case of a list populated with null value is already handled by the epc_encoder. Before: - We only get the tracking number from lot_id.name; - No verification is done on the tracking number list. After: - Default to lot_name when lot_id is not set. - When the tracking number list is empty, set an error warning as the electronic_product_code on the concerned move lines.
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
58 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
Peppol invoices and credit notes can now be generated without requiring a customer bank account. This prevents unnecessary blocking errors while keeping country-specific supplier bank checks, such as for the Netherlands, unchanged.
Original PR description
Removing customer bank account constraint for Peppol credit notes and invoices. What appears to be happening is that Peppol is enabled for a contact through setting their invoice format to "UBL BIS Billing 3.0.12", which in turn when generating an invoice through account_edi_ubl_cii/models/account_move_send methods refers to the 'cen_en16931_payment_account_identifier' constraint set in account_edi_xml_ubl_bis3.py through account_edi_common's _check_required_fields() method. For NL suppliers, bank account requirement is specified separately, so I reason I shouldn't touch that. task: 4316460 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Peppol invoice statuses have been renamed to use simpler, consistent wording for business users. Documents now show Pending when they are queued for sending, Error when processing did not go as expected, and Done when completed, making status tracking easier to understand.
Original PR description
Updating Peppol states to be more user-friendly so that states that represent the same concept for the end user now have the same user-facing names as follows: 'Pending' is used when the move went in the pipe and will be send at some point 'Error' is used for both 'skipped' and 'error' state indicating that the move was not processed as expected 'Done' is used when done task: 4423620 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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
Quality checks now automatically select the failure location when only one is available. This reduces confusion for users and helps prevent failed products from being sent to normal stock by mistake.
Original PR description
Before this Commit: -------------------------------------- - If only one failure location was available during quality checks (with control per quantity), it was not automatically selected by default. - This lack of default selection caused confusion, and as a result, products were mistakenly sent to the normal stock location instead of the failure location. After this Commit: -------------------------------------- - When only one failure location is available, it is now automatically pre-selected by default to enhance the user experience. - This change simplifies the user onboarding process by reducing the risk of products being sent to the normal stock location instead of the failure location. Task-id: 4348525
A countdown timer now appears after staff accept a delivery order, showing how much preparation time remains. This helps point-of-sale teams track timing more clearly and prepare orders within the expected window.
Original PR description
In this commit: - After accepting a delivery order, a countdown timer appears, indicating the preparation time. This timer counts down, providing the user with a timeline to prepare the order within the allotted time.  task-4049465
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
Fixes an accounting issue where quick invoice entry calculated incorrect tax lines for reverse charge taxes. This helps ensure invoices show balanced tax amounts and accurate totals when reverse charge tax rules are used.
Original PR description
Suppose a tax 15% +100 -100. Use the quick encoding with an amount of 100.0. => The base of the created invoice line is 86.96 and the created tax lines are +13.04 -26.08. That's wrong. Both have to produce the same amount. In 17.0, we get a base of 100 and +15 -15 as tax amounts. In 18.0, we changed the management of reverse charge so the total excluded amount is computed as 100 / 1.15 ~= 86.96. It produces tax lines computed on 86.96. 86.96 * 0.15 ~= 13.04. But at the end, the quick encoding algorithmn "fixes" the tax amount. It expect a total of 100 and it has a missing amount of 100 - 86.96 - 13.04 + 13.04 = 13.04 to reach the objective. So it adds 13.04 in the biggest tax line. opw-4428842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The live chat chatbot now records the chosen answer directly when a visitor responds, instead of trying to infer it afterward. This prevents wrong selections when answers include special characters or similar wording, and also improves chatbot restart behavior on embedded websites after redirects.
Original PR description
The question_selection steps of the chatbot suffer from several issues. In [1], a fix was made to make the chatbot work with answers containing ampersands, but this fix broke other special characters such as "'". This step also does not handle well answers containing a subset of words, such as "X"/"not X". This occurs because the client code tries to guess which answer was selected after posting the answer. This PR updates the flow to save the answer when the message is posted. As a result, there is no need to guess which answer was selected anymore, and all these issues are fixed. [1]: https://github.com/odoo/odoo/pull/189313 opw-4369966,4436567.
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" />
This fix ensures inventory cost calculations use only records from the company currently processing the stock receipt. Branch companies will no longer have their product costs incorrectly averaged with parent company transactions, improving inventory valuation accuracy.
Original PR description
Steps to reproduce the bug: - Log in as Company A - Create a branch company: Branch 1. - Create a storable product P1 with the following configuration:: - Costing method: AVCO - Create a receipt for…
Steps to reproduce the bug:
- Log in as Company A
- Create a branch company: Branch 1.
- Create a storable product P1 with the following configuration::
- Costing method: AVCO
- Create a receipt for 1 unit of P1:
- Unit Price: $300.
- Confirm the receipt:
- The standard price of P1 is updated to $300.
- Log in as Branch 1
- The standard price of P1 is $0.
- Create a receipt for 1 unit of P1:
- Unit Price: $100.
- Confirm the reception
Problem:
The standard price of P1 is incorrectly updated to $225 → ((300 + 100) / 2) instead of $100. This happens because the stock valuation layer computation values includes records from the parent company instead of only the current company:
https://github.com/odoo/odoo/blob/989a78b3fc04e7b5b79e165fda8539be5f091b8c/addons/stock_account/models/stock_move.py#L306-L307
https://github.com/odoo/odoo/blob/41a234890c91e9b0c9771a2b0fe50d4b525079f3/addons/stock_account/models/product.py#L123-L126
https://github.com/odoo/odoo/blob/989a78b3fc04e7b5b79e165fda8539be5f091b8c/addons/stock_account/models/stock_move.py#L323-L324
This issue occurs because the search considers both the current company
and its parent companies. This happens because `self` refers to the
`product.product` model which has
"_check_company_domain = models.check_company_domain_parent_of",
On the other hand, `self.env['stock.valuation.layer']` is a model that
is limited to the current company:
https://github.com/odoo/odoo/blob/8189f053fb4bf219093279c18eebdad01c305385/addons/product/models/product_product.py#L21
opw-4417559This fixes an issue where users who left and rejoined a call could share only a black screen when trying to present again. Screen sharing now works reliably after rejoining, reducing disruption during online meetings.
Original PR description
Current behavior before PR: If a user shares their screen during a call, leaves, and then rejoins the call, attempting to share their screen again results in a black screen being shared. Desired behavior after PR is merged: Screen sharing functions correctly even after rejoining a call. task-id:[4441751](https://www.odoo.com/odoo/my-tasks/4441751) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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 fixes an issue where reloading Indian withholding tax setup could corrupt tax data after the first company was processed. It helps prevent failed upgrades or module updates for databases with multiple Indian companies.
Original PR description
# Description When we reload the chart of accounts parsed CSV data is altered after iterating the first company because we are Only updating the tags of existing taxes For existing tax, we are…
# Description
When we reload the chart of accounts parsed CSV data is altered after iterating
the first company because we are Only updating the tags of existing taxes
For existing tax, we are mapping repartition lines here https://github.com/odoo/odoo/blob/a4c14fab299ed98024b7d7148d89bf17e914ccd1/addons/account/models/chart_template.py#L359
So that data_list has been altered after for the next company
for the next iterator company, it has been eligible for obsolete here https://github.com/odoo/odoo/blob/a4c14fab299ed98024b7d7148d89bf17e914ccd1/addons/account/models/chart_template.py#L400
So, it is better to keep parsing data as it is while reloading the chart accounts for each company
TBG: [Traceback Group-1421](https://upgrade.odoo.com/web#id=1421&cids=1&menu_id=107&model=upgrade.request.traceback.group&view_type=form)
OPWS:
- [4391978](https://www.odoo.com/odoo/project/70/tasks/4391978)
- [4402365](https://www.odoo.com/odoo/70/tasks/4402365)
```py
2024-12-26 10:21:46,303 16 INFO higo_2397155_18.0 odoo.addons.base.models.ir_module: module l10n_in_withholding: no translation for language en_IN
2024-12-26 10:21:47,426 16 INFO higo_2397155_18.0 odoo.addons.l10n_in_withholding: Company Repose Foods Private Limited already has the Indian localization installed, updating...
> /home/odoo/src/odoo/18.0/addons/account/models/chart_template.py(322)_pre_reload_data()
-> for model_name, records in data.items():
(Pdb) len([i for i in data['account.tax'].values() if i.get('name')])
163
(Pdb) c
> /home/odoo/src/odoo/18.0/addons/account/models/chart_template.py(397)_pre_reload_data()
-> if obsolete_xmlid:
(Pdb) len([i for i in data['account.tax'].values() if i.get('name')])
75
(Pdb) c
2024-12-26 10:22:14,417 16 INFO higo_2397155_18.0 odoo.addons.l10n_in_withholding: Company M/S Repose already has the Indian localization installed, updating...
> /home/odoo/src/odoo/18.0/addons/account/models/chart_template.py(322)_pre_reload_data()
-> for model_name, records in data.items():
(Pdb) len([i for i in data['account.tax'].values() if i.get('name')])
75
(Pdb) c
> /home/odoo/src/odoo/18.0/addons/account/models/chart_template.py(397)_pre_reload_data()
-> if obsolete_xmlid:
(Pdb) l
392 skip_update.add((model_name, xmlid))
393
394 for skip_model, skip_xmlid in skip_update:
395 data[skip_model].pop(skip_xmlid, None)
396 import pdb; pdb.set_trace()
397 -> if obsolete_xmlid:
398 self.env['ir.model.data'].search([
399 ('name', 'in', [f"{company.id}_{xmlid}" for xmlid in obsolete_xmlid]),
400 ('module', '=', 'account'),
401 ]).unlink()
402
(Pdb) len(obsolete_xmlid)
88
(Pdb) c
2024-12-26 10:22:56,209 16 INFO higo_2397155_18.0 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [48827, 48804, 48815, 48813, 48823, 48828, 48811, 48809, 48807, 48821, 48817, 48819, 48805, 48812, 48816, 48814, 48806, 48810, 48808, 48822, 48818, 48820, 48824, 48826, 48825, 48887, 48888, 48829, 48831, 48833, 48835, 48843, 48848, 48856, 48862, 48865, 48867, 48869, 48871, 48873, 48877, 48889, 48839, 48858, 48885, 48890, 48830, 48832, 48834, 48836, 48841, 48844, 48846, 48847, 48849, 48850, 48852, 48854, 48857, 48859, 48861, 48863, 48866, 48868, 48870, 48876, 48872, 48874, 48881, 48884, 48886, 48878, 48840, 48855, 48864, 48882, 48837, 48838, 48879, 48891, 48842, 48845, 48851, 48853, 48860, 48875, 48880, 48883]
2024-12-26 10:22:56,738 16 ERROR higo_2397155_18.0 odoo.sql_db: bad query: b'INSERT INTO "account_tax" ("active", "amount", "amount_type", "company_id", "country_id", "create_date", "create_uid", "description", "formula", "include_base_amount", "invoice_label", "is_base_affected", "l10n_in_section_id", "l10n_in_tds_tax_type", "name", "sequence", "tax_exigibility", "tax_group_id", "tax_scope", "type_tax_use", "write_date", "write_uid") ...
```
**Traceback**
```py
2024-12-26 06:49:10,588 26 INFO higo_2403300_18.0 odoo.addons.l10n_in_withholding: Company Sah Estates already has the Indian localization installed, updating...
2024-12-26 07:14:31,217 26 INFO higo_2403300_18.0 odoo.addons.l10n_in_withholding: Company sahaccounts already has the Indian localization installed, updating...
2024-12-26 07:16:43,050 26 INFO higo_2403300_18.0 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [26281, 26258, 26269, 26267, 26277, 26282, 26265, 26263, 26261, 26275, 26271, 26273, 26259, 26266, 26270, 26268, 26260, 26264, 26262, 26276, 26272, 26274, 26278, 26280, 26279, 26341, 26342, 26283, 26285, 26287, 26289, 26297, 26302, 26310, 26316, 26319, 26321, 26323, 26325, 26327, 26331, 26343, 26293, 26312, 26339, 26344, 26284, 26286, 26288, 26290, 26295, 26298, 26300, 26301, 26303, 26304, 26306, 26308, 26311, 26313, 26315, 26317, 26320, 26322, 26324, 26330, 26326, 26328, 26335, 26338, 26340, 26332, 26294, 26309, 26318, 26336, 26291, 26292, 26333, 26345, 26296, 26299, 26305, 26307, 26314, 26329, 26334, 26337]
2024-12-26 07:35:03,359 28 ERROR higo_2397155_18.0 odoo.modules.registry: Failed to load registry
2024-12-26 07:35:03,359 28 CRITICAL higo_2397155_18.0 odoo.service.server: Failed to initialize database `higo_2397155_18.0`.
Traceback (most recent call last):
File "/home/odoo/src/odoo/18.0/odoo/service/server.py", line 1306, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-13>", line 2, in new
File "/home/odoo/src/odoo/18.0/odoo/tools/func.py", line 97, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 127, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 480, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 364, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 245, in load_module_graph
getattr(py_module, post_init)(env)
File "/home/odoo/src/odoo/18.0/addons/l10n_in_withholding/__init__.py", line 26, in _l10n_in_withholding_post_init
ChartTemplate._load_data(data)
File "/tmp/tmpqk9sqppy/migrations/account/0.0.0/pre-ensure-deferred-accounts.py", line 36, in _load_data
return super()._load_data(data, *args, **kwargs)
File "/home/odoo/src/odoo/18.0/addons/account/models/chart_template.py", line 635, in _load_data
created_records[model] = self.with_context(lang='en_US').env[model]._load_records(all_records_vals, ignore_duplicates=ignore_duplicates)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5467, in _load_records
records = self._load_records_create([data['values'] for data in to_create])
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5371, in _load_records_create
records = self.create(vals_list)
File "<decorator-gen-228>", line 2, in create
File "/home/odoo/src/odoo/18.0/odoo/api.py", line 480, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/18.0/addons/account/models/account_tax.py", line 599, in create
taxes = super(AccountTax, self.with_context(context)).create([self._sanitize_vals(vals) for vals in vals_list])
File "<decorator-gen-140>", line 2, in create
File "/home/odoo/src/odoo/18.0/odoo/api.py", line 480, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_thread.py", line 268, in create
threads = super(MailThread, self).create(vals_list)
File "<decorator-gen-120>", line 2, in create
File "/home/odoo/src/odoo/18.0/odoo/api.py", line 480, in _model_create_multi
return create(self, arg)
File "/tmp/tmpqk9sqppy/migrations/util/orm.py", line 244, in wrapper
return f(*args, **kwargs)
File "/tmp/tmpqk9sqppy/migrations/base/0.0.0/pre-models-match_uniq.py", line 96, in create
records = super().create([vals_list[idx] for idx in create_idx_list])
File "<decorator-gen-31>", line 2, in create
File "/home/odoo/src/odoo/18.0/odoo/api.py", line 480, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 4975, in create
records = self._create(data_list)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5159, in _create
cr.execute(SQL(
File "/home/odoo/src/odoo/18.0/odoo/sql_db.py", line 354, in execute
res = self._obj.execute(query, params)
psycopg2.errors.NotNullViolation: null value in column "name" of relation "account_tax" violates not-null constraint
DETAIL: Failing row contains (1941, 18, 1, 12, null, 104, 1, 1, sale, null, percent, on_invoice, null, null, null, 0.0000, t, f, t, null, 2024-12-26 07:34:58.528488, 2024-12-26 07:34:58.528488, price_unit * 0.10, null, null, null, null, null).
```
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis 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
Appointment pages that exclude certain countries can now still be opened through a direct link, instead of showing a 404 error. The exclusion still controls where appointments appear in listings and search, keeping visibility rules intact while preventing broken shared links.
Original PR description
Excluding counbtries on an appointment type should not lead to a 404 page when directly given the appointment link (even wihtout invite). Now the countries excluded are used to not display these appointments when necessary but they can still be reached with the direct link. task-4456488
Fixed an issue that caused the Cash Flow Statement to crash when users selected multiple companies. The report now handles accounts from different companies correctly, so finance teams can view multi-company cash flow data without interruption.
Original PR description
Steps:
- Have 2 or more companies, select both in company selector
- Go to Cash Flow Statement report
-> Traceback: `TypeError: '<' not supported between instances of 'str' and 'NoneType'`
Cause:
https://github.com/odoo/enterprise/blob/0dad52c1371f2daca50775d72571a0eac768ac03/account_reports/models/account_cash_flow_report.py#L228
is equal to `SQL('("account_move_line__account_id"."code_store"->%s->>0)::VARCHAR', '<self.env.company.id>')` therefore the account code
for accounts that are not from `self.env.company` are set to None in the data dict
Fix:
Adding a default value set to '' and reversing the order allowing to
keep the accounts from the selected company first.
opw-4367588Fixed 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
Bank reconciliation now correctly uses the partial payment amounts when matching a batch payment to a statement line. This prevents validation errors caused by trying to reconcile the full invoice amounts instead of the actual payments received.
Original PR description
partial payments An user may receive several partial payments for invoices/bills. These payments could be grouped in a batch and reconciled with a single statement line. However this flow is…
partial payments An user may receive several partial payments for invoices/bills. These payments could be grouped in a batch and reconciled with a single statement line. However this flow is currently not working because the bank reconciliation fails Steps to reproduce: - Create 2 invoice and register a partial payment for each one - Select the 2 payments create a batch - Create a new statement with the sum of the payment amounts - Reconcile the statement with the created batch Issue: An error will block the validation ``` The move (BNK1/2024/00011) is not balanced. The total of debits equals $ 510.60 and the total of credits equals $ 100.00. You might want to specify a default account on journal "Bank" to automatically balance each move. ``` This occurs because the system is taking the amount to reconcile from the invoice, instead of the payment, so it will try to reconcile the full amount. opw-4379673
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
Fixed an issue where reconciling a bank statement with a batch of partial payments could fail because the system compared the batch total with the full invoice amount. The reconciliation now uses the actual payment amounts and ignores cancelled or rejected payments, helping accounting teams complete bank matching reliably.
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
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.