Thursday, September 5, 2024
61 changes · saas-17.2
Resolved issues and error corrections
Helpdesk ticket discussions now avoid showing irrelevant information in the chatter. This reduces confusion for users reviewing ticket history and keeps customer support communication clearer.
Original PR description
Backport of https://github.com/odoo/enterprise/commit/d9b06557baf692f707ff8b75106df6b67c6bc523 opw-3941552
This update adjusts an internal performance test threshold for Australian payroll accounting after repeated build failures. It helps keep automated validation reliable without changing payroll features or user workflows.
Original PR description
Before this commit, a queryCount was set at 3453 queries and was failing on multiple builds. This PR bump that count.
Miscellaneous changes
New module for electronic invoicing Forward-Port-Of: odoo/enterprise#51266
Original PR description
New module for electronic invoicing Forward-Port-Of: odoo/enterprise#51266
* With an IN company setup * Open the bank Reconciliation widget * Make a manual reconciliation with tax 18% IGST RC * Go to tax report GSTR-3B * Issue: there is no impact on the report (3.1 d) This occurs because in the report we take into account move of type `out_invoice` while move registered in the bank journal are of type `entry` Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4058256) opw-4058256 Forward-Port-Of: odoo/enterprise#67520
Original PR description
* With an IN company setup * Open the bank Reconciliation widget * Make a manual reconciliation with tax 18% IGST RC * Go to tax report GSTR-3B * Issue: there is no impact on the report (3.1 d) This occurs because in the report we take into account move of type `out_invoice` while move registered in the bank journal are of type `entry` Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4058256) opw-4058256 Forward-Port-Of: odoo/enterprise#67520
Added `pos_iot` module icon. Forward-Port-Of: odoo/enterprise#69289
Original PR description
Added `pos_iot` module icon. Forward-Port-Of: odoo/enterprise#69289
Before this commit, as soon as this module is installed, the button to generate the Libros Registro de IVA was the main button for all the companies. Instead of having a new handler, just add the code in the default handler, and manage the buttons based on the country of the current company. Forward-Port-Of: odoo/enterprise#69278
Original PR description
Before this commit, as soon as this module is installed, the button to generate the Libros Registro de IVA was the main button for all the companies. Instead of having a new handler, just add the code in the default handler, and manage the buttons based on the country of the current company. Forward-Port-Of: odoo/enterprise#69278
Current behaviour: --- When you open a document, and you want to add a tag, the preview closes. Steps to reproduce: --- 1. Go to Documents 2. Open a document 3. Add a tag 4. The preview closes Cause of the issue: --- In updateRecordTagId from documents_search_model.js Update trigger > load > documents-close-preview trigger opw-3879288 Forward-Port-Of: odoo/enterprise#66684
Original PR description
Current behaviour: --- When you open a document, and you want to add a tag, the preview closes. Steps to reproduce: --- 1. Go to Documents 2. Open a document 3. Add a tag 4. The preview closes Cause of the issue: --- In updateRecordTagId from documents_search_model.js Update trigger > load > documents-close-preview trigger opw-3879288 Forward-Port-Of: odoo/enterprise#66684
We are currently using websockets for every report action. We will now use longpolling first, then websocket if it fails. It will help reduce the amount of websockets communicating with Odoo. Task: 4106745 Forward-Port-Of: odoo/enterprise#69299 Forward-Port-Of: odoo/enterprise#68325
Original PR description
We are currently using websockets for every report action. We will now use longpolling first, then websocket if it fails. It will help reduce the amount of websockets communicating with Odoo. Task: 4106745 Forward-Port-Of: odoo/enterprise#69299 Forward-Port-Of: odoo/enterprise#68325
When validating a payment for a subscription and the sale's setting `sale.automatic_invoice` is enabled, the invoice is send twice to the customer on subscription renewal; first with the normal template then a second time with the subscription specific template. To reproduce: - As Administrator: - Enable the "Automatic Invoice" option in the setting - Install/enable the `demo` payment provider and method - Log-in as `portal` user - Go the /shop and add the `Office Cleaning Service
Original PR description
When validating a payment for a subscription and the sale's setting `sale.automatic_invoice` is enabled, the invoice is send twice to the customer on subscription renewal; first with the normal…
When validating a payment for a subscription and the sale's setting `sale.automatic_invoice` is enabled, the invoice is send twice to the customer on subscription renewal; first with the normal template then a second time with the subscription specific template. To reproduce: - As Administrator: - Enable the "Automatic Invoice" option in the setting - Install/enable the `demo` payment provider and method - Log-in as `portal` user - Go the /shop and add the `Office Cleaning Service (SUB)` to you cart - Pay your order using the `Demo` payment method => The invoice is send once - Go to your subscription (/my/subscriptions) - Click on your new subscription - Scroll to the `Anticipate payment` section and pay for it (again choose the `Demo` payment method) - You get back the the subscription page, click on the last invoice (2nd invoice you created) => Scroll to the history section and see that the invoice is sent twice This commit ensure we're only sending invoice with the subscription specific template on renewal. OPW-3900040 Forward-Port-Of: odoo/enterprise#61838
Steps to reproduce: - Have a FEC file (see ticket) - Import it on a brand new db Issue: Crash. We try to create account move line with an xml id that does not exist because we didn't create the partner associated to the correct ref The second issue is that we will link the move to the wrong customer since the second one is not created Cause: The first issue is caused because we bypass the creation of the second partner with the same name "PARTNER 01" but different ref "PARTNER02" `
Original PR description
Steps to reproduce: - Have a FEC file (see ticket) - Import it on a brand new db Issue: Crash. We try to create account move line with an xml id that does not exist because we didn't create the partner associated to the correct ref The second issue is that we will link the move to the wrong customer since the second one is not created Cause: The first issue is caused because we bypass the creation of the second partner with the same name "PARTNER 01" but different ref "PARTNER02" `ValueError: External ID not found in the system: l10n_fr_fec_import.89_partner_PARTNER02` The reason is, when creating the move line, we assign the `partner_id` with an xml_id based on the partner_ref https://github.com/odoo/enterprise/blob/ae3820059f6ff46b0dbcd64eabb2aae5caa98e18/l10n_fr_fec_import/wizard/import_wizard.py#L474-L490 Which of course does not exist. opw-3932234 Forward-Port-Of: odoo/enterprise#69148
Issue: An issue can arises when attempting to drop the constraint "account_move_line_check_amount_currency_balance_sign" if it does not exist. This problem was triggered since the following fix: https://github.com/odoo/enterprise/pull/67953. Fix: Ensure that the constraint exists before attempting to drop it. opw-4107760 opw-4133787 opw-4122219 Forward-Port-Of: odoo/enterprise#69191
Original PR description
Issue: An issue can arises when attempting to drop the constraint "account_move_line_check_amount_currency_balance_sign" if it does not exist. This problem was triggered since the following fix: https://github.com/odoo/enterprise/pull/67953. Fix: Ensure that the constraint exists before attempting to drop it. opw-4107760 opw-4133787 opw-4122219 Forward-Port-Of: odoo/enterprise#69191
Steps to reproduce the bug: 1. Install the Sales and Loyalty apps. 2. Create a sales order for 'client x' and assign a loyalty reward to it. 3. Invoice the sales order with a down payment. 4. Navigate to the Helpdesk app and create a ticket for 'client x'. 5. Create a task for the ticket and check the Sales order item list. Issue: The sales order item list incorrectly includes down payments and loyalty rewards due to an imprecise domain. Solution: Adding a domain function that we ca
Original PR description
Steps to reproduce the bug: 1. Install the Sales and Loyalty apps. 2. Create a sales order for 'client x' and assign a loyalty reward to it. 3. Invoice the sales order with a down payment. 4. Navigate to the Helpdesk app and create a ticket for 'client x'. 5. Create a task for the ticket and check the Sales order item list. Issue: The sales order item list incorrectly includes down payments and loyalty rewards due to an imprecise domain. Solution: Adding a domain function that we can override computed field where it's necessary, to filter the sale_order_line records accurately. opw-4001226 odoo pr : https://github.com/odoo/odoo/pull/173667 Forward-Port-Of: odoo/enterprise#69432 Forward-Port-Of: odoo/enterprise#66388
Steps to reproduce: - Settings > Enable 'Consolidate subscriptions billing' - Contact > Create a company - Contacts & Addresses tab > Add - Add an invoice address on the company - Add an individual then duplicate it - Create a subscription with the indiviual as customer - Duplicate the subscription then set the duplicate contact as customer - Debug mode > Scheduled actions - Sale subscription: Generate recurring invoices and payments > Run manually The subsciptions are invoiced separ
Original PR description
Steps to reproduce: - Settings > Enable 'Consolidate subscriptions billing' - Contact > Create a company - Contacts & Addresses tab > Add - Add an invoice address on the company - Add an individual…
Steps to reproduce: - Settings > Enable 'Consolidate subscriptions billing' - Contact > Create a company - Contacts & Addresses tab > Add - Add an invoice address on the company - Add an individual then duplicate it - Create a subscription with the indiviual as customer - Duplicate the subscription then set the duplicate contact as customer - Debug mode > Scheduled actions - Sale subscription: Generate recurring invoices and payments > Run manually The subsciptions are invoiced separately instead of having one invoice for both. The consolidated billing should produce only one invoice since the invoicing address is the same. This behavior works as intended if using the create invoices action on both subscriptions at once. Here, the recurring invoice creation for subscriptions uses its own grouping function using partner_id as a key instead of partner_invoice_id which is 'parent invoice address id if any, else partner_id'. Because this grouping is performed before creating the invoices, we end up processing sale orders that should have belonged to the same group separarately and thus create the invoices one by one. This means we don't let _create_invoices do the grouping since we only pass it one SO at a time, this fix will make it so _create_invoices is called on the grouped SOs instead. opw-4114035 Forward-Port-Of: odoo/enterprise#69277
We removed the `reload_page` method [here](https://github.com/odoo/enterprise/pull/68394/files#diff-ccc5eed84ca6b725960d95f2ab8b48188d5a078ab60a0a7c6c8ff7aeb29eddd9). Since, clients non-updated views still call it, but get a traceback as it doesn't exist anymore. We then add it again to fix the issue. Support task: 4152608 Forward-Port-Of: odoo/enterprise#69429
Original PR description
We removed the `reload_page` method [here](https://github.com/odoo/enterprise/pull/68394/files#diff-ccc5eed84ca6b725960d95f2ab8b48188d5a078ab60a0a7c6c8ff7aeb29eddd9). Since, clients non-updated views still call it, but get a traceback as it doesn't exist anymore. We then add it again to fix the issue. Support task: 4152608 Forward-Port-Of: odoo/enterprise#69429
In the community counterpart of this PR, a debounce is added to the addition of bus channels in order to batch them as much as possible. The room module uses the `waitForSubscribe` bus helper but never awaits it which trigger errors in other tests. This PR fixes this issue. backport of https://github.com/odoo/enterprise/pull/68099 community: https://github.com/odoo/odoo/pull/176580 Forward-Port-Of: odoo/enterprise#68958 Forward-Port-Of: odoo/enterprise#68361
Original PR description
In the community counterpart of this PR, a debounce is added to the addition of bus channels in order to batch them as much as possible. The room module uses the `waitForSubscribe` bus helper but never awaits it which trigger errors in other tests. This PR fixes this issue. backport of https://github.com/odoo/enterprise/pull/68099 community: https://github.com/odoo/odoo/pull/176580 Forward-Port-Of: odoo/enterprise#68958 Forward-Port-Of: odoo/enterprise#68361
When a user with 'user' access rigths on the project module that is also assigned to a task of an internal project, it will prevent the user from creating a new timesheet from the timesheet grid. This bug is due to the fact that when a user clicks on the line of the task, some rpc's call are made on the 'project' model. Since the user does not have access rigth to the internal project on which the call are made, an access rigth error is raised. Step to reproduce: - create a db with hr_tim
Original PR description
When a user with 'user' access rigths on the project module that is also assigned to a task of an internal project, it will prevent the user from creating a new timesheet from the timesheet grid.…
When a user with 'user' access rigths on the project module that is also assigned to a task of an internal project, it will prevent the user from creating a new timesheet from the timesheet grid. This bug is due to the fact that when a user clicks on the line of the task, some rpc's call are made on the 'project' model. Since the user does not have access rigth to the internal project on which the call are made, an access rigth error is raised. Step to reproduce: - create a db with hr_timesheet installed - have a user with 'user' access rights on project and 'own timesheet' on timesheet - create an internal project - create a task inside that internal project and assigned the user on it - connect with the other user - open timesheet app - select the task from the internal project to start a new timesheet timer - an error access right on 'project' is triggered Solution: Add a sudo inside the python method 'check can start timer'. Give the project name to the timerHeaderM2O, to prevent the call to the name_get on the project. task - 3922511 affected version 16.0 - master Forward-Port-Of: odoo/enterprise#69226 Forward-Port-Of: odoo/enterprise#63159
When we tried to open the dialog, we would get an error telling us that the function close from the props is missing. The fix is to use a custom close function that will trigger the action of type `act_window_close` task-4154392 Forward-Port-Of: odoo/enterprise#69263
Original PR description
When we tried to open the dialog, we would get an error telling us that the function close from the props is missing. The fix is to use a custom close function that will trigger the action of type `act_window_close` task-4154392 Forward-Port-Of: odoo/enterprise#69263
Problem: Upon installing helpdesk_fsm in a multi-company setup, the default fsm project when enabling "use_fsm" on helpdesk teams is incorrectly retrieving the fsm project from the wrong company. This leads to a multi-company access error when trying to navigate to the fsm project linked to the helpdesk teams. Purpose: Instead of incorrectly defaulting the fsm project from the wrong company upon installation using a default method, compute the default of fsm project based on the team's compan
Original PR description
Problem: Upon installing helpdesk_fsm in a multi-company setup, the default fsm project when enabling "use_fsm" on helpdesk teams is incorrectly retrieving the fsm project from the wrong company. This leads to a multi-company access error when trying to navigate to the fsm project linked to the helpdesk teams. Purpose: Instead of incorrectly defaulting the fsm project from the wrong company upon installation using a default method, compute the default of fsm project based on the team's company. Steps to Reproduce on Runbot: 1. Install Project, Field Service, and any l10n module 2. Switch to the localized company 3. Create a helpdesk team 4. Install the helpdesk_fsm module 5. Navigate to the helpdesk team settings 6. Enable "use_fsm" on the team 7. Try to access the default fsm project 8. multi-company AccessError is thrown opw-3989799 Forward-Port-Of: odoo/enterprise#69034 Forward-Port-Of: odoo/enterprise#65701
- Commit 1: **[FIX] documents: optimize the condition to save computation** Issue: - the current condition renders the `youtubeVideoToken` value useless even when the record is actually a youtube video link. - the condition `__comp__.props.record.isViewable()` does takes care of those records but I feel since we have an exclusive variable declared to check for the youtube videos link, the `isViewable()` call should be the last check to determine if any record `isViewable()`
Original PR description
- Commit 1: **[FIX] documents: optimize the condition to save computation** Issue: - the current condition renders the `youtubeVideoToken` value useless even when the record is actually a youtube video link. - the condition `__comp__.props.record.isViewable()` does takes care of those records but I feel since we have an exclusive variable declared to check for the youtube videos link, the `isViewable()` call should be the last check to determine if any record `isViewable()` Fix: - switch the order of conditions `__comp__.props.record.isViewable()` and `youtubeVideoToken`. Task-4029257 Forward-Port-Of: odoo/enterprise#66248
* = documents_spreadsheet, website_helpdesk_livechat, whatsapp Enterprise counter-part. After a reset, the last id is always 0. backport of https://github.com/odoo/enterprise/pull/68302 community: https://github.com/odoo/odoo/pull/177705 Forward-Port-Of: odoo/enterprise#69159 Forward-Port-Of: odoo/enterprise#69045
Original PR description
* = documents_spreadsheet, website_helpdesk_livechat, whatsapp Enterprise counter-part. After a reset, the last id is always 0. backport of https://github.com/odoo/enterprise/pull/68302 community: https://github.com/odoo/odoo/pull/177705 Forward-Port-Of: odoo/enterprise#69159 Forward-Port-Of: odoo/enterprise#69045
Added PLE 12.1 and PLE 13.1 records for detailed inventory tracking. PLE 12.1 tracks inventory in physical units, while PLE 13.1 includes both physical and monetary values. Both records are updated semi-annually and reported monthly, with submission deadlines of October 1st and April 1st, per Superintendent Resolution 169-2015. Forward-Port-Of: odoo/enterprise#68527 Forward-Port-Of: odoo/enterprise#62696
Original PR description
Added PLE 12.1 and PLE 13.1 records for detailed inventory tracking. PLE 12.1 tracks inventory in physical units, while PLE 13.1 includes both physical and monetary values. Both records are updated semi-annually and reported monthly, with submission deadlines of October 1st and April 1st, per Superintendent Resolution 169-2015. Forward-Port-Of: odoo/enterprise#68527 Forward-Port-Of: odoo/enterprise#62696
### Steps to reproduce: - Install Sale and Field Service modules - Create a Quotation with a normal product and another Field service product - Confirm the quotation and invoice it - Change the delivered quantity of the field service product to meet the order quantity - Check the invoice status (will be 'Fully Invoiced') - Set the field service product in the SO to a unit price 0 ### Current behavior before PR: After creating an invoice for a SO that has field service product and
Original PR description
### Steps to reproduce: - Install Sale and Field Service modules - Create a Quotation with a normal product and another Field service product - Confirm the quotation and invoice it - Change the…
### Steps to reproduce: - Install Sale and Field Service modules - Create a Quotation with a normal product and another Field service product - Confirm the quotation and invoice it - Change the delivered quantity of the field service product to meet the order quantity - Check the invoice status (will be 'Fully Invoiced') - Set the field service product in the SO to a unit price 0 ### Current behavior before PR: After creating an invoice for a SO that has field service product and then set the product's unit price to 0 the SO invoice_status will change from 'Fully invoiced' to 'Nothing to invoice'. This is happening because in FSM we don't invoice SOL that has price_unit equals 0 which will lead that the SO inovice status will change too to 'Nothing to invoice'. https://github.com/odoo/enterprise/blob/17.0/industry_fsm_sale/models/sale_order.py#L84:L91 ### Desired behavior after PR is merged: We are now checking before computing the invoice status of any FSM product if the SO is not yet invoiced because if it is we won't modify the invoice status of the SOL. opw-4017282 Forward-Port-Of: odoo/enterprise#68893
Change the conditions of the account_3way_match filter on accounting dashboard for the bills journal. Before this commit: Show Bills with release_to_pay = 'yes' or invoice date < today. After this commit: Show Bills with release_to_pay = 'yes' or 'exception', the invoice date is no more used. task:3877069 Forward-Port-Of: odoo/enterprise#69068 Forward-Port-Of: odoo/enterprise#67357
Original PR description
Change the conditions of the account_3way_match filter on accounting dashboard for the bills journal. Before this commit: Show Bills with release_to_pay = 'yes' or invoice date < today. After this commit: Show Bills with release_to_pay = 'yes' or 'exception', the invoice date is no more used. task:3877069 Forward-Port-Of: odoo/enterprise#69068 Forward-Port-Of: odoo/enterprise#67357
Steps to reproduce: [l10n_* nl/be/etc - Europe] - create a customer form Monaco with a valid TVA number `FR53000004605` - create an invoice with this customer with an intra-eu tax - Open the EC Sales List Report Issue: The invoice will not be displayed Cause: Monaco is not part of the list Solution: We add it if the company.country_id is not France. Because for any other european country we want Monaco's invoices to be displayed opw-4075452 Forward-Port-Of: odoo/enterprise#68
Original PR description
Steps to reproduce: [l10n_* nl/be/etc - Europe] - create a customer form Monaco with a valid TVA number `FR53000004605` - create an invoice with this customer with an intra-eu tax - Open the EC Sales List Report Issue: The invoice will not be displayed Cause: Monaco is not part of the list Solution: We add it if the company.country_id is not France. Because for any other european country we want Monaco's invoices to be displayed opw-4075452 Forward-Port-Of: odoo/enterprise#68560
### Before this PR: ->If we create a product that isn't a service > open the helpdesk ticket form view -> type the name of the product you created from the SOL field and click create -> a new SOL is generated for this product and is successfully set on the ticket ### After this PR: A new SOL is generated only for service products, it should only be allowed for services products, it will throw validation error that isn't service task-3972359 Forward-Port-Of: odoo/enterprise#69349
Original PR description
### Before this PR: ->If we create a product that isn't a service > open the helpdesk ticket form view -> type the name of the product you created from the SOL field and click create -> a new SOL is generated for this product and is successfully set on the ticket ### After this PR: A new SOL is generated only for service products, it should only be allowed for services products, it will throw validation error that isn't service task-3972359 Forward-Port-Of: odoo/enterprise#69349 Forward-Port-Of: odoo/enterprise#66463
This commit improves test coverage for the `website_payment` module by addressing recent updates and scenarios: - **Minimum Amount**: Verifies that donations below the minimum amount are properly handled (PR: [177766](https://github.com/odoo/odoo/pull/177766)). - **Multiple Amounts**: Ensures that multiple donation amounts cannot be selected at once (PR: [176722](https://github.com/odoo/odoo/pull/176722)). - **Last Amount Selection**: Checks that the last selected amount is correct
Original PR description
This commit improves test coverage for the `website_payment` module by addressing recent updates and scenarios: - **Minimum Amount**: Verifies that donations below the minimum amount are properly handled (PR: [177766](https://github.com/odoo/odoo/pull/177766)). - **Multiple Amounts**: Ensures that multiple donation amounts cannot be selected at once (PR: [176722](https://github.com/odoo/odoo/pull/176722)). - **Last Amount Selection**: Checks that the last selected amount is correctly applied (PR: [176722](https://github.com/odoo/odoo/pull/176722)). These enhancements ensure that the module's behavior is thoroughly tested and functioning as expected. During FW to 16.0 we will take in consideration the iframe task-4138385 Forward-Port-Of: odoo/odoo#178835 Forward-Port-Of: odoo/odoo#177908
As we never kill browser instances, IoT Box gets saturated by browser threads if odoo restarts multiple times. We now kill the browser before starting a new. Forward-Port-Of: odoo/odoo#176941
Original PR description
As we never kill browser instances, IoT Box gets saturated by browser threads if odoo restarts multiple times. We now kill the browser before starting a new. Forward-Port-Of: odoo/odoo#176941
When a user creates a new sol, only service-type product should be searched. Before this commit, consumable and other types of product was being searched. task-3972359 Forward-Port-Of: odoo/odoo#178955 Forward-Port-Of: odoo/odoo#178615
Original PR description
When a user creates a new sol, only service-type product should be searched. Before this commit, consumable and other types of product was being searched. task-3972359 Forward-Port-Of: odoo/odoo#178955 Forward-Port-Of: odoo/odoo#178615
Before this commit, when user duplicate pricelist then new pricelist is created with same name. After this commit, add sufix '(copy)' in newly created pricelist when user duplicate pricelist. task-4035473 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178891 Forward-Port-Of: odoo/odoo#173082
Original PR description
Before this commit, when user duplicate pricelist then new pricelist is created with same name. After this commit, add sufix '(copy)' in newly created pricelist when user duplicate pricelist. task-4035473 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178891 Forward-Port-Of: odoo/odoo#173082
When settling a sale order in the PoS the shiplater option was always turned on. Steps to reproduce: ------------------- * Activate ship later option in PoS config * Create a sale order and confirm it * Open the PoS * Settle the order * Click on pay > Observation: The ship later button is already activated Why the fix: ------------ The button activation is based on the presence or not of a delivery date to fix it we just make sure not to import the delivery date from the original
Original PR description
When settling a sale order in the PoS the shiplater option was always turned on. Steps to reproduce: ------------------- * Activate ship later option in PoS config * Create a sale order and confirm it * Open the PoS * Settle the order * Click on pay > Observation: The ship later button is already activated Why the fix: ------------ The button activation is based on the presence or not of a delivery date to fix it we just make sure not to import the delivery date from the original sale order. opw-3987515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178887 Forward-Port-Of: odoo/odoo#176308
Version: 17.0+ Issue: When the Customer Address column is included in the report pdf, the table format breaks. This column is added when the `partner_id.commercial_partner_id` is different than the `partner_id` of the invoice or invoice refund. Purpose of this PR: To restore the format of the information table when the Customer Address column is included. Similar to #176209 Steps to Reproduce on Runbot: 1) Install l10n_fr and switch to FR Company 2) Configure contacts a French com
Original PR description
Version: 17.0+ Issue: When the Customer Address column is included in the report pdf, the table format breaks. This column is added when the `partner_id.commercial_partner_id` is different than the `partner_id` of the invoice or invoice refund. Purpose of this PR: To restore the format of the information table when the Customer Address column is included. Similar to #176209 Steps to Reproduce on Runbot: 1) Install l10n_fr and switch to FR Company 2) Configure contacts a French company to have a child contact with a different address. 3) Create invoice with the child contact as the customer. 4) Print invoice and the informations table will be formatted incorrectly. opw-4122930 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178258
Currently error is generated when try to edit 'Invoices' or 'Invoices without Payment' reports in studio mode when there is no record. Steps to reproduce: - Install an 'account' and 'web_studio' module (Without demo data). - Navigate to invoicing / Customers / Invoices and open a web studio mode. - Open reports and click on the 'Invoice' or 'Invoices without Payment' reports. - Click on 'EDIT SOURCES'. See Traceback:- ``` TypeError: 'bool' object is not subscriptable File "<
Original PR description
Currently error is generated when try to edit 'Invoices' or 'Invoices without Payment' reports in studio mode when there is no record. Steps to reproduce: - Install an 'account' and 'web_studio'…
Currently error is generated when try to edit 'Invoices' or 'Invoices without Payment' reports in studio mode when there is no record.
Steps to reproduce:
- Install an 'account' and 'web_studio' module (Without demo data).
- Navigate to invoicing / Customers / Invoices and open a web studio mode.
- Open reports and click on the 'Invoice' or 'Invoices without Payment' reports.
- Click on 'EDIT SOURCES'.
See Traceback:-
```
TypeError: 'bool' object is not subscriptable
File "<744>", line 200, in template_744
File "<744>", line 13, in template_744_content
QWebException: Error while render the template
TypeError: 'bool' object is not subscriptable
Template: ir.ui.view(744,)
Path: /t/t
Node: <t t-foreach="tax_totals[\'subtotals\']" t-as="subtotal"/>
File "odoo/http.py", line 2251, in __call__
response = request._serve_db()
File "odoo/http.py", line 1827, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1847, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1825, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1832, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2057, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 739, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/saas-17.2/web_studio/controllers/report.py", line 652, in save_report
report_html = self._render_report(report, record_id)
File "home/odoo/src/enterprise/saas-17.2/web_studio/controllers/report.py", line 597, in _render_report
return request.env['ir.actions.report'].with_context(studio=True)._render_qweb_html(report, [record_id] if record_id else [], {"studio": True})
File "home/odoo/src/enterprise/saas-17.2/web_studio/models/ir_actions_report.py", line 24, in _render_qweb_html
return super(IrActionsReport, self)._render_qweb_html(report_ref, docids, data)
File "odoo/addons/base/models/ir_actions_report.py", line 927, in _render_qweb_html
return self._render_template(report.report_name, data), 'html'
File "odoo/addons/base/models/ir_actions_report.py", line 654, in _render_template
return view_obj._render_template(template, values).encode()
File "home/odoo/src/enterprise/saas-17.2/web_studio/models/ir_ui_view.py", line 1302, in _render_template
return super(View, self)._render_template(template, values)
File "odoo/addons/base/models/ir_ui_view.py", line 2024, in _render_template
return self.env['ir.qweb']._render(template, values)
File "odoo/tools/profiler.py", line 302, in _tracked_method_render
return method_render(self, template, values, **options)
File "odoo/addons/base/models/ir_qweb.py", line 594, in _render
result = ''.join(rendering)
File "<748>", line 42, in template_748
File "<748>", line 31, in template_748_content
File "<747>", line 90, in template_747
File "<747>", line 72, in template_747_content
File "<747>", line 60, in template_747_t_call_0
File "<742>", line 2412, in template_742
File "<742>", line 2394, in template_742_content
File "<742>", line 1650, in template_742_t_call_0
File "<744>", line 208, in template_744
```
The issue occurs when the system tries to access a boolean value which is stored in 'Tax_totals' in the 'document_tax_totals' template [1] and this a boolean value is passed into 'tax_totals' from this line [2] because record is not available.
link [1]: https://github.com/odoo/odoo/blob/a8daed02c58ab69cdea57a8f97065e229b07f0ab/addons/account/views/report_invoice.xml#L200-L201
link [2]: https://github.com/odoo/odoo/blob/a8daed02c58ab69cdea57a8f97065e229b07f0ab/addons/account/models/account_move.py#L1348
To resolve the issue, Add a condition that checks whether the 'Tax_totals' is available before call the 'document_tax_totals' template.
sentry-4499699758
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#161249We still disconnected from wifi unlinking the old file, despite that we moved this configuration to `odoo.conf`. We replaced that. Forward-Port-Of: odoo/odoo#178920
Original PR description
We still disconnected from wifi unlinking the old file, despite that we moved this configuration to `odoo.conf`. We replaced that. Forward-Port-Of: odoo/odoo#178920
Before this commit, event listeners set on inputs by the datetime picker service would be removed in the callback of the `useEffect` hook, meaning that these listeners could be unregistered before the actual elements would be removed. This is an issue in the specific case where the deletion of the element occurs before the "change" event has been dispatched and after the removal of the listeners. The thing is: the removal of the element also triggers the "change" event (if it hasn't bee
Original PR description
Before this commit, event listeners set on inputs by the datetime picker service would be removed in the callback of the `useEffect` hook, meaning that these listeners could be unregistered before…
Before this commit, event listeners set on inputs by the datetime picker service would be removed in the callback of the `useEffect` hook, meaning that these listeners could be unregistered before the actual elements would be removed. This is an issue in the specific case where the deletion of the element occurs before the "change" event has been dispatched and after the removal of the listeners. The thing is: the removal of the element also triggers the "change" event (if it hasn't been triggered before), and with the listener gone this means that the value is lost. This commit deletes the removal of event listeners attached on inputs by the hook. This has been done since using the datetime picker service implies that the inputs affected by the feature will never be in an interactive state without the datetime picker actively listening on them. Although a test case setup is easy to reproduce, this behavior is unfortunately impossible to reproduce programmatically as the "change" event dispatched by removing an element only works when a trusted "input" event was triggered to change its value (setting the internal browser "changed" value of the input). Task [4104407](https://www.odoo.com/odoo/all-tasks/4104407) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178533
Consider an invoice with a cash rounding method selected. The cash rounding is applied to the total of the invoice but not not the payment terms. Currently unrounded amounts can appear in the following cases - Multiple payment term lines - Discount on payment term lines This is can also cause problems for the reconciliation. The cash rounded payment can not be reconciled with the non-cash-rounded payment term amount (since the amounts do not match exactly). After this commit the cash rou
Original PR description
Consider an invoice with a cash rounding method selected. The cash rounding is applied to the total of the invoice but not not the payment terms. Currently unrounded amounts can appear in the…
Consider an invoice with a cash rounding method selected. The cash rounding is applied to the total of the invoice but not not the payment terms. Currently unrounded amounts can appear in the following cases
- Multiple payment term lines
- Discount on payment term lines
This is can also cause problems for the reconciliation. The cash rounded payment can not be reconciled with the non-cash-rounded payment term amount (since the amounts do not match exactly).
After this commit the cash rounding is applied to the payment terms:
- The amount of each payment term line is cash rounded
- The discounted amount of each payment term line is cash rounded
Reproduce:
1. Install module `account` (or `account_accountant`)
2. Create a payment term with 1 line with 10% discount when paid within 30 days. Ensure "Display terms on invoice" is on. (Invoicing / Accounting -> Configuration (menu) -> Payment Terms)
3. Enable "Cash Rounding" in the settings
4. Create a cash rounding with precision 0.05 and rounding method HALF-UP (Invoicing / Accounting -> Configuration (menu) -> Cash Roundings)
5. Create an invoice
- Payment term from step 2
- Cash rounding from step 3 (set in "Other Info" tab) - A line s.t. the total is 868.35 (This value does not need cash rounding)
6. Confirm the invoice
7. Print the invoice: On the PDF the value 781.52 is shown for the payment terms. But the value should be 781.50 due to the cash rounding.
8. Register payment: The amount 781.52 is suggested. But the value should be 781.50 due to the cash rounding. Changing the amount to 781.50 loses the automatic reconciliation.
task-4095505
opw-3985470
Forward-Port-Of: odoo/odoo#178344
Forward-Port-Of: odoo/odoo#176289When the user tries to unarchive the multiple views, a traceback will appear. Steps to reproduce the error: - Install 'website' - Go to Settings > Technical > Views - Open archived views > unarchive multiple views Traceback: ``` ValueError: Expected singleton: ir.ui.view(534, 535, 537) File "odoo/http.py", line 2248, in __call__ response = request._serve_db() File "odoo/http.py", line 1823, in _serve_db return self._transactioning(_serve_ir_http, readonly=ro) File
Original PR description
When the user tries to unarchive the multiple views, a traceback will appear. Steps to reproduce the error: - Install 'website' - Go to Settings > Technical > Views - Open archived views > unarchive…
When the user tries to unarchive the multiple views,
a traceback will appear.
Steps to reproduce the error:
- Install 'website'
- Go to Settings > Technical > Views
- Open archived views > unarchive multiple views
Traceback:
```
ValueError: Expected singleton: ir.ui.view(534, 535, 537)
File "odoo/http.py", line 2248, in __call__
response = request._serve_db()
File "odoo/http.py", line 1823, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1843, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1821, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1828, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2053, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 756, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "odoo/models.py", line 5771, in action_unarchive
return self.filtered(lambda record: not record[self._active_name]).toggle_active()
File "odoo/models.py", line 5759, in toggle_active
(self - active_recs)[self._active_name] = True
File "odoo/models.py", line 6619, in __setitem__
return self._fields[key].__set__(self, value)
File "odoo/fields.py", line 1376, in __set__
records.write({self.name: write_value})
File "addons/website/models/theme_models.py", line 366, in write
return super().write(vals)
File "addons/website/models/ir_ui_view.py", line 95, in write
return super(View, self).write(vals)
File "odoo/addons/base/models/ir_ui_view.py", line 529, in write
self._validate_fields(['arch_db'])
File "odoo/models.py", line 1484, in _validate_fields
check(self)
File "odoo/addons/base/models/ir_ui_view.py", line 371, in _check_xml
view=self.key or self.id,
File "odoo/fields.py", line 1202, in __get__
record.ensure_one()
File "odoo/models.py", line 5856, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
https://github.com/odoo/odoo/blob/9be0c5348bfeb338bcba95b2a9c01e0d7dd14306/odoo/addons/base/models/ir_ui_view.py#L379 Here, self is used in place of view.
So it will lead to the above traceback.
sentry-5604174783
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#173117Adding back the activity text highlight in the systray to make sure users understand the text is actually clickable and they can filter their activities on a specific time frame. Related commit: odoo/odoo@6b72bde3a7d3d3d9a12490431b5192ddb5230d9c Task-4141680 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178322
Original PR description
Adding back the activity text highlight in the systray to make sure users understand the text is actually clickable and they can filter their activities on a specific time frame. Related commit: odoo/odoo@6b72bde3a7d3d3d9a12490431b5192ddb5230d9c Task-4141680 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178322
[ADD] l10n_kw: Add localization package for kuwit Add CoA and account groups with all the default account mappings for kuwait Improve user experience in kuwait task-3927920 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178355
Original PR description
[ADD] l10n_kw: Add localization package for kuwit Add CoA and account groups with all the default account mappings for kuwait Improve user experience in kuwait task-3927920 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178355
### Steps to reproduce: - Enable Multi-Step Routes in the settings - Go to Inventory > Configuration > Warehouse Management > Routes - Unarchive MTO - Create a storable product: - Routes: MTO, manufacture - With a bom - On hand qty: 10 - Create an SO for 15 units and validate - Go back to your product form > forecasted Report #### > Even thought 15 units are made to order 10 units are reported to be taken from stock to fulfill the SO ### Cause of the issue: The lines appe
Original PR description
### Steps to reproduce: - Enable Multi-Step Routes in the settings - Go to Inventory > Configuration > Warehouse Management > Routes - Unarchive MTO - Create a storable product: - Routes: MTO,…
### Steps to reproduce: - Enable Multi-Step Routes in the settings - Go to Inventory > Configuration > Warehouse Management > Routes - Unarchive MTO - Create a storable product: - Routes: MTO, manufacture - With a bom - On hand qty: 10 - Create an SO for 15 units and validate - Go back to your product form > forecasted Report #### > Even thought 15 units are made to order 10 units are reported to be taken from stock to fulfill the SO ### Cause of the issue: The lines appearing on the reported are computed by the `_get_report_lines` method. During this call, the quantity taken from stock is computed by comparing the demand of the out moves with the quantity currently in stock: https://github.com/odoo/odoo/blob/1fdccad664cad37a69dc960444aa0c318d1bf464/addons/stock/report/report_stock_forecasted.py#L218-L223 This is incorrect because the quantity taken from stock is null if the procure_method of the out move is make_to_stock. ### Note: The issue is not reproducible since 17.0 since the _get_report_lines has been refactored during the stockpocalypse. opw-4010785 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177867 Forward-Port-Of: odoo/odoo#176273
Reproduce: 1) Make a database before this PR: #176489 2) change to current version. 3) start database with `-u all` This will fail _check_carryover_target constrain when api.constrains checks for the data, carryover_target was not nullified because it was not in the group of values to be updated . So nullify carryover_target using eval="False" for exisiting records that were changed in #176489. Description of the issue/feature this PR addresses: Current behavior before PR: Desire
Original PR description
Reproduce: 1) Make a database before this PR: #176489 2) change to current version. 3) start database with `-u all` This will fail _check_carryover_target constrain when api.constrains checks for the data, carryover_target was not nullified because it was not in the group of values to be updated . So nullify carryover_target using eval="False" for exisiting records that were changed in #176489. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178165
This Fix addresses an issue where a traceback error occurs if the invoice date is not set when creating a landed cost. To reproduce the issue: 1. Create a service product and set it as a landed cost product. 2. Create and validate a customer invoice for this product. 3. Reset the invoice to draft status. 4. Clear the date on the invoice. 5. Click on the "Create Landed Cost" button. Error: A traceback occurs due to a failed assertion statement: "convert amount from unknown date". Th
Original PR description
This Fix addresses an issue where a traceback error occurs if the invoice date is not set when creating a landed cost. To reproduce the issue: 1. Create a service product and set it as a landed cost product. 2. Create and validate a customer invoice for this product. 3. Reset the invoice to draft status. 4. Clear the date on the invoice. 5. Click on the "Create Landed Cost" button. Error: A traceback occurs due to a failed assertion statement: "convert amount from unknown date". This fix ensures that the date is always populated when creating a new landed cost record. If the invoice date is not set, the current date will be used. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#175788
Before this commit: ------------------- If you want to group by records that inherit from mail.activity.mixin like crm.lead for example, only records with an activity will show up in the result, record without activity won't show up. After this commit: ------------------ Read group is not expected to filter record. Record without activity shows up under the group None since the value for activity state is None --- I confirm I have signed the CLA and read the PR guidelines at w
Original PR description
Before this commit: ------------------- If you want to group by records that inherit from mail.activity.mixin like crm.lead for example, only records with an activity will show up in the result, record without activity won't show up. After this commit: ------------------ Read group is not expected to filter record. Record without activity shows up under the group None since the value for activity state is None --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178845
The base two variants of the generic_tax_report : (generic_tax_report_tax_account, generic_tax_report_account_tax) had the availability_condition set to country with no country_id. The expected result was to have the availability_condition set to always as no country_id is set. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178950
Original PR description
The base two variants of the generic_tax_report : (generic_tax_report_tax_account, generic_tax_report_account_tax) had the availability_condition set to country with no country_id. The expected result was to have the availability_condition set to always as no country_id is set. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178950
A mail activity template in the hr modules has the summary "Compute out Delais" which doesn't mean anything in english. This commit replaces that with something more meaningful. task-4088643 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178867 Forward-Port-Of: odoo/odoo#176011
Original PR description
A mail activity template in the hr modules has the summary "Compute out Delais" which doesn't mean anything in english. This commit replaces that with something more meaningful. task-4088643 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178867 Forward-Port-Of: odoo/odoo#176011
backport of https://github.com/odoo/odoo/pull/176340 enterprise: https://github.com/odoo/enterprise/pull/69045 Forward-Port-Of: odoo/odoo#178437 Forward-Port-Of: odoo/odoo#177705
Original PR description
backport of https://github.com/odoo/odoo/pull/176340 enterprise: https://github.com/odoo/enterprise/pull/69045 Forward-Port-Of: odoo/odoo#178437 Forward-Port-Of: odoo/odoo#177705
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version. Stack Trace: ``` ValueError: Invalid version '17.0.1.0.0'. Modules should have a version in format `x.y`, `x.y.z`, `saas~17.2.x.y` or `saas~17.2.x.y.z`. File "addons/base_import_module/models/ir_module.py", line 253, in _import_zipfile self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo) File "addons/base_import_module/models/ir_mo
Original PR description
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version. Stack Trace: ``` ValueError: Invalid version '17.0.1.0.0'. Modules should…
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version.
Stack Trace:
```
ValueError: Invalid version '17.0.1.0.0'. Modules should have a version in format `x.y`, `x.y.z`, `saas~17.2.x.y` or `saas~17.2.x.y.z`.
File "addons/base_import_module/models/ir_module.py", line 253, in _import_zipfile
self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo)
File "addons/base_import_module/models/ir_module.py", line 81, in _import_module
values['latest_version'] = adapt_version(terp['version'])
File "odoo/modules/module.py", line 423, in adapt_version
raise ValueError(f"Invalid version {base_version!r}. Modules should have a version in format `x.y`, `x.y.z`,"
```
The error was caught on log because at [1] `_logger.exception()` was used, and this log error was not
useful because after the printing, the log `UserError` was raised, which shows the user what's wrong with its custom module.
This commit removes the logger exception because the `UserError` shows
what is wrong with the custom modules.
[1]-https://github.com/odoo/odoo/blob/b95edd874ce904ef231c295790a003992db002e3/addons/base_import_module/models/ir_module.py#L255-L258
sentry-4931285432
Forward-Port-Of: odoo/odoo#160274Version: 16 Description of the issue/feature this PR addresses: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is not on hand in menu "Accounting / Customers / Third Party Checks" if journal doesn't has "Existing Third Party Checks" incoming payment method. Steps to reproduce: 1) Log in with admin on runbot odoo enterprise 16 instance and install l10n_latam_check (Third Party and Deferred/Electroni
Original PR description
Version: 16 Description of the issue/feature this PR addresses: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks"…
Version: 16 Description of the issue/feature this PR addresses: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is not on hand in menu "Accounting / Customers / Third Party Checks" if journal doesn't has "Existing Third Party Checks" incoming payment method. Steps to reproduce: 1) Log in with admin on runbot odoo enterprise 16 instance and install l10n_latam_check (Third Party and Deferred/Electronic Checks Management) module. 2) Go to "Accounting / Configuration /Accounting / Journals" and create a new journal of type "Cash" and add incoming payment method "New Third Party Checks".  3) Create a new customer payment with journal created on step 2 and "New Third Party Checks" payment method and confirm.  4) Go to menu Third Party Checks and the check received on step 3 is not on hand.  Current behavior before PR: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is not on hand on tree view in "Accounting / Customers / Third Party Checks" if the journal doesn't has "Existing Third Party Checks" incoming payment method. Desired behavior after PR is merged: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is on hand on tree view in "Accounting / Customers / Third Party Checks" if the journal doesn't has "Existing Third Party Checks" incoming payment method. Ticket Adhoc side: 77887 Task Latam side: 1234 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#174283
### Steps to reproduce: - Install Time-off module - Create new allocation - If there is a default employee set remove it - Select Accrual Allocation - Set start date to a year ago - Set an employee ### Current behavior before PR: The allocation days is not getting computed onchange of employees. This is happening because it is computed only when we trigger _onchange_date_from and employee_id is not one of the fields that triggers this onchange method. ### Desired behavior afte
Original PR description
### Steps to reproduce: - Install Time-off module - Create new allocation - If there is a default employee set remove it - Select Accrual Allocation - Set start date to a year ago - Set an employee ### Current behavior before PR: The allocation days is not getting computed onchange of employees. This is happening because it is computed only when we trigger _onchange_date_from and employee_id is not one of the fields that triggers this onchange method. ### Desired behavior after PR is merged: Since we are checking if we have an employee_id or not in _onchange_date_from we added the employee_id to be one of the fields that triggers the onchange then to recompute the allocation days opw-4100075 Forward-Port-Of: odoo/odoo#176649
[FIX] website_sale: Avoid collect sale orders confirmed in backend This happens when, during a payment process, when the order is confirmed from the backend and in Website the cart icon is clicked. What causes the error is that the request is still pinned in the session, so it identifies that certain values should not be loaded and deletes them. The cart() method identifies if it's not a draft order, and in that case it clears the session order to continue with a new one. That causes u
Original PR description
[FIX] website_sale: Avoid collect sale orders confirmed in backend This happens when, during a payment process, when the order is confirmed from the backend and in Website the cart icon is clicked.…
[FIX] website_sale: Avoid collect sale orders confirmed in backend This happens when, during a payment process, when the order is confirmed from the backend and in Website the cart icon is clicked. What causes the error is that the request is still pinned in the session, so it identifies that certain values should not be loaded and deletes them. The cart() method identifies if it's not a draft order, and in that case it clears the session order to continue with a new one. That causes undesired modifications in modules that inherit cart() and execute before calling super(), such as website_sale_delivery, that removes carrier from order. With this motification the method sale_get_order() will now discriminate the orders that are completed and clear ir from the session, avoiding losses of information. Description of the issue/feature this PR addresses: This error was detected because the carrier_id was eliminated when following the aforementioned flow. The problem is that clicking on the cart retrieves the order that is in the session, but if it has been confirmed from the backend it should not collect it since at that moment it is not a "cart". A way to see this clearly is with the 'delivery_auto_refresh' module. This module shows the carrier_id field in sale order view (that exists but is not visible), which is collected at website. The flow that exists nowadays remove this value when we follow this steps: [Grabación de pantalla desde 16-08-24 10:41:50.webm](https://github.com/user-attachments/assets/9ec82b67-3e73-4083-b65b-be8d59db6a5a) In this video: 1. Customer starts an order 2. An user confirms the order at backend 3. Customer acceses to /shop/cart 4. Some fields of the sale order can be deleted, such as the delivery carrier If we confirm the order at backend and then follow the flow shown, the value of this field will dissapear. This happens because, as I said before, clicking the cart icon recovers the confirmed sale order (which is no longer a 'cart') and deletes many values of it. Current behavior before PR: If you confirm an order in process from website at backend and then click on the cart icon, certain fields are eliminated. Desired behavior after PR is merged: The cart button identifies whether the order is in confirmed status (or quote sent), and if so removes it from the session before the fields are cleared, thus starting a new order. FL-650-982 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178953 Forward-Port-Of: odoo/odoo#176718
Steps to reproduce: 1. Login with a user with invoicing manager permission, but not settings one. 2. Go to Settings > Add a Bank account. 3. Fill the data, and click on "Create". Current behavior: Access Error, due to the lack of the Administration/Settings permission Expected behavior: No error The solution is to put sudo on the operation. @Tecnativa TT50693 Forward-Port-Of: odoo/odoo#178997
Original PR description
Steps to reproduce: 1. Login with a user with invoicing manager permission, but not settings one. 2. Go to Settings > Add a Bank account. 3. Fill the data, and click on "Create". Current behavior: Access Error, due to the lack of the Administration/Settings permission Expected behavior: No error The solution is to put sudo on the operation. @Tecnativa TT50693 Forward-Port-Of: odoo/odoo#178997
Send reminder also to the event organizer **Example use case**: - Create an event, set an organizer (Mitchell Admin), and add as attendees Mitchell Admin and another. - Set an email reminder on the event - The event reminder will be received by all attendees (including the organizer) Current behavior before PR - Event organizer does not receive the reminder email @Tecnativa TT48356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-
Original PR description
Send reminder also to the event organizer **Example use case**: - Create an event, set an organizer (Mitchell Admin), and add as attendees Mitchell Admin and another. - Set an email reminder on the event - The event reminder will be received by all attendees (including the organizer) Current behavior before PR - Event organizer does not receive the reminder email @Tecnativa TT48356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#165284 Forward-Port-Of: odoo/odoo#160202
When the product has the "continue selling" box when "out-of-stock" checked, and you add the product to the wishlist from ecommerce, "Temporarily out of stock" message/warning will appear in the wishlist. To Reproduce on Runbot: 1. Make sure ecommerce module is installed 2. Go to storable product (for example: Cable Management Box) 3. In the sales tab, make sure the option "Continue Selling" for Out-of-Stock field is checked 4. Go to ecommerce, search for the product (here, let's search f
Original PR description
When the product has the "continue selling" box when "out-of-stock" checked, and you add the product to the wishlist from ecommerce, "Temporarily out of stock" message/warning will appear in the…
When the product has the "continue selling" box when "out-of-stock" checked, and you add the product to the wishlist from ecommerce, "Temporarily out of stock" message/warning will appear in the wishlist. To Reproduce on Runbot: 1. Make sure ecommerce module is installed 2. Go to storable product (for example: Cable Management Box) 3. In the sales tab, make sure the option "Continue Selling" for Out-of-Stock field is checked 4. Go to ecommerce, search for the product (here, let's search for Cable Management Box), click on it 5. Click on add to wishlist 6. Go to wishlist. 7. We'll see "Temporarily out of stock" message. But, we don't want this because we want to continue selling even if it's out of stock, and don't want to customer to get confused with the message. So, since the message/warning doesn't align with the concept of continue selling when out of stock, we want to get rid of the message/warning if the product has "continue selling" box checked. opw-4121929 Forward-Port-Of: odoo/odoo#177993
Steps to reproduce: - Install `payment_stripe` and `website_sale` - Configure express checkout for stripe - Add public/secret keys and - Enable "Apple Pay" in settings (to do this comment out this block) https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/models/payment_provider.py#L234-L237 - Enable "Link" in Stripe and add payment domain to ngrok domain - Go to website in incognito page and open a product - Add it to cart and click on the expres
Original PR description
Steps to reproduce: - Install `payment_stripe` and `website_sale` - Configure express checkout for stripe - Add public/secret keys and - Enable "Apple Pay" in settings (to do this comment out this block) https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/models/payment_provider.py#L234-L237 - Enable "Link" in Stripe and add payment domain to ngrok domain - Go to website in incognito page and open a product - Add it to cart and click on the express checkout button - Complete process to pay - Go to contact linked to sale Issues: Phone is missing, this is because during the creation of the shipping address `res_partner` record we don't have the phone. https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/static/src/js/express_checkout_form.js#L171-L181 opw-4055084 Forward-Port-Of: odoo/odoo#176213
Version : 17 Steps to Reproduce: Install the Stripe or Adyen Payment Provider. Activate the CashApp payment method. Attempt to make a payment using CashApp at checkout. Issue: Users encounter an error when selecting the CashApp payment method during payment. The error is caused by the use incorrect code of Cash App Pay payment method, resulting in a traceback. Cause: The error occurs because Cash App Pay payment method not mapped with correct code. Fix: Add the correct co
Original PR description
Version : 17 Steps to Reproduce: Install the Stripe or Adyen Payment Provider. Activate the CashApp payment method. Attempt to make a payment using CashApp at checkout. Issue: Users encounter an error when selecting the CashApp payment method during payment. The error is caused by the use incorrect code of Cash App Pay payment method, resulting in a traceback. Cause: The error occurs because Cash App Pay payment method not mapped with correct code. Fix: Add the correct code 'cashapp' to the 'PAYMENT_METHODS_MAPPING' variable of stripe and ayden. opw-4132745 Forward-Port-Of: odoo/odoo#178496
Steps to reproduce the bug: - Turn on the Cookies from setting for the website. - Go to front end, click on editor, go to theme tab. - Click on any Font Family, and select add a google font. - After adding, save. - Add a "Title" block, go to "mobile view", and add a text highlight. - Save the page. - Bug: If you switch between mobile and desktop views, the highlights are not updated (because the SVGs are fixed and get added to the view of the page). The bug occurred because some opti
Original PR description
Steps to reproduce the bug: - Turn on the Cookies from setting for the website. - Go to front end, click on editor, go to theme tab. - Click on any Font Family, and select add a google font. - After adding, save. - Add a "Title" block, go to "mobile view", and add a text highlight. - Save the page. - Bug: If you switch between mobile and desktop views, the highlights are not updated (because the SVGs are fixed and get added to the view of the page). The bug occurred because some options, like the popup, trigger a resize after a delay before the page is saved. This causes the highlights to be added back to the DOM after the "TextHighlight" widget has been destroyed. To fix this, we prevent adding highlights if the "TextHighlight" widget has been destroyed. opw-4081390 Forward-Port-Of: odoo/odoo#178022
This commit's purpose is to prevent the creation of a task with quick create with the 'withTaskHour' widget if the project is an fsm one. This is done to prevent the creation of fsm task without a partner set (the field is required). Forward-Port-Of: odoo/odoo#178667 Forward-Port-Of: odoo/odoo#178342
Original PR description
This commit's purpose is to prevent the creation of a task with quick create with the 'withTaskHour' widget if the project is an fsm one. This is done to prevent the creation of fsm task without a partner set (the field is required). Forward-Port-Of: odoo/odoo#178667 Forward-Port-Of: odoo/odoo#178342
enterprise: https://github.com/odoo/enterprise/pull/68361 Forward-Port-Of: odoo/odoo#178012 Forward-Port-Of: odoo/odoo#176580
Original PR description
enterprise: https://github.com/odoo/enterprise/pull/68361 Forward-Port-Of: odoo/odoo#178012 Forward-Port-Of: odoo/odoo#176580
This PR contains several fixes involving the "select all" feature in list view. Task~4150362 Forward-Port-Of: odoo/odoo#179194 Forward-Port-Of: odoo/odoo#178772
Original PR description
This PR contains several fixes involving the "select all" feature in list view. Task~4150362 Forward-Port-Of: odoo/odoo#179194 Forward-Port-Of: odoo/odoo#178772
Steps to reproduce the bug: 1. Install the Sales and Loyalty apps. 2. Create a sales order for 'client x' and assign a loyalty reward to it. 3. Invoice the sales order with a down payment. 4. Navigate to the Helpdesk app and create a ticket for 'client x'. 5. Create a task for the ticket and check the Sales order item list. Issue: The sales order item list incorrectly includes down payments and loyalty rewards due to an imprecise domain. Solution: Adding a domain function that we ca
Original PR description
Steps to reproduce the bug: 1. Install the Sales and Loyalty apps. 2. Create a sales order for 'client x' and assign a loyalty reward to it. 3. Invoice the sales order with a down payment. 4. Navigate to the Helpdesk app and create a ticket for 'client x'. 5. Create a task for the ticket and check the Sales order item list. Issue: The sales order item list incorrectly includes down payments and loyalty rewards due to an imprecise domain. Solution: Adding a domain function that we can override computed field where it's necessary, to filter the sale_order_line records accurately. opw-4001226 enterprise pr : https://github.com/odoo/enterprise/pull/66388 Forward-Port-Of: odoo/odoo#179161 Forward-Port-Of: odoo/odoo#173667
Currently, an error occurs when creating foreign taxes for 'Austria'. Steps to produce: - Installing the 'account' module. - Go to Invoicing / Configuration / Accounting / Fiscal Positions. - Create a Fiscal Position, Set the Country as 'Austria', and enter an 'FR23334175221'(For example) as 'Foreign Tax ID'. - And Create the taxes for this country. Stack Trace: ``` KeyError: 'children_tax_ids' File "odoo/http.py", line 2374, in __call__ response = request._serve_db()
Original PR description
Currently, an error occurs when creating foreign taxes for 'Austria'. Steps to produce: - Installing the 'account' module. - Go to Invoicing / Configuration / Accounting / Fiscal Positions. - Create…
Currently, an error occurs when creating foreign taxes for 'Austria'.
Steps to produce:
- Installing the 'account' module.
- Go to Invoicing / Configuration / Accounting / Fiscal Positions.
- Create a Fiscal Position, Set the Country as 'Austria', and enter an 'FR23334175221'(For example) as 'Foreign Tax ID'.
- And Create the taxes for this country.
Stack Trace:
```
KeyError: 'children_tax_ids'
File "odoo/http.py", line 2374, in __call__
response = request._serve_db()
File "odoo/http.py", line 1904, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1967, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1934, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 223, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 755, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 40, in call_button
action = call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 459, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/account/models/partner.py", line 289, in action_create_foreign_taxes
self.env["account.chart.template"]._instantiate_foreign_taxes(self.country_id, self.company_id)
File "addons/account/models/chart_template.py", line 929, in _instantiate_foreign_taxes
children_taxes = tax_data['children_tax_ids'].split(',')
```
An error occurs when the system tries to get a 'children_tax_ids' key from tax data at [1] while foreign tax creation, But it is not available.
link [1]: https://github.com/odoo/odoo/blob/4c79aceb3a6c08453f9ec66131e1bc525eae140c/addons/account/models/chart_template.py#L936
To resolve the issue, make small changes into tax data where 'amount_type' = 'percent' instead of 'amount_type' ='group'.
Sentry-5730875398
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#178939
Forward-Port-Of: odoo/odoo#178058Before: In chrome, you can see the message "[DOM] Input elements should have autocomplete attributes (suggested: "username"): (More info: https://goo.gl/9p2vKq)". After: The message does not appear. Also, This maintains consistency with the password input which has the attribute autocomplete.  --- I confirm I have signed the CLA and read the PR guid
Original PR description
Before: In chrome, you can see the message "[DOM] Input elements should have autocomplete attributes (suggested: "username"): (More info: https://goo.gl/9p2vKq)". After: The message does not appear. Also, This maintains consistency with the password input which has the attribute autocomplete.  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#146934 Forward-Port-Of: odoo/odoo#146037