diff --git a/addons/mrp_procurement/mrp_procurement.py b/addons/mrp_procurement/mrp_procurement.py index 1f974318ee3..bb18326af07 100644 --- a/addons/mrp_procurement/mrp_procurement.py +++ b/addons/mrp_procurement/mrp_procurement.py @@ -262,8 +262,9 @@ class mrp_procurement(osv.osv): user = self.pool.get('res.users').browse(cr, uid, uid) for procurement in self.browse(cr, uid, ids): if procurement.product_id.product_tmpl_id.supply_method <> 'produce': - if procurement.product_id.seller_ids: - partner = procurement.product_id.seller_ids[0].name + partner_list = sorted([(partner_id.sequence, partner_id) for partner_id in procurement.product_id.seller_ids if partner_id]) + if partner_list: + partner = partner_list and partner_list[0] and partner_list[0][1] and partner_list[0][1].name or False if user.company_id and user.company_id.partner_id: if partner.id == user.company_id.partner_id.id: return True @@ -288,7 +289,9 @@ class mrp_procurement(osv.osv): if not procurement.product_id.seller_ids: cr.execute('update mrp_procurement set message=%s where id=%s', (_('No supplier defined for this product !'), procurement.id)) return False - partner = procurement.product_id.seller_ids[0].name + partner_list = sorted([(partner_id.sequence, partner_id) for partner_id in procurement.product_id.seller_ids if partner_id and partner_id.sequence]) + partner = partner_list and partner_list[0] and partner_list[0][1] and partner_list[0][1].name or False + if user.company_id and user.company_id.partner_id: if partner.id == user.company_id.partner_id.id: return False diff --git a/addons/product/product.py b/addons/product/product.py index aaa369cdfcf..eddbd992874 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -245,7 +245,8 @@ class product_template(osv.osv): result = {} for product in self.browse(cr, uid, ids, context): if product.seller_ids: - result[product.id] = product.seller_ids[0].delay + partner_list = sorted([(partner_id.sequence, partner_id) for partner_id in product.seller_ids if partner_id and partner_id.sequence]) + result[product.id] = partner_list and partner_list[0] and partner_list[0][1] and partner_list[0][1].delay or False else: result[product.id] = 1 return result diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index 11ed4bfba65..9f13467c4cb 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -426,7 +426,7 @@
- + @@ -451,7 +451,7 @@ tree - + diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 443a279e3f2..2cfd4247bcf 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -726,22 +726,24 @@ class mrp_procurement(osv.osv): po_obj = self.pool.get('purchase.order') for procurement in self.browse(cr, uid, ids): res_id = procurement.move_id.id - partner = procurement.product_id.seller_ids[0].name - partner_id = partner.id + partner_list = sorted([(partner_id.sequence, partner_id) for partner_id in procurement.product_id.seller_ids if partner_id]) + partner_rec = partner_list and partner_list[0] and partner_list[0][1] or False + partner = partner_rec.name or False + partner_id = partner_rec.id or False address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery'] pricelist_id = partner.property_product_pricelist_purchase.id uom_id = procurement.product_id.uom_po_id.id qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id) - if procurement.product_id.seller_ids[0].qty: - qty = max(qty,procurement.product_id.seller_ids[0].qty) + if partner_rec.qty: + qty = max(qty,partner_rec.qty) price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, False, {'uom': uom_id})[pricelist_id] newdate = DateTime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S') newdate = newdate - DateTime.RelativeDateTime(days=company.po_lead) - newdate = newdate - procurement.product_id.seller_ids[0].delay + newdate = newdate - partner_rec.delay #Passing partner_id to context for purchase order line integrity of Line name context.update({'lang': partner.lang, 'partner_id': partner_id}) diff --git a/addons/purchase_requisition/wizard/purchase_requisition_partner.py b/addons/purchase_requisition/wizard/purchase_requisition_partner.py index e886ba302b9..3f74e857035 100644 --- a/addons/purchase_requisition/wizard/purchase_requisition_partner.py +++ b/addons/purchase_requisition/wizard/purchase_requisition_partner.py @@ -82,15 +82,15 @@ class purchase_requisition_partner(osv.osv_memory): purchase_order_line={} for tender in tender_obj.browse(cr, uid, record_ids): for line in tender.line_ids: - + partner_list = sorted([(partner.sequence, partner) for partner in line.product_id.seller_ids if partner]) + partner_rec = partner_list and partner_list[0] and partner_list[0][1] or False uom_id = line.product_id.uom_po_id and line.product_id.uom_po_id.id or False newdate = DateTime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') newdate = newdate - DateTime.RelativeDateTime(days=company.po_lead) - newdate = newdate -(line.product_id.seller_ids and line.product_id.seller_ids[0].delay or DateTime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') ) - - - partner = line.product_id.seller_ids and line.product_id.seller_ids[0].name or supplier_data - pricelist_id = partner.property_product_pricelist_purchase and partner.property_product_pricelist_purchase.id + delay = partner_rec and partner_rec.delay or False + newdate = newdate -(delay or DateTime.strptime(tender.date_start, '%Y-%m-%d %H:%M:%S') ) + partner = partner_rec and partner_rec.name or supplier_data + pricelist_id = partner.property_product_pricelist_purchase and partner.property_product_pricelist_purchase.id or False price = pricelist_obj.price_get(cr, uid, [pricelist_id], line.product_id.id, line.product_qty, False, {'uom': uom_id})[pricelist_id] product = prod_obj.browse(cr, uid, line.product_id.id, context=context)