From 1f818db2ffd4fd2ceea63f48447bd0656d22e804 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Fri, 24 Jan 2014 14:56:25 +0100 Subject: [PATCH 1/2] [FIX]wizard stock_change_product_qty: when changing qty of a product, the way the inventory was used was wrong bzr revid: csn@openerp.com-20140124135625-8y5ehlsbexp3iyqm --- .../stock/wizard/stock_change_product_qty.py | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/addons/stock/wizard/stock_change_product_qty.py b/addons/stock/wizard/stock_change_product_qty.py index 7e86c07b28f..9a2d7bb5d23 100644 --- a/addons/stock/wizard/stock_change_product_qty.py +++ b/addons/stock/wizard/stock_change_product_qty.py @@ -74,25 +74,33 @@ class stock_change_product_qty(osv.osv_memory): rec_id = context and context.get('active_id', False) assert rec_id, _('Active ID is not set in Context') - inventry_obj = self.pool.get('stock.inventory') - inventry_line_obj = self.pool.get('stock.inventory.line') + inventory_obj = self.pool.get('stock.inventory') + inventory_line_obj = self.pool.get('stock.inventory.line') prod_obj_pool = self.pool.get('product.product') res_original = prod_obj_pool.browse(cr, uid, rec_id, context=context) for data in self.browse(cr, uid, ids, context=context): if data.new_quantity < 0: raise osv.except_osv(_('Warning!'), _('Quantity cannot be negative.')) - inventory_id = inventry_obj.create(cr , uid, {'name': _('INV: %s') % tools.ustr(res_original.name)}, context=context) - line_data ={ - 'inventory_id' : inventory_id, - 'product_qty' : data.new_quantity, - 'location_id' : data.location_id.id, - 'product_id' : rec_id, - 'product_uom_id' : res_original.uom_id.id, - 'prod_lot_id' : data.lot_id.id - } - inventry_line_obj.create(cr , uid, line_data, context=context) - inventry_obj.action_done(cr, uid, [inventory_id], context=context) + inventory_id = inventory_obj.create(cr , uid, {'name': _('INV: %s') % tools.ustr(res_original.name), 'product_id': rec_id, 'location_id': data.location_id.id}, context=context) + #perform an inventory for this particular product in this particular location + inventory_obj.prepare_inventory(cr, uid, [inventory_id], context=context) + #if we've got an inventory line, change it's qty, else create new line + line_ids = inventory_obj.browse(cr, uid, inventory_id, context=context).line_ids or False + if line_ids: + inventory_line_obj.write(cr, uid, line_ids[0].id, {'product_qty': data.new_quantity}, context=context) + else: + line_data ={ + 'inventory_id' : inventory_id, + 'product_qty' : data.new_quantity, + 'location_id' : data.location_id.id, + 'product_id' : rec_id, + 'product_uom_id' : res_original.uom_id.id, + 'prod_lot_id' : data.lot_id.id + } + inventory_line_obj.create(cr , uid, line_data, context=context) + #validate inventory + inventory_obj.action_done(cr, uid, [inventory_id], context=context) return {} # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 12cbabfaf9b5d55807b6d9665e7abf6cdf4fc3a0 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Thu, 30 Jan 2014 14:44:57 +0100 Subject: [PATCH 2/2] [FIX]product qty wizard adjustement: take into account lot id and should not prepare an inventory bzr revid: csn@openerp.com-20140130134457-6ukdbv0lyz98tkej --- .../stock/wizard/stock_change_product_qty.py | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/addons/stock/wizard/stock_change_product_qty.py b/addons/stock/wizard/stock_change_product_qty.py index 9a2d7bb5d23..9b6fa8f848b 100644 --- a/addons/stock/wizard/stock_change_product_qty.py +++ b/addons/stock/wizard/stock_change_product_qty.py @@ -82,23 +82,16 @@ class stock_change_product_qty(osv.osv_memory): for data in self.browse(cr, uid, ids, context=context): if data.new_quantity < 0: raise osv.except_osv(_('Warning!'), _('Quantity cannot be negative.')) - inventory_id = inventory_obj.create(cr , uid, {'name': _('INV: %s') % tools.ustr(res_original.name), 'product_id': rec_id, 'location_id': data.location_id.id}, context=context) - #perform an inventory for this particular product in this particular location - inventory_obj.prepare_inventory(cr, uid, [inventory_id], context=context) - #if we've got an inventory line, change it's qty, else create new line - line_ids = inventory_obj.browse(cr, uid, inventory_id, context=context).line_ids or False - if line_ids: - inventory_line_obj.write(cr, uid, line_ids[0].id, {'product_qty': data.new_quantity}, context=context) - else: - line_data ={ - 'inventory_id' : inventory_id, - 'product_qty' : data.new_quantity, - 'location_id' : data.location_id.id, - 'product_id' : rec_id, - 'product_uom_id' : res_original.uom_id.id, - 'prod_lot_id' : data.lot_id.id - } - inventory_line_obj.create(cr , uid, line_data, context=context) + inventory_id = inventory_obj.create(cr , uid, {'name': _('INV: %s') % tools.ustr(res_original.name), 'product_id': rec_id, 'location_id': data.location_id.id, 'lot_id': data.lot_id.id if data.lot_id else False}, context=context) + line_data ={ + 'inventory_id' : inventory_id, + 'product_qty' : data.new_quantity, + 'location_id' : data.location_id.id, + 'product_id' : rec_id, + 'product_uom_id' : res_original.uom_id.id, + 'prod_lot_id' : data.lot_id.id if data.lot_id else False + } + inventory_line_obj.create(cr , uid, line_data, context=context) #validate inventory inventory_obj.action_done(cr, uid, [inventory_id], context=context) return {}