|
|
""" We look at the stock move lines associated with every quant to get the last count date.
"""
self.last_count_date = False
groups = self.env['stock.move.line']._read_group(
[
('state', '=', 'done'),
('is_inventory', '=', True),
('product_id', 'in', self.product_id.ids),
'|',
('lot_id', 'in', self.lot_id.ids),
('lot_id', '=', False),
'|',
('owner_id', 'in', self.owner_id.ids),
('owner_id', '=', False),
'|',
('location_id', 'in', self.location_id.ids),
('location_dest_id', 'in', self.location_id.ids),
'|',
('package_id', '=', False),
'|',
('package_id', 'in', self.package_id.ids),
('result_package_id', 'in', self.package_id.ids),
],
['product_id', 'lot_id', 'package_id', 'owner_id', 'result_package_id', 'location_id', 'location_dest_id'],
['date:max'])
def _update_dict(date_by_quant, key, value):
current_date = date_by_quant.get(key)
if not current_date or value > current_date:
date_by_quant[key] = value
date_by_quant = {}
for product, lot, package, owner, result_package, location, location_dest, move_line_date in groups:
location_id = location.id
location_dest_id = location_dest.id
package_id = package.id
result_package_id = result_package.id
lot_id = lot.id
owner_id = owner.id
product_id = product.id
_update_dict(date_by_quant, (location_id, package_id, product_id, lot_id, owner_id), move_line_date)
_update_dict(date_by_quant, (location_dest_id, package_id, product_id, lot_id, owner_id), move_line_date)
_update_dict(date_by_quant, (location_id, result_package_id, product_id, lot_id, owner_id), move_line_date)
_update_dict(date_by_quant, (location_dest_id, result_package_id, product_id, lot_id, owner_id), move_line_date)
for quant in self:
quant.last_count_date = date_by_quant.get((quant.location_id.id, quant.package_id.id, quant.product_id.id, quant.lot_id.id, quant.owner_id.id))
|
|