trytond-patches/issue17281002_20001.diff

82 lines
3.5 KiB
Diff

diff -r e9a7f9fd73aa stock.py
--- a/trytond/trytond/modules/stock_lot/stock.py Wed Jun 17 11:46:34 2015 +0200
+++ b/trytond/trytond/modules/stock_lot/stock.py Wed Jun 17 11:47:43 2015 +0200
@@ -200,64 +199,8 @@
__name__ = 'stock.inventory'
@classmethod
- def complete_lines(cls, inventories):
- pool = Pool()
- Product = pool.get('product.product')
- Line = pool.get('stock.inventory.line')
-
- super(Inventory, cls).complete_lines(inventories)
-
- # Create and/or update lines with product that will require lot for
- # their moves.
- to_create = []
- for inventory in inventories:
- product2lines = defaultdict(list)
- for line in inventory.lines:
- if (line.product.lot_is_required(inventory.location,
- inventory.lost_found)
- or line.product.lot_is_required(inventory.lost_found,
- inventory.location)):
- product2lines[line.product.id].append(line)
- if product2lines:
- with Transaction().set_context(stock_date_end=inventory.date):
- pbl = Product.products_by_location([inventory.location.id],
- product_ids=product2lines.keys(),
- grouping=('product', 'lot'))
- product_qty = defaultdict(dict)
- for (location_id, product_id, lot_id), quantity \
- in pbl.iteritems():
- product_qty[product_id][lot_id] = quantity
-
- products = Product.browse(product_qty.keys())
- product2uom = dict((p.id, p.default_uom.id) for p in products)
-
- for product_id, lines in product2lines.iteritems():
- quantities = product_qty[product_id]
- uom_id = product2uom[product_id]
- for line in lines:
- lot_id = line.lot.id if line.lot else None
- if lot_id in quantities:
- quantity = quantities.pop(lot_id)
- elif lot_id is None and quantities:
- lot_id = quantities.keys()[0]
- quantity = quantities.pop(lot_id)
- else:
- lot_id = None
- quantity = 0.0
-
- values = line.update_values4complete(quantity, uom_id)
- if (values or lot_id != (line.lot.id
- if line.lot else None)):
- values['lot'] = lot_id
- Line.write([line], values)
- if quantities:
- for lot_id, quantity in quantities.iteritems():
- values = Line.create_values4complete(product_id,
- inventory, quantity, uom_id)
- values['lot'] = lot_id
- to_create.append(values)
- if to_create:
- Line.create(to_create)
+ def grouping(cls):
+ return super(Inventory, cls).grouping() + ('lot', )
class InventoryLine:
@@ -279,10 +222,6 @@
rec_name += ' - %s' % self.lot.rec_name
return rec_name
- @property
- def unique_key(self):
- return super(InventoryLine, self).unique_key + (self.lot,)
-
def get_move(self):
move = super(InventoryLine, self).get_move()
if move: