From 8d389015d419d2e3eabdd94429b3a73b663ee5da Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Mon, 17 Feb 2014 16:05:38 +0100 Subject: [PATCH] [FIX] purchase_requisition: fixed flows related to procurement and purchase_requisition bzr revid: qdp-launchpad@openerp.com-20140217150538-i321idcf68ux5h8h --- .../purchase_requisition.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index b670fa81f99..6d7e997d8b3 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -52,7 +52,7 @@ class purchase_requisition(osv.osv): 'purchase_ids': fields.one2many('purchase.order', 'requisition_id', 'Purchase Orders', states={'done': [('readonly', True)]}), 'po_line_ids': fields.function(_get_po_line, method=True, type='one2many', relation='purchase.order.line', string='Products by supplier'), 'line_ids': fields.one2many('purchase.requisition.line', 'requisition_id', 'Products to Purchase', states={'done': [('readonly', True)]}), - 'move_dest_id': fields.many2one('stock.move', 'Reservation Destination', ondelete='set null'), + 'procurement_id': fields.many2one('procurement.order', 'Procurement', ondelete='set null'), 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse'), 'state': fields.selection([('draft', 'Draft'), ('in_progress', 'Confirmed'), ('open', 'Bid Selection'), ('done', 'PO Created'), ('cancel', 'Cancelled')], 'Status', track_visibility='onchange', required=True), @@ -169,7 +169,7 @@ class purchase_requisition(osv.osv): vals.update({ 'order_id': purchase_id, 'product_id': product.id, - 'move_dest_id': requisition.move_dest_id.id, + 'purchase_requisition_id': requisition.id, 'account_analytic_id': requisition_line.account_analytic_id.id, }) return vals @@ -363,6 +363,13 @@ class purchase_order(osv.osv): default.update({'requisition_id': False}) return super(purchase_order, self).copy(cr, uid, id, default=default, context=context) + def _prepare_order_line_move(self, cr, uid, order, order_line, picking_id, group_id, context=None): + stock_move_lines = super(purchase_order, self)._prepare_order_line_move(cr, uid, order, order_line, picking_id, group_id, context=context) + if order.requisition_id and order.requisition_id.procurement_id and order.requisition_id.procurement_id.move_dest_id: + for i in range(0, len(stock_move_lines)): + stock_move_lines[i]['move_dest_id'] = order.requisition_id.procurement_id.move_dest_id.id + return stock_move_lines + class purchase_order_line(osv.osv): _inherit = 'purchase.order.line' @@ -410,7 +417,7 @@ class procurement_order(osv.osv): 'date_end': procurement.date_planned, 'warehouse_id': warehouse_id and warehouse_id[0] or False, 'company_id': procurement.company_id.id, - 'move_dest_id': procurement.move_dest_id and procurement.move_dest_id.id or False, + 'procurement_id': procurement.id, 'line_ids': [(0, 0, { 'product_id': procurement.product_id.id, 'product_uom_id': procurement.product_uom.id, @@ -418,8 +425,17 @@ class procurement_order(osv.osv): })], }) + self.message_post(cr, uid, [procurement.id], body=_("Purchase Requisition created"), context=context) return self.write(cr, uid, [procurement.id], {'requisition_id': requisition_id}, context=context) return super(procurement_order, self)._run(cr, uid, procurement, context=context) + def _check(self, cr, uid, procurement, context=None): + requisition_obj = self.pool.get('purchase.requisition') + if procurement.rule_id and procurement.rule_id.action == 'buy' and procurement.product_id.purchase_requisition: + if procurement.requisition_id.state == 'done': + if any([purchase.shipped for purchase in procurement.requisition_id.purchase_ids]): + return True + return False + return super(procurement_order, self)._check(cr, uid, procurement, context=context) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: