[FIX] stock: inventory lines with no production lot: compare with correct stock level
Inventory lines without production lot number should be compared with the stock level of products without a production lot. Otherwise the final result of a validated inventory is wrong as soon as there are lines with and without production lot for the same product. Adds corresponding regression test. Fixes https://bugs.launchpad.net/openobject-addons/+bug/1008099 Manual rebase of #1658, courtesy of Numerigraphe
This commit is contained in:
parent
971ffa3db1
commit
fa27d28494
|
@ -283,6 +283,8 @@ class product_product(osv.osv):
|
||||||
if prodlot_id:
|
if prodlot_id:
|
||||||
prodlot_clause = ' and prodlot_id = %s '
|
prodlot_clause = ' and prodlot_id = %s '
|
||||||
where += [prodlot_id]
|
where += [prodlot_id]
|
||||||
|
elif 'prodlot_id' in context and not prodlot_id:
|
||||||
|
prodlot_clause = ' and prodlot_id is null '
|
||||||
|
|
||||||
# TODO: perhaps merge in one query.
|
# TODO: perhaps merge in one query.
|
||||||
if 'in' in what:
|
if 'in' in what:
|
||||||
|
|
|
@ -37,6 +37,36 @@
|
||||||
!python {model: product.product}: |
|
!python {model: product.product}: |
|
||||||
product = self.browse(cr, uid, ref('product_product_6'), context=context)
|
product = self.browse(cr, uid, ref('product_product_6'), context=context)
|
||||||
assert product.qty_available == 10, "Stock is not updated."
|
assert product.qty_available == 10, "Stock is not updated."
|
||||||
|
-
|
||||||
|
I update the current stock of the Ice-cream with 10 kgm without Production Lot.
|
||||||
|
-
|
||||||
|
!record {model: stock.change.product.qty, id: change_qty_nolot}:
|
||||||
|
location_id: location_monitor_small
|
||||||
|
new_quantity: 10
|
||||||
|
product_id: product_product_6
|
||||||
|
-
|
||||||
|
!python {model: stock.change.product.qty}: |
|
||||||
|
self.change_product_qty(cr, uid, [ref('change_qty_nolot')], context=dict(context, active_id=ref('product_product_6')))
|
||||||
|
-
|
||||||
|
I check available stock of Ice-cream after update stock.
|
||||||
|
-
|
||||||
|
!python {model: product.product}: |
|
||||||
|
product = self.browse(cr, uid, ref('product_product_6'), context=context)
|
||||||
|
assert product.qty_available == 20, "Real stock is not updated."
|
||||||
|
-
|
||||||
|
I revert 10kgm updated stock again with no production lot in order to level the stock
|
||||||
|
-
|
||||||
|
!record {model: stock.change.product.qty, id: change_qty_nolot_1}:
|
||||||
|
location_id: location_monitor_small
|
||||||
|
new_quantity: 0
|
||||||
|
product_id: product_product_6
|
||||||
|
-
|
||||||
|
!python {model: stock.change.product.qty}: |
|
||||||
|
self.change_product_qty(cr, uid, [ref('change_qty_nolot_1')], context=dict(context, active_id=ref('product_product_6')))
|
||||||
|
-
|
||||||
|
!python {model: product.product}: |
|
||||||
|
product = self.browse(cr, uid, ref('product_product_6'), context=context)
|
||||||
|
assert product.qty_available == 10, "Real stock is not updated."
|
||||||
-
|
-
|
||||||
Stock user can merge inventory, so let's check data with giving the access rights of user.
|
Stock user can merge inventory, so let's check data with giving the access rights of user.
|
||||||
-
|
-
|
||||||
|
|
Loading…
Reference in New Issue