Tuesday, March 18, 2025
58 changes · saas-18.2
Resolved issues and error corrections
This fixes the placement of message counters and online status indicators on chat bubbles after recent visual updates. Users will see a cleaner, more polished chat interface with badges and status markers positioned where expected.
Original PR description
Follow-up of #201984 PR above made many style improvements, one of which was the chat bubble message preview that is closer to chat bubble. The solution of PR required reducing horizontal size of chat bubbles, therefore floating elements like counter and im_status need to be compensated. This was done correctly for close, but IM status and counter were wrong. They should be offset by 5px, which was missing on IM status. On counter, the compensated value was done in the wrong direction... Hence the double correction. Before / After  
This fixes a small visual issue in Discuss where online status indicators could be slightly cut off in Firefox. The sidebar items get a tiny bit more vertical spacing so user availability badges display cleanly across browsers.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/201984 PR above made a few style improvements in discuss sidebar, such as increasing the size of avatars and IM status to match the channel member list. Since the avatars are bigger and therefore are close to border, there's a 1px vertical margin to prevent cutting IM status. However this works in chromium-based browsers but not Firefox: the position of IM status is slightly off by 1 pixel vertically for some reasons, which makes the IM status cut slightly on the bottom. This commit fixes the issue by increasing vertical margin from 1px to 2px. This increases a bit the size of each item as a result, but thankfully it's minor drawback compared to cut IM status on Firefox. Before / After  
This fixes an issue in the store pickup checkout flow that could cause errors during validation in debug mode. It also ensures missing zip codes are handled safely, helping the pickup option work more reliably for customers.
Original PR description
Props validation in debug mode failed as they were removed in fw commit https://github.com/odoo/odoo/commit/d940fa55c465afa11fa443745f8f5a0081c8cfe3. Fallback to an empty string for zipcode as it is expected in the widget.
Miscellaneous changes
Steps to reproduce: - Go to Accounting > Customers > Invoices - Insert the list into a spreadsheet - in any cell, type `=ODOO.LIST(1,1,"company_currency_id")` => the currency is not displayed. The reason is that the `company_currency_id` is fetched as part of a monetary field. When the new `=ODOO.LIST(1,1,"company_currency_id")` is typed, the list data source thinks it has the data, but actually the `dislay_name` is missing. Task: 4633078 --- I confirm I have signed the CLA and
Original PR description
Steps to reproduce: - Go to Accounting > Customers > Invoices - Insert the list into a spreadsheet - in any cell, type `=ODOO.LIST(1,1,"company_currency_id")` => the currency is not displayed. The reason is that the `company_currency_id` is fetched as part of a monetary field. When the new `=ODOO.LIST(1,1,"company_currency_id")` is typed, the list data source thinks it has the data, but actually the `dislay_name` is missing. Task: 4633078 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200886 Forward-Port-Of: odoo/odoo#200663
Problem: The delivered and received quantities on sale order and purchase order lines don’t get updated during intercompany transactions for kit products. This is because the transit location is used instead of the supplier and customer locations. Purpose: Updating the filter to include transit locations will allow stock moves to and from the transit locations to be included in the delivered and received quantities. Steps to Reproduce on Runbot: 1. Enable Inter-Company Transactions for bo
Original PR description
Problem: The delivered and received quantities on sale order and purchase order lines don’t get updated during intercompany transactions for kit products. This is because the transit location is used…
Problem: The delivered and received quantities on sale order and purchase order lines don’t get updated during intercompany transactions for kit products. This is because the transit location is used instead of the supplier and customer locations. Purpose: Updating the filter to include transit locations will allow stock moves to and from the transit locations to be included in the delivered and received quantities. Steps to Reproduce on Runbot: 1. Enable Inter-Company Transactions for both companies, with Generate Sales Orders, Generate Purchase Orders, and Synchronize Deliveries to your Receipts selected. 2. Create a product and create a kit type bill of materials for it. Remove the company from the bill of materials so it is available for both companies. 3. Create a sale order for this kit product with the customer set to another one of your companies. 4. Confirm the sale order and validate the picking. 5. Observe the delivered quantity on the sale order line is still 0. 6. Switch to the company you sold the kit to. 7. Navigate to the purchase order that was created and confirm it. 8. Validate the picking. 9. Observe the received quantity is still 0. opw-4536144 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199819
Nuvei is an online payment platform for the LATAM area. This integration currently supports Argentina, Brazil, Canada, Chile, Colombia, Ecuador, Mexico, Peru, United State, and Uruguay. Nuvei supports card transactions as well as other local payment methods unique per country. task-4172642 See also: - https://github.com/odoo/documentation/pull/11157 Forward-Port-Of: odoo/odoo#202126 Forward-Port-Of: odoo/odoo#181459
Original PR description
Nuvei is an online payment platform for the LATAM area. This integration currently supports Argentina, Brazil, Canada, Chile, Colombia, Ecuador, Mexico, Peru, United State, and Uruguay. Nuvei supports card transactions as well as other local payment methods unique per country. task-4172642 See also: - https://github.com/odoo/documentation/pull/11157 Forward-Port-Of: odoo/odoo#202126 Forward-Port-Of: odoo/odoo#181459
- On a view with a company-dependent field with a `many2many_tags` widget, where the `edit_tags` option is set to `true`; - Click on a tag; - Change the company; - Save the tag; - Open the same tag again; A traceback error is displayed. This error occurs because, since [1], when loading the form view the access errors are handled, the company is added to the selected companies and the record is reloaded. The issue is that this cannot be done with a dialog form view, not only is an unreach
Original PR description
- On a view with a company-dependent field with a `many2many_tags` widget, where the `edit_tags` option is set to `true`; - Click on a tag; - Change the company; - Save the tag; - Open the same tag again; A traceback error is displayed. This error occurs because, since [1], when loading the form view the access errors are handled, the company is added to the selected companies and the record is reloaded. The issue is that this cannot be done with a dialog form view, not only is an unreachable action service function is called, but also the dialog is not reopened when reloading. In this commit, we fix this by showing the access error. Forward-Port-Of: odoo/odoo#202222
To reproduce: - Install delivery_fedex (for example) and sale_management. - Open Fedex US shipping method and set invoicing to real cost, margin on rate to 93.47 (for example). - New SO to Azure Interior, 1x product 5555, Add shipping Fedex US and get the rate before adding to the SO. Current behaviour: Estimated cost on SO line description is not rounded according to the currency conventions. Expected behaviour: Estimated cost on SO line description is rounded, according to the curre
Original PR description
To reproduce: - Install delivery_fedex (for example) and sale_management. - Open Fedex US shipping method and set invoicing to real cost, margin on rate to 93.47 (for example). - New SO to Azure Interior, 1x product 5555, Add shipping Fedex US and get the rate before adding to the SO. Current behaviour: Estimated cost on SO line description is not rounded according to the currency conventions. Expected behaviour: Estimated cost on SO line description is rounded, according to the currency conventions. opw-4543605 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201723 Forward-Port-Of: odoo/odoo#201510
Steps to reproduce: 1) Install loca spanish 2) Create and post an invoice using the tax 4% G (goods) then create and post a related credit note 3) Check the Tax return report (Modelo 303): Issue: In Odoo 16, the base en cuota are negative (For box 14 and 15) In Odoo17 and 18, the base en cuota are positive (For box 14 and 15) Cause: The sign for the tax tags on the refund was wrong opw-4546566 Forward-Port-Of: odoo/odoo#197829 Forward-Port-Of: odoo/odoo#197376
Original PR description
Steps to reproduce: 1) Install loca spanish 2) Create and post an invoice using the tax 4% G (goods) then create and post a related credit note 3) Check the Tax return report (Modelo 303): Issue: In Odoo 16, the base en cuota are negative (For box 14 and 15) In Odoo17 and 18, the base en cuota are positive (For box 14 and 15) Cause: The sign for the tax tags on the refund was wrong opw-4546566 Forward-Port-Of: odoo/odoo#197829 Forward-Port-Of: odoo/odoo#197376
## Summary 1. `--test-tags ".test_js[mail > widgets]"` will start all test_js starting with "mail > widgets" 2. `--test-tags "/web,-.test_js[Components > CheckBox]"` will start all web test, but skip Components > CheckBox qunit 3. ` --test-tags ".test_js[utils,-utils > Hooks,-utils > Patch]"` start all test_js utils tests except the Hooks and Patch ones 4. `--test-tags "-.test_js[Components > CheckBox]"` will start **all** tests, but skip Components > CheckBox qunit ## Motivation Tag
Original PR description
## Summary 1. `--test-tags ".test_js[mail > widgets]"` will start all test_js starting with "mail > widgets" 2. `--test-tags "/web,-.test_js[Components > CheckBox]"` will start all web test, but skip…
## Summary
1. `--test-tags ".test_js[mail > widgets]"` will start all test_js starting with "mail > widgets"
2. `--test-tags "/web,-.test_js[Components > CheckBox]"` will start all web test, but skip Components > CheckBox qunit
3. ` --test-tags ".test_js[utils,-utils > Hooks,-utils > Patch]"` start all test_js utils tests except the Hooks and Patch ones
4. `--test-tags "-.test_js[Components > CheckBox]"` will start **all** tests, but skip Components > CheckBox qunit
## Motivation
Tags are used by runbot to *disable* randomly failing tests without the need to commit changes.
They can precisely target a python test method, class or module.
They can also be used by developer to run a *specific* test.
The problem is that the qunit is a special case, a js test suite inside the test_suite. It is only possible to disable all of them, or none of them.
Adding the possibility to enable/disable some of them was requested for a long time.
## Using test tags
The solution to use test-tags as multiple pros:
- avoid a new command line argument
- runbot already manages test-tags for errors meaning that this solution would imply minimal changes on this side
- passing arguments to a specific tests, without regard of the qunit needs looks like a decent solution. This is a generic solution that could lead to other posibilities (profiling, test mode, ...)
Test tags are not aware of the purpose of the parameters, they will only be passed to the test. The tests has the responsibility to parse them.
## Chosen syntax and behavior
The main need is to be enable/disable some qunit. This means that we may want to support having parameters using comma `,` Unfortunately this may conflict with comma used to split tags if the syntax is not well defined.
The main idea to solve this issue was that it would be intuitive to give parameters as a function call would, between parentheses.
The opening and closing of the parentheses would allow to identify if a comma is part of the parameters or a tag separator. But using parenthesis is not a good idea in a command line since it could be interpreted by the shell.
The chosen alternative was to use `[]` to have a opening and closing symbol. Depending on how the parameters are interpreted, it can also be quite intuitive to understand: we select a specific element.
`.test_js[mail,stock]`
to run only js tests concerning mail and stock.
The idea to disable some qunit would be to specify a negative filter as for tags:
`.test_js[-some_module]`
Multiple matching tags may be given, in this case all parameters are given to the test. This is why test_parameters are a list of strings.
`.test_js[-m1,-m2],.test_js[-m3]` will be given to the test as `['-m1,-m2', '-m3']`
## Splitting the tags
The idea to support nested [] in params was considered but this would complexify a lot the parsing
`.test_method[filters=[mail,crm],failfast=0]`
This is NOT supported even if it could be.
Parsing such tags would need a more complex parser (to split the , )
The final decision was made to keep it simple for now since it wouldn't be a problem to add this in the future if needed.
## Negating a parametric tag
A test tag can be negated to disable a test `-.test_js` (no op if test_js was not expected to run)
The question is, what is the expected behaviour of `-.test_js[mail]`.
### 1. Forbid this form
Simple solution, consider it as disabling a test, so passing the parameters would be usellesss and we should just don't allow that. But forbidding this form may force to make some complex development in runbot, since the current logic to disable a test is to add a '-' in front of the tag extected to run the test.
### 2. Transform it to negate the parameter
It could be as simple as transforming `-.test_js[mail]` to `.test_js[-(mail)]`, or to manage the case when we could have already negated arguments (and multiple ones), tansform it to `.test_js[-mail-]`
The only cons of this solution is that adding the tag -.test_js[mail] would actually enable the test_js even if it is not the case, and be more equivalent to `.test_js,.test_js[-mail]`
### 3. Consider them apart: negated but not including.
With this last solution, it is not possible to translate it as a tag, it would mean `.test_js[-mail]` if test_js is already enabled. This is whats looks to be the most robust solution. Adding a negated test-tag should not enable a test that wouldn't if not present
### 4. Always considered as parameters
`.test_js[mail]` would not enable test_js, but pass mail as parameter to test_js if another test enables it.
This means that to start the mail js test, we would use --test-tags .test_js,.test_js[mail]
This could make sence but would be less practical.
Since the main goal is to be able to disable a specific qunit from the runbot, 2, 3 and 4 could work in most cases
but 2 could be problematic in edge cases, and for odoosh were we may want to use autotags but only enable test from one module. /my_module,.test_js[-some_test] would enable the test_js.
3 and 4 are equivalent for negation, but the automatic generation of config wouldn't work with 4.
The current chosen solution is 3 since it looks to be the more practical.
Forward-Port-Of: odoo/odoo#201474
Forward-Port-Of: odoo/odoo#200413Current behavior before PR: `isTalking` status displayed who was talking even when the user had deafened themselves. Desired behavior after PR is merged: `isTalking` status no longer shows who is talking if the user has deafened themselves. Task-id:[4609755](https://www.odoo.com/odoo/project.task/4609755) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202239 Forward-Port-Of: odoo/odoo#200875
Original PR description
Current behavior before PR: `isTalking` status displayed who was talking even when the user had deafened themselves. Desired behavior after PR is merged: `isTalking` status no longer shows who is talking if the user has deafened themselves. Task-id:[4609755](https://www.odoo.com/odoo/project.task/4609755) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202239 Forward-Port-Of: odoo/odoo#200875
### Commit 1 In the point of sale environnement we want to be able to edit html field in a minimal way. So only core plugins are added to the html_editor. As we have a special assets environnement for the point_of_sale we can directly patch the main `htmlField` definition without impacting main assets of Odoo. So in Order to make it work we need to remove the preventDefault on backspace key at the initialization of PoS. Enterprise: 79703 ### Commit 2 The html editor should
Original PR description
### Commit 1 In the point of sale environnement we want to be able to edit html field in a minimal way. So only core plugins are added to the html_editor. As we have a special assets environnement…
### Commit 1
In the point of sale environnement we want to be able to edit html field
in a minimal way. So only core plugins are added to the html_editor.
As we have a special assets environnement for the point_of_sale we can
directly patch the main `htmlField` definition without impacting main
assets of Odoo.
So in Order to make it work we need to remove the preventDefault on
backspace key at the initialization of PoS.
Enterprise: 79703
### Commit 2
The html editor should only work with the “CORE_PLUGINS” plugin set.
But when an HTML field is used only with this Set a traceback is raised
because the “MediaPlugin” plugin is missing.
This is due to this piece of code:
```js
async getEditorContent() {
await this.editor.shared.media.savePendingImages();
return this.editor.getElContent();
}
```
Each time an HTML input is unfocused, this method is called and attempts
to save the pending images. The problem is that media.savePendingImages
depends on the “MediaPlugin”.
A quick fix is made in this commit by adding a question mark after media
to avoid traceback if the plugin is missing.
Forward-Port-Of: odoo/odoo#198701
Forward-Port-Of: odoo/odoo#198482The Issue: Before this commit, if a promo code was set to expire today and a user attempted to apply it tomorrow, an error was correctly thrown. Which is the correct behavior, However, due to what seems to be a delay caused by Runbot running all tests, the promo code sometimes gets applied the next day. This issue consistently occurs between 12 AM and 1 AM, as seen in the build error. The Fix: Since the original test checks a promo code one day after its expiration to see if its still appli
Original PR description
The Issue: Before this commit, if a promo code was set to expire today and a user attempted to apply it tomorrow, an error was correctly thrown. Which is the correct behavior, However, due to what seems to be a delay caused by Runbot running all tests, the promo code sometimes gets applied the next day. This issue consistently occurs between 12 AM and 1 AM, as seen in the build error. The Fix: Since the original test checks a promo code one day after its expiration to see if its still applicable or not, we can adjust the expiration date to today +1 and run the test on day +2. runbot-112678 Forward-Port-Of: odoo/odoo#198620
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#202034
Original PR description
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#202034
Steps: - Try to compute trigger_field_ids for multiple record Actual result: - Singleton error for _onchange_trigger Expected result: - No error - _onchange_trigger is call as ensure one opw-4650807 Caused by: https://github.com/odoo/odoo/pull/189772 Forward-Port-Of: odoo/odoo#202221
Original PR description
Steps: - Try to compute trigger_field_ids for multiple record Actual result: - Singleton error for _onchange_trigger Expected result: - No error - _onchange_trigger is call as ensure one opw-4650807 Caused by: https://github.com/odoo/odoo/pull/189772 Forward-Port-Of: odoo/odoo#202221
Before this commit, when pairing an IoT box with a database, there was no indication that the process had started, or that it was successful After this commit, a loading state has been added as soon as pairing is started, as well as a new status item showing the currently connected DB. task-4603262  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr F
Original PR description
Before this commit, when pairing an IoT box with a database, there was no indication that the process had started, or that it was successful After this commit, a loading state has been added as soon as pairing is started, as well as a new status item showing the currently connected DB. task-4603262  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201839
Before this commit, if an IoT connected customer display was activated without a valid HTTPS certificate, it would fail as the IoT box would not trust accessing its own endpoint, due to the request using https://<iot_box_ip>. After this commit, the proxy display instead uses http://localhost, so the certificate is not requirec and the customer display functions as expected. task-4648702 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr For
Original PR description
Before this commit, if an IoT connected customer display was activated without a valid HTTPS certificate, it would fail as the IoT box would not trust accessing its own endpoint, due to the request using https://<iot_box_ip>. After this commit, the proxy display instead uses http://localhost, so the certificate is not requirec and the customer display functions as expected. task-4648702 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202023
By overriding `button_mark_done` to post labor entries, multiples entries could be posted in case of action returned (overconsumption wizard for instance) before the actual validation. This commit change the override by `_post_inventory()` which is called only once per validation. opw: 4571535 opw: 4532096 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
Original PR description
By overriding `button_mark_done` to post labor entries, multiples entries could be posted in case of action returned (overconsumption wizard for instance) before the actual validation. This commit change the override by `_post_inventory()` which is called only once per validation. opw: 4571535 opw: 4532096 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#201764
There are currently 2 issues with the "Gaps in the sequence" warning on journals in the accounting dashboard. (1) Sequence check per company issue: We query and thus do the the sequence check only on the moves of a single company. This e.g. fails though in the following case (all moves in the same journal) ``` move0: company_A move1: company_B move2: company_A ``` The query for company_A will find a gap between move0 and move2. But there is no gap (it just belongs to a different compa
Original PR description
There are currently 2 issues with the "Gaps in the sequence" warning on journals in the accounting dashboard. (1) Sequence check per company issue: We query and thus do the the sequence check only on…
There are currently 2 issues with the "Gaps in the sequence" warning on journals in the accounting dashboard. (1) Sequence check per company issue: We query and thus do the the sequence check only on the moves of a single company. This e.g. fails though in the following case (all moves in the same journal) ``` move0: company_A move1: company_B move2: company_A ``` The query for company_A will find a gap between move0 and move2. But there is no gap (it just belongs to a different company). (2) Lockdate per company issue: Consider the case that the child company is already locked but the parent is not. E.g ``` move0: parent company move1: child company (move is locked) move2: parent company ``` We would find a gap for the parent company. The "right" lock date to use for a journal is the lock date of the journal company: * A branch company is locked when the parent is locked. * Parent companies of the journal company can not add moves to the journal. So we will find all holes that can still be corrected. After this commit we query per lock date (instead of per company). In each query we check all the journals restricted by the same lock date. This solves both issues: (1) is solved since query all moves independent of the company (2) is not an issue since we use the "right" lock date (see reasoning above) opw-4548453 Forward-Port-Of: odoo/odoo#202124 Forward-Port-Of: odoo/odoo#201732
The navigation buttons on the cart were repositioned on the screen for mobile view by setting position to absolute. However this causes an issue if a user adds blocks from the editor below the checkout screen, since disregards the height of the element. To fix this the height of the element is set on the placeholder element to which the navigation buttons are anchored. opw-4498660 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Por
Original PR description
The navigation buttons on the cart were repositioned on the screen for mobile view by setting position to absolute. However this causes an issue if a user adds blocks from the editor below the checkout screen, since disregards the height of the element. To fix this the height of the element is set on the placeholder element to which the navigation buttons are anchored. opw-4498660 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200821 Forward-Port-Of: odoo/odoo#195305
In this commit, we convert unit tests from qUnit to Hoot Suite. 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#202052 Forward-Port-Of: odoo/odoo#201516
Original PR description
In this commit, we convert unit tests from qUnit to Hoot Suite. 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#202052 Forward-Port-Of: odoo/odoo#201516
Before this commit, message reactions appeared at the bottom of the publisher's comment instead of the original linked message. This commit ensures they are correctly positioned under the original message. Before  After  task-4619148 Forward-Port-Of: odoo/odoo#201520
Original PR description
Before this commit, message reactions appeared at the bottom of the publisher's comment instead of the original linked message. This commit ensures they are correctly positioned under the original message. Before  After  task-4619148 Forward-Port-Of: odoo/odoo#201520
Before this commit, the `refresh_token` handling was done in the `calendar` module, even though it relates to token management and should therefore be handled by `google_account`, which manages tokens and requests to Google. This also fixes the call to `get_param('google_calendar_client_secret')`, which should use the correct helper `_get_client_secret`, as it may be monkey-patched by another module. Forward-Port-Of: odoo/odoo#201702
Original PR description
Before this commit, the `refresh_token` handling was done in the `calendar`
module, even though it relates to token management and should therefore be
handled by `google_account`, which manages tokens and requests to Google.
This also fixes the call to `get_param('google_calendar_client_secret')`, which should use the correct helper `_get_client_secret`, as it may be monkey-patched by another module.
Forward-Port-Of: odoo/odoo#201702When sending an invoice to Viettel, we currently raise an error in Odoo if the address information of the customer is not set. If the VAT is not set, it is the api raising an error. In both case, the information is optional, and we should be able to invoice. For the address information the validation in Odoo is removed, and for the VAT the json will now contain '' if it is not set instead of False Also make sure that the json file is attached to the chatter if it has been generate
Original PR description
When sending an invoice to Viettel, we currently raise an error in Odoo if the address information of the customer is not set. If the VAT is not set, it is the api raising an error. In both case, the information is optional, and we should be able to invoice. For the address information the validation in Odoo is removed, and for the VAT the json will now contain '' if it is not set instead of False Also make sure that the json file is attached to the chatter if it has been generated for audit purpose task-4405507 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202070 Forward-Port-Of: odoo/odoo#196547
Description of the issue/feature this PR addresses: I improved the information displayed to the user. Current behavior before PR: Explanation not user friendly Desired behavior after PR is merged: Better clarity for the user --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199417
Original PR description
Description of the issue/feature this PR addresses: I improved the information displayed to the user. Current behavior before PR: Explanation not user friendly Desired behavior after PR is merged: Better clarity for the user --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199417
### Description of the issue/feature this PR addresses: - Applying a background color to text caused visibility issues in dark mode. ### Current behavior before PR: - 60% opacity is applied to background colors in the solid tab, except for theme colors. task-4566382 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199191
Original PR description
### Description of the issue/feature this PR addresses: - Applying a background color to text caused visibility issues in dark mode. ### Current behavior before PR: - 60% opacity is applied to background colors in the solid tab, except for theme colors. task-4566382 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199191
- Install the CRM app; - Activate leads from the settings; - Create an opportunity with an email address; - Create a lead with the same email address; - Save the lead; - Click on "Convert to Opportunity" (this opens a dialog); - Choose "Merge with existing opportunities"; - Click on "Create Opportunity"; Before this commit, a record not found error notification is displayed. This is because, when closing the dialog, we try to reload the current view and the record doesn't exist any m
Original PR description
- Install the CRM app; - Activate leads from the settings; - Create an opportunity with an email address; - Create a lead with the same email address; - Save the lead; - Click on "Convert to Opportunity" (this opens a dialog); - Choose "Merge with existing opportunities"; - Click on "Create Opportunity"; Before this commit, a record not found error notification is displayed. This is because, when closing the dialog, we try to reload the current view and the record doesn't exist any more. This causes an RPC to reload a view that we are leaving, which is not ideal. Now, we avoid reloading views that we are leaving when closing the dialog. opw-4630624 Forward-Port-Of: odoo/odoo#201663 Forward-Port-Of: odoo/odoo#201109
Versions -------- - 16.0+ Steps ----- 1. Have a internal user with only Sales: Own Documents access; 2. assign them as salesperson to a sales order with two lines; 3. create an draft invoice for one line; 4. assign admin as salesperson on the invoice; 5. as user, create a draft invoice for the other line (optional); 6. as user, cancel the sales order. Issue ----- If no second draft invoice was created, there's no warning displayed that a draft invoice exists. If one was creat
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Have a internal user with only Sales: Own Documents access; 2. assign them as salesperson to a sales order with two lines; 3. create an draft invoice for one line; 4. assign admin as salesperson on the invoice; 5. as user, create a draft invoice for the other line (optional); 6. as user, cancel the sales order. Issue ----- If no second draft invoice was created, there's no warning displayed that a draft invoice exists. If one was created, trying to cancel will say you're not allowed to read journal entries. You are supposed to get an error when trying to modify journal entries. Cause ----- The cancel wizard doesn't check the order's invoices using sudo. Solution -------- Check the order's invoices using sudo. opw-4554639 Forward-Port-Of: odoo/odoo#201785
When producing a MO with components and the components don't have any available quantity, there are no direct link between the MO and the stock move lines of its move_raw_ids. This causes issues when filtering on MO in the Moves History report. This is because the link is only done at the reservation of the SMLs, which can't happen without available qty. This fix ensures that the MO is added at the SML creation. opw-4545828 --- I confirm I have signed the CLA and read the PR guideli
Original PR description
When producing a MO with components and the components don't have any available quantity, there are no direct link between the MO and the stock move lines of its move_raw_ids. This causes issues when filtering on MO in the Moves History report. This is because the link is only done at the reservation of the SMLs, which can't happen without available qty. This fix ensures that the MO is added at the SML creation. opw-4545828 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202055
Scenario: add a group to a website menu from backend Result: traceback error with "RecursionError: maximum recursion depth exceeded while calling a Python object". Issue: refactoring cb400ceb7f518815036d985165ebe416bbb0b5eb introduces a recursive loop writing on website.menu().group_ids field. Fix: use context key to avoid the loop. opw-4591357 Forward-Port-Of: odoo/odoo#200386
Original PR description
Scenario: add a group to a website menu from backend Result: traceback error with "RecursionError: maximum recursion depth exceeded while calling a Python object". Issue: refactoring cb400ceb7f518815036d985165ebe416bbb0b5eb introduces a recursive loop writing on website.menu().group_ids field. Fix: use context key to avoid the loop. opw-4591357 Forward-Port-Of: odoo/odoo#200386
…ields Commercial fields are supposed to be synchronized between a customer and their commercial entity. Nevertheless, the synchronization doesn't work for company_dependent fields whose values are only copied for the current company. This commit makes sure the values are properly synchronized for company_dependent fields (+ pricelist) between the contacts and their commercial partner. opw-4523466 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submi
Original PR description
…ields Commercial fields are supposed to be synchronized between a customer and their commercial entity. Nevertheless, the synchronization doesn't work for company_dependent fields whose values are only copied for the current company. This commit makes sure the values are properly synchronized for company_dependent fields (+ pricelist) between the contacts and their commercial partner. opw-4523466 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201714 Forward-Port-Of: odoo/odoo#201251
**Steps to reproduce:** - Install Accounting and l10n_it_edi_withholding - Switch to an Italian company (e.g. IT Company) - Import an electronic Italian invoice (XML) containing an element like: ```xml <DettaglioLinee> <NumeroLinea>2</NumeroLinea> <Descrizione>Contributo ENASARCO</Descrizione> <PrezzoUnitario>0.00</PrezzoUnitario> <PrezzoTotale>0.00</PrezzoTotale> <AliquotaIVA>22.00</AliquotaIVA> <AltriDatiGestionali> <TipoDato>CASSA-PREV</TipoDato>
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_it_edi_withholding - Switch to an Italian company (e.g. IT Company) - Import an electronic Italian invoice (XML) containing an element like:…
**Steps to reproduce:**
- Install Accounting and l10n_it_edi_withholding
- Switch to an Italian company (e.g. IT Company)
- Import an electronic Italian invoice (XML) containing an element like:
```xml
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Contributo ENASARCO</Descrizione>
<PrezzoUnitario>0.00</PrezzoUnitario>
<PrezzoTotale>0.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
<AltriDatiGestionali>
<TipoDato>CASSA-PREV</TipoDato>
<RiferimentoTesto>TC07 - ENASARCO</RiferimentoTesto>
<RiferimentoNumero>10.03</RiferimentoNumero>
</AltriDatiGestionali>
</DettaglioLinee>
```
**Issue:**
1) When the above ENASARCO element is present and its unit price is 0, we consider that the ENASARCO tax should be applied to each line. We try to retrieve the percentage of the ENASARCO tax used by computing it from the amount from <RiferimentoNumero> element and the untaxed amount of the invoice.
Then the ENASARCO tax is applied on all the current move lines. However, it is possible that all the move lines have not been imported yet and the tax will not be applied on all the lines.
2) If a ENASARCO tax has been set on a particular move line with a unit price of 0, the tax is applied to all the move lines, but it shouldn't.
3) When a global ENASARCO element is found in a move line, this move line is deleted, which can cause an error if the ENASARCO tax cannot be found in the database because a message is logged with the move line name.
**Solution:**
1-2. In "_l10n_it_edi_import_line" method, we had the ENASARCO tax to the current line by computing the tax rate with the unit price of the line if it is not 0.
Then, in "_l10n_it_edi_import_invoice" method, we parse the XML to check if there was a unique ENASARCO element with an amount and without unit price.
If it is the case, we considered the ENASARCO tax as global. Instead of using the untaxed amount of the invoice to compute the rate of the ENASARCO tax used, we should be able to retrieve the real taxable amount in a <DatiRiepilogo> element.
There should be an element like:
```xml
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>117.97</ImponibileImporto>
<Imposta>25.95</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
```
from which we sum all the "ImponibileImporto" values.
3) Only remove the line if the ENASARCO tax is global and can be found in the database.
Ref old fix: https://github.com/odoo/odoo/pull/197456
Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4555966)
opw-4555966
Forward-Port-Of: odoo/odoo#202044
Forward-Port-Of: odoo/odoo#200774Currently if a user has "Read-Only" access in Accounting and any level of access in Timesheets (even "All Documents"), they won’t be able to export journal item analytical lines. This is inconsistent, as having more access in Timesheets should not restrict access in Accounting. Steps to Reproduce: - Create an invoice with analytic distribution. - Go to Journal Items. - Export the journal item, including analytic lines fields Issue: The user will not be able to export the data from thes
Original PR description
Currently if a user has "Read-Only" access in Accounting and any level of access in Timesheets (even "All Documents"), they won’t be able to export journal item analytical lines. This is…
Currently if a user has "Read-Only" access in Accounting and any level of access in Timesheets (even "All Documents"), they won’t be able to export journal item analytical lines. This is inconsistent, as having more access in Timesheets should not restrict access in Accounting. Steps to Reproduce: - Create an invoice with analytic distribution. - Go to Journal Items. - Export the journal item, including analytic lines fields Issue: The user will not be able to export the data from these fields. It occurs because timesheet users are restricted by ir-rules that allows access only to users owning the record or associated with a related project/task https://github.com/odoo/odoo/blob/34947c01623a9fc753197bd55d6121d9c6fa682f/addons/hr_timesheet/security/hr_timesheet_security.xml#L52 Solution is to add an ir-rule in account to allow read access to read-only users Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4586096) opw-4586096 Forward-Port-Of: odoo/odoo#202080 Forward-Port-Of: odoo/odoo#201365
This commit completes the fix https://github.com/odoo/odoo/pull/197508. In this commit we make sure that the thread has the correct `can_react` value by also checking that the user has a valid portal_partner. Forward-Port-Of: odoo/odoo#200717 Forward-Port-Of: odoo/odoo#200398
Original PR description
This commit completes the fix https://github.com/odoo/odoo/pull/197508. In this commit we make sure that the thread has the correct `can_react` value by also checking that the user has a valid portal_partner. Forward-Port-Of: odoo/odoo#200717 Forward-Port-Of: odoo/odoo#200398
**Steps to reproduce:** (To reproduce the issue, we have to simulate a case where "E-Factura Status" is "Sent". This can be done by editing "account_move_form_inherit_l10n_ro_edi" view and setting "l10n_ro_edi_state" field visible and editable.) - Install Accounting and l10n_ro_edi - Switch to a Romanian company (e.g. RO Company) - Create an invoice - Set "E-Factura Status" to "Sent" - Confirm it - Try to send the invoice **Issue:** 1) A traceback is raised when trying to generate th
Original PR description
**Steps to reproduce:** (To reproduce the issue, we have to simulate a case where "E-Factura Status" is "Sent". This can be done by editing "account_move_form_inherit_l10n_ro_edi" view and setting…
**Steps to reproduce:**
(To reproduce the issue, we have to simulate a case where "E-Factura Status" is "Sent".
This can be done by editing "account_move_form_inherit_l10n_ro_edi" view and setting "l10n_ro_edi_state" field visible and editable.)
- Install Accounting and l10n_ro_edi
- Switch to a Romanian company (e.g. RO Company)
- Create an invoice
- Set "E-Factura Status" to "Sent"
- Confirm it
- Try to send the invoice
**Issue:**
1) A traceback is raised when trying to generate the extra EDI checkbox for the "Print & Send" wizard.
2) Once the first issue fixed, the "Send E-Factura to SPV" option will be displayed in the "Print & Send" wizard with a warning tooltip button.
The tooltip button will be displayed on another line, which misaligns the "Send E-Factura to SPV" option with the other ones.
**Cause:**
This specific code:
```py
return [checkbox_key for checkbox_key, checkbox_vals in json_checkboxes.items()
if checkbox_vals['checked']]
```
fails because there is no key associated to the data dict for the Romanian EDI checkbox.
opw-4630524
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#201756In this commit- We fix the invisible fields failing test for `l10n_in_ewaybill_stock` runbot error-https://runbot.odoo.com/runbot/build/76485337 opw-4628736 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201499
Original PR description
In this commit- We fix the invisible fields failing test for `l10n_in_ewaybill_stock` runbot error-https://runbot.odoo.com/runbot/build/76485337 opw-4628736 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201499
this commit intends to resolve the [runbot error](https://runbot.odoo.com/runbot/build/76665319) The comment already existed for the invisible field but the comment was not correctly placed in this commit we fix that 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#202010
Original PR description
this commit intends to resolve the [runbot error](https://runbot.odoo.com/runbot/build/76665319) The comment already existed for the invisible field but the comment was not correctly placed in this commit we fix that 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#202010
Currently, An error occurs when removing an `Accounting Date` from the invoice bill form view. Steps to produce: - Install the `account` module (with demo data). - Go to Invoicing / Vendors / Bills. - Create a bill, remove value from the Accounting Date, and click anywhere in form view. `AttributeError: 'bool' object has no attribute 'year'` An error occurs when the system tries to get a year part from the accounting date [1], but the value of accounting date is missing. Link 1:
Original PR description
Currently, An error occurs when removing an `Accounting Date` from the invoice bill form view. Steps to produce: - Install the `account` module (with demo data). - Go to Invoicing / Vendors / Bills. - Create a bill, remove value from the Accounting Date, and click anywhere in form view. `AttributeError: 'bool' object has no attribute 'year'` An error occurs when the system tries to get a year part from the accounting date [1], but the value of accounting date is missing. Link 1: https://github.com/odoo/odoo/blob/a0205ffa3d4a42321a41503b8056a9f1c89328bb/addons/account/models/account_move.py#L3522 If the accounting date is not available, then provide a default value as an invoice date or today's date to resolve an issue. Sentry-6188666136 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200493
Currently, a traceback is occurring when the user clicks the `Done & Schedule Next` button without having the due date. To reproduce this issue: 1) Install Sales 2) Open any sale order and in the chatter, schedule an activity 3) Remove the `Due date` and click the `Done & Schedule Next` button Error:- ``` TypeError: unsupported operand type(s) for +: 'NoneType' and 'relativedelta' ``` This traceback is occurring because `date_deadline` is not a required field. So the user can re
Original PR description
Currently, a traceback is occurring when the user clicks the `Done & Schedule Next` button without having the due date. To reproduce this issue: 1) Install Sales 2) Open any sale order and in the…
Currently, a traceback is occurring when the user clicks the `Done & Schedule Next` button without having the due date. To reproduce this issue: 1) Install Sales 2) Open any sale order and in the chatter, schedule an activity 3) Remove the `Due date` and click the `Done & Schedule Next` button Error:- ``` TypeError: unsupported operand type(s) for +: 'NoneType' and 'relativedelta' ``` This traceback is occurring because `date_deadline` is not a required field. So the user can remove it. If there is no `date_deadline`, the context contains key with no value from the line below. https://github.com/odoo/odoo/blob/da7f89d5683c0718644b5ca9fdf5adb86b54fb81/addons/mail/models/mail_activity.py#L510 But here we are only checking the presence of the key in the context; If yes, the base is calculated based on the context value(None in this case). https://github.com/odoo/odoo/blob/da7f89d5683c0718644b5ca9fdf5adb86b54fb81/addons/mail/models/mail_activity.py#L204-L208 This will lead to the above traceback. sentry-6347875218 Forward-Port-Of: odoo/odoo#201674 Forward-Port-Of: odoo/odoo#199915
**Current behavior before PR:** When inserting a banner, div base container inside banner is not properly aligned to banner icon. **Desired behavior after PR is merged:** Now div base container inside banner is properly aligned to banner icon. task-4591824 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198982
Original PR description
**Current behavior before PR:** When inserting a banner, div base container inside banner is not properly aligned to banner icon. **Desired behavior after PR is merged:** Now div base container inside banner is properly aligned to banner icon. task-4591824 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198982
Adds easier management of foreign partners that are both suppliers and customers by automatically selecting the correct generic TIN if the one set on the partner is also a generic TIN. Also adds some logic that allows to tag a credit note as 'refund' if it matches some conditions. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199150
Original PR description
Adds easier management of foreign partners that are both suppliers and customers by automatically selecting the correct generic TIN if the one set on the partner is also a generic TIN. Also adds some logic that allows to tag a credit note as 'refund' if it matches some conditions. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199150
Sending emails with no attachments now bounce when sending to account.move aliases. This can cause loops if the bounce email is then rerouted because are not using any loop detection. Added the loop detection message id to the bounce email in order to prevent any loops. opw-4576526 Forward-Port-Of: odoo/odoo#199332
Original PR description
Sending emails with no attachments now bounce when sending to account.move aliases. This can cause loops if the bounce email is then rerouted because are not using any loop detection. Added the loop detection message id to the bounce email in order to prevent any loops. opw-4576526 Forward-Port-Of: odoo/odoo#199332
Ensure unique line IDs when the same country appears in both sales and purchase sections of the OSS report. Steps to reproduce: - Create a Belgium company - Install OSS Reports - Update OSS Fiscal Position (Refresh tax mapping in settings) - Duplicate an OSS tax (e.g., 20.0% FR VAT) - Change its type to Purchase - Add it to the FR fiscal position - Create an invoice with a tax 20% FR VAT (Sales) - Create a bill with a tax 20% FR VAT (Purchase) - Try to open OSS Sales report in tax re
Original PR description
Ensure unique line IDs when the same country appears in both sales and purchase sections of the OSS report. Steps to reproduce: - Create a Belgium company - Install OSS Reports - Update OSS Fiscal Position (Refresh tax mapping in settings) - Duplicate an OSS tax (e.g., 20.0% FR VAT) - Change its type to Purchase - Add it to the FR fiscal position - Create an invoice with a tax 20% FR VAT (Sales) - Create a bill with a tax 20% FR VAT (Purchase) - Try to open OSS Sales report in tax return - An error occurs due to duplicate line IDs Issue originates from `append_country_and_taxes_lines`, which appends a new line with incorrect markup (using new line markup instead of the last line markup). opw-4629989 Forward-Port-Of: odoo/enterprise#81641
In the point of sale environnement we want to be able to edit html field in a minimal way. So only core plugins are added to the html_editor. As we have a special assets environnement for the point_of_sale we can directly patch the main `htmlField` definition without impacting main assets of Odoo. Community: 198482 Forward-Port-Of: odoo/enterprise#79893 Forward-Port-Of: odoo/enterprise#79703
Original PR description
In the point of sale environnement we want to be able to edit html field in a minimal way. So only core plugins are added to the html_editor. As we have a special assets environnement for the point_of_sale we can directly patch the main `htmlField` definition without impacting main assets of Odoo. Community: 198482 Forward-Port-Of: odoo/enterprise#79893 Forward-Port-Of: odoo/enterprise#79703
Create a new module to export payroll data for Prisma. task-3750799 Forward-Port-Of: odoo/enterprise#81500 Forward-Port-Of: odoo/enterprise#72114
Original PR description
Create a new module to export payroll data for Prisma. task-3750799 Forward-Port-Of: odoo/enterprise#81500 Forward-Port-Of: odoo/enterprise#72114
Direct Debit payment notification email was always sent in english regardless of customer language. **Steps to reproduce:** * Configure SDD creditor identifier in accounting settings * Bank Journal should have valid bank account * Customer record have different language than user's language and have valid IBAN bank account * Create Direct Debit mandate for this customer * Pay an invoice for this customer with SDD payment method * Create batch payment for this payment and validate it. *
Original PR description
Direct Debit payment notification email was always sent in english regardless of customer language. **Steps to reproduce:** * Configure SDD creditor identifier in accounting settings * Bank Journal should have valid bank account * Customer record have different language than user's language and have valid IBAN bank account * Create Direct Debit mandate for this customer * Pay an invoice for this customer with SDD payment method * Create batch payment for this payment and validate it. * The payment notification email should be sent on payment chatter with wrong language. Video: https://drive.google.com/file/d/1jzlALs4SJRtOA5gPBt_xo0m8r7kpZd_m/view opw-4552438 Forward-Port-Of: odoo/enterprise#81490
Before this commit, the `test_smart_schedule_with_allocated_hours_and_deadlines` test fails when only `project_enterprise` module is installed because the allocated_hours on the tasks are recomputed. However, when timesheet_grid module is installed, the project inside the test has the timesheets feature enabled by default and so the allocated_hours are not recomputed because we suppose the allocated_hours on tasks inside that project can only be altered by the user when the tasks are already cre
Original PR description
Before this commit, the `test_smart_schedule_with_allocated_hours_and_deadlines` test fails when only `project_enterprise` module is installed because the allocated_hours on the tasks are recomputed. However, when timesheet_grid module is installed, the project inside the test has the timesheets feature enabled by default and so the allocated_hours are not recomputed because we suppose the allocated_hours on tasks inside that project can only be altered by the user when the tasks are already created. This commit checks in the test is timesheet_grid module is installed to give the right expected allocated_hours on tasks. runbot-108336 Forward-Port-Of: odoo/enterprise#81387 Forward-Port-Of: odoo/enterprise#79947
To reproduce the issue: 1) Install l10n_es_reports 2) Configure the taxes WHI 15% and IVA 21% purchase taxes to include analytic (checkbox on the form view) 3) Create an invoice with two lines of 100€, so that - both lines use both IVA21% and WHI 1% taxes - one of those lines defines an anlaytic distribution while the other doesn't 4) Open the generic tax report, and generate the VAT Record Books XLSX export ===> In that file, the amount of withholding is 15€. It should be 30€
Original PR description
To reproduce the issue:
1) Install l10n_es_reports
2) Configure the taxes WHI 15% and IVA 21% purchase taxes to include analytic (checkbox on the form view)
3) Create an invoice with two lines of 100€, so that
- both lines use both IVA21% and WHI 1% taxes
- one of those lines defines an anlaytic distribution while the other doesn't
4) Open the generic tax report, and generate the VAT Record Books XLSX export
===> In that file, the amount of withholding is 15€. It should be 30€.
The same issue can be reproduced for surcharge taxes, in the same way.
This is due to the fact different analytic distributions between base lines will trigger the creation of different tax lines for the same tax (one for each distribution). The code handling the export "saw" both lines, but ovewrote the total instead of summing all the values.
opw-4471253
Forward-Port-Of: odoo/enterprise#81375opw-4592126 Forward-Port-Of: odoo/enterprise#81324
Original PR description
opw-4592126 Forward-Port-Of: odoo/enterprise#81324
**Steps to reproduce** - Install PoS, and select a Mexican company - Create an order O1, and in the payment screen, select "Invoice" and confirm the dialog - Validate the order - Click on "Orders" and set the filter to "Paid" to see order O1 - Click O1, click "Refund", and from the product screen, click "Payment" Observed behavior: White screen with traceback in the console. **Issue** It's happening because in l10n_mx_edi_pos, an invoiced order is supposed to have fields `l10n_mx_edi
Original PR description
**Steps to reproduce** - Install PoS, and select a Mexican company - Create an order O1, and in the payment screen, select "Invoice" and confirm the dialog - Validate the order - Click on "Orders"…
**Steps to reproduce** - Install PoS, and select a Mexican company - Create an order O1, and in the payment screen, select "Invoice" and confirm the dialog - Validate the order - Click on "Orders" and set the filter to "Paid" to see order O1 - Click O1, click "Refund", and from the product screen, click "Payment" Observed behavior: White screen with traceback in the console. **Issue** It's happening because in l10n_mx_edi_pos, an invoiced order is supposed to have fields `l10n_mx_edi_cfdi_to_public` and `l10n_mx_edi_usage` https://github.com/odoo/enterprise/blob/a0a97f2c87f76ae035394a67b09d71ec8f4567e7/l10n_mx_edi_pos/static/src/app/screens/payment_screen/payment_screen.js#L18-L21 And they are being accessed in the `product_screen.xml` https://github.com/odoo/enterprise/blob/0396d4f0ac33640dc042bb97e9e8d4b498e6a128/l10n_mx_edi_pos/static/src/app/screens/payment_screen/payment_screen.xml#L7-L12 That works for the original ordre (aka O1), however, when the refund order is created, we set its `to_invoice` to `true` if the original order is invoiced ([code](https://github.com/odoo/odoo/blob/53e7c0adf093dc950a42989a56b4594f734c17b2/addons/point_of_sale/static/src/app/screens/payment_screen/payment_screen.js#L69-L75)), but we don't set any values to the fields `l10n_mx_edi_cfdi_to_public` and `l10n_mx_edi_usage`, causing the crash in the payment screen. **Fix** If the refund order is invoiced, we set the `l10n_mx_edi_usage` to "G02" which corresponds to 'Returns, discounts or bonuses' (assuming that a refund can be seen as a 'return' here). We also copy the field `l10n_mx_edi_cfdi_to_public` from the original order. opw-4608630 Forward-Port-Of: odoo/enterprise#80664
When making a payment using a payment method of type cash with a name different than "CASH" the payment type was not being set correctly in the fiskaly payload. Steps to reproduce: ------------------- * Setup fiskaly for the German POS * Create a payment method of type cash but give it any other name than "CASH" * Make a payment using that payment method * Check the payment type on the fiskaly website dashboard > Observation: The payment type is set to "Non cash" Why the fix: ------
Original PR description
When making a payment using a payment method of type cash with a name different than "CASH" the payment type was not being set correctly in the fiskaly payload. Steps to reproduce: ------------------- * Setup fiskaly for the German POS * Create a payment method of type cash but give it any other name than "CASH" * Make a payment using that payment method * Check the payment type on the fiskaly website dashboard > Observation: The payment type is set to "Non cash" Why the fix: ------------ We should base the payment type on the payment method type and not on the payment method name. opw-4606731 Forward-Port-Of: odoo/enterprise#80995 Forward-Port-Of: odoo/enterprise#80919
It doensn't work to scan a lot in the kanban view of stock.barcode. It's not recognize since the company_id is not required on the lot since 18.0 but the domain was not adapt and expect it. opw-4626206 Forward-Port-Of: odoo/enterprise#81351
Original PR description
It doensn't work to scan a lot in the kanban view of stock.barcode. It's not recognize since the company_id is not required on the lot since 18.0 but the domain was not adapt and expect it. opw-4626206 Forward-Port-Of: odoo/enterprise#81351
- Sign > Templates > Click on any of the kanban record - Reload the view (either reload the browser, or activate the debug, or change to dark mode on the user menu). Before this commit, on reloading the sign template page user was redirected back to kanban view. This occurs because, the client action 'sign.Template' required template_id (found in the context) that was lost when reloading. Now, template_id is put in the query string of the URL, in that way, when reloading, the client ac
Original PR description
- Sign > Templates > Click on any of the kanban record - Reload the view (either reload the browser, or activate the debug, or change to dark mode on the user menu). Before this commit, on reloading the sign template page user was redirected back to kanban view. This occurs because, the client action 'sign.Template' required template_id (found in the context) that was lost when reloading. Now, template_id is put in the query string of the URL, in that way, when reloading, the client action 'sign.Document' will have the needed template_id. Note that, this is also the behavior of the base_import 'ImportAction' action [1]. task-4391729 [1] : https://github.com/odoo/odoo/pull/182744/commits/a6801ce4aa65cd023e2a762ab5c42755a4599c95 Forward-Port-Of: odoo/enterprise#80776 Forward-Port-Of: odoo/enterprise#77400
Steps to reproduce: * Customer record has language different than user's language. * Customer form view -> Accounting Tab -> Invoice follow-ups -> Send * Check sms checkbox * sms template in user's language, it should be in customer's languange. opw-4599660 Forward-Port-Of: odoo/enterprise#81382
Original PR description
Steps to reproduce: * Customer record has language different than user's language. * Customer form view -> Accounting Tab -> Invoice follow-ups -> Send * Check sms checkbox * sms template in user's language, it should be in customer's languange. opw-4599660 Forward-Port-Of: odoo/enterprise#81382
Steps to reproduce the bug: - Enable “Signature” option in inventory settings - Go to barcode → delivery orders > batch: - select any batch: - settings: - Operations > sign: - Sign and validate Problem: A traceback is triggered: “ValueError: Invalid field 'signature' on model 'stock.picking.batch'” Solution: It is not possible to sign a batch picking, so the button should not displayed. opw-4610471 Forward-Port-Of: odoo/enterprise#81051
Original PR description
Steps to reproduce the bug: - Enable “Signature” option in inventory settings - Go to barcode → delivery orders > batch: - select any batch: - settings: - Operations > sign: - Sign and validate Problem: A traceback is triggered: “ValueError: Invalid field 'signature' on model 'stock.picking.batch'” Solution: It is not possible to sign a batch picking, so the button should not displayed. opw-4610471 Forward-Port-Of: odoo/enterprise#81051
it could happen that odoo does not receive DIAN's response because of internet loss while the document is being sent to dian for example. The move form will then display the edi state as being rejected while in reality DIAN has successfully processed the move. If the user where to send the move to DIAN again, they would get an error message saying the move has already been processed. the fix: when the move is sent to DIAN again after getting out of sync, DIAN will send the error explained abo
Original PR description
it could happen that odoo does not receive DIAN's response because of internet loss while the document is being sent to dian for example. The move form will then display the edi state as being rejected while in reality DIAN has successfully processed the move. If the user where to send the move to DIAN again, they would get an error message saying the move has already been processed. the fix: when the move is sent to DIAN again after getting out of sync, DIAN will send the error explained above which contains the identifier of the move. We now save this identifier and use it in the automatic GetStatus call to get odoo and DIAN back in sync. ticket: 4569829 Forward-Port-Of: odoo/enterprise#81350
…rate The current implementation to handle the rate for multi-currency entries in CAMT creates problems when fetching the source rate from the file: the source rate can be taken from the SrcCcy or the TrgtCcy node, which should be compared with the source currency and target currency respectively. It is not done that way and is too restrictive (when the SrcCcy is found, it is always compared to the target currency, which leads to an incorrect transaction amount). Moreover, when the currenc
Original PR description
…rate The current implementation to handle the rate for multi-currency entries in CAMT creates problems when fetching the source rate from the file: the source rate can be taken from the SrcCcy or the TrgtCcy node, which should be compared with the source currency and target currency respectively. It is not done that way and is too restrictive (when the SrcCcy is found, it is always compared to the target currency, which leads to an incorrect transaction amount). Moreover, when the currency conversion introduces a exchange loss/gain, it is put back on the largest transaction of the entry. opw-4393164 Forward-Port-Of: odoo/enterprise#80622 Forward-Port-Of: odoo/enterprise#76828
In this commit, we add a delay to ensure Gantt view will correclty be loaded after clicking on Gantt view button. This allow to fix an indeterministic behavior that can occurs in restaurant_appointment_tour tour. Forward-Port-Of: odoo/enterprise#81562
Original PR description
In this commit, we add a delay to ensure Gantt view will correclty be loaded after clicking on Gantt view button. This allow to fix an indeterministic behavior that can occurs in restaurant_appointment_tour tour. Forward-Port-Of: odoo/enterprise#81562