Friday, April 12, 2024
45 changes · saas-17.1
Resolved issues and error corrections
This change adds internal helper utilities used to build automated Point of Sale testing flows. It supports more reliable validation of related enterprise functionality without changing the user-facing POS experience.
Original PR description
This commit adds helpers that are used in a tour created in enterprise. opw-3802560
Miscellaneous changes
Steps: - Create a Customer Invoice CI - Register a full payment P - Create a Bank Transaction BT - Reconcile BT with P - Go to the payment's move and click on "Reverse Entry" button -> First issue: Two buttons ("Reverse" and "Reverse and create invoice") It should be only one ("Reverse") - Click on "Reverse" button -> The invoice is still marked as "paid", it should be "not paid" The reason is that `is_cancel_needed` variable is not well computed in `reverse_moves()` as since 4d3ac4cbd87fa3
Original PR description
Steps:
- Create a Customer Invoice CI
- Register a full payment P
- Create a Bank Transaction BT
- Reconcile BT with P
- Go to the payment's move and click on "Reverse Entry" button
-> First issue: Two buttons ("Reverse" and "Reverse and create invoice")
It should be only one ("Reverse")
- Click on "Reverse" button
-> The invoice is still marked as "paid", it should be "not paid"
The reason is that `is_cancel_needed` variable is not well computed
in `reverse_moves()` as since 4d3ac4cbd87fa3db2bf7ac21d729a91eaf52a9be,
there is no `refund_method` on the reversal wizard, which was used
instead of `is_modify` parameter, which is not enough in our case.
opw-3772117
Forward-Port-Of: odoo/odoo#161534
Forward-Port-Of: odoo/odoo#159740- Transfer move line with amount_currency $0, balance 1000đ - Wizard transfer not generate counterpart lines 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#160946 Forward-Port-Of: odoo/odoo#157011
Original PR description
- Transfer move line with amount_currency $0, balance 1000đ - Wizard transfer not generate counterpart lines 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#160946 Forward-Port-Of: odoo/odoo#157011
In `SET_FILTER_MATCHING_CONDITION` we would call `SEE_RECORDS_PIVOT_VISIBLE` twice but since the function returns a boolean value, the second call was useless as we already knew the outcome. This revision alleviates a bit the cost of computing the cells' clickable actions. On A sheet with 480 visible cells, each of them matching the full condition, the time spent in `getClickableCells` goes from 19ms to 14 ms on Google Chrome and from 42ms to 29 ms on Firefox. Description of the issue/feat
Original PR description
In `SET_FILTER_MATCHING_CONDITION` we would call `SEE_RECORDS_PIVOT_VISIBLE` twice but since the function returns a boolean value, the second call was useless as we already knew the outcome. This revision alleviates a bit the cost of computing the cells' clickable actions. On A sheet with 480 visible cells, each of them matching the full condition, the time spent in `getClickableCells` goes from 19ms to 14 ms on Google Chrome and from 42ms to 29 ms on Firefox. 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#161656
Create company A with company currency USD, company B with company currency VND. Set company B-VND in payment terms expect: currency payment terms is VND Video: https://github.com/odoo/odoo/assets/11542778/155f8339-b3e5-470d-a590-70d180a72c36 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161044
Original PR description
Create company A with company currency USD, company B with company currency VND. Set company B-VND in payment terms expect: currency payment terms is VND Video: https://github.com/odoo/odoo/assets/11542778/155f8339-b3e5-470d-a590-70d180a72c36 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161044
Use case: - Create a Kit BoM with finished qty to 5 consuming 10 components - Do a sale order for 3 units (3/5 of BoM) - Update the sale order line to 4 units Current behavior: The delivery has a huge amount to deliver Expected: The delivery is for 8 units It happens because the method `_compute_kit_quantities` always expect a BoM for 1 units. `bom_line_data['original_qty']` always contains the number of times the BoM will be needed and not the quantity of finished products. In or
Original PR description
Use case: - Create a Kit BoM with finished qty to 5 consuming 10 components - Do a sale order for 3 units (3/5 of BoM) - Update the sale order line to 4 units Current behavior: The delivery has a huge amount to deliver Expected: The delivery is for 8 units It happens because the method `_compute_kit_quantities` always expect a BoM for 1 units. `bom_line_data['original_qty']` always contains the number of times the BoM will be needed and not the quantity of finished products. In order to have the number of component by unit of finished product we have to introduce the BoM quantity in the formula 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#160149
Steuernummer was being validated at tax report xml generation. The check was moved to the company form view. Moreover, the field was set visible in the company form view for multivat. It should be a constraint raising when trying to set the steuernummer to the company; there is no point in only checking it at XML generation. task-3809218 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161423 Forward-Port-Of: odoo/od
Original PR description
Steuernummer was being validated at tax report xml generation. The check was moved to the company form view. Moreover, the field was set visible in the company form view for multivat. It should be a constraint raising when trying to set the steuernummer to the company; there is no point in only checking it at XML generation. task-3809218 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161423 Forward-Port-Of: odoo/odoo#159057
The sale_stock module patches the ProductCatalogKanbanRecord updateQuantity method to prevent the quantity to go under the delivered quantity of the product The issue is that we are also using the ProductCatalogKanbanRecord in the industry_fsm_stock module we are also doing an override of the updateQuantity method to prevent the quantity of a product to go under the 'minimumQuantityOnProduct' which can be lower that the delivered quantity of a product in the case of a service product Task-
Original PR description
The sale_stock module patches the ProductCatalogKanbanRecord updateQuantity method to prevent the quantity to go under the delivered quantity of the product The issue is that we are also using the ProductCatalogKanbanRecord in the industry_fsm_stock module we are also doing an override of the updateQuantity method to prevent the quantity of a product to go under the 'minimumQuantityOnProduct' which can be lower that the delivered quantity of a product in the case of a service product Task-3689939 https://github.com/odoo/enterprise/pull/55455 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155157
Prior to this commit, splitting an order would create a new order, causing it to appear again on the preparation display. This could lead to the kitchen preparing the same order twice. The sequence of events was as follows: 1. The order is placed. 2. The kitchen receives and prepares the order. 3. The waiter delivers the order to the table. 4. The client receives the bill and requests a split. At the point of splitting, a new order is created. This duplicate order should not be sent to
Original PR description
Prior to this commit, splitting an order would create a new order, causing it to appear again on the preparation display. This could lead to the kitchen preparing the same order twice. The sequence of events was as follows: 1. The order is placed. 2. The kitchen receives and prepares the order. 3. The waiter delivers the order to the table. 4. The client receives the bill and requests a split. At the point of splitting, a new order is created. This duplicate order should not be sent to the kitchen as it represents a meal that has already been prepared and consumed. This commit resolves this issue by preventing display of duplicate orders to the kitchen during order splitting. Enterprise PR: https://github.com/odoo/enterprise/pull/60537 opw-3809693 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161498
### Context In a previous fix https://github.com/odoo/odoo/pull/83276 , the `_notify_get_reply_to_formatted_email` method was introduced to prevent edge-cases where the cpython `email` library might incorrectly fold the “Reply-To” email header. We identified an other corner case where DKIM signature verification might fail on the recipient’s end depending on the tech stack used to verify the DKIM signature vs the one used to DKIM sign it on the sending end. This might be related to how
Original PR description
### Context In a previous fix https://github.com/odoo/odoo/pull/83276 , the `_notify_get_reply_to_formatted_email` method was introduced to prevent edge-cases where the cpython `email` library might…
### Context In a previous fix https://github.com/odoo/odoo/pull/83276 , the `_notify_get_reply_to_formatted_email` method was introduced to prevent edge-cases where the cpython `email` library might incorrectly fold the “Reply-To” email header. We identified an other corner case where DKIM signature verification might fail on the recipient’s end depending on the tech stack used to verify the DKIM signature vs the one used to DKIM sign it on the sending end. This might be related to how RFC5322 and RFC6376 interact with each other : In RFC5322 defines folding white spaces as follows : ``` FWS = ([*WSP CRLF] 1*WSP) / obs-FWS with obsolete FWS = 1*WSP *(CRLF 1*WSP) ``` While RFC6376 uses : `FWS = [*WSP CRLF] 1*WSP ` Based on this, it seems that for proper header content folding, the specifications expects at least one WSP (space or tab) before a CRLF. Currently when using the `email` cpython library to handle email objects, we observed that when the header value for the “Reply-To” is longer than 68 characters, it will return a folded string representation adding a linebreak after the colon. Example: `Reply-To:\r\n "Marc R.Long Name Jonhson" <catchall@very.long.subdomain@example.com>\r\n` Notice that the there is no WSP between the colon character an `\r\n`. It seems that in this corner case, certain DKIM verification tech stacks (from tests Microsoft Outlook and Rspamd) will miss-read the “Reply-to” header as empty, while others correct for it (Gmail). This in returns leads to the DKIM signature verification failing. As it is impossible to test every possible combination of DKIM tech stacks in the email ecosystem and that until the `email` cpython library handles this corner case correctly, this fix tries to preformat the “Reply-To” more defensively. We also print a warning log if the `record_email` alone is longer than 68 characters (as it will not be folded), inviting the user to shorten it to prevent DKIM verification issues. ### Unit test fixing: - shortened alias name to prevent the 68 character limit from being triggered during the `test_notification_reply_to_batch` performance test (as we are not testing the 68 char here) - changed language in `test_mail_message_values_fromto_long_name` to reflect the new 68 character limit and mutted logger, as it now print a warning message ### Considerations for the future This PR only prevents the “Reply-To” from being malformed. In theory, the miss-folding could happen to any email header constructed using the `email` cpython library. In practice, the probability of the “To” and “From” being affected is low, as they usually don’t exceed a total of 78 characters as per RFC. Nevertheless if the future shows that this might be a bigger issue, one should think about: * On Odoo side: add a more robust header value formatting applied to all affected headers before the email gets sent out * On Python’s side: work with the `email` library maintainer to find a longterm solution opw-3826296 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161014 Forward-Port-Of: odoo/odoo#160760
Issue: When a course is set to 'On Payment' and linked to our 'Course Access' product, users encounter an issue where they cannot view the final screen of the payment process when selecting payment methods like 'wire transfer'. This occurs because the payment status remains 'pending', and the user has not yet been granted access to the course, meaning no invitation link is available. Steps to Reproduce: 1. Install website_sale_slides. 2. Create or modify a course with the 'On Paymen
Original PR description
Issue: When a course is set to 'On Payment' and linked to our 'Course Access' product, users encounter an issue where they cannot view the final screen of the payment process when selecting payment methods like 'wire transfer'. This occurs because the payment status remains 'pending', and the user has not yet been granted access to the course, meaning no invitation link is available. Steps to Reproduce: 1. Install website_sale_slides. 2. Create or modify a course with the 'On Payment' status. 3. Link it to a 'Course Access' product. 4. Navigate to the website and attempt to purchase the course. 5. Proceed through all the steps of the payment process. Solution: The template needs to accommodate scenarios where certain payment methods do not immediately provide an invitation link. Even without the invitation link, it should still display the last payment screen, awaiting payment confirmation to grant access. opw-3683024 Forward-Port-Of: odoo/odoo#153610
This reverts commit 436c1c6. The commit was fixing an issue where the product configurator dialog would not be shown for custom attribute, no variant, and dynamic attribute using the quick buy add button on the '/shop' page. The commit introduces an undesirable behavior: the product configurator would always be open if customers choose none of the multi-checkbox options. Forward-Port-Of: odoo/odoo#161144
Original PR description
This reverts commit 436c1c6. The commit was fixing an issue where the product configurator dialog would not be shown for custom attribute, no variant, and dynamic attribute using the quick buy add button on the '/shop' page. The commit introduces an undesirable behavior: the product configurator would always be open if customers choose none of the multi-checkbox options. Forward-Port-Of: odoo/odoo#161144
When updating the categories, if by any chance there is a loop in the category hierarchy, the current code was falling into an infinite loop. With this commit, the graph loop is broken by clearing a parent_id, and if the resulting module category path is wrong, a clean new one will be recreated anyway. This allows unblocking uncomfortable situations where people cannot update the modules list any more. In 15.0, [a check](https://github.com/odoo/odoo/commit/6932714200d158a21bf10b90b2f71fa5c
Original PR description
When updating the categories, if by any chance there is a loop in the category hierarchy, the current code was falling into an infinite loop. With this commit, the graph loop is broken by clearing a parent_id, and if the resulting module category path is wrong, a clean new one will be recreated anyway. This allows unblocking uncomfortable situations where people cannot update the modules list any more. In 15.0, [a check](https://github.com/odoo/odoo/commit/6932714200d158a21bf10b90b2f71fa5cae0b13f) has been introduced to prevent the existence of recursive categories, but as it is a python check it doesn't prevent corrupted data to remain corrupted. [OPW-3704007](https://www.odoo.com/web#id=3704007&model=project.task) Related to odoo/upgrade#5574 Forward-Port-Of: odoo/odoo#155709
Fixes a few things: - A couple placeholders existed for non-required fields, which means in certain cases they would be printed in real reports (i.e. not just shown in studio) - hide the UoM from the deliveryslip when the setting isn't active (this is broken in earlier versions too, but fix can be backported if someone finally complains about it since it's been there for awhile) - Updates a placeholder that was confusing (a location instead of a package name) Note only `stock` reports were
Original PR description
Fixes a few things: - A couple placeholders existed for non-required fields, which means in certain cases they would be printed in real reports (i.e. not just shown in studio) - hide the UoM from the deliveryslip when the setting isn't active (this is broken in earlier versions too, but fix can be backported if someone finally complains about it since it's been there for awhile) - Updates a placeholder that was confusing (a location instead of a package name) Note only `stock` reports were checked for this fix, there are probably still other problematic reports. See PR: https://github.com/odoo/odoo/pull/129310 for reference of when placeholders were added in --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161420 Forward-Port-Of: odoo/odoo#161360
Due to the project user's inability to create a task stage, we have removed the 'create stage' option from the kanban view. task-3511164 Forward-Port-Of: odoo/odoo#159557 Forward-Port-Of: odoo/odoo#140297
Original PR description
Due to the project user's inability to create a task stage, we have removed the 'create stage' option from the kanban view. task-3511164 Forward-Port-Of: odoo/odoo#159557 Forward-Port-Of: odoo/odoo#140297
The goal is to modify the accounts that take please in those entries. A typical example is a company that wants to recognize cost of goods sold for the input and output at the same time, instead of waiting for the customer invoice. This is just a hook, not functional change. cc @ForgeFlow Forward-Port-Of: odoo/odoo#161460 Forward-Port-Of: odoo/odoo#137582
Original PR description
The goal is to modify the accounts that take please in those entries. A typical example is a company that wants to recognize cost of goods sold for the input and output at the same time, instead of waiting for the customer invoice. This is just a hook, not functional change. cc @ForgeFlow Forward-Port-Of: odoo/odoo#161460 Forward-Port-Of: odoo/odoo#137582
Task: 34810 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#145112
Original PR description
Task: 34810 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#145112
Currently, when the company has a french localization and activates the qr code option on the pos bill, if a customer scans the qr code, he will 'inevitably' meet an error: > According to the french law, you cannot modify a point of sale order. Forbidden fields: date_order, user_id, lines, payment_ids, ... Steps to reproduce: ------------------- * Install **France - Accounting** * Switch to `FR Company` * Go to the app **Point of Sale** * Select **Configuration** > **Settings** * Enabl
Original PR description
Currently, when the company has a french localization and activates the qr code option on the pos bill, if a customer scans the qr code, he will 'inevitably' meet an error: > According to the french…
Currently, when the company has a french localization and activates the qr code option on the pos bill, if a customer scans the qr code, he will 'inevitably' meet an error: > According to the french law, you cannot modify a point of sale order. Forbidden fields: date_order, user_id, lines, payment_ids, ... Steps to reproduce: ------------------- * Install **France - Accounting** * Switch to `FR Company` * Go to the app **Point of Sale** * Select **Configuration** > **Settings** * Enable `Use QR code on ticket` * Open a shop session * Add anything * Select/or not a customer * Select **Payment** * Select any payment method then validate * Scan the qr code on the ticket * Try filling the form and saving > Observation: Error Why the fix: ------------ We understand the confusion for french localization users to be presented with a feature which they are not able to use as intended. The Qr code feature was implemented to make it easier and quicker at the cashier but will always end up in an error, unless a client was selected and the invoice was created when validating the payment at the register. But then, it doesn't save time. Since they are not able to use the feature as intended, we decided to make it unavailable for companies with a french localization. There has been a lot of discussion about how to solve this issue. However, a lot of the ideas discussed were not doable in stable versions and this is the only solution we agreed on. opw-3704767 Forward-Port-Of: odoo/odoo#160304 Forward-Port-Of: odoo/odoo#158786
Before this commit, when a DM chat had a custom name, the search was not taking it into account. Steps to reproduce: - Log in as Mitchell Admin - Open a DM chat with Marc Demo in Discuss app - Rename conversation to "Test" - Open more than 20 chat/channels (can create 20 channels) - type "Test" in the quick search of discuss app sidebar => The DM chat with Marc Demo is not visible in filtered sidebar. This happens because the quick search was relying on `thread.name`, which actually o
Original PR description
Before this commit, when a DM chat had a custom name, the search was not taking it into account. Steps to reproduce: - Log in as Mitchell Admin - Open a DM chat with Marc Demo in Discuss app - Rename…
Before this commit, when a DM chat had a custom name, the search was not taking it into account. Steps to reproduce: - Log in as Mitchell Admin - Open a DM chat with Marc Demo in Discuss app - Rename conversation to "Test" - Open more than 20 chat/channels (can create 20 channels) - type "Test" in the quick search of discuss app sidebar => The DM chat with Marc Demo is not visible in filtered sidebar. This happens because the quick search was relying on `thread.name`, which actually only matches exactly the UI when this is the name of a channel or when a group chat is explictly named. The actual thread field used that matches textual name of thread is `thread.displayName`, and this field is synced with custom DM chat if any. Before/After <img width="297" alt="before" src="https://github.com/odoo/odoo/assets/6569390/ee82a9c5-8413-4887-96d1-85c80120bb43"> <img width="290" alt="after" src="https://github.com/odoo/odoo/assets/6569390/06f2a25f-34f2-413a-9408-70292113ea9b"> Forward-Port-Of: odoo/odoo#161540
Steps to Reproduce: - Install Project App - Go inside any project and set the state of task as done - Click on project burger menu and click on settings Issue: - The count on the stat button refers to count of all tasks Causes: - Reference of wrong field in the XML i.e ., 'task_count' instead of 'open_task_count'. Solution: - Changing the field to reference it to open tasks count i.e., 'open_task_count' task-3741260 Description of the issue/feature this PR addresses
Original PR description
Steps to Reproduce: - Install Project App - Go inside any project and set the state of task as done - Click on project burger menu and click on settings Issue: - The count on the stat button refers to count of all tasks Causes: - Reference of wrong field in the XML i.e ., 'task_count' instead of 'open_task_count'. Solution: - Changing the field to reference it to open tasks count i.e., 'open_task_count' task-3741260 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#153984
The payment with MobilePay payment method failed due to the wrong code. opw-3859956 Forward-Port-Of: odoo/odoo#161481
Original PR description
The payment with MobilePay payment method failed due to the wrong code. opw-3859956 Forward-Port-Of: odoo/odoo#161481
This commit allows the user to search a specific quant in the detailed operation view via the display name build from its characteristics For instance, searching 'WH/Stock - LOT1' will search for quant having location 'WH/Stock' and lot_id 'LOT1'. This is not a 100% valid search as we don't really know what are the object represented in the name. We only know the first one is always a location. Description of the issue/feature this PR addresses: Current behavior before PR: Desired be
Original PR description
This commit allows the user to search a specific quant in the detailed operation view via the display name build from its characteristics For instance, searching 'WH/Stock - LOT1' will search for quant having location 'WH/Stock' and lot_id 'LOT1'. This is not a 100% valid search as we don't really know what are the object represented in the name. We only know the first one is always a location. 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#141527
When user deletes line of journal items and tries to save invoice, a traceback appear. Steps to reproduce the error: - Create a new invoice > add 1 product > Save - Go to journal items > delete 1 line - Change currency > Save Traceback: ``` ValueError: not enough values to unpack (expected 3, got 2) File "odoo/http.py", line 2252, in __call__ response = request._serve_db() File "odoo/http.py", line 1828, in _serve_db return self._transactioning(_serve_ir_http, readonl
Original PR description
When user deletes line of journal items and tries to save invoice, a traceback appear. Steps to reproduce the error: - Create a new invoice > add 1 product > Save - Go to journal items > delete 1…
When user deletes line of journal items and tries to save invoice,
a traceback appear.
Steps to reproduce the error:
- Create a new invoice > add 1 product > Save
- Go to journal items > delete 1 line
- Change currency > Save
Traceback:
```
ValueError: not enough values to unpack (expected 3, got 2)
File "odoo/http.py", line 2252, in __call__
response = request._serve_db()
File "odoo/http.py", line 1828, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1848, 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 1826, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1833, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2058, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 740, 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 72, in web_save
self.write(vals)
File "home/odoo/src/enterprise/saas-17.1/documents_account/models/account_move.py", line 30, in write
res = super().write(vals)
File "addons/account/models/account_move.py", line 2669, in write
self._sanitize_vals(vals)
File "addons/account/models/account_move.py", line 2630, in _sanitize_vals
for command, line_id, line_vals in vals['line_ids']:
```
https://github.com/odoo/odoo/blob/6768cf06138bb5c94a6c77db79ed5d802333b290/addons/account/models/account_move.py#L2422 Here, vals['line_ids'] have 2 values, so for 'line_vals' there is no value.
So when user tries to save invoice,
It will lead to the above traceback.
sentry-5119406548
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#160266This commit fixes a traceback that occurs when calling `getValue` on `wysiwyg` while the `odooEditor` instance variable is not defined for whatever reason. task-3600667 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161110 Forward-Port-Of: odoo/odoo#157979
Original PR description
This commit fixes a traceback that occurs when calling `getValue` on `wysiwyg` while the `odooEditor` instance variable is not defined for whatever reason. task-3600667 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#161110 Forward-Port-Of: odoo/odoo#157979
Issue: ====== traceback when clicking on gradient colorpicker in mass_mailing Steps to reproduce the issue: ============================= - Got to email marketing - Add some text - Select the text and go to graadient and activate custom - click any color in the colorpalette -> traceback Origin of the issue: ==================== Some colorpickers are created inside the snippets sidebar and then gets removed by `_updateRightPanelContent` in `SnippetsMenu` so the owl components corro
Original PR description
Issue: ====== traceback when clicking on gradient colorpicker in mass_mailing Steps to reproduce the issue: ============================= - Got to email marketing - Add some text - Select the text and go to graadient and activate custom - click any color in the colorpalette -> traceback Origin of the issue: ==================== Some colorpickers are created inside the snippets sidebar and then gets removed by `_updateRightPanelContent` in `SnippetsMenu` so the owl components corrosponding to them will have `this.el = null` which will cause a problem when updating the props since we will use it in the update. task-3834112 Forward-Port-Of: odoo/odoo#159842
Steps: - Install `web_studio` - Change language to French - Open any form view and enable `Studio` - Add a datetime field and click on it In french we have the following message: "Première date acceptée": Date formatée ISO ou "aujourd'hui" He says that we can use the string "aujourd'hui" when we only expect "today" in English. This commit changes the help text to display "today" in every language opw-3829954 Forward-Port-Of: odoo/odoo#160904 Forward-Port-Of: odoo/odoo#159654
Original PR description
Steps: - Install `web_studio` - Change language to French - Open any form view and enable `Studio` - Add a datetime field and click on it In french we have the following message: "Première date acceptée": Date formatée ISO ou "aujourd'hui" He says that we can use the string "aujourd'hui" when we only expect "today" in English. This commit changes the help text to display "today" in every language opw-3829954 Forward-Port-Of: odoo/odoo#160904 Forward-Port-Of: odoo/odoo#159654
Steps to reproduce: ------------------- - create a storable product and set a quantity on hand - create a delivery for this product and set to draft - add a demand for this product on the delivery - click on "Mark as Todo" - go to the product form - click on the Forecasted smart button - click on "Unreserve" button (to process business logic ans reload report) Issue: ------ The report is reloaded with all products. Cause: ------ When we setup/start the `StockForecasted` compone
Original PR description
Steps to reproduce: ------------------- - create a storable product and set a quantity on hand - create a delivery for this product and set to draft - add a demand for this product on the delivery -…
Steps to reproduce: ------------------- - create a storable product and set a quantity on hand - create a delivery for this product and set to draft - add a demand for this product on the delivery - click on "Mark as Todo" - go to the product form - click on the Forecasted smart button - click on "Unreserve" button (to process business logic ans reload report) Issue: ------ The report is reloaded with all products. Cause: ------ When we setup/start the `StockForecasted` component, if we can't find an active model in the action's context, we try to find it in the action's props (via res_model or on the original action if necessary). If the original action is used, the active model must be in the context of the original action. Unfortunately, this is not the case. Without `resModel` the domain determined in the `graphDomain` method will not filter on the product (which corresponds to the `active_id`). Solution: --------- If no resModel is found via the context, add it to the context when it is determined. Add the action id to handle the case of reloading the page directly via the browser's refresh button. opw-3793065 Forward-Port-Of: odoo/odoo#158063
### Steps to reproduce * install l10n_es_edi_facturae * create and confirm an invoice * click on 'Send & Print' You should see that you are unable to uncheck 'Generate Facturae edi file' ### Cause In 0d3d6c8, `l10n_es_edi_facturae_checkbox_xml` changed to a non-stored and read-only computed field. ### Fix A proper fix would consist in making the field `l10n_es_edi_facturae_checkbox_xml` stored. But we can't do that in stable. So we make it `company_dependent` as a workaround
Original PR description
### Steps to reproduce * install l10n_es_edi_facturae * create and confirm an invoice * click on 'Send & Print' You should see that you are unable to uncheck 'Generate Facturae edi file' ### Cause In 0d3d6c8, `l10n_es_edi_facturae_checkbox_xml` changed to a non-stored and read-only computed field. ### Fix A proper fix would consist in making the field `l10n_es_edi_facturae_checkbox_xml` stored. But we can't do that in stable. So we make it `company_dependent` as a workaround. opw-3772085 Forward-Port-Of: odoo/odoo#161433
…ndor bill Steps to Reproduce : - install indian Accounting module - click on invoice - go to vendor bills - create new Issue: - while creating new and confirming, it will throw a warning message, as this warning required only for eInvoice only (while confirming the invoice) not for vendor Bills. Cause: - while generating warning message there is no specific condition like that it is not for vendors Solution: - if we gave condition that this warning message is only for out_in
Original PR description
…ndor bill Steps to Reproduce : - install indian Accounting module - click on invoice - go to vendor bills - create new Issue: - while creating new and confirming, it will throw a warning message, as this warning required only for eInvoice only (while confirming the invoice) not for vendor Bills. Cause: - while generating warning message there is no specific condition like that it is not for vendors Solution: - if we gave condition that this warning message is only for out_invoice then the issue will be solved. task-3657558 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#160573 Forward-Port-Of: odoo/odoo#147658
Before this commit, if there was an error, the PoS stays on the loading page which was confusing for the user. owp-3834647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#159710
Original PR description
Before this commit, if there was an error, the PoS stays on the loading page which was confusing for the user. owp-3834647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#159710
When generating the PDF, the translatable fields (the note of the payment terms, the name of the products, etc) will use the language set on the partner_id of the invoice. The xml generated should do the same. opw-3842885 Forward-Port-Of: odoo/odoo#161140
Original PR description
When generating the PDF, the translatable fields (the note of the payment terms, the name of the products, etc) will use the language set on the partner_id of the invoice. The xml generated should do the same. opw-3842885 Forward-Port-Of: odoo/odoo#161140
When creating a write-off during the reconciliation, the label defined is set on only one line instead of all the line of the write-off journal entry. opw-3773178 closes odoo/enterprise#59142 Signed-off-by: Laurent Smet (las) <las@odoo.com> Forward-Port-Of: odoo/enterprise#60641 Forward-Port-Of: odoo/enterprise#60056
Original PR description
When creating a write-off during the reconciliation, the label defined is set on only one line instead of all the line of the write-off journal entry. opw-3773178 closes odoo/enterprise#59142 Signed-off-by: Laurent Smet (las) <las@odoo.com> Forward-Port-Of: odoo/enterprise#60641 Forward-Port-Of: odoo/enterprise#60056
Steuernummer was being validated at tax report xml generation. The check was moved to the company form view. It should be a constraint raising when trying to set the steuernummer to the company; there is no point in only checking it at XML generation. task-3809218 Forward-Port-Of: odoo/enterprise#60496 Forward-Port-Of: odoo/enterprise#59348
Original PR description
Steuernummer was being validated at tax report xml generation. The check was moved to the company form view. It should be a constraint raising when trying to set the steuernummer to the company; there is no point in only checking it at XML generation. task-3809218 Forward-Port-Of: odoo/enterprise#60496 Forward-Port-Of: odoo/enterprise#59348
To reproduce the issue: 1) Create an account.move move_1, leave it in draft 2) Create another account.move move_2, using the same accounts as move_1 and at the same date, leave it in draft 3) Make sure move_1 and move_2's sequence numbers are empty (so that their sequence number will be recomputed at posting) 3) Post move_2 4) Post move_1 5) Open the General Ledger, unfold the lines of the accounts touched by move_1 and move_2. ===> Problem: the move_1's move lines appear before move_2's, e
Original PR description
To reproduce the issue: 1) Create an account.move move_1, leave it in draft 2) Create another account.move move_2, using the same accounts as move_1 and at the same date, leave it in draft 3) Make sure move_1 and move_2's sequence numbers are empty (so that their sequence number will be recomputed at posting) 3) Post move_2 4) Post move_1 5) Open the General Ledger, unfold the lines of the accounts touched by move_1 and move_2. ===> Problem: the move_1's move lines appear before move_2's, even though move_2 has a lower sequence. This is due to the fact move lines with identical dates were ordered by id by the GL. Since move_1 was created first, its lines had a lower id. We fix that by adding the move_name to the ordering criteria. Move lines will still be primarily ordered by date, but if they have the same date, we'll now use the move_name before falling back to their id. Forward-Port-Of: odoo/enterprise#60411 Forward-Port-Of: odoo/enterprise#59213
The quantity_decreasable_sum of a service product no longer takes into account the delivered quantities This is done so we can decrease service product quantity in the product catalog even tho those product are considered delivered by default https://github.com/odoo/odoo/pull/155157 Task-3689939 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#55455
Original PR description
The quantity_decreasable_sum of a service product no longer takes into account the delivered quantities This is done so we can decrease service product quantity in the product catalog even tho those product are considered delivered by default https://github.com/odoo/odoo/pull/155157 Task-3689939 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#55455
Prior to this commit, splitting an order would create a new order, causing it to appear again on the preparation display. This could lead to the kitchen preparing the same order twice. The sequence of events was as follows: 1. The order is placed. 2. The kitchen receives and prepares the order. 3. The waiter delivers the order to the table. 4. The client receives the bill and requests a split. At the point of splitting, a new order is created. This duplicate order should not be sent to
Original PR description
Prior to this commit, splitting an order would create a new order, causing it to appear again on the preparation display. This could lead to the kitchen preparing the same order twice. The sequence of events was as follows: 1. The order is placed. 2. The kitchen receives and prepares the order. 3. The waiter delivers the order to the table. 4. The client receives the bill and requests a split. At the point of splitting, a new order is created. This duplicate order should not be sent to the kitchen as it represents a meal that has already been prepared and consumed. This commit resolves this issue by preventing display of duplicate orders to the kitchen during order splitting. Community PR: https://github.com/odoo/odoo/pull/161498 opw-3809693 Forward-Port-Of: odoo/enterprise#60537
When marketing activity is created with trigger sms_not_clicked it isn't being run because schedule_date stays null. task-3648034 Forward-Port-Of: odoo/enterprise#59135
Original PR description
When marketing activity is created with trigger sms_not_clicked it isn't being run because schedule_date stays null. task-3648034 Forward-Port-Of: odoo/enterprise#59135
### [FIX] l10n_be_codabox: fallback on Company ID if no Tax ID In Belgium, some companies may not have a Tax ID (for instance non-profit organisations). In that case, we should fallback on the Company ID. task-id: none (validated with LAJE) Forward-Port-Of: odoo/enterprise#60333
Original PR description
### [FIX] l10n_be_codabox: fallback on Company ID if no Tax ID In Belgium, some companies may not have a Tax ID (for instance non-profit organisations). In that case, we should fallback on the Company ID. task-id: none (validated with LAJE) Forward-Port-Of: odoo/enterprise#60333
### Steps to reproduce issue: 1. Have Sales installed 2. Enable Analytic Accounting and create two Projects 3. Go into both Project Settings and add distinct Analytic Accounts 4. Create a Vendor Bill 5. Add a Product Line and put both accounts in the Analytic Distribution 6. Add an account in another column to one of the existing Analytic Distribution Lines 7. Go to Projects and open the Project Updates of the Project whose account was alone in the Analytic Distribution Line 8. You get
Original PR description
### Steps to reproduce issue: 1. Have Sales installed 2. Enable Analytic Accounting and create two Projects 3. Go into both Project Settings and add distinct Analytic Accounts 4. Create a Vendor Bill…
### Steps to reproduce issue: 1. Have Sales installed 2. Enable Analytic Accounting and create two Projects 3. Go into both Project Settings and add distinct Analytic Accounts 4. Create a Vendor Bill 5. Add a Product Line and put both accounts in the Analytic Distribution 6. Add an account in another column to one of the existing Analytic Distribution Lines 7. Go to Projects and open the Project Updates of the Project whose account was alone in the Analytic Distribution Line 8. You get the error: > invalid literal for int() with base 10: '[int],[int]' ### Explanation: With commit odoo@dc696c8ed4850a83b6af721002a90f2944891923, the way IDs are stored changed. They are now computed in a csv string. A part of the Analytic Accounting pipeline didn't get updated after that change, making a lot of the features not working properly. ### Suggested fix: - We must take into account the multiple analytic plans in any order possible in the ID search. - Because the amount of `account.move.line` can increase rapidly, the new ID search must be indexable. - We reworked the counting query to avoid `account.move` being counted multiple times. opw-3626619 Forward-Port-Of: odoo/enterprise#54311
An interviewer cannot see refused or archived applicants in the hr_recruitment module. The problem comes from hr_referral. With this fix, the interviewer can see refused and archived applicants. Task: 3802121 Forward-Port-Of: odoo/enterprise#58956
Original PR description
An interviewer cannot see refused or archived applicants in the hr_recruitment module. The problem comes from hr_referral. With this fix, the interviewer can see refused and archived applicants. Task: 3802121 Forward-Port-Of: odoo/enterprise#58956
Purpose ======= Add unit tests for the document activity view Test the fix of document archiving in the activity view PR: odoo/odoo/pull/151741 Task: 3704340 Load the services in a utils function to remove code redundancy. Task-3714544 Forward-Port-Of: odoo/enterprise#60140
Original PR description
Purpose ======= Add unit tests for the document activity view Test the fix of document archiving in the activity view PR: odoo/odoo/pull/151741 Task: 3704340 Load the services in a utils function to remove code redundancy. Task-3714544 Forward-Port-Of: odoo/enterprise#60140
Before this commit, in case of a 401 response by UPS, the user got a traceback `KeyError: 'currency_code'` This happened because in that case, the `result` variable was set to `{'Unauthorized':1}`, but this was not caught in `ups_rest_send_shipping` This commit raises a UserError to avoid the traceback. opw-3848137 Forward-Port-Of: odoo/enterprise#60513 Forward-Port-Of: odoo/enterprise#60014
Original PR description
Before this commit, in case of a 401 response by UPS, the user got a traceback `KeyError: 'currency_code'`
This happened because in that case, the `result` variable was set to `{'Unauthorized':1}`, but this was not caught in `ups_rest_send_shipping`
This commit raises a UserError to avoid the traceback.
opw-3848137
Forward-Port-Of: odoo/enterprise#60513
Forward-Port-Of: odoo/enterprise#60014Steps to reproduce ==================== 1. Install Appointment and the Gcal sync. 2. Connect your Google Account. 3. Create an appointment type and keep the videoConference field blank. 4. Book an appointment. The meeting link is added to the calendar event of Google in sync. After this PR ================== - Add a meeting link only if Google Meet is selected in the configuration. - The appointment_google_calendar module is automatically installed based on dependencies. Task-3614
Original PR description
Steps to reproduce ==================== 1. Install Appointment and the Gcal sync. 2. Connect your Google Account. 3. Create an appointment type and keep the videoConference field blank. 4. Book an appointment. The meeting link is added to the calendar event of Google in sync. After this PR ================== - Add a meeting link only if Google Meet is selected in the configuration. - The appointment_google_calendar module is automatically installed based on dependencies. Task-3614890 Forward-Port-Of: odoo/enterprise#53569
### Steps to reproduce: - Go to Settings > Shipping > Fedex > Fedex Shipping Methods - Click on "Fedex international" and unable: "Generate Return Label" - Create a new sale order for a product - Click on "add shipping" and select "Fedex international" - Confirm the SO and go to the related delivery - Add the qty as done and validate the delivery #### > you will have a traceback (if not stopped by a user/config error) ### Cause of the issue: The `packages` defined here: https:/
Original PR description
### Steps to reproduce: - Go to Settings > Shipping > Fedex > Fedex Shipping Methods - Click on "Fedex international" and unable: "Generate Return Label" - Create a new sale order for a product -…
### Steps to reproduce: - Go to Settings > Shipping > Fedex > Fedex Shipping Methods - Click on "Fedex international" and unable: "Generate Return Label" - Create a new sale order for a product - Click on "add shipping" and select "Fedex international" - Confirm the SO and go to the related delivery - Add the qty as done and validate the delivery #### > you will have a traceback (if not stopped by a user/config error) ### Cause of the issue: The `packages` defined here: https://github.com/odoo/enterprise/blob/b3fe7d2bef7e0992d5ae7461a91861f5be059a0e/delivery_fedex/models/delivery_fedex.py#L369 is a list of records. However, these two lines: https://github.com/odoo/enterprise/blob/b3fe7d2bef7e0992d5ae7461a91861f5be059a0e/delivery_fedex/models/delivery_fedex.py#L377 https://github.com/odoo/enterprise/blob/b3fe7d2bef7e0992d5ae7461a91861f5be059a0e/delivery_fedex/models/delivery_fedex.py#L380 try to access the `.commodities` field of that object. A list comprehension is therefore needed for that operation to work properly. opw-3810796 --- Forward-Port-Of: odoo/enterprise#59736
Before this PR ================== At the time of the upload failure we display the standard error msg, Because of this, the user will try to upload the video again and again and never know the exact reason for the failure. After this PR ================= This commit adds some validation so that we avoid any upload failure from the YouTube side and display a proper error msg. 1). Checks that Title is not more than 100 characters. 2). Check that the Description is not more than 500
Original PR description
Before this PR ================== At the time of the upload failure we display the standard error msg, Because of this, the user will try to upload the video again and again and never know the exact reason for the failure. After this PR ================= This commit adds some validation so that we avoid any upload failure from the YouTube side and display a proper error msg. 1). Checks that Title is not more than 100 characters. 2). Check that the Description is not more than 5000 characters. 3). Checks that Title does not contain > or < forbidden character. 4). Checks that the description does not contain > or < forbidden character. These checks are done at the time of the upload video and also at the time of the post. Task-3392167 Forward-Port-Of: odoo/enterprise#44032