Friday, March 24, 2023
65 changes · master
New functionality added to Odoo
Inventory picking can now prioritize using the smallest number of packages needed to fulfill a request. This helps warehouse teams reduce unnecessary unpacking, streamline logistics work, and keep packaged stock intact when possible.
Original PR description
[IMP] stock: add least_packages retrieval strategy ## Proposed feature and relevance Add a new retrieval strategy for gathering products: "Least packages". The goal of this strategy is to select…
[IMP] stock: add least_packages retrieval strategy ## Proposed feature and relevance Add a new retrieval strategy for gathering products: "Least packages". The goal of this strategy is to select specific product quantities from stock by using as few packages as possible, to allow for efficient logistics operations and avoid unnecessary opening/unpacking of packages. This strategy will behave as follows: - In case a negative quantity is requested this strategy will behave as a FIFO strategy. - Otherwise, the strategy will determine a combination using the least amount of packages that sum to the requested quantity, and adapt the provided domain to select only the quantities in these packages. This way no packages need to be opened to select the requested quantity. - In case an exact matching of current packages to get the requested quantity is not possible, a selection of packages is made where the largest packages are selected one by one until the requested quantity is reached, or until no more quantities are available. For this approach, one package needs to be unpacked as it will not be used completely. The final selected package that will be unpacked will be the smallest one possible, to try to unpack smaller packages over bigger packages. - In case the search for a minimal matching of packages results in an out-of-memory situation, the strategy will fall back to a FIFO strategy. - Loose items (not tied to a package) are considered as single-item packages for the purposes of package selection. **NOTE:** To force the selection strategy to "clean up" certain packages that have previously been opened, it is recommended to unpack these packages into single items, as they will then be consumed to "fill up" requested quantities in later retrievals. ## Changes to allow more complex strategies To allow for the integration of this new strategy the structure of `_gather()` needed to be adapted to allow a removal strategy to provide not only the SQL `ORDER BY` string but also adapt the domain used to retrieve the requested quantities. This change is reflected in the method signature of `_get_removal_strategy_domain_order()`. ## How the strategy works The strategy does one extra query of the database, to determine the different packages and their respective quantities (using the provided domain). Loose items (that do not belong to a package) are added as single-item packages to also consider them. For minimal exact package selection, an A* algorithm is used with 2 performance modifications: - Using the information that the packages are sorted by size (large -> small). - Using the information that the generated subtree for a specific package of size x is the same as all other packages of size x at a specific node. By using the A* algorithm, as soon as a matching packaging selection is found, it is ensured to be optimal and other combinations do not need to be considered. In case the A* algorithm runs out of memory the provided domain is just returned, which equates to a FIFO strategy. In case the A* algorithm does not find an exact matching of packages for the requested quantity, a selection is made using the least amount of packages, unpacking the smallest possible package (or until no more quantities are available, in which case effectively all quantities in the domain are returned). ## Used heuristic The heuristic used for the A* algorithm exploits the knowledge that our packages to select from are ordered by the highest to the lowest quantity (on the database side, SQL `ORDER BY`). It assumes the "best case scenario" as an estimate for the amount of packages remaining, which is if we were to "match" the required quantity using fractional multiples of the next biggest package size. ***Example**: Remaining quantity to select: 27 Remaining package sizes to select from: [10, 10, 5, 5, 5, 1, 1, 1] Heuristic for choosing package with qty 10 as next package: 27/10 = 2.7 Heuristic for choosing package with qty 5 as next package: 27/5 = 5.4 Heuristic for choosing package with qty 1 as next package: 27/1 = 27* This way the heuristic is always a "best case" (fractional) for the amount of packages that still need to be selected. As required by the A* algorithm this also results in an underestimation as the fractional result is not possible, and it is not certain that there are still enough packages of this size that can actually be selected, but favours larger packages to make the search converge more quickly. ## Performance ### CPU Two test cases were run to evaluate the performance. ***Total nr of pkg**: The total amount of different packages generated during data generation **Qty to select**: The total quantity that needs to be selected **Selected nr of pkg**: The amount of packages that was ultimately selected by the algorithm **Data generation time**: The time required to generate all packages **Assignment time**: The total time to run `_action_assign()` for the move **A\* time**: The time to run the `_run_least_packages_removal_strategy_astar()` method* #### First test case This scenario simulates a case with a large quantity to select from a large amount of packages, but of relatively homogenous size. Generate 30 different package sizes between 2 and 1000. For each package size, generate 100 to 250 packages each. Also add 100 to 250 "loose items". The quantity to select is chosen between 1 and 50000. | RESULTS | RUN 1 | RUN 2 | RUN 3 | RUN 4 | RUN 5 | AVG | |--------------------------|----------|-----------|------------|-----------|----------|------------| | Total nr of pkg | 5298 | 5772 | 5855 | 5533 | 5179 | 5527.4 | | Qty to select | 10319 | 20762 | 44422 | 39306 | 1783 | 23318.4 | | Selected nr of pkg | 11 | 22 | 48 | 41 | 3 | 25 | | Data generation time (s) | 64.59124 | 92.916682 | 133.673384 | 82.711438 | 85.54542 | 91.8876328 | | Assignment time (s) | 4.060216 | 11.212937 | 4.763776 | 8.60248 | 3.461941 | 6.42027 | | A* time (s) | 0.28 | 6.88 | 0.21 | 3.96 | 0.03 | 2.272 | #### Second test case This scenario generates a large amount of small packages of different sizes. Generate 250 different package sizes between 2 and 10. For each package size, generate 5 to 15 packages each. Also add 5 to 15 "loose items". The quantity to select is chosen between 1 and 10000. | RESULTS | RUN 1 | RUN 2 | RUN 3 | RUN 4 | RUN 5 | AVG | |--------------------------|-----------|-----------|-----------|-----------|----------|------------| | Total nr of pkg | 2485 | 2406 | 2491 | 2555 | 2542 | 2495.8 | | Amount to assign | 27 | 4029 | 3966 | 3049 | 1833 | 2580.8 | | Selected nr of pkg | 3 | 411 | 411 | 306 | 184 | 263 | | Data generation time (s) | 18.502933 | 18.692048 | 19.969955 | 19.169106 | 19.16439 | 19.0996864 | | Assignment time (s) | 1.35635 | 7.958852 | 8.470518 | 6.300406 | 3.895457 | 5.5963166 | | A* time (s) | 0.01 | 0.07 | 0.77 | 0.56 | 0.31 | 0.344 | ### Memory In cases with large amounts of different-sized packages (200+ different sizes and 200+ packages required to get an exact match) the memory performance of the A* strategy might become problematic. When lots of packages have the same size (which would be considered typical in cases where there are large amounts of packages) the specific modifications to the A* algorithm ensure that the strategy still delivers good memory performance for this use case as the tree size can be significantly reduced, even with large quantities. ### IO This strategy only requires one extra SQL query to fetch the different quantities and their respective packages. ## Limitations No tests for this strategy were done for non-integer quantities. In these cases the performance of the A* algorithm might not be satisfactory and another approach might be preferred. More research could be done for specific use cases where packaged quantities are non-integer values.
Enhancements to existing features
This update refreshes the spreadsheet component and improves everyday editing behavior. Users get smoother chart and figure interactions, clearer errors when sheet structure changes, and fixes for menu, side panel, and formula editor issues.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/59f25bb4 [REL] 16.3.0-alpha.2 https://github.com/odoo/o-spreadsheet/commit/d0189bd0 [FIX] config: bump owl version https://github.com/odoo/o-spreadsheet/commit/115e1d2b [FIX] tests: fix component tests and their organization https://github.com/odoo/o-spreadsheet/commit/e42786ad [FIX] Top_bar: Opening a menu should close the composer Task: 3076218 https://github.com/odoo/o-spreadsheet/commit/45f4c5c3 [FIX] range: show ref error after removing col/row https://github.com/odoo/o-spreadsheet/commit/c55d601d [IMP] figure: add snap to figure drag & drop https://github.com/odoo/o-spreadsheet/commit/7cbde524 [FIX] side panel: onSidePanelClose prop never call on X symbol click https://github.com/odoo/o-spreadsheet/commit/308e5d6c [IMP] figure_chart: Double click on chart open the sidepanel https://github.com/odoo/o-spreadsheet/commit/9781b7e3 [FIX] composer: fixed composer placeholder issues
Resolved issues and error corrections
This fixes a problem that could cause crashes when users sent messages in the chatter. The change keeps temporary message tracking internal so messages can be matched correctly without disrupting normal business communication.
Original PR description
Since [1], the `temporary_id` of a message is passed to the `message_post` route in order to renconciliate the temporary message on the client side and the real message created by the server. This led to crashes when sending message on the chatter because this parameter was not allowed as a `_notify_thread` parameter. Since this parameter is highly specific and isn't linked to any business/model code, this parameter is now passed via the context thus solving this issue. [1]: https://github.com/odoo/odoo/pull/116085
Code cleanup and technical improvements
This change improves how Odoo handles screens where the same field appears multiple times with different rules or filters. Each field instance can now use its own settings, reducing incorrect behavior in forms and lists across several apps.
Miscellaneous changes
Forward-Port-Of: odoo/odoo#115546
Original PR description
Forward-Port-Of: odoo/odoo#115546
Companies can now apply tax report tags from countries where they hold a foreign VAT number directly on taxes and journal items. This helps businesses report the same transaction in multiple country VAT reports without creating extra journal entries, reducing manual work for cross-border operations.
Original PR description
The aim of this commit is to allow any tax tag to be set on a journal item and to allow the user to put tax tag from foreign countries in which they have a VAT number on any tax. The end goal is to…
The aim of this commit is to allow any tax tag to be set on a journal item and to allow the user to put tax tag from foreign countries in which they have a VAT number on any tax. The end goal is to allow the user to impact tax reports from several country with the same journal item, avoiding the creation of a whole journal entry and setting the path for some more automation. Context: Our user has a company based in Belgium but has a warehouse in Netherland. Thus, when the company sells anything from that warehouse, it needs to fill the Dutch tax report directly. Moreover, the company needs to fill a grid on the Belgian VAT tax report. That means that the user would need to gather some journal items on both the Belgian tax report and the Dutch tax report. Before this commit: The user can't set tax tag from another country on its tax nor in the same move. After this commit: The user can set tax tags from any country for which its company has a foreign vat number on any tax and in a move task-id: 2810712 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
The Peruvian localization now includes official bank data sourced from the Central Reserve Bank of Peru. This helps businesses using Odoo in Peru keep banking information more complete and consistent for local operations.
Original PR description
Provides data on Peruvian Banks extracted from the Central Reserve Bank of Peru https://www.bcrp.gob.pe/sitios-de-interes/entidades-financieras.html Enterprise PR: https://github.com/odoo/enterprise/pull/38293 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes unnecessary spaces before punctuation marks such as colons, semicolons, question marks, and exclamation marks across many Odoo screens and messages. It improves the polish and consistency of user-facing text, helping the product look more professional in English and most other languages.
Original PR description
According to Wiktionary, French spacing is "the archaic practice (though still current in French) of inserting a space around colons, semicolons, question marks, and exclamation marks". This is not standard practice in English and most languages of the world. The purpose of this commit is to start purging the code from this typo, as it may reflect poorly on the software for some people. Enterprise: https://github.com/odoo/enterprise/pull/38542
The Spanish accounting localization has been updated so its internal labels are maintained in English while still providing Spanish translations for users. Its tax definitions were also aligned with the latest tax taxonomy, helping improve consistency and compliance for Spanish accounting setups.
Original PR description
l10n_es localization was written in Spanish. We want the code to be fully written in English then translated to necessary languages. We also made taxes compliant to new taxonomy. Task-translation: 3235816 Task-taxonomy: 3052677 Enterprise: https://github.com/odoo/enterprise/pull/38468
Spanish accounting report definitions have been rewritten in English, with Spanish translations maintained separately. This makes the reports easier to maintain and supports future translations without changing the underlying report setup.
Original PR description
Spanish accounting reports were written in Spanish. We want the code to be fully written in English then translated to necessary languages. Task: 3235816 Community: https://github.com/odoo/odoo/pull/115968
The Chilean e-commerce flow now better captures the information needed to issue compliant invoices. When a shopper is classified as an end consumer, the system can use the required generic VAT number, reducing checkout errors and manual corrections.
This update removes extra spaces before punctuation marks such as colons, semicolons, question marks, and exclamation marks across multiple Odoo Enterprise areas. The change improves the professionalism and consistency of English-language text without altering business functionality.
Original PR description
According to Wiktionary, French spacing is "the archaic practice (though still current in French) of inserting a space around colons, semicolons, question marks, and exclamation marks". This is not standard practice in English and most languages of the world. The purpose of this commit is to start purging the code from this typo, as it may reflect poorly on the software for some people. Community: https://github.com/odoo/odoo/pull/116167
Tax reports now include invoice lines tagged for another country's VAT report, even when the tax itself belongs to a different country. This reduces manual adjustments for companies operating across borders, such as Belgian businesses selling from Dutch warehouses.
Original PR description
The aim of this commit is to make the multi-vat feature allowing to impact several tax report with the same tax on one invoice. Context: A Belgian company with a warehouse in Netherland has to fill…
The aim of this commit is to make the multi-vat feature allowing to impact several tax report with the same tax on one invoice. Context: A Belgian company with a warehouse in Netherland has to fill the NL tax report when they sell goods coming from that warehouse. At the same time, if the goods were coming from Belgium, the company is suppose to fill the [47] tax grid. To avoid a lot of manual work, the customer would like to be able to put the belgian tax grid on a NL tax. To be consistent, if it works when applying local tag to foreign tax, it should also work when applying foreign tag on local tax. Before the commit: The tax tag is applied on the journal item but the Belgian tax report is ignoring it. Similarly, a NL tag on a belgian tax would be ignored too. After the commit: The Belgian tax report is taking the journal item with the Duch tax in account. Similarly, the Dutch tax report is also taking the journal item with the Belgian tax in account. Task-id: 2810712
The Peruvian electronic invoicing module now relies on official bank reference data provided through the main Peru localization. This helps keep Peruvian bank information consistent and easier to maintain for local accounting and invoicing workflows.
Original PR description
Provides data on Peruvian Banks extracted from the Central Reserve Bank of Peru https://www.bcrp.gob.pe/sitios-de-interes/entidades-financieras.html Odoo PR: odoo/odoo#95870
The mail unread counter now better matches the actual messages users still need to read. This prevents notification-only items from inflating the count and ensures messages are marked as read correctly when a conversation is first opened.
Original PR description
This PR fixes several issues with the unread counter: - Notifications being considered as unread messages (which is not the case on the server side which resulted in inconsistencies). - Counter greater than it should be when the last seen message is not loaded. - Messages not marked as read on first thread opening. task-3239957
The mobile main flow tour now checks for small screen size instead of requiring a specific mobile device identity. This makes automated testing more reliable and removes unnecessary browser configuration for custom user agents.
Original PR description
Main Flow Tour Mobile shouldn't require a specific `user_agent` as it targets a small screen and not a mobile platform (iOS, Android...). Actually, during refactoring of the tours (odoo/odoo@3a798039d6f200f8e28448ddb6a2d3c46654a203), a confusion was made between the legacy `isMobile`, which represents a small screen (cf. `env.isSmall`) and `isMobileOS`, which targets "mobile" platforms (ie. iOS, Android...) independently of the screen size. This commit applies the proper condition (isSmall) for the tours management and removes the useless `user_agent` property. It also removes the logic added to support custom user_agent in the Chrome automation for testing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a shipping method is added to a confirmed sales order, the related undelivered delivery will now receive the correct carrier information. This helps keep delivery records accurate and avoids manual corrections for orders where shipping details are added after confirmation.
Original PR description
Before this commit ================== when SO is confirmed and Delivery is created then add the shipping method in SO, in this case, the shipping carrier is not set in the existing undelivered delivery of that SO. After this commit ================= So in this commit, we set the shipping carrier for that delivery. TaskId: 2946360
Domain rules in the web interface now catch more invalid entries before they can cause problems. This helps users and administrators spot configuration mistakes earlier, reducing errors in filters and field behavior.
Original PR description
We make the class Domain detect more invalid domains.
This fixes an issue where mail notification processing could stop early when one channel in a batch was not recognized. Other notifications in the same batch will now continue to be handled, improving reliability of message read-status updates.
Original PR description
Before this commit, the `mail.channel/seen` notification handler would have returned if the channel was unknown. This is incorrect since it would prevent other notifications from the same batch from being processed. This commit fixes the issue.
Fixed an issue where Knowledge articles with cover images could fail to load on the public-facing frontend. The update uses the correct cover image setting and adds test coverage to help prevent the problem from returning.
Original PR description
Purpose: ======== Replace the nonexistent `article.cover_height` field by the correct `article.cover_image_position` field in the frontend view. This commit also adds a cover to an article in the frontend tour to make sure that covers do not make knowledge crash in frontend. Task-3221175
Original PR description
Before this commit, the use of multiple <field> with the same name in a view was not well supported. Why was this? Some Field components need to know information related to the <field> such as…
Before this commit, the use of multiple <field> with the same name in a view was not well supported. Why was this? Some Field components need to know information related to the <field> such as context, domain, required and readonly. The solution used before this commit to access this information is to use the getFieldContext, getFieldDomain, isReadonly, isRequired functions of the model. Unfortunately, these only take into account the last occurrence of the <field> because the model is not aware that the same field is present several times on the view. The information must therefore not come from the model. For example, it was not possible to have the same field twice with 2 different domains. It will use the domain of the last field for both. Solution: We will add the object "dynamicInfo" to the fieldInfo passed to the Fields extractProps function. This object will contain a getter to get the value of required, readonly, domain and context for the current <field>. If a Field needs one of its information, it will just have to get it from extractProps. Part of Task: 3179751
The Point of Sale barcode scanning logic has been reorganized to make it easier to maintain and more consistent across related POS features. Stores can now still open the POS even when barcode configuration is missing, with a clear error shown when scanning is attempted.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The point of sale barcode reader has been reorganized into a shared service used by related POS features. This is an internal cleanup that should make barcode-related behavior easier to maintain without changing day-to-day cashier workflows.
This change improves how Odoo handles screens that show the same field more than once with different rules. Each field instance can now use its own settings, reducing incorrect behavior in forms and related views.
Original PR description
Before this commit, the use of multiple <field> with the same name in a view was not well supported. Why was this? Some Field components need to know information related to the <field> such as…
Before this commit, the use of multiple <field> with the same name in a view was not well supported. Why was this? Some Field components need to know information related to the <field> such as context, domain, required and readonly. The solution used before this commit to access this information is to use the getFieldContext, getFieldDomain, isReadonly, isRequired functions of the model. Unfortunately, these only take into account the last occurrence of the <field> because the model is not aware that the same field is present several times on the view. The information must therefore not come from the model. For example, it was not possible to have the same field twice with 2 different domains. It will use the domain of the last field for both. Solution: We will add the object "dynamicInfo" to the fieldInfo passed to the Fields extractProps function. This object will contain a getter to get the value of required, readonly, domain and context for the current <field>. If a Field needs one of its information, it will just have to get it from extractProps. Part of Task: 3179751
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115966
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115966
**Current behavior before PR:** popover collapsed when there is fewer fields available. **Desired behavior after PR is merged:** Now, the popover will not be collapsed when there are fewer fields available. Task-3072813 Forward-Port-Of: odoo/odoo#114530
Original PR description
**Current behavior before PR:** popover collapsed when there is fewer fields available. **Desired behavior after PR is merged:** Now, the popover will not be collapsed when there are fewer fields available. Task-3072813 Forward-Port-Of: odoo/odoo#114530
In tests, if we need to interact with dropdowns, we should patch setTimout so that we don't have to wait x ms for the dropdown to open. 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#116280
Original PR description
In tests, if we need to interact with dropdowns, we should patch setTimout so that we don't have to wait x ms for the dropdown to open. 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#116280
Steps to reproduce ================== - Go to a form view with a binary field, or add one with studio - Upload a file a.txt to a record - Upload a file b.txt to another record - Switch between both records with the pager - The filename is not updated opw-3208810 Forward-Port-Of: odoo/odoo#116241 Forward-Port-Of: odoo/odoo#116179
Original PR description
Steps to reproduce ================== - Go to a form view with a binary field, or add one with studio - Upload a file a.txt to a record - Upload a file b.txt to another record - Switch between both records with the pager - The filename is not updated opw-3208810 Forward-Port-Of: odoo/odoo#116241 Forward-Port-Of: odoo/odoo#116179
## Current behaviour When checking on the activities that are "Late/Today/Future", the resulting search view doesn't apply any filter. ## Expected behaviour If you click on "Late" activities for Tasks, then you should see only the "Late" activities, not all of them. ## Steps to reproduce - Install Project - Create a project and 3 tasks for that project - On each task, put an activity that is "Late"/"Today"/"Future" respectively (1 activity per task) - Click on the activity widget (to
Original PR description
## Current behaviour When checking on the activities that are "Late/Today/Future", the resulting search view doesn't apply any filter. ## Expected behaviour If you click on "Late" activities for…
## Current behaviour When checking on the activities that are "Late/Today/Future", the resulting search view doesn't apply any filter. ## Expected behaviour If you click on "Late" activities for Tasks, then you should see only the "Late" activities, not all of them. ## Steps to reproduce - Install Project - Create a project and 3 tasks for that project - On each task, put an activity that is "Late"/"Today"/"Future" respectively (1 activity per task) - Click on the activity widget (top-right in the header) > Tasks > Today - All tasks are shown, not only those for "Today" ## Reason for the problem Since the view refactoring from b77f60b155bf97a115aa209847dc791677b2e924 , search filters follow an hierarchy of inheritance to reduce code duplication. The issue is that it's "delegation" inheritance (so the childs have a mode of type "primary") but all their priorities are the sames, so the algorithm for view matching (refer to documentation) matches the parent view, that doesn't contains the necessary filters for the activities, which are defined a few level lower in the inheritance. ## Fix Add descending priority in the inheritance chain so we match the lowest child when web-client requests the search view. ## Affected versions - saas-16.1 - saas-16.2 - master --- opw-3234525 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116188
This issue was caught in sentry. When we try to create or update an invoice by uploading an `.xlsx` attachment, it raises an Error as it will go to convert it into XML tree because the concerned LOC will check `xml` in `mimetype` of attachment which is `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`. ``` XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1 (<string>, line 1) File "addons/account_edi/models/account_edi_format.py", line 207, in _decode_xm
Original PR description
This issue was caught in sentry. When we try to create or update an invoice by uploading an `.xlsx` attachment, it raises an Error as it will go to convert it into XML tree because the concerned LOC…
This issue was caught in sentry.
When we try to create or update an invoice by uploading an `.xlsx` attachment, it raises an Error as it will go to convert it into XML tree because the concerned LOC will check `xml` in `mimetype` of attachment which is `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`.
```
XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1 (<string>, line 1)
File "addons/account_edi/models/account_edi_format.py", line 207, in _decode_xml
xml_tree = etree.fromstring(content)
File "src/lxml/etree.pyx", line 3252, in lxml.etree.fromstring
File "src/lxml/parser.pxi", line 1913, in lxml.etree._parseMemoryDocument
File "src/lxml/parser.pxi", line 1800, in lxml.etree._parseDoc
File "src/lxml/parser.pxi", line 1141, in lxml.etree._BaseParser._parseDoc
File "src/lxml/parser.pxi", line 615, in lxml.etree._ParserContext._handleParseResultDoc
File "src/lxml/parser.pxi", line 725, in lxml.etree._handleParseResult
File "src/lxml/parser.pxi", line 654, in lxml.etree._raiseParseError
```
sentry-3929855076
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#116231
Forward-Port-Of: odoo/odoo#115653Reproduce: * Create a journal entry * Add a new line * Select account * Select partner The selected account is annoyingly changed/removed. This should only be done for invoice-like documents. The account is selected manually for miscellaneous operations. Forward-Port-Of: odoo/odoo#114618
Original PR description
Reproduce: * Create a journal entry * Add a new line * Select account * Select partner The selected account is annoyingly changed/removed. This should only be done for invoice-like documents. The account is selected manually for miscellaneous operations. Forward-Port-Of: odoo/odoo#114618
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116221
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116221
Previously, the productScreen component used `numberBuffer.use()`, this function has been removed in this PR [[REF] point_of_sale, pos_*: remove usage of useListener](https://github.com/odoo/odoo/pull/112219) at line [56](https://github.com/odoo/odoo/pull/112219/files#diff-718fd151daf998076bbb1c05266a3d0e45276dd33fc7eb72be7d067d630eee3dL56) This removal causes a crash when in mobile mode. This is because the productScreen component tries to reset the buffer when it is mounted with `this.num
Original PR description
Previously, the productScreen component used `numberBuffer.use()`, this function has been removed in this PR [[REF] point_of_sale, pos_*: remove usage of useListener](https://github.com/odoo/odoo/pull/112219) at line [56](https://github.com/odoo/odoo/pull/112219/files#diff-718fd151daf998076bbb1c05266a3d0e45276dd33fc7eb72be7d067d630eee3dL56) This removal causes a crash when in mobile mode. This is because the productScreen component tries to reset the buffer when it is mounted with `this.numberBuffer.reset()`. The problem is that in mobile mode no component initializes the buffer in productScreen, which causes an error. Now a modification to the number_buffer service has been made, it prevents the state buffer from being reset if it does not exist. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114299
Forward-Port-Of: odoo/odoo#116305
Original PR description
Forward-Port-Of: odoo/odoo#116305
Partner_to recipients of mail template are not displayed in the template preview. This fix solves the problem. To reproduce the problem (example): - install the project app with demo data - activate the debug mode - go to Settings -> Technical -> Templates - choose the template "Task: Rating Request" - in email configuration, "To (partners)" is set to ${object.rating_get_partner_id().id} - click on preview - choose the task: "Room 2: Decoration" - the "Recipients" field value should b
Original PR description
Partner_to recipients of mail template are not displayed in the template preview. This fix solves the problem. To reproduce the problem (example): - install the project app with demo data - activate…
Partner_to recipients of mail template are not displayed in the template preview. This fix solves the problem.
To reproduce the problem (example):
- install the project app with demo data
- activate the debug mode
- go to Settings -> Technical -> Templates
- choose the template "Task: Rating Request"
- in email configuration, "To (partners)" is set to ${object.rating_get_partner_id().id}
- click on preview
- choose the task: "Room 2: Decoration"
- the "Recipients" field value should be "YourCompany, Joel Willis" but this field remains empty without the fix
Technical note: partner_to of the template was not rendered which was making generate_recipients returning incorrect values for partner_ids.
Task-3196081
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#115812
Forward-Port-Of: odoo/odoo#113341Before: When taking a SO from the Sales app in the POS, there is no "Down payment limit". There is either no way to check what has still to be paid. So the POS user can charge a customer several times for the same down payment because he cannot see if it has already been paid. After: When you click on the Quotation/Order list the amount left to pay is displayed. When a down payment is chosen and a percentage is entered that is too high and represents more than the remaining amount to be
Original PR description
Before: When taking a SO from the Sales app in the POS, there is no "Down payment limit". There is either no way to check what has still to be paid. So the POS user can charge a customer several times for the same down payment because he cannot see if it has already been paid. After: When you click on the Quotation/Order list the amount left to pay is displayed. When a down payment is chosen and a percentage is entered that is too high and represents more than the remaining amount to be paid, a warning appears and warns that the orderline will be adjusted to the remaining price. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116049 Forward-Port-Of: odoo/odoo#113598
Before this commit, we could not change the currency on invoice if related journal has a default currency set. opw-3226228 Forward-Port-Of: odoo/odoo#116206
Original PR description
Before this commit, we could not change the currency on invoice if related journal has a default currency set. opw-3226228 Forward-Port-Of: odoo/odoo#116206
Create a Credit Note, save and confirm Go to Reporting>Invoice Analysis Switch to Pivot view, add mesures ntaxed Total and Total, expand rows by Move. The credit note untaxed total is correctly reported as negative, total is reported as positive opw-3223043 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-
Original PR description
Create a Credit Note, save and confirm Go to Reporting>Invoice Analysis Switch to Pivot view, add mesures ntaxed Total and Total, expand rows by Move. The credit note untaxed total is correctly reported as negative, total is reported as positive opw-3223043 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#116314
If the SO partner changes, we shouldn't use the pricelist id stored on the session, only the new partner pricelist. opw-3138262 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115029
Original PR description
If the SO partner changes, we shouldn't use the pricelist id stored on the session, only the new partner pricelist. opw-3138262 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115029
**Current behavior before PR:** Applying color on an empty selection generates traceback. **Desired behavior after PR is merged:** Now, able to apply color to an empty selection. Task-3089214 Forward-Port-Of: odoo/odoo#115996 Forward-Port-Of: odoo/odoo#110842
Original PR description
**Current behavior before PR:** Applying color on an empty selection generates traceback. **Desired behavior after PR is merged:** Now, able to apply color to an empty selection. Task-3089214 Forward-Port-Of: odoo/odoo#115996 Forward-Port-Of: odoo/odoo#110842
Before this commit, the field account was readonly on the expense sheet and the accountants have to go thourgh each expenses to change the account. After, we allow changing the account on the expense sheet directly. task-id: 3244925 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116297
Original PR description
Before this commit, the field account was readonly on the expense sheet and the accountants have to go thourgh each expenses to change the account. After, we allow changing the account on the expense sheet directly. task-id: 3244925 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116297
In large databases with > 2M stock_move_lines, installing the product_expiry module can raise a MemoryError because the field_cache is overfilled by the computation of the expiration_date computed stored field. Adding an `_auto_init` for this field prevents such errors from being raised by creating the column manually. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115206
Original PR description
In large databases with > 2M stock_move_lines, installing the product_expiry module can raise a MemoryError because the field_cache is overfilled by the computation of the expiration_date computed stored field. Adding an `_auto_init` for this field prevents such errors from being raised by creating the column manually. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115206
In https://github.com/odoo/odoo/pull/105730, we deleted `_compute_allocated_hours` method, but it is still referenced in the description of field `allocated_hours`. In this commit, we erase this reference. And because it is not compute anymore, no need to specify `store` and `readonly`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116356
Original PR description
In https://github.com/odoo/odoo/pull/105730, we deleted `_compute_allocated_hours` method, but it is still referenced in the description of field `allocated_hours`. In this commit, we erase this reference. And because it is not compute anymore, no need to specify `store` and `readonly`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116356
Before this commit, the discount name in the paid orders was different from the one displayed when creating the order. This was due to the fact that the `full_product_name` field was not being sent to the point of sale, so the discount product name was being used instead. This commit fixes the issue by ensuring that the `full_product_name` field is sent to the point of sale, which allows for the correct discount name to be displayed in the order menu. opw-3213225 --- I confirm I have s
Original PR description
Before this commit, the discount name in the paid orders was different from the one displayed when creating the order. This was due to the fact that the `full_product_name` field was not being sent to the point of sale, so the discount product name was being used instead. This commit fixes the issue by ensuring that the `full_product_name` field is sent to the point of sale, which allows for the correct discount name to be displayed in the order menu. opw-3213225 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115925 Forward-Port-Of: odoo/odoo#115392
The tour tooltip breaks the order of the dropdown menu, rendering it under other elements. Steps to reproduce: 1. Install Sales 2. Start tour `sale_quote_tour` 3. Add a customer to the form 4. Click on "Add a product" 5. Open the dropdown selection of the "product" field 6. The 'Terms and conditions...' placeholder is above the dropdown Solution: Add a z-index on list_renderer with a tooltip_parent Problem: The tooltip adds class `.o_tooltip_parent` on .o_list_renderer [^1]. `.o
Original PR description
The tour tooltip breaks the order of the dropdown menu, rendering it under other elements. Steps to reproduce: 1. Install Sales 2. Start tour `sale_quote_tour` 3. Add a customer to the form 4. Click on "Add a product" 5. Open the dropdown selection of the "product" field 6. The 'Terms and conditions...' placeholder is above the dropdown Solution: Add a z-index on list_renderer with a tooltip_parent Problem: The tooltip adds class `.o_tooltip_parent` on .o_list_renderer [^1]. `.o_tooltip_parent` has the CSS rule `opacity: 0.999 !important`[^2] which creates a staking context. Because list_renderer doesn't have a z-index, it is placed under the other elements. [^1]: https://github.com/odoo/odoo/blob/e6fc7453d2849edaedcbcf823e3fbae3d3d9984f/addons/web_tour/static/src/js/tip.js#L286 [^2]: https://github.com/odoo/odoo/blob/e6fc7453d2849edaedcbcf823e3fbae3d3d9984f/addons/web_tour/static/src/scss/tip.scss#L35-L50 opw-3148770 Forward-Port-Of: odoo/odoo#116378
To reproduce the issue: 1. In Settings, enable "Multi-Step Routes" 2. Create a second warehouse WH02 - Let WH01 be the existing one 3. Create two storable products P_compo, P_finished 4. Create a BoM: - Product: P_finished - Components: 1 x P_compo - Operation Type: "WH02: Manufacturing" 5. Create a MO: - Product: P_finished Error: Once the product is set, nothing defines the BoM (and therefore the components, picking type, and so on) When opening the MO form, the
Original PR description
To reproduce the issue: 1. In Settings, enable "Multi-Step Routes" 2. Create a second warehouse WH02 - Let WH01 be the existing one 3. Create two storable products P_compo, P_finished 4. Create a BoM: - Product: P_finished - Components: 1 x P_compo - Operation Type: "WH02: Manufacturing" 5. Create a MO: - Product: P_finished Error: Once the product is set, nothing defines the BoM (and therefore the components, picking type, and so on) When opening the MO form, the picking type is directly defined with "WH01: Manufacturing". Therefore, when looking for a BoM, we use that picking type as criteria -> we will not find the BoM of step 4 Notes about the fix: - Small behaviour change: once the picking type is set, it does not change automaticaly (whatever the BoM is) OPW-3122384 Forward-Port-Of: odoo/odoo#115985 Forward-Port-Of: odoo/odoo#114816
After trying paying for a digital product and trying to download it from the customer portal a server interal error occurred. After this fix it will no longer be the case. opw - 3233478 opw-3216900 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116017
Original PR description
After trying paying for a digital product and trying to download it from the customer portal a server interal error occurred. After this fix it will no longer be the case. opw - 3233478 opw-3216900 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116017
Before this commit, the sub-menus that appear when the mouse hovers them were not displayed correctly. The Bootstrap/Popper code which is in charge of positioning the sub-menu could not work because the dropdowns were opened manually (which is not recommended) and so, the `show.bs.dropdown` event was never triggered which prevented Bootstrap/Popper from aligning the sub-menu items correctly. Steps to reproduce the bug: - Have a long sub-menu in the last position of the navbar. - In edi
Original PR description
Before this commit, the sub-menus that appear when the mouse hovers them were not displayed correctly. The Bootstrap/Popper code which is in charge of positioning the sub-menu could not work because the dropdowns were opened manually (which is not recommended) and so, the `show.bs.dropdown` event was never triggered which prevented Bootstrap/Popper from aligning the sub-menu items correctly. Steps to reproduce the bug: - Have a long sub-menu in the last position of the navbar. - In edit mode align the navbar elements to the right. - Enable the option to have the sub-menus displayed at hover. - Save the page. => When hovering the sub-menu, it opens on the right and overflows the page while there is enough space on the left. task-2904507 Forward-Port-Of: odoo/odoo#116248 Forward-Port-Of: odoo/odoo#115153
in the commit 763fbb1c of #101115 an assert is added for translated sized char fields It is too strict for some legacy customized fields, we decide to remove it 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#116370
Original PR description
in the commit 763fbb1c of #101115 an assert is added for translated sized char fields It is too strict for some legacy customized fields, we decide to remove it 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#116370
**Current behavior before PR:** When we select text and take the selection to the hex input box and then try again to add a solid color, it gives us a traceback. **Desired behavior after PR is merged:** Now it did not give traceback. Task-2965091 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116286 Forward-Port-Of: odoo/odoo#114281
Original PR description
**Current behavior before PR:** When we select text and take the selection to the hex input box and then try again to add a solid color, it gives us a traceback. **Desired behavior after PR is merged:** Now it did not give traceback. Task-2965091 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116286 Forward-Port-Of: odoo/odoo#114281
When printing the label of a lot, the datamatrix may overlap the product/lot name and will overlap the 'best before' date. To reproduce the issue: 1. In Settings: - Barcode Nomenclature: GS1 - Enable "Print GS1 barcodes for lots [...]" 2. Create a product P: - Name: a long name - Type: Storable - Barcode: 1111111111113 - Tracking: USN - Expiration Date: True - Dates > Expiration Date: 1 days 3. Process a receipt with 1 x P - The serial number should be
Original PR description
When printing the label of a lot, the datamatrix may overlap the product/lot name and will overlap the 'best before' date. To reproduce the issue: 1. In Settings: - Barcode Nomenclature: GS1 - Enable…
When printing the label of a lot, the datamatrix may overlap the product/lot name and will overlap the 'best before' date. To reproduce the issue: 1. In Settings: - Barcode Nomenclature: GS1 - Enable "Print GS1 barcodes for lots [...]" 2. Create a product P: - Name: a long name - Type: Storable - Barcode: 1111111111113 - Tracking: USN - Expiration Date: True - Dates > Expiration Date: 1 days 3. Process a receipt with 1 x P - The serial number should be long 4. Print Labels - To Print: Lot/SN Labels - (Confirm) - Format: 4 x 12 Error: the datamatrix overlaps the product name, the serial number, and the 'best before' date For the product/lot names, we can only improve the situation. If the user define a too long name, the issue will still happen and nothing can be done For the dates, we can shorten the labels. That way, the dates will always be correctly displayed OPW-3193836 Forward-Port-Of: odoo/odoo#115753 Forward-Port-Of: odoo/odoo#114196
Current behavior: If set an owner on a product and make a pos order with this product then refund this order. The owner would be lost on the refund. Steps to reproduce: - Activate the consignment feature - Create a product, and add some stock with an owner (e.g. "John Doe") - Create a pos order with this product - Refund the pos order - Go to the stock picking of the refund, the owner is not set on the move lines. opw-3146749 --- I confirm I have signed the CLA and read the PR guid
Original PR description
Current behavior: If set an owner on a product and make a pos order with this product then refund this order. The owner would be lost on the refund. Steps to reproduce: - Activate the consignment feature - Create a product, and add some stock with an owner (e.g. "John Doe") - Create a pos order with this product - Refund the pos order - Go to the stock picking of the refund, the owner is not set on the move lines. opw-3146749 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116054 Forward-Port-Of: odoo/odoo#115042
To reproduce the issue: 1. Go to Settings > Website 2. Activate "Automatically send abandoned checkout emails" 3. Click on "Customize Abandoned Email Template" 4. Template "Gamification" appears Error: The template "Ecommerce: Cart Recovery" should have appeared instead The hardcoded res_id was wrong OPW-3207424 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116002
Original PR description
To reproduce the issue: 1. Go to Settings > Website 2. Activate "Automatically send abandoned checkout emails" 3. Click on "Customize Abandoned Email Template" 4. Template "Gamification" appears Error: The template "Ecommerce: Cart Recovery" should have appeared instead The hardcoded res_id was wrong OPW-3207424 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116002
Previously, when the enterprise module `pos_settle_due` was installed, the customer button appeared twice following this [PR 114189](https://github.com/odoo/odoo/pull/114189). The functionality of the order and payment button swap was not taken into account when this other [PR 36775](https://github.com/odoo/enterprise/pull/36775) was created. Now, the customer button has been moved from `pos_restaurant` to `point_of_sale` in order to be overridden by the `pos_settle_due` module and correct t
Original PR description
Previously, when the enterprise module `pos_settle_due` was installed, the customer button appeared twice following this [PR 114189](https://github.com/odoo/odoo/pull/114189). The functionality of the order and payment button swap was not taken into account when this other [PR 36775](https://github.com/odoo/enterprise/pull/36775) was created. Now, the customer button has been moved from `pos_restaurant` to `point_of_sale` in order to be overridden by the `pos_settle_due` module and correct the problem. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116309
Previously, when the enterprise module `pos_settle_due` was installed, the customer button appeared twice following this [PR 114189](https://github.com/odoo/odoo/pull/114189). The functionality of the order and payment button swap was not taken into account when this other [PR 36775](https://github.com/odoo/enterprise/pull/36775) was created. Now, the `ActionPadWidget` override has been modified so that it no longer replaces it but modifies its attributes to correct the duplication problem.
Original PR description
Previously, when the enterprise module `pos_settle_due` was installed, the customer button appeared twice following this [PR 114189](https://github.com/odoo/odoo/pull/114189). The functionality of the order and payment button swap was not taken into account when this other [PR 36775](https://github.com/odoo/enterprise/pull/36775) was created. Now, the `ActionPadWidget` override has been modified so that it no longer replaces it but modifies its attributes to correct the duplication problem. An override of the `CustomerButton` moved from `pos_restaurant` to `point_of_sale` has also been added to follow the previous specs. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#38615
Forward-Port-Of: odoo/enterprise#37188
Original PR description
Forward-Port-Of: odoo/enterprise#37188
name is not 'gstr_india' but it's must be l10n_in_edi so from this commit IAP account name change to l10n_in_edi Forward-Port-Of: odoo/enterprise#38530
Original PR description
name is not 'gstr_india' but it's must be l10n_in_edi so from this commit IAP account name change to l10n_in_edi Forward-Port-Of: odoo/enterprise#38530
[IMP] account_reports: remove unnecessary domain term in get_options_domain This condition was anyway already handled by _get_options_all_entries_domain. This led to a query applying the same check twice in its WHERE clause. [IMP] account_reports: account_codes engine: improve query performance On large databases, the query previously ran by the account_codes engine was becoming slower, even when computing a single line, with a single expression, referencing a single account code in i
Original PR description
[IMP] account_reports: remove unnecessary domain term in get_options_domain This condition was anyway already handled by _get_options_all_entries_domain. This led to a query applying the same check twice in its WHERE clause. [IMP] account_reports: account_codes engine: improve query performance On large databases, the query previously ran by the account_codes engine was becoming slower, even when computing a single line, with a single expression, referencing a single account code in its formula. This was due to the fact we were limiting the computation to only the move lines done on the accounts we wanted: filtering them took time. With this commit, we don't do this filtering anymore, and compute more things than we need; but this makes the computation faster (balance sheet opens ~3 times faster on odoo.com). Forward-Port-Of: odoo/enterprise#38617
Prevents two lines to have the same id when they have a starting and ending balance. Forward-Port-Of: odoo/enterprise#38620
Original PR description
Prevents two lines to have the same id when they have a starting and ending balance. Forward-Port-Of: odoo/enterprise#38620
Updating the done quantity of a SML may lead to the creation of a useless quality check To reproduce the issue: 1. Create a product P 2. Create a control point: - Operations: Receipt - Control per: Product 3. Create a receipt with 1 x P - A quality check QC should be created for 1 x P 4. On the receipt, set the done qty to 0 - QC's quantity should be updated 5. On the receipt, set the done qty to 1 Error: QC's qty has been updated, which is correct, but a second and
Original PR description
Updating the done quantity of a SML may lead to the creation of a useless quality check To reproduce the issue: 1. Create a product P 2. Create a control point: - Operations: Receipt - Control per: Product 3. Create a receipt with 1 x P - A quality check QC should be created for 1 x P 4. On the receipt, set the done qty to 0 - QC's quantity should be updated 5. On the receipt, set the done qty to 1 Error: QC's qty has been updated, which is correct, but a second and useless quality check has been created (again for 1 x P) When writing the done quantity on a SML, if the old value was zero, we create a quality check. This is correct except if that quality check already exists OPW-3159731 Forward-Port-Of: odoo/enterprise#38601 Forward-Port-Of: odoo/enterprise#38561
Forward-Port-Of: odoo/enterprise#38618
Original PR description
Forward-Port-Of: odoo/enterprise#38618
Current behavior: if new translated field is added via studio on account.move.line, traceback appears in profit and loss report when analytic accounting is activated. This is due to the fact that jsonb field should not be cast as other type. This commit allows to cast translated fields as 'jsonb' opw-3208813 Forward-Port-Of: odoo/enterprise#38105
Original PR description
Current behavior: if new translated field is added via studio on account.move.line, traceback appears in profit and loss report when analytic accounting is activated. This is due to the fact that jsonb field should not be cast as other type. This commit allows to cast translated fields as 'jsonb' opw-3208813 Forward-Port-Of: odoo/enterprise#38105
When checking if the BS is balanced with a script,it seems that some accounts were missing in the BS and some sign were reverse, this pr corrects that. In this commit, I've removed an account_id.account_type part of the domain of the "report_line_balanceca4" because the account 1202 and 1203 are not account receivable, so they were not added to the BS which was wrong. Doing so I've not remove other account_id.account_type part since they were good. task-id: 3041738 Forward-Port-Of: odoo/e
Original PR description
When checking if the BS is balanced with a script,it seems that some accounts were missing in the BS and some sign were reverse, this pr corrects that. In this commit, I've removed an account_id.account_type part of the domain of the "report_line_balanceca4" because the account 1202 and 1203 are not account receivable, so they were not added to the BS which was wrong. Doing so I've not remove other account_id.account_type part since they were good. task-id: 3041738 Forward-Port-Of: odoo/enterprise#38152
The fields journal_id on document.workflow.rule needs to be company dependent. Else, when setting the fields, then switching company and triggering the action, you get a record.rule error. Forward-Port-Of: odoo/enterprise#38391
Original PR description
The fields journal_id on document.workflow.rule needs to be company dependent. Else, when setting the fields, then switching company and triggering the action, you get a record.rule error. Forward-Port-Of: odoo/enterprise#38391
### Before this commit: `suitable_picking_ids` is populated with all `done` pickings when returning a transfer without a `ticket_id`, which crashes the frontend upon loading. ### Steps to reproduce: 1. Install Stock & Helpdesk 2. Create thousands of transfers and mark them as done 3. Return a transfer ### After this commit: Set `suitable_picking_ids` to False when the transfer doesn't have a `ticket_id`, as the fields are not used in that case anyway. opw-3232319 Forward-Por
Original PR description
### Before this commit: `suitable_picking_ids` is populated with all `done` pickings when returning a transfer without a `ticket_id`, which crashes the frontend upon loading. ### Steps to reproduce: 1. Install Stock & Helpdesk 2. Create thousands of transfers and mark them as done 3. Return a transfer ### After this commit: Set `suitable_picking_ids` to False when the transfer doesn't have a `ticket_id`, as the fields are not used in that case anyway. opw-3232319 Forward-Port-Of: odoo/enterprise#38363
Before this commit, the `display_project_id` field was a bit confusing for the user to know what is the goal of this field. Also this field is available when the user wants to import his data into Odoo, if he does not know the goal of this field then he could be lost to know which field he should for his data to import (or even export). This commit removes the display_project_id field and so a task will be private one if the project and the parent fields are not set. The project to set to the
Original PR description
Before this commit, the `display_project_id` field was a bit confusing for the user to know what is the goal of this field. Also this field is available when the user wants to import his data into Odoo, if he does not know the goal of this field then he could be lost to know which field he should for his data to import (or even export). This commit removes the display_project_id field and so a task will be private one if the project and the parent fields are not set. The project to set to the timesheet will be the one set on the task or the one set on one of its parent tasks. task-3230063 Forward-Port-Of: odoo/enterprise#38297