Friday, May 3, 2024
45 changes · saas-17.2
Resolved issues and error corrections
Removing a follower with an invalid email address no longer causes an error. This keeps CRM lead follower management working smoothly even when user contact details are incomplete or malformed.
Original PR description
Currently, an error is generated when attempting to remove a user from followers who have an invalid email address. Step to produce: - Install the 'CRM' module without demo data. - Create a new user…
Currently, an error is generated when attempting to remove a user from followers who have an invalid email address.
Step to produce:
- Install the 'CRM' module without demo data.
- Create a new user 'Test' with the email 'test'
- Create a lead with 'Email' and salesperson 'Test'
- Click on the 'Show Followers' icon (top right corner), and remove 'Test' from Followers.
See Traceback:
```
KeyError: 'email'
File "odoo/http.py", line 2254, in __call__
response = request._serve_db()
File "odoo/http.py", line 1830, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1850, 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 1828, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1835, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2060, 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 742, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/mail/controllers/thread.py", line 16, in mail_thread_data
return thread._get_mail_thread_data(request_list)
File "home/odoo/src/enterprise/saas-17.2/whatsapp/models/mail_thread.py", line 9, in _get_mail_thread_data
res = super()._get_mail_thread_data(request_list)
File "addons/mail/models/mail_thread.py", line 4560, in _get_mail_thread_data
res['suggestedRecipients'] = self._message_get_suggested_recipients()
File "addons/crm/models/crm_lead.py", line 2007, in _message_get_suggested_recipients
self._message_add_suggested_recipient(
File "addons/mail/models/mail_thread.py", line 1836, in _message_add_suggested_recipient
if email and email in [val['email'] for val in result]: # already existing email -> skip
File "addons/mail/models/mail_thread.py", line 1836, in <listcomp>
if email and email in [val['email'] for val in result]: # already existing email -> skip
```
The issue occurs when removing user from followers. As a result the system encounter an error because it receives data without an 'email' key at [1].
link[1]: https://github.com/odoo/odoo/blob/5dd1fd84df78e3279c2a949d82199183ddec844a/addons/mail/models/mail_thread.py#L1836
To resolve the issue, use the get() method to retrieve a value from the data to prevent a key error and provide a default value as a False.
sentry-5238024403
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prMiscellaneous changes
Versions -------- - saas-16.3+ Issue ----- If early pay discount includes taxes, its amount was calculated by first multiplying the total amount by the discount's complementary percentage, and take the difference between its result and the total amount. Let's assume discount is 10% and total price is 1725.05. - We want to pay 90% of the full amount, which is 1552.545; - to get the discount, we subtract it from the full amount: 1725.05 - 1552.545 = 172.505; - we then round this
Original PR description
Versions -------- - saas-16.3+ Issue ----- If early pay discount includes taxes, its amount was calculated by first multiplying the total amount by the discount's complementary percentage, and take…
Versions
--------
- saas-16.3+
Issue
-----
If early pay discount includes taxes, its amount was calculated by first multiplying the total amount by the discount's complementary percentage, and take the difference between its result and the total amount.
Let's assume discount is 10% and total price is 1725.05.
- We want to pay 90% of the full amount, which is 1552.545;
- to get the discount, we subtract it from the full amount:
1725.05 - 1552.545 = 172.505;
- we then round this discount to 172.51;
- and return total amount minus discount as amount due after discount:
1725.05 - 172.51 = 1552.54
- elsewhere we round 1552.545 to 1552.55, a 1 cent difference
Cause
-----
The `_get_amount_due_after_discount` adds half a cent to the discount by rounding half-up, while elsewhere the reduced price gets rounded half-up, increasing it by half a cent, this adds up to a 1 cent discrepancy.
Solution
--------
Call the rounding method after subtracting discount from the total amount, so rounding happens in the same direction.
Issue found working on opw-3705546
Forward-Port-Of: odoo/odoo#163786A test exists on mail.template to test dynamic evaluation of scheduled_date field, based on datetime. However it currently runs on non-mocked datetime and it sometimes fails due to a minute-switch between test begin and end. In this commit we freeze the time to ensure test is fixed. However we also have to somehow hack "safe_eval.datetime" usage as it is not covered by standard usage of "freeze_time", probably because it is wrapped. Simplest solution is to mock it directly, assuming safe_eval
Original PR description
A test exists on mail.template to test dynamic evaluation of scheduled_date field, based on datetime. However it currently runs on non-mocked datetime and it sometimes fails due to a minute-switch between test begin and end. In this commit we freeze the time to ensure test is fixed. However we also have to somehow hack "safe_eval.datetime" usage as it is not covered by standard usage of "freeze_time", probably because it is wrapped. Simplest solution is to mock it directly, assuming safe_eval itself is working as intended (breaking safe_eval itself will probably break other tests; purpose of mail.template test is to check its dynamic rendering is effectively called and taken into account when sending emails based on templates). Task-3872732 Runbot-54946 Forward-Port-Of: odoo/odoo#163943
Issue: ====== mass mailing template flicker while loading. Steps to reproduce the issue: ============================= - Go to email marketing - Create a new mass mailing Origin of the issue: ==================== The sidebar with id `oe_snippets` is being loaded but transformed with translateX to be outside the html_field but there is some space left between the field and the chatter so a part of it will be shown. Solution: ========= Force the display attribue of the sidebar to
Original PR description
Issue: ====== mass mailing template flicker while loading. Steps to reproduce the issue: ============================= - Go to email marketing - Create a new mass mailing Origin of the issue: ==================== The sidebar with id `oe_snippets` is being loaded but transformed with translateX to be outside the html_field but there is some space left between the field and the chatter so a part of it will be shown. Solution: ========= Force the display attribue of the sidebar to be `none` at the start and remove it after being completely loaded. task-3792995 Forward-Port-Of: odoo/odoo#157358
Problem: For the Norwegian localization, the field name "Register of Legal Entities (Brønnøysund Register Center)" is not displayed Steps to reproduce: - Install "Contacts" app and "l10n_no" module - Create a new Norwegian contact as company, the field below "Tax ID" has no name Cause: Probably a change in the framework making the behavior different compared to previous versions opw-3863407 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-p
Original PR description
Problem: For the Norwegian localization, the field name "Register of Legal Entities (Brønnøysund Register Center)" is not displayed Steps to reproduce: - Install "Contacts" app and "l10n_no" module - Create a new Norwegian contact as company, the field below "Tax ID" has no name Cause: Probably a change in the framework making the behavior different compared to previous versions opw-3863407 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#162836
In iOS, there is a dictation feature accessible from the keyboard. This feature modifies the DOM directly and triggers input events. From observations made on [1], it seems it triggers each event twice for unknown reason. Since there is custom editor code bound on this event, the `insertText` function was called twice, thus resulting in the text being duplicated. Note that the bug is in fact subtle because, if the selection reported by iOS was always accurate when triggering those events,
Original PR description
In iOS, there is a dictation feature accessible from the keyboard. This feature modifies the DOM directly and triggers input events. From observations made on [1], it seems it triggers each event…
In iOS, there is a dictation feature accessible from the keyboard. This feature modifies the DOM directly and triggers input events. From observations made on [1], it seems it triggers each event twice for unknown reason. Since there is custom editor code bound on this event, the `insertText` function was called twice, thus resulting in the text being duplicated. Note that the bug is in fact subtle because, if the selection reported by iOS was always accurate when triggering those events, then calling `insertText` twice would have no visual effect. However, in the case where the user chooses to manually stop the dictation mechanism through the dedicated button on the keyboard before it has finished writing the whole sentence, then the selection is not updated accordingly and the second call to `insertText` ends up inserting the text at the wrong place, thus triggering the symptom of duplicating the text. This commit fixes the issue by restricting the cases where a manual call to `insertText` is needed. The previous comment specified that the only case in which it was needed was when some text was selected. This is not entirely true. The only case in which it is needed is when text is selected in a way that spans multiple block elements, as this is the only case where the browser can alter those nodes by removing or merging them. Note that the first line of the `insertText` conditional branch, the one that fetches the current selection, actually looks fishy. It is possible the bug is caused by the fact that this selection is used instead of `this._currentStep.selection`. That being said, changing that part of the code in stable would not be worth the risk of breaking something that might rely on it, especially considering the dictation on iOS is a pretty niche feature. Also note that, for some reason, the issue only happens when the paragraph was empty when the dictation started. If some previous text was already present in the paragraph, for example from a previous dictation test, then the duplication will not occur. In this case however, a traceback can sometimes occur due to the fact that when checking for a potential url match, the `pop` method is called on an array multiple times then the result value is used as an object even though no check were made to make sure that the return value was not `undefined` because the array had nothing more to pop. This commit fixes that second issue by adding the missing check. task-3374520 opw-3167676 [1]: https://w3c.github.io/uievents/tools/key-event-viewer-ce.html Forward-Port-Of: odoo/odoo#163993 Forward-Port-Of: odoo/odoo#160363
Responses should be mocked according to requests that are made during tests. The tests use a sample Peppol file, where the supplier is `0198:dk16356706`. When the document is imported and its content is extracted, the corresponding partner is created with these `peppol_eas` and `peppol_endpoint` values. That triggers a participant check but the response is not mocked for this endpoint. This commit adds a mock response for the endpoint that matches the test file. no task, reported by gawa
Original PR description
Responses should be mocked according to requests that are made during tests. The tests use a sample Peppol file, where the supplier is `0198:dk16356706`. When the document is imported and its content is extracted, the corresponding partner is created with these `peppol_eas` and `peppol_endpoint` values. That triggers a participant check but the response is not mocked for this endpoint. This commit adds a mock response for the endpoint that matches the test file. no task, reported by gawa --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163603
Current behavior: --- When trying to un-blacklist a phone number from the contacts, it doesn't do anything. Steps to reproduce: --- 1. Install mass_mailing_sms 2. Go to Contacts 3. Create a new contact 4. Add a mobile phone number (ie: +917896525894) 5. Go to SMS Marketing 6. Go to Configuration > Blacklisted phone numbers 7. Click on new and input the same number then confirm 8. Click on Blacklist 9. Go back to the contact 10. Before the field, a block icon has appeared 11. Cli
Original PR description
Current behavior: --- When trying to un-blacklist a phone number from the contacts, it doesn't do anything. Steps to reproduce: --- 1. Install mass_mailing_sms 2. Go to Contacts 3. Create a new contact 4. Add a mobile phone number (ie: +917896525894) 5. Go to SMS Marketing 6. Go to Configuration > Blacklisted phone numbers 7. Click on new and input the same number then confirm 8. Click on Blacklist 9. Go back to the contact 10. Before the field, a block icon has appeared 11. Click on it then confirm 12. Nothing happens Cause of the issue: --- The search override was always checking for a string, but when the keyword 'in' is used in the domain, the last element is a list. opw-3757193 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163621 Forward-Port-Of: odoo/odoo#155457
### Steps to reproduce the issue: 1. Create a purchase Tax and tick Include in Price in the Advanced Options 2. Create a Purchase Order with Analytic Distribution towards a Project in the Order Line 3. Set the purchase Tax created before as the tax of the Order Line 4. Confirm the Purchase Order 5. Make sure the Project is Billable, then go to the Project Updates 6. The profitability calculated the price with the included Tax 7. Create a Vendor Bill and set the same Tax and Analytic Dis
Original PR description
### Steps to reproduce the issue: 1. Create a purchase Tax and tick Include in Price in the Advanced Options 2. Create a Purchase Order with Analytic Distribution towards a Project in the Order Line…
### Steps to reproduce the issue: 1. Create a purchase Tax and tick Include in Price in the Advanced Options 2. Create a Purchase Order with Analytic Distribution towards a Project in the Order Line 3. Set the purchase Tax created before as the tax of the Order Line 4. Confirm the Purchase Order 5. Make sure the Project is Billable, then go to the Project Updates 6. The profitability calculated the price with the included Tax 7. Create a Vendor Bill and set the same Tax and Analytic Distribution as the Purchase order 8. Confirm the Bill 9. Return to the Project Updates 10. The profitability doesn't calculate the included Tax ### Explanation: In `project.project._get_profitability_items`, we can find an inconsistency in the queries. The query for `purchase.order.line` is looking for `price_unit`, which takes included taxes into account. https://github.com/odoo/odoo/blob/249aaac7bd1a13d62c947cddb1835772659aabff/addons/project_purchase/models/project.py#L125-L132 The query for `account.move.line` retrieves `price_subtotal`, which does not. https://github.com/odoo/odoo/blob/249aaac7bd1a13d62c947cddb1835772659aabff/addons/project_purchase/models/project.py#L171-L181 ### Suggested fix: In `project.project._get_revenues_items_from_invoices`, the `account.move.line` query retrieves `price_subtotal` as well. https://github.com/odoo/odoo/blob/8750b94c53c6ab58567873b0745fa6d9a18c97d0/addons/sale_project/models/project.py#L467-L474 With above information and input of PO (olma), taxes will not be calculated in `project.project._get_profitability_items`, therefore we will replace `price_unit` with `price_subtotal` in the `purchase.order.line` query. opw-3781426 Forward-Port-Of: odoo/odoo#163751 Forward-Port-Of: odoo/odoo#161634
### Steps to reproduce: - Create a storable product and add a vendor - Go to settings and activate the Multi-step Routes - Go to Inventory > Configuration > Warehouse Manag. > Operations Types - Create a new Operation type of type Receipt with WH/Stock/Shelf 1 as default Destination Location - Go to Inventory > Operations > Replenishment - Create a new replenishment for one unit of your storable product using the Buy route with destination WH/Stock - Click on the truck icon > go to the
Original PR description
### Steps to reproduce: - Create a storable product and add a vendor - Go to settings and activate the Multi-step Routes - Go to Inventory > Configuration > Warehouse Manag. > Operations Types -…
### Steps to reproduce: - Create a storable product and add a vendor - Go to settings and activate the Multi-step Routes - Go to Inventory > Configuration > Warehouse Manag. > Operations Types - Create a new Operation type of type Receipt with WH/Stock/Shelf 1 as default Destination Location - Go to Inventory > Operations > Replenishment - Create a new replenishment for one unit of your storable product using the Buy route with destination WH/Stock - Click on the truck icon > go to the associated Purchase order - Add your receipt operation in the deliver to field - Confirm the purchase order and go to the associated receipt ### Current behavior: The destination of the stock picking is set to WH/Stock/Shelf1 but the detailed operation of the stock move line is set to WH/Stock. ### Expected behavior: The destination of the stock move line should always be more or equally as precise as the associated stock picking. In this case the destination should be WH/Stock/Shelf1. ### Cause of the issue: Confirming the PO, will first create a stock picking and then generate the associated stock moves from the purchase order lines and the picking: https://github.com/odoo/odoo/blob/3f7b19ba05acf59c5780444be2446fcb0da7a907/addons/purchase_stock/models/purchase.py#L225-L230 However, since the purchase order was created via an orderpoint (our replenishment), the purchase order line is associated with an orderpoint, so that the stock move destination will be set to the destination of the orderpoint in priority: https://github.com/odoo/odoo/blob/3f7b19ba05acf59c5780444be2446fcb0da7a907/addons/purchase_stock/models/purchase.py#L514 opw-3812952 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163235 Forward-Port-Of: odoo/odoo#161285
### [FIX] mail: rm invalid recipient on m2x popup close Before this change incorrect records with invalid/lacking emails were added to tag field (they were not displayed) and user was prompted to fix invalid email. The issue was that discarding the popup didn't remove the invalid records from the tag field. ### [Reproduce] - Install contact (or crm,sale... whatever with a composer) - Create a contact C without an email - Open a full screen composer: 1. Select a contact 2. Click
Original PR description
### [FIX] mail: rm invalid recipient on m2x popup close Before this change incorrect records with invalid/lacking emails were added to tag field (they were not displayed) and user was prompted to fix…
### [FIX] mail: rm invalid recipient on m2x popup close Before this change incorrect records with invalid/lacking emails were added to tag field (they were not displayed) and user was prompted to fix invalid email. The issue was that discarding the popup didn't remove the invalid records from the tag field. ### [Reproduce] - Install contact (or crm,sale... whatever with a composer) - Create a contact C without an email - Open a full screen composer: 1. Select a contact 2. Click "Send message" on the chatter 3. Click the expand button, to bring up full-screen composer - In the "Recipients": 1. Select recipient C, this will open a popup asking to fill in missing email 2. Close the popup without filling the email 3. Select another recipient, with an email 4. BUG: popup asking to fill in email for C is showed Note: issue exists in every composer view, not specyfic to crm opw-3829741 ## BEFORE https://github.com/odoo/odoo/assets/33809926/ff04beab-51a1-4405-b535-0c9869556947 ## AFTER https://github.com/odoo/odoo/assets/33809926/6f493ceb-99a8-4b49-9043-02ef929b7d14 Forward-Port-Of: odoo/odoo#162850
Resolves a problem when removing a coupon from an order containing different tax applications. If an order is composed of products with varying tax rates, the coupon applied generates separate lines for each unique tax situation. This includes non-taxed products, products with individual taxes, and combinations thereof. The purpose of this commit is to fix the management of coupon deletion in cases where the coupon generates multiple lines for different tax scenarios. Adjusting the recover
Original PR description
Resolves a problem when removing a coupon from an order containing different tax applications. If an order is composed of products with varying tax rates, the coupon applied generates separate lines for each unique tax situation. This includes non-taxed products, products with individual taxes, and combinations thereof. The purpose of this commit is to fix the management of coupon deletion in cases where the coupon generates multiple lines for different tax scenarios. Adjusting the recovery process to select the first coupon line identifier, ensuring that the correct line is targeted for deletion in scenarios with multiple tax-related coupon lines. Example: - Product A (non-taxed) - Product B (Tax A) - Product C (Tax B) - Product D (Tax A and B) The coupon would generate four separate lines for non-taxed, Tax A, Tax B, and Tax A & B scenarios, respectively. opw-3693319 Forward-Port-Of: odoo/odoo#163411 Forward-Port-Of: odoo/odoo#161817
In Documents when dragging a workspace in the search panel to resequence it there was no visual effect showing where the workspace would drop. This was due to some css rules that were replaced by a bootstrap class in the following commit : 6f63e2349c397807588fcfcae9d28d93c9c378cf In our case, the `o_search_panel_category_value` node already has a `py-1` bootstrap class, which overrides the value set by the `py-0` class. this commit restores the `padding-top: 0 !important;` and `padding-bot
Original PR description
In Documents when dragging a workspace in the search panel to resequence it there was no visual effect showing where the workspace would drop. This was due to some css rules that were replaced by a bootstrap class in the following commit : 6f63e2349c397807588fcfcae9d28d93c9c378cf In our case, the `o_search_panel_category_value` node already has a `py-1` bootstrap class, which overrides the value set by the `py-0` class. this commit restores the `padding-top: 0 !important;` and `padding-bottom:0 !important;` rules to avoid conflict with other py-X CSS rules (e.g.: py-1, py-2, ...) Task-3877426 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#162948
This commit completes the work started in https://github.com/odoo/odoo/commit/60b5baf392c7fc6029d6b7ed870ec8163a9d1c6b to prevent loading images that are not necessary. The previous implementation was not complete and this commit addresses the remaining issues. opw-3877851 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164200
Original PR description
This commit completes the work started in https://github.com/odoo/odoo/commit/60b5baf392c7fc6029d6b7ed870ec8163a9d1c6b to prevent loading images that are not necessary. The previous implementation was not complete and this commit addresses the remaining issues. opw-3877851 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164200
### Steps to Reproduce 1. Install the `account` module. 2. Activate Quick Encoding in the settings. 3. Create an invoice and populate the 'Total (Tax inc.)' field, which will automatically generate an invoice line. 4. Add a section line to the invoice. 5. Attempt to save the invoice. An error message should appear, stating: "The operation cannot be completed: Forbidden balance or account on non-accountable line." ### Cause The issue arises due to a constraint that prevents non-a
Original PR description
### Steps to Reproduce 1. Install the `account` module. 2. Activate Quick Encoding in the settings. 3. Create an invoice and populate the 'Total (Tax inc.)' field, which will automatically generate an invoice line. 4. Add a section line to the invoice. 5. Attempt to save the invoice. An error message should appear, stating: "The operation cannot be completed: Forbidden balance or account on non-accountable line." ### Cause The issue arises due to a constraint that prevents non-accounting lines (such as sections and notes) from having values in accounting fields (debit, credit, account, etc.). When Quick Encoding is enabled and the 'Total (Tax inc.)' field is populated, the system automatically suggests and applies default values to new lines. Unfortunately, these defaults are also applied to non-accounting lines, leading to the assignment of an `account_id` to the section line, which violates the existing constraint. opw-3852844 Forward-Port-Of: odoo/odoo#163717
Before this commit, our distribution analytics process included searching the table res.partner for potential matches, which negatively impacted performance. However, this is no longer necessary as the default name of the account matches the name of the partner. This change removes the unnecessary performance overhead. Forward-Port-Of: odoo/odoo#162951
Original PR description
Before this commit, our distribution analytics process included searching the table res.partner for potential matches, which negatively impacted performance. However, this is no longer necessary as the default name of the account matches the name of the partner. This change removes the unnecessary performance overhead. Forward-Port-Of: odoo/odoo#162951
The issue: Currently, in Indonesia, the regulation for tax ID is 15 digits. But a new regulation is coming where Tax ID is now 16 digits by adding 0 in front The fix: Remove the first zero and leave the rest for the _run_vat_test function Related PR: odoo/odoo#146111 opw-3782636 Forward-Port-Of: odoo/odoo#157885
Original PR description
The issue: Currently, in Indonesia, the regulation for tax ID is 15 digits. But a new regulation is coming where Tax ID is now 16 digits by adding 0 in front The fix: Remove the first zero and leave the rest for the _run_vat_test function Related PR: odoo/odoo#146111 opw-3782636 Forward-Port-Of: odoo/odoo#157885
**Before this commit:** SVG images disappeared after cropping and clicking elsewhere or saving. **After this commit:** Now the images don't disappear after cropping. task-3809854 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163895 Forward-Port-Of: odoo/odoo#162032
Original PR description
**Before this commit:** SVG images disappeared after cropping and clicking elsewhere or saving. **After this commit:** Now the images don't disappear after cropping. task-3809854 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163895 Forward-Port-Of: odoo/odoo#162032
Currently, in a database that lacks vendor bill records, if a user with all accounting rights attempts to upload a vendor bill, they encounter an access error. ### Steps to Reproduce 1. Install the `account_accountant` module. 2. Switch to a company that does not have any vendor bills. 3. Use an account that has full accounting rights but lacks administration rights. 4. On the accounting dashboard, within the vendor bills journal, click on 'Upload'. You should be met with an access e
Original PR description
Currently, in a database that lacks vendor bill records, if a user with all accounting rights attempts to upload a vendor bill, they encounter an access error. ### Steps to Reproduce 1. Install the `account_accountant` module. 2. Switch to a company that does not have any vendor bills. 3. Use an account that has full accounting rights but lacks administration rights. 4. On the accounting dashboard, within the vendor bills journal, click on 'Upload'. You should be met with an access error stating, "You are not allowed to access 'Onboarding Step' (onboarding.onboarding.step)." ### Cause When no bill has been previously created and a user tries to upload one, the system triggers an onboarding popup. However, access to this popup is restricted to the 'Administration/Settings' (base.group_system) group. opw-3887851 opw-3890044 Forward-Port-Of: odoo/odoo#163709
### Steps to reproduce * install `website_sale` * in the settings, enable 'Extra Step During Checkout' * go to the Extra Info step in the checkout process * switch to edit mode and click on any input in the form You should be met with a traceback: "Cannot read property of undefined (reading 'website_form_label')" ### Cause This issue was introduced with odoo/odoo@3626e36a9c4995286be48206b0d927f1de51e295 Basically, if you try to edit a form whose model is not one of the `compatibl
Original PR description
### Steps to reproduce * install `website_sale` * in the settings, enable 'Extra Step During Checkout' * go to the Extra Info step in the checkout process * switch to edit mode and click on any input in the form You should be met with a traceback: "Cannot read property of undefined (reading 'website_form_label')" ### Cause This issue was introduced with odoo/odoo@3626e36a9c4995286be48206b0d927f1de51e295 Basically, if you try to edit a form whose model is not one of the `compatible_form_models`, you get a traceback because the system attempts to access `website_form_label` on an empty form. opw-3891255 Forward-Port-Of: odoo/odoo#163962
Versions -------- - 17.0+ Issue ----- `precision_rounding` values were being passed incorrectly as `precision_digits` parameters. Solution -------- Pass them as named `precision_rounding` parameters instead. Enterprise branch: https://github.com/odoo/enterprise/pull/61387 Forward-Port-Of: odoo/odoo#163182
Original PR description
Versions -------- - 17.0+ Issue ----- `precision_rounding` values were being passed incorrectly as `precision_digits` parameters. Solution -------- Pass them as named `precision_rounding` parameters instead. Enterprise branch: https://github.com/odoo/enterprise/pull/61387 Forward-Port-Of: odoo/odoo#163182
This error arises when the someone clicks on ``Early Discount`` in Payment Terms while creating a new one. Steps to reproduce - Install ``account`` module - Invoicing -> Configuration -> Invoicing -> Payment Terms - Click on ``New`` -> click on ``Early Discount`` Traceback : ``` ValueError: not enough values to unpack (expected 1, got 0) File "odoo/models.py", line 5848, in ensure_one _id, = self._ids ValueError: Expected singleton: res.currency() File "odoo/http.py", lin
Original PR description
This error arises when the someone clicks on ``Early Discount`` in Payment Terms while creating a new one. Steps to reproduce - Install ``account`` module - Invoicing -> Configuration -> Invoicing ->…
This error arises when the someone clicks on ``Early Discount`` in Payment Terms while creating a new one.
Steps to reproduce
- Install ``account`` module
- Invoicing -> Configuration -> Invoicing -> Payment Terms
- Click on ``New`` -> click on ``Early Discount``
Traceback :
```
ValueError: not enough values to unpack (expected 1, got 0)
File "odoo/models.py", line 5848, in ensure_one
_id, = self._ids
ValueError: Expected singleton: res.currency()
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 "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 "addons/web/models/models.py", line 1011, in onchange
todo = [
File "addons/web/models/models.py", line 1014, in <listcomp>
if field_name not in done and snapshot0.has_changed(field_name)
File "addons/web/models/models.py", line 1127, in has_changed
return self[field_name] != self.record[field_name]
File "odoo/models.py", line 6576, in __getitem__
return self._fields[key].__get__(self, self.env.registry[self._name])
File "odoo/fields.py", line 1261, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1443, in compute_value
records._compute_field_value(self)
File "odoo/models.py", line 4931, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 100, in determine
return needle(*args)
File "addons/account/models/account_payment_term.py", line 95, in _compute_example_preview
discount_amount = record._get_amount_due_after_discount(record.example_amount, 0.0)
File "addons/account/models/account_payment_term.py", line 67, in _get_amount_due_after_discount
discount_amount_currency = self.currency_id.round(total_amount - (total_amount * (1 - (percentage))))
File "odoo/addons/base/models/res_currency.py", line 217, in round
self.ensure_one()
File "odoo/models.py", line 5851, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
This error occurs from line[1] where the currency ID is getting false within the self, leading to a value error being raised. This happens because of this PR https://github.com/odoo/odoo/pull/161044, where they have removed the default currency from currency ID field.
This commit will fix the above error by adding ``company_id`` field in the payment term from view.
[1] : https://github.com/odoo/odoo/blob/5673ea9d8c6993575bd9ce9c2a931a8738e77e76/addons/account/models/account_payment_term.py#L67
sentry - 5209971284
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#162564Before this commit, if you print the bill early, there will be several empty pages. The problem is that the Bill printing screen is inside the `o-main-components-container` and causing the issue. This commit fixes the issue by adjusting the CSS rules to hide all elements inside `o-main-components-container` except for the `render-container-parent` and `render-container` during print, preventing the printing of empty pages. opw-3878695 --- I confirm I have signed the CLA and read the PR gu
Original PR description
Before this commit, if you print the bill early, there will be several empty pages. The problem is that the Bill printing screen is inside the `o-main-components-container` and causing the issue. This commit fixes the issue by adjusting the CSS rules to hide all elements inside `o-main-components-container` except for the `render-container-parent` and `render-container` during print, preventing the printing of empty pages. opw-3878695 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163942
Steps to reproduce: - create-aprove-post an expense - Go to the accounting dashboard Issue: expenses' amount is 0 Cause: In `_count_results_and_sum_amounts`, since the expense.currency is the same as the company we don't get the correct result: https://github.com/odoo/odoo/blob/d29a622740f6c34d25c52add5367bfdf58bbaf49/addons/account/models/account_journal_dashboard.py#L641-L644 Solution: Get the right columns. We also change the domain to make sure that expenses partially paid ar
Original PR description
Steps to reproduce: - create-aprove-post an expense - Go to the accounting dashboard Issue: expenses' amount is 0 Cause: In `_count_results_and_sum_amounts`, since the expense.currency is the same as the company we don't get the correct result: https://github.com/odoo/odoo/blob/d29a622740f6c34d25c52add5367bfdf58bbaf49/addons/account/models/account_journal_dashboard.py#L641-L644 Solution: Get the right columns. We also change the domain to make sure that expenses partially paid are also displayed. Note: For the test we check that even partially paid expenses are displayed. In Master we want the residual amount to be displayed. In master: Use the amount_residual (discussed with po Laura) opw-3849036 Forward-Port-Of: odoo/odoo#163416 Forward-Port-Of: odoo/odoo#162182
Current Behavior: - Creating a copy of a product with attributes and extra prices set for the values of this attribute will not copy the extra prices. Expected Behavior: - These prices should be matched with the newly created objects if possible. Steps to reproduce: - - Create a product > add an attribute line with at least one value. - Save the product > configure the attribute line and set an extra price for that value. - Duplicate the product. Fix: - Since copies are not cr
Original PR description
Current Behavior: - Creating a copy of a product with attributes and extra prices set for the values of this attribute will not copy the extra prices. Expected Behavior: - These prices should be…
Current Behavior: - Creating a copy of a product with attributes and extra prices set for the values of this attribute will not copy the extra prices. Expected Behavior: - These prices should be matched with the newly created objects if possible. Steps to reproduce: - - Create a product > add an attribute line with at least one value. - Save the product > configure the attribute line and set an extra price for that value. - Duplicate the product. Fix: - Since copies are not created in cascade by the framework, we need to match by hand the `price_extra` and the `exlude_for` of the newly created `product.template.attribute.value` with the old ones. As this matching might not be deterministic when the same attribute and value combination is used on multiple lines, we expect that the extra price and the exclusion rule depend only on this combination. opw-3731192 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#162972 Forward-Port-Of: odoo/odoo#154692
With BE localization Enable 'Use QR code on ticket' in Settings Open POS Session Add a Product with 21% Tax Pay > Save QR link for later Close Pos session Access QR link, generate invoice Check Accounting>Reporting>Tax Report Issue: Line '03 - Operations subject to 21% VAT' will account twice the product amount instead of canceling it This occurs because when reverting the POS closing entry we create an entry having amounts with inverted signs and same tax tags. We also need to s
Original PR description
With BE localization Enable 'Use QR code on ticket' in Settings Open POS Session Add a Product with 21% Tax Pay > Save QR link for later Close Pos session Access QR link, generate invoice Check Accounting>Reporting>Tax Report Issue: Line '03 - Operations subject to 21% VAT' will account twice the product amount instead of canceling it This occurs because when reverting the POS closing entry we create an entry having amounts with inverted signs and same tax tags. We also need to set the flag `tax_tag_invert` to ensure the amount correctly accounted as reverse opw-3815770 opw-3821017 Forward-Port-Of: odoo/odoo#163696 Forward-Port-Of: odoo/odoo#161531
**Current behavior:** On a payslip, creating multiple lines with the same rule code will result in a misreport with duplicate pay records. **Expected behavior:** Payroll reporting should accurately reflect reality. **Steps to reproduce:** 1. Create a new salary rule (e.g., Commission) and set its 'code' field to 'COMMISSION' and tick the option `View on Payroll Reporting` 2. Set its 'Condition Based on' to 'Python Expression' and enter `result = (inputs.get("COMMIS
Original PR description
**Current behavior:** On a payslip, creating multiple lines with the same rule code will result in a misreport with duplicate pay records. **Expected behavior:** Payroll reporting should accurately…
**Current behavior:**
On a payslip, creating multiple lines with the same rule code
will result in a misreport with duplicate pay records.
**Expected behavior:**
Payroll reporting should accurately reflect reality.
**Steps to reproduce:**
1. Create a new salary rule (e.g., Commission) and set its
'code' field to 'COMMISSION' and tick the option
`View on Payroll Reporting`
2. Set its 'Condition Based on' to 'Python Expression' and enter
`result = (inputs.get("COMMISSION") or 0)`
3. Set its 'Computation' to 'Python code' and enter
`result = (inputs.get("COMMISSION") or 0).amount`
`result_name = (inputs.get("COMMISSION") or 0).name`
4. Create a `hr.payslip.input.type` (other input type) record
to permit the newly created salary rule to appear on a
payslip (e.g., Country of current company and 'Regular Pay'
for 'Availability in Structure' and 'code' = 'COMMISSION'
5. Create a payslip record (To Pay) for some employee, selecting
the structure that permits the newly created rule to be
applied (e.g., 'Regular Pay') (Note the pay period)
6. In the 'Other Inputs' table add two lines both set to the
'COMMISSION' code -> Compute Sheet -> Create Draft Entry
7. Go to the Reporting -> Payroll -> Pivot View, collapse the
y-axis; Expand y-axis -> Employee -> Employee from payslip
-> Add Custom Group -> End Date; Observe multiple entries
pay period defined when creating the payslip
**Cause of the issue:**
In `hr.payroll.report` these rules will be grouped by their
'total' fields. When we have a repeated rule code with some
'total' amount, we will create two reports for the same
payslip.
**Fix:**
Use a SUM to aggregate these additional_rules in the SELECT and
remove them from the GROUP BY. We need another DISTINCT clause
to ensure we aren't summing redundant row values.
opw-3614679
Forward-Port-Of: odoo/enterprise#60814Changed service product UOM code from `UNT` to `NA` in the HSN JSON file for GSTR-1 reporting. Task ID: 3907971 Forward-Port-Of: odoo/enterprise#61914
Original PR description
Changed service product UOM code from `UNT` to `NA` in the HSN JSON file for GSTR-1 reporting. Task ID: 3907971 Forward-Port-Of: odoo/enterprise#61914
**Steps to reproduce:** - Install l10n_lu_reports - Switch to a company in Luxembourg (e.g. LU Company) - Go to "Accounting / Reporting / Statement Reports / Balance Sheet" - Export electronic report via "XML" button **Issue:** Some fields (i.e. "201", "202", "405", "406") don't appear in the XML if their value is 0. These fields are mandatory and should always appear in the XML. **Source:** https://ecdf.b2g.etat.lu/ecdf/forms/popup/CA_BILAN_ABR/2024/en/1/rules opw-3802589 Forwa
Original PR description
**Steps to reproduce:** - Install l10n_lu_reports - Switch to a company in Luxembourg (e.g. LU Company) - Go to "Accounting / Reporting / Statement Reports / Balance Sheet" - Export electronic report via "XML" button **Issue:** Some fields (i.e. "201", "202", "405", "406") don't appear in the XML if their value is 0. These fields are mandatory and should always appear in the XML. **Source:** https://ecdf.b2g.etat.lu/ecdf/forms/popup/CA_BILAN_ABR/2024/en/1/rules opw-3802589 Forward-Port-Of: odoo/enterprise#61446
Forward-Port-Of: odoo/enterprise#61851
Original PR description
Forward-Port-Of: odoo/enterprise#61851
Steps to reproduce: - Make a service product, with invoicing policy based on timesheet and project & task set for create on order. - Make an SO for that product - The SO will create the task and the project - Register timesheet linked with the task with 15 min - Start a timer - Create the invoice Issues: The timer is still running, with the only choice possible being to discard it. Solution: The behaviour wanted by the po is to stop all the timer and count them in the invoice. o
Original PR description
Steps to reproduce: - Make a service product, with invoicing policy based on timesheet and project & task set for create on order. - Make an SO for that product - The SO will create the task and the project - Register timesheet linked with the task with 15 min - Start a timer - Create the invoice Issues: The timer is still running, with the only choice possible being to discard it. Solution: The behaviour wanted by the po is to stop all the timer and count them in the invoice. opw-3715694 Forward-Port-Of: odoo/enterprise#61688 Forward-Port-Of: odoo/enterprise#61475
string format was broken on post fail message, this commit fix it. [Task-3775424](https://www.odoo.com/web#id=3775424&cids=1&menu_id=6478&action=4043&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#61857
Original PR description
string format was broken on post fail message, this commit fix it. [Task-3775424](https://www.odoo.com/web#id=3775424&cids=1&menu_id=6478&action=4043&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#61857
Added a test for partners vat export in DateV report. task-3866785 Forward-Port-Of: odoo/enterprise#61202
Original PR description
Added a test for partners vat export in DateV report. task-3866785 Forward-Port-Of: odoo/enterprise#61202
**Steps:** Go to Payroll App > Configuration > Salary > Structures Select checkbox for any entry Now click on the Action Button **Issue:** "Duplicate" action menu is displayed 2 times  **Cause:** Prior to this update, the 'list_controller.js' file in version saas~16.4 did not included the "Duplicate" menu action within the [getActionMenuItems](https://github.com/odoo/odoo/blob
Original PR description
**Steps:** Go to Payroll App > Configuration > Salary > Structures Select checkbox for any entry Now click on the Action Button **Issue:** "Duplicate" action menu is displayed 2 times…
**Steps:** Go to Payroll App > Configuration > Salary > Structures Select checkbox for any entry Now click on the Action Button **Issue:** "Duplicate" action menu is displayed 2 times  **Cause:** Prior to this update, the 'list_controller.js' file in version saas~16.4 did not included the "Duplicate" menu action within the [getActionMenuItems](https://github.com/odoo/odoo/blob/saas-16.4/addons/web/static/src/views/list/list_controller.js#L287-L325) function. However, in the same version, the 'hr.payroll' model defined this action in the [hr_payroll_structure_views.xml](https://github.com/odoo/enterprise/blob/saas-16.4/hr_payroll/views/hr_payroll_structure_views.xml#L132-L143) file, utilized within the 'Salary Structures' in the Payroll app. In version 17.0, the "Duplicate" menu action was added to the [getStaticActionMenuItems](https://github.com/odoo/odoo/blob/17.0/addons/web/static/src/views/list/list_controller.js/#L304-L349) function of 'list_controller.js'. Following the update, despite the addition of the "Duplicate" menu action in the 'list_controller.js' file for version 17.0, it still remained present in the [hr_payroll_structure_views.xml](https://github.com/odoo/enterprise/blob/17.0/hr_payroll/views/hr_payroll_structure_views.xml#L134-L145) file. **Fix:** Removed the 'ir_actions_server_duplicate_structure' from hr_payroll_structure_views.xml, to ensure the same menu action "Duplicate" do not exist twice, in the 'Salary Structures'. Affected Version: 17.0 ~ master Task ID: [3854557](https://www.odoo.com/web#id=3854557&cids=2&menu_id=4720&action=4043&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#61666
Previously, HSN code warning in the GSTR-1 report was based solely on product detail type. This PR improves the validation process by refactoring it to consider product type. This enhancement ensures consistent warnings across all product types, including event tickets. Forward-Port-Of: odoo/enterprise#61739
Original PR description
Previously, HSN code warning in the GSTR-1 report was based solely on product detail type. This PR improves the validation process by refactoring it to consider product type. This enhancement ensures consistent warnings across all product types, including event tickets. Forward-Port-Of: odoo/enterprise#61739
Before this commit: When a portal user navigates through the Signatures using the arrow buttons, an error "500: Internal Server Error" is raised. Traceback error: values = self._get_page_view_values(sign_item_sudo, sign_item_sudo.access_token, values, TypeError: CustomerPortal._get_page_view_values() got multiple values for argument 'access_token' This happened because the argument 'access_token' is passed two times: 1. sign_item_sudo.access_token 2. in **kwargs This commit aims to
Original PR description
Before this commit: When a portal user navigates through the Signatures using the arrow buttons, an error "500: Internal Server Error" is raised. Traceback error: values = self._get_page_view_values(sign_item_sudo, sign_item_sudo.access_token, values, TypeError: CustomerPortal._get_page_view_values() got multiple values for argument 'access_token' This happened because the argument 'access_token' is passed two times: 1. sign_item_sudo.access_token 2. in **kwargs This commit aims to fix the issue by deleting 'access_token' from kwargs. Task: 3853020 Forward-Port-Of: odoo/enterprise#60299
Versions -------- - saas-16.4+ Steps ----- 1. Set decimal accuracy of Product Unit of Measure to 5 digits; 2. create a Manufacturing Order for any product; 3. set quantity to 1000 Units; 4. add Work Order and confirm; 5. go to Overview and click on the chosen Work Center. Issue ----- `1000` gets displayed as `1000.0000000000001`. Cause ----- Our float utils introduce tiny rounding errors, especially at higher precisions, which need to be eliminated for display. Solution
Original PR description
Versions -------- - saas-16.4+ Steps ----- 1. Set decimal accuracy of Product Unit of Measure to 5 digits; 2. create a Manufacturing Order for any product; 3. set quantity to 1000 Units; 4. add Work Order and confirm; 5. go to Overview and click on the chosen Work Center. Issue ----- `1000` gets displayed as `1000.0000000000001`. Cause ----- Our float utils introduce tiny rounding errors, especially at higher precisions, which need to be eliminated for display. Solution -------- Use `formatFloat` w/ the precision digits of the `qty_producing` field. opw-3684166 Forward-Port-Of: odoo/enterprise#61868 Forward-Port-Of: odoo/enterprise#58880
Wrong conflict resolution when forward porting https://github.com/odoo/enterprise/commit/b81c50278a8d55a733c6f1579dc764c19b92e08d Task-3901993 Forward-Port-Of: odoo/enterprise#61772
Original PR description
Wrong conflict resolution when forward porting https://github.com/odoo/enterprise/commit/b81c50278a8d55a733c6f1579dc764c19b92e08d Task-3901993 Forward-Port-Of: odoo/enterprise#61772
[FIX] account_reports: hide lines at 0 when unfold Problem: There are two way to see the issue :- 1- Whenever you go to the balance sheet and check on the hide at 0 option Then you go and unfold-fold-unfold a line with one zero child and non zero child. The line will with zero will keep showing up. 2- Mentioned in the task-3898147 Issue: when we check the option 'hide at 0' then we fold
Original PR description
[FIX] account_reports: hide lines at 0 when unfold Problem: There are two way to see the issue :- 1- Whenever you go to the balance sheet and check on the hide at 0 option Then you go and…
[FIX] account_reports: hide lines at 0 when unfold
Problem: There are two way to see the issue :-
1- Whenever you go to the balance sheet and check on the hide at 0 option Then you go and
unfold-fold-unfold a line with one zero child and non zero child.
The line will with zero will keep showing up.
2- Mentioned in the task-3898147
Issue: when we check the option 'hide at 0' then we fold and unfold.
The flow of func 'unfold Loaded Line' (the already loaded lines) has no clue about the 'hide at 0' option
but on the other hand the func 'unfoldNewLine' (the new added lines) know about the 'hide at 0' option
Solution: Send the lines that we want to unfold to the 'assignLinesVisibility' logic that handle 'hide at 0'
as we do with 'unfoldNewLine'
Minor renames: setLineVisibility >> hideZeroLines, assignLinesVisibility >> setLineVisibility
Task-3898147
Forward-Port-Of: odoo/enterprise#61831Versions -------- - 17.0+ Issue ----- `precision_rounding` values were being passed incorrectly as `precision_digits` parameters. Solution -------- Pass them as named `precision_rounding` parameters instead. Community branch: https://github.com/odoo/odoo/pull/163182 Forward-Port-Of: odoo/enterprise#61387
Original PR description
Versions -------- - 17.0+ Issue ----- `precision_rounding` values were being passed incorrectly as `precision_digits` parameters. Solution -------- Pass them as named `precision_rounding` parameters instead. Community branch: https://github.com/odoo/odoo/pull/163182 Forward-Port-Of: odoo/enterprise#61387
**Current behavior:** When downloading sign documents via buttons in the form and tree views, user will get an access error on the read perm for the `sign.request.item.value` model. **Expected behavior:** These buttons should permit the download of the corresponding document. **Steps to reproduce:** 1. In the Sign app go to Documents 2. In the tree view click the download button by a document which has not already been generated (e.g., any of the demo data documents) **Cause of th
Original PR description
**Current behavior:** When downloading sign documents via buttons in the form and tree views, user will get an access error on the read perm for the `sign.request.item.value` model. **Expected…
**Current behavior:** When downloading sign documents via buttons in the form and tree views, user will get an access error on the read perm for the `sign.request.item.value` model. **Expected behavior:** These buttons should permit the download of the corresponding document. **Steps to reproduce:** 1. In the Sign app go to Documents 2. In the tree view click the download button by a document which has not already been generated (e.g., any of the demo data documents) **Cause of the issue:** The download buttons call `get_completed_document()` which, if the completed doc has not been generated, will directly call `_generate_completed_document()` where we do a `read_group()` on the `sign.request.item.value` model. This model must be read with `.sudo()` because access rights are never granted to any group. **Fix:** Get rid of the `_generate_completed_document()` call in `get_completed_document()`, letting the program go to the `act_url` flow, into `download_document()`. Here we will access the `sign.request` record with `env.su is True` which will permit the `read_group()` later on in the aforementioned flow. Because we always route from `get_completed_document()` with a `download_type='completed'`, there is no reason to generate the document here. opw-3834177 Forward-Port-Of: odoo/enterprise#61332 Forward-Port-Of: odoo/enterprise#60399
**Steps to reproduce:** - Install l10n_ec_reports_ats - Switch to an Ecuadorian company (e.g. EC Company) - Create a draft invoice - Cancel the invoice - Go to "Accounting / Reporting / Statement Reports / Tax Report" - Filter the report on the same month than the cancelled invoice - Click on upper-left ATS button **Issue:** A traceback is raised: "TypeError: 'bool' object is not subscriptable" while trying to render the cancelled moves: <secuencialInicio t-out="void_move.l10n_lata
Original PR description
**Steps to reproduce:** - Install l10n_ec_reports_ats - Switch to an Ecuadorian company (e.g. EC Company) - Create a draft invoice - Cancel the invoice - Go to "Accounting / Reporting / Statement Reports / Tax Report" - Filter the report on the same month than the cancelled invoice - Click on upper-left ATS button **Issue:** A traceback is raised: "TypeError: 'bool' object is not subscriptable" while trying to render the cancelled moves: <secuencialInicio t-out="void_move.l10n_latam_document_number[-9:]"/> **Cause:** "l10n_latam_document_number" field is a computed field that depends on the name of the account move. When the move is in draft, it doesn't have a name (i.e. "/") and "l10n_latam_document_number" has False as value. **Solution:** Cancelled draft invoices should not be taken into account in ATS report. opw-3857645 Forward-Port-Of: odoo/enterprise#61737
Adding tooltip to Withhold Agent for l10n_ec localization in accounting settings under Ecuadorian Localization Reason is to give the user tip about what this field actually hold and enhance the user experience as some users raising some issues because of the lack of knowing this field Task-id: #3819108 Forward-Port-Of: odoo/enterprise#60578
Original PR description
Adding tooltip to Withhold Agent for l10n_ec localization in accounting settings under Ecuadorian Localization Reason is to give the user tip about what this field actually hold and enhance the user experience as some users raising some issues because of the lack of knowing this field Task-id: #3819108 Forward-Port-Of: odoo/enterprise#60578
The context key default_journal_id is being given the record and not the id when opening the bank rec widget. In the bank rec widget, updateJournalState is called, which in some [cases](https://github.com/odoo/enterprise/blob/17.0/account_accountant/static/src/components/bank_reconciliation/kanban.js#L553) will use that context key as journal id to send to [collect_global_info_data](https://github.com/odoo/enterprise/blob/17.0/account_accountant/models/bank_rec_widget.py#L1576). In collect_g
Original PR description
The context key default_journal_id is being given the record and not the id when opening the bank rec widget. In the bank rec widget, updateJournalState is called, which in some [cases](https://github.com/odoo/enterprise/blob/17.0/account_accountant/static/src/components/bank_reconciliation/kanban.js#L553) will use that context key as journal id to send to [collect_global_info_data](https://github.com/odoo/enterprise/blob/17.0/account_accountant/models/bank_rec_widget.py#L1576). In collect_global_info_data, the journal id is used to browse, which create a recordset with id 'account.journal(x,)' which will trigger an error when exists is called. This change will simply fix the context key to properly take the id as you would expect. opw-3885030 Forward-Port-Of: odoo/enterprise#61850
In this commit, - I have made the field `Place Of Supply` Selection only. - Now, the User will require to set the `Tin Number` on the `Place Of Supply(State)`. Otherwise, it will raise `UserError`. - It is required to avoid errors given in the task description which isn't understandable for a user to understand. - I have stopped the creation of a new state at the time of invoice creation. So, if the user wants to add a new state they can do so by `Contacts --> Fed. state`. Task-id: 33390
Original PR description
In this commit, - I have made the field `Place Of Supply` Selection only. - Now, the User will require to set the `Tin Number` on the `Place Of Supply(State)`. Otherwise, it will raise `UserError`. - It is required to avoid errors given in the task description which isn't understandable for a user to understand. - I have stopped the creation of a new state at the time of invoice creation. So, if the user wants to add a new state they can do so by `Contacts --> Fed. state`. Task-id: 3339099 Forward-Port-Of: odoo/odoo#149466 Forward-Port-Of: odoo/odoo#127711