[FW][FIX] product: Warning when setting a UOM more precise than Decimal A…#61758
Closed
[FW][FIX] product: Warning when setting a UOM more precise than Decimal A…#61758
Conversation
Contributor
Author
|
Ping @fah-odoo, @amoyaux stderr: Either perform the forward-port manually (and push to this branch, proceeding as usual) or close this PR (maybe?). In the former case, you may want to edit this PR message as well. |
When modifying a field's decimal precision, the caches are cleared in order to retrieve the new value from the database. As the new value is retrieved in pure SQL, one has to flush the updates before doing the query!
…on issue One can set a Unit of Measure precision rounding more precise than the overall Decimal Accuracy. This can trigger the error 'It is not possible to unreserve more products', as there will be inconsistencies on reserved quantities due to decimal roundings. We add 2 warnings on Units of Measure and Decimal Accuracy. Therefore, users are warned when their UOM/decimal changes can cause inconsistencies in quants reservation. Also, we want to prevent the issue at the root by ensuring that both the move and the quant have the same reserved quantity. The contrary can happen e.g. when a product is defined in Liters (rounding .001) but used in an operation in ml (rounding .01, so e.g. 187.5ml). The conversions between the 2 UOM can cause the differences of reservations. In _prepare_move_line_vals we make sure uom_quantity_back_to_product_uom is not more precise than the overall Decimal Accuracy. That way, if the reserved quantity changes between UOM conversions, the move line created is in the quant/product UOM, and we do not have move line's reserved quantity > quantity in stock. We do the same for _update_reserved_quantity (stock.move), when updating a move line. In _update_move_lines, because of UOM conversions, new_quantity_done can differ from ml.product_uom_qty, which triggers the creation of an extra move line, leading to reserved quantity > quantity in stock. To prevent that, we compare the reserved quantities in the product UOM. opw 2206902 (Example 1) opw 2171541 opw 2221227 opw 2233937 opw 2198775 and many more X-original-commit: 9131852
4ce69ce to
2c9359d
Compare
Contributor
|
robodoo r+ rebase-ff |
Contributor
|
Merge method set to rebase and fast-forward |
fmdl
pushed a commit
to fmdl/odoo
that referenced
this pull request
Apr 29, 2021
…on issue One can set a Unit of Measure precision rounding more precise than the overall Decimal Accuracy. This can trigger the error 'It is not possible to unreserve more products', as there will be inconsistencies on reserved quantities due to decimal roundings. We add 2 warnings on Units of Measure and Decimal Accuracy. Therefore, users are warned when their UOM/decimal changes can cause inconsistencies in quants reservation. Also, we want to prevent the issue at the root by ensuring that both the move and the quant have the same reserved quantity. The contrary can happen e.g. when a product is defined in Liters (rounding .001) but used in an operation in ml (rounding .01, so e.g. 187.5ml). The conversions between the 2 UOM can cause the differences of reservations. In _prepare_move_line_vals we make sure uom_quantity_back_to_product_uom is not more precise than the overall Decimal Accuracy. That way, if the reserved quantity changes between UOM conversions, the move line created is in the quant/product UOM, and we do not have move line's reserved quantity > quantity in stock. We do the same for _update_reserved_quantity (stock.move), when updating a move line. In _update_move_lines, because of UOM conversions, new_quantity_done can differ from ml.product_uom_qty, which triggers the creation of an extra move line, leading to reserved quantity > quantity in stock. To prevent that, we compare the reserved quantities in the product UOM. opw 2206902 (Example 1) opw 2171541 opw 2221227 opw 2233937 opw 2198775 and many more closes odoo#61758 X-original-commit: 9131852 Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
amoyaux
added a commit
to odoo-dev/odoo
that referenced
this pull request
Nov 5, 2021
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139
amoyaux
added a commit
to odoo-dev/odoo
that referenced
this pull request
Nov 29, 2021
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139
amoyaux
added a commit
to odoo-dev/odoo
that referenced
this pull request
Dec 9, 2021
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139
robodoo
pushed a commit
that referenced
this pull request
Dec 9, 2021
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: #69377 #66347 #61758 #54355 #43180 #70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to #62139 closes #79180 Signed-off-by: William Henrotin (whe) <whe@odoo.com>
amoyaux
added a commit
to odoo-dev/odoo
that referenced
this pull request
Dec 9, 2021
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139 X-original-commit: d99e173
robodoo
pushed a commit
that referenced
this pull request
Dec 9, 2021
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: #69377 #66347 #61758 #54355 #43180 #70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to #62139 closes #81127 X-original-commit: d99e173 Signed-off-by: William Henrotin (whe) <whe@odoo.com> Signed-off-by: Arnold Moyaux <arm@odoo.com>
odooaktiv
pushed a commit
to odooaktiv/odoo
that referenced
this pull request
Jun 13, 2022
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139 closes odoo#81127 X-original-commit: d99e173 Signed-off-by: William Henrotin (whe) <whe@odoo.com> Signed-off-by: Arnold Moyaux <arm@odoo.com>
antonioburic
pushed a commit
to VanMoof/odoo
that referenced
this pull request
Jul 31, 2022
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139 closes odoo#79180 Signed-off-by: William Henrotin (whe) <whe@odoo.com>
sergiocorato
pushed a commit
to efatto/OCB
that referenced
this pull request
Sep 15, 2022
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo#69377 odoo#66347 odoo#61758 odoo#54355 odoo#43180 odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo#62139 closes odoo#81127 X-original-commit: d99e173 Signed-off-by: William Henrotin (whe) <whe@odoo.com> Signed-off-by: Arnold Moyaux <arm@odoo.com>
gamarino
pushed a commit
to numaes/numa-public-odoo
that referenced
this pull request
Jan 11, 2023
It happens that the `stock.quant.reserved_quantity` and `stock.move.line.product_qty` for the same parameters are not equals (due to some bugs in the past) It could implies that it doesn't exist enough reserved quantity on the quant when a user try to unreserve a stock.move.line resulting in the UserError 'It is not possible to unreserve more products of %s than you have in stock' However on current stable version (13.0 and 14.0) a lot of PR already fixed a lot of issue as: odoo/odoo#69377 odoo/odoo#66347 odoo/odoo#61758 odoo/odoo#54355 odoo/odoo#43180 odoo/odoo#70975 for example (there is more than that) So the idea is to provide a way to unlock the database manually for stable but not in the new version to be able to analyse them and find possible bugs responssible for the desynchronization. The server action check all the quants and their relative move line to check if match correctly. If not it will remove the reservation from both. It could remove the reservation from some `pickings` and `stock.move` related to odoo/odoo#62139 closes odoo/odoo#79180 Signed-off-by: William Henrotin (whe) <whe@odoo.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…ccuracy
One can set a Unit of Measure precision rounding more
precise than the overall Decimal Accuracy. This can trigger the error
'It is not possible to unreserve more products', as there will be
inconsistencies on reserved quantities due to decimal roundings.
We add a warning, so that the users who make the change are aware of the
impact of modifying their UOM precision.
opw 2171541
opw 2221227
opw 2233937
opw 2198775
and many more
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: #61643
Forward-Port-Of: #54935