[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:
Rifakat 2014-08-07 16:56:27 +02:00 committed by Olivier Dony
parent 971ffa3db1
commit fa27d28494
2 changed files with 32 additions and 0 deletions

View File

@ -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:

View File

@ -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.
- -