From 91f043137f7eec9f9866c573a69c9a309d5bb4eb Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Fri, 12 Jul 2013 12:36:45 +0200 Subject: [PATCH] [WIP] Procurement group for pickings bzr revid: jco@openerp.com-20130712103645-u1eobg8i3s86b7by --- addons/mrp/mrp.py | 10 +++++----- addons/mrp/procurement.py | 2 +- addons/mrp/stock.py | 4 ---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 7e018bd4ae7..5a641dc32fc 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -902,7 +902,7 @@ class mrp_production(osv.osv): self.signal_button_confirm(cr, uid, [procurement_id]) return procurement_id - def _make_production_internal_shipment_line(self, cr, uid, production_line, shipment_id, parent_move_id, destination_location_id=False, context=None): + def _make_production_internal_shipment_line(self, cr, uid, production_line, group_id, parent_move_id, destination_location_id=False, context=None): stock_move = self.pool.get('stock.move') production = production_line.production_id date_planned = production.date_planned @@ -914,7 +914,7 @@ class mrp_production(osv.osv): destination_location_id = source_location_id return stock_move.create(cr, uid, { 'name': production.name, - 'picking_id': shipment_id, + 'group_id': group_id, 'product_id': production_line.product_id.id, 'product_qty': production_line.product_qty, 'product_uom': production_line.product_uom.id, @@ -1014,10 +1014,10 @@ class mrp_production(osv.osv): """ Confirms production order. @return: Newly generated Shipment Id. """ - shipment_id = False uncompute_ids = filter(lambda x:x, [not x.product_lines and x.id or False for x in self.browse(cr, uid, ids, context=context)]) self.action_compute(cr, uid, uncompute_ids, context=context) for production in self.browse(cr, uid, ids, context=context): + group_id = self.pool.get("procurement.group").create(cr, uid, {'name': production.name}, context=context) #shipment_id = self._make_production_internal_shipment(cr, uid, production, context=context) produce_move_id = self._make_production_produce_line(cr, uid, production, context=context) @@ -1028,11 +1028,11 @@ class mrp_production(osv.osv): for line in production.product_lines: consume_move_id = self._make_production_consume_line(cr, uid, line, produce_move_id, source_location_id=source_location_id, context=context) - shipment_move_id = self._make_production_internal_shipment_line(cr, uid, line, shipment_id, consume_move_id,\ + shipment_move_id = self._make_production_internal_shipment_line(cr, uid, line, group_id, consume_move_id,\ destination_location_id=source_location_id, context=context) self._make_production_line_procurement(cr, uid, line, shipment_move_id, context=context) production.write({'state':'confirmed'}, context=context) - return shipment_id + return group_id def force_production(self, cr, uid, ids, *args): """ Assigns products. diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index c757b5ff854..92b8a30ad13 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -46,7 +46,7 @@ class procurement_order(osv.osv): rule_id = super(procurement_order, self)._find_suitable_rule(cr, uid, procurement, context=context) if not rule_id: #if there isn't any specific procurement.rule defined for the product, we try to directly supply it from a supplier - if procurement.product_id.supply_method == 'manufacture' and procurement.product_id.bom_id: #Actually not needed anymore? + if procurement.product_id.supply_method == 'manufacture' and self.check_bom_exists(cr, uid, [procurement.id], context=context): domain = [('action', '=', 'manufacture'), ('location_id', '=', procurement.location_id.id)] + self._get_route_domain(cr, uid, procurement, context=context) rule_id = self.pool.get('procurement.rule').search(cr, uid, domain, context=context) rule_id = rule_id and rule_id[0] or False diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index 0ebc7bd199d..9f91f6b5433 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -30,10 +30,6 @@ class StockMove(osv.osv): 'production_id': fields.many2one('mrp.production', 'Production', select=True), } - def create_chained_picking(self, cr, uid, moves, context=None): - new_moves = super(StockMove, self).create_chained_picking(cr, uid, moves, context=context) - self.write(cr, uid, [x.id for x in new_moves], {'production_id': False}, context=context) - return new_moves def _action_explode(self, cr, uid, move, context=None): """ Explodes pickings.