From 7068de6bc753a62a57ab54c11fdd7975cd0a3078 Mon Sep 17 00:00:00 2001 From: "Atul Patel (OpenERP)" Date: Fri, 1 Jun 2012 22:43:45 +0530 Subject: [PATCH] [FIX]: Allow add rfq manually with warning if same suppliers if given. bzr revid: atp@tinyerp.com-20120601171345-o4uxah793kvxhs5v --- .../purchase_requisition.py | 29 ++++++++++++++----- .../purchase_requisition_view.xml | 12 ++++++-- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index 8d030496344..3e5d8b5e869 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -207,23 +207,38 @@ class purchase_order(osv.osv): def default_get(self, cr, uid, fields, context=None): if not context: context = {} + val_list = [] + requisition_id = {} product_obj = self.pool.get('product.product') - pur_req_line_obj = self.pool.get('purchase.requisition.line') + requisition_line_obj = self.pool.get('purchase.requisition.line') purchase_order_line_obj = self.pool.get('purchase.order.line') res = super(purchase_order, self).default_get(cr, uid, fields, context=context) product_ids = context.get('product_ids', False) - val_list = [] if product_ids: for id in product_ids: if id[0] == 4: - product_data = pur_req_line_obj.browse(cr, uid, id[1], context=context) - line_vals={'product_id': product_data.product_id.id, 'product_qty': product_data.product_qty, 'name': product_data.product_id.name} + requisition_data = requisition_line_obj.browse(cr, uid, id[1], context=context) + requisition_id.update({'requisition_id': requisition_data.requisition_id.id}) + line_vals={'product_id': requisition_data.product_id.id, 'product_qty': requisition_data.product_qty, 'name': requisition_data.product_id.name} elif id[0] == 0: - product_data = id[2] + product_data = id[2] name = product_obj.browse(cr, uid, product_data.get('product_id'), context=context).name line_vals = {'product_id': product_data.get('product_id'), 'product_qty': product_data.get('product_qty'), 'name': name} - val_list.append((0,0,line_vals)) - res.update({'order_line': val_list}) + val_list.append((0,0,line_vals)) + res.update({'order_line': val_list, 'requisition_id': requisition_id.get('requisition_id')}) + return res + + def onchange_partner_id(self, cr, uid, ids, partner_id, requisition_id): + res = {} + res = super(purchase_order, self).onchange_partner_id(cr, uid, ids, partner_id) + res_partner = self.pool.get('res.partner') + value = {'partner_id': ''} + requisition_pool = self.pool.get('purchase.requisition') + supplier = res_partner.browse(cr, uid, partner_id) + if requisition_id: + requisition = requisition_pool.browse(cr, uid, requisition_id) + if supplier.id in filter(lambda x: x, [rfq.state <> 'cancel' and rfq.partner_id.id or None for rfq in requisition.purchase_ids]): + raise osv.except_osv(_('Warning'), _('You have already one %s purchase order for this partner, you must cancel this purchase order to create a new quotation.') % rfq.state) return res def wkf_confirm_order(self, cr, uid, ids, context=None): diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml index d1ac593d97f..284d5354881 100644 --- a/addons/purchase_requisition/purchase_requisition_view.xml +++ b/addons/purchase_requisition/purchase_requisition_view.xml @@ -9,9 +9,14 @@ purchase.order + + + + + @@ -49,10 +54,11 @@ - - - + + + +