From 0757ae25abdade0f0f354da3975e549a7c78b510 Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Wed, 6 Jul 2011 02:26:24 +0200 Subject: [PATCH 1/2] [REF] refactor the methode make_po in order to make easier the overwritting bzr revid: sebastien.beau@akretion.com.br-20110706002624-8ag88jv5a5i979iy --- addons/purchase/purchase.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 6ec558acc97..1b3d0eeb839 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -761,6 +761,10 @@ class procurement_order(osv.osv): res = res.values() return len(res) and res[0] or 0 #TO CHECK: why workflow is generated error if return not integer value + def create_procurement_purchase_order(self, cr, uid, procurement, po_vals, line, context=None): + po_vals.update({'order_line': [(0,0,line)]}) + return self.pool.get('purchase.order').create(cr, uid, po_vals, context=context) + def make_po(self, cr, uid, ids, context=None): """ Make purchase order from procurement @return: New created Purchase Orders procurement wise @@ -774,7 +778,6 @@ class procurement_order(osv.osv): pricelist_obj = self.pool.get('product.pricelist') prod_obj = self.pool.get('product.product') acc_pos_obj = self.pool.get('account.fiscal.position') - po_obj = self.pool.get('purchase.order') for procurement in self.browse(cr, uid, ids, context=context): res_id = procurement.move_id.id partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement. @@ -799,6 +802,8 @@ class procurement_order(osv.osv): context.update({'lang': partner.lang, 'partner_id': partner_id}) product = prod_obj.browse(cr, uid, procurement.product_id.id, context=context) + taxes_ids = procurement.product_id.product_tmpl_id.supplier_taxes_id + taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids) line = { 'name': product.partner_ref, @@ -809,25 +814,20 @@ class procurement_order(osv.osv): 'date_planned': newdate.strftime('%Y-%m-%d %H:%M:%S'), 'move_dest_id': res_id, 'notes': product.description_purchase, + 'taxes_id': [(6,0,taxes)], } - - taxes_ids = procurement.product_id.product_tmpl_id.supplier_taxes_id - taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids) - line.update({ - 'taxes_id': [(6,0,taxes)] - }) - purchase_id = po_obj.create(cr, uid, { + + po_vals = { 'origin': procurement.origin, 'partner_id': partner_id, 'partner_address_id': address_id, 'location_id': procurement.location_id.id, 'pricelist_id': pricelist_id, - 'order_line': [(0,0,line)], 'company_id': procurement.company_id.id, 'fiscal_position': partner.property_account_position and partner.property_account_position.id or False - }) - res[procurement.id] = purchase_id - self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': purchase_id}) + } + res[procurement.id] = self.create_procurement_purchase_order(cr, uid, procurement, po_vals, line, context=context) + self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]}) return res procurement_order() From c1d843e4602d468fae7e62671ebb8f116dfa6686 Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Thu, 25 Aug 2011 00:18:06 +0200 Subject: [PATCH 2/2] [IMP] Purchase : add a docstring for the method create_procurement_purchase_order bzr revid: sebastien.beau@akretion.com.br-20110824221806-ue02asb0afk5mol7 --- addons/purchase/purchase.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 1b3d0eeb839..27824fc3c67 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -762,6 +762,13 @@ class procurement_order(osv.osv): return len(res) and res[0] or 0 #TO CHECK: why workflow is generated error if return not integer value def create_procurement_purchase_order(self, cr, uid, procurement, po_vals, line, context=None): + """ Create the purchase order from the procurement + :params procurement: the procurement object generating the purchase order + :params dict po_vals: the values of the purchase order + :params dict line: the values of the purchase order line + :return: purchase order id + :rtype: int + """ po_vals.update({'order_line': [(0,0,line)]}) return self.pool.get('purchase.order').create(cr, uid, po_vals, context=context)