From e503beb9557f71aeb010db4b604c556115c30429 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 25 Sep 2013 10:37:49 +0200 Subject: [PATCH] [FIX] mrp: workflow bzr revid: qdp-launchpad@openerp.com-20130925083749-iafe0qoq2jqmvgk5 --- addons/mrp/mrp.py | 30 +++++------------------------- addons/mrp/mrp_workflow.xml | 1 + addons/mrp/stock.py | 8 ++++---- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 9f904ded0c3..b591615551b 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -502,9 +502,9 @@ class mrp_production(osv.osv): 'picking_id': fields.many2one('stock.picking', 'Picking List', readonly=True, ondelete="restrict", help="This is the Internal Picking List that brings the finished product to the production plan"), 'move_prod_id': fields.many2one('stock.move', 'Product Move', readonly=True), - 'move_lines': fields.many2many('stock.move', 'mrp_production_move_ids', 'production_id', 'move_id', 'Products to Consume', + 'move_lines': fields.one2many('stock.move', 'raw_material_production_id', 'Products to Consume', domain=[('state','not in', ('done', 'cancel'))], readonly=True, states={'draft':[('readonly',False)]}), - 'move_lines2': fields.many2many('stock.move', 'mrp_production_move_ids', 'production_id', 'move_id', 'Consumed Products', + 'move_lines2': fields.one2many('stock.move', 'raw_material_production_id', 'Consumed Products', domain=[('state','in', ('done', 'cancel'))], readonly=True, states={'draft':[('readonly',False)]}), 'move_created_ids': fields.one2many('stock.move', 'production_id', 'Products to Produce', domain=[('state','not in', ('done', 'cancel'))], readonly=True, states={'draft':[('readonly',False)]}), @@ -886,37 +886,17 @@ class mrp_production(osv.osv): """ return self.write(cr, uid, ids, {'state': 'in_production', 'date_start': time.strftime('%Y-%m-%d %H:%M:%S')}) - def test_if_product(self, cr, uid, ids): - """ - @return: True or False - """ - res = True - for production in self.browse(cr, uid, ids): - if not production.product_lines: - if not self.action_compute(cr, uid, [production.id]): - res = False - return res - def consume_lines_get(self, cr, uid, ids, *args): res = [] for order in self.browse(cr, uid, ids, context={}): res += [x.id for x in order.move_lines] return res - - def test_ready2(self, cr, uid, ids): - res = True - assign = self._moves_assigned(cr, uid, ids, False, False) - for production in ids: - if not assign[production]: - res = False - return res - def test_ready(self, cr, uid, ids): - res = True + res = False for production in self.browse(cr, uid, ids): - if not production.ready_production: - res = False + if production.ready_production: + res = True return res def _make_production_produce_line(self, cr, uid, production, context=None): diff --git a/addons/mrp/mrp_workflow.xml b/addons/mrp/mrp_workflow.xml index 8198c1f32ea..c4ca92bf3df 100644 --- a/addons/mrp/mrp_workflow.xml +++ b/addons/mrp/mrp_workflow.xml @@ -17,6 +17,7 @@ confirmed + function action_confirm() diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index 7456b859230..2e6e78c179f 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -27,7 +27,8 @@ class StockMove(osv.osv): _inherit = 'stock.move' _columns = { - 'production_id': fields.many2one('mrp.production', 'Production', select=True), + 'production_id': fields.many2one('mrp.production', 'Production Order for Produced Products', select=True), + 'raw_material_production_id': fields.many2one('mrp.production', 'Production Order for Raw Materials', select=True), } @@ -137,15 +138,14 @@ class StockMove(osv.osv): res.append(new_move) return res - def write(self, cr, uid, ids, vals, context=None): if isinstance(ids, (int, long)): ids = [ids] res = super(StockMove, self).write(cr, uid, ids, vals, context=context) from openerp import workflow for move in self.browse(cr, uid, ids, context=context): - if move.production_id and move.production_id.state == 'confirmed': - workflow.trg_trigger(uid, 'stock.move', move.production_id.id, cr) + if move.raw_material_production_id and move.raw_material_production_id.state == 'confirmed': + workflow.trg_trigger(uid, 'stock.move', move.id, cr) return res class StockPicking(osv.osv):