From e7fd6c656d596e1a9280ba0daef0b3fdcadd16eb Mon Sep 17 00:00:00 2001 From: "sbh (Open ERP)" Date: Wed, 28 Apr 2010 15:17:46 +0530 Subject: [PATCH] Task 617:purchase_requisition Create a test case bzr revid: sbh@tinyerp.com-20100428094746-t6hqk6cfid80v7zl --- addons/purchase_requisition/__openerp__.py | 3 +- .../purchase_requisition_exclusive_test.yml | 93 +++++++++++++++ .../test/purchase_requisition_test.yml | 110 ++++++++++++++++++ 3 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 addons/purchase_requisition/test/purchase_requisition_exclusive_test.yml create mode 100644 addons/purchase_requisition/test/purchase_requisition_test.yml diff --git a/addons/purchase_requisition/__openerp__.py b/addons/purchase_requisition/__openerp__.py index c5a9435379c..2e2a5ea8ed3 100644 --- a/addons/purchase_requisition/__openerp__.py +++ b/addons/purchase_requisition/__openerp__.py @@ -34,7 +34,8 @@ "update_xml" : ["wizard/purchase_requisition_partner_view.xml", "purchase_requisition_view.xml", "security/ir.model.access.csv","purchase_requisition_sequence.xml"], - + "test":['test/purchase_requisition_test.yml', + 'test/purchase_requisition_exclusive_test.yml'], "active": False, "installable": True } diff --git a/addons/purchase_requisition/test/purchase_requisition_exclusive_test.yml b/addons/purchase_requisition/test/purchase_requisition_exclusive_test.yml new file mode 100644 index 00000000000..55b7cd44640 --- /dev/null +++ b/addons/purchase_requisition/test/purchase_requisition_exclusive_test.yml @@ -0,0 +1,93 @@ +- + In order to test the purchase requicisition module, I will do a sale order -> purchase_requisition -> + purchase flow and I will buy the required products at two different suppliers. +- + I start by creating a new product 'Laptop ACER', which is purchased at Asustek, in MTO, + with the generation of purchase requisitions. +- + Creating an product.product record +- + !record {model: product.product, id: product_product_laptopacer0}: + categ_id: product.product_category_3 + cost_method: standard + list_price: 1000.0 + mes_type: fixed + name: Laptop ACER1 + procure_method: make_to_order + purchase_requisition: 1 + seller_ids: + - delay: 1 + name: base.res_partner_asus + qty: 5.0 + supply_method: buy + type: product + uom_id: product.product_uom_unit + uom_po_id: product.product_uom_unit +- + Creating an sale.order record +- + !record {model: sale.order, id: sale_order_testtender0}: + date_order: '2010-04-20' + invoice_quantity: order + name: TEST/TENDER/0002 + order_line: + - name: Laptop ACER1 + price_unit: 1000.0 + product_uom: product.product_uom_unit + product_uom_qty: 5.0 + state: draft + 'delay': 7.0 + 'product_id': product_product_laptopacer0 + 'type': make_to_order + order_policy: manual + partner_id: base.res_partner_agrolait + partner_invoice_id: base.res_partner_address_8 + partner_order_id: base.res_partner_address_8 + partner_shipping_id: base.res_partner_address_8 + picking_policy: direct + pricelist_id: product.list0 + shop_id: sale.shop +- + Performing a workflow action order_confirm on module sale.order +- + !workflow {model: sale.order, action: order_confirm, ref: sale_order_testtender0} +- + I launch he scheduler to compute all procurements, and planify all requisitions order +- + !python {model: mrp.procurement.compute.all}: | + proc_obj = self.pool.get('mrp.procurement') + proc_obj._procure_confirm(cr,uid) + +- + Creating an purchase.requisition record +- + !record {model: purchase.requisition.partner, id: purchase_requisition_partner_1}: + partner_id: base.res_partner_4 + partner_address_id: base.res_partner_address_7 +- + !python {model: purchase.requisition}: | + requisition_obj = self.pool.get('purchase.requisition.partner') + req_obj = self.pool.get('purchase.requisition') + ids =req_obj.search(cr, uid, [('origin','=','TEST/TENDER/0002')]) + requisition_obj.create_order(cr,uid, [ref('purchase_requisition_partner_1')],{'active_ids': ids}) +- + !python {model: purchase.requisition}: | + purchase_obj = self.pool.get('purchase.order') + ids =self.search(cr, uid, [('origin','=','TEST/TENDER/0002')])[0] + self.write(cr,uid,ids,{'exclusive': 'exclusive' }) + ids =purchase_obj.search(cr, uid, [('requisition_id','in',[ids])]) + assert (len(ids)<2),"Purchase Order hasn't Created" +- + I change the quantities so that the purchase order for DistriPC includes 3 pieces and the + purchase order for Asustek includes 2 pieces. +- + !python {model: purchase.order}: | + purchase_id= self.search(cr, uid, [('origin','=','TEST/TENDER/0002')]) + order_line=self.browse(cr, uid, purchase_id, context)[0].order_line[0].id + self.pool.get('purchase.order.line').write(cr, uid, [order_line], {'product_qty':5}) + import netsvc + wf_service = netsvc.LocalService("workflow") + if purchase_id: + wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_confirm', cr) + wf_service.trg_validate(uid, 'purchase.order',purchase_id[0],'purchase_approve', cr) +- \ No newline at end of file diff --git a/addons/purchase_requisition/test/purchase_requisition_test.yml b/addons/purchase_requisition/test/purchase_requisition_test.yml new file mode 100644 index 00000000000..b494b9b0143 --- /dev/null +++ b/addons/purchase_requisition/test/purchase_requisition_test.yml @@ -0,0 +1,110 @@ +- + In order to test the purchase requicisition module, I will do a sale order -> purchase_requisition -> + purchase flow and I will buy the required products at two different suppliers. +- + I start by creating a new product 'Laptop ACER', which is purchased at Asustek, in MTO, + with the generation of purchase requisitions. +- + Creating an product.product record +- + !record {model: product.product, id: product_product_laptopacer0}: + categ_id: product.product_category_3 + cost_method: standard + list_price: 1000.0 + mes_type: fixed + name: Laptop ACER + procure_method: make_to_order + purchase_requisition: 1 + seller_ids: + - delay: 1 + name: base.res_partner_asus + qty: 5.0 + supply_method: buy + type: product + uom_id: product.product_uom_unit + uom_po_id: product.product_uom_unit +- + Creating an sale.order record +- + !record {model: sale.order, id: sale_order_so0}: + date_order: '2010-04-20' + invoice_quantity: order + name: TEST/TENDER/0001 + order_line: + - name: Laptop ACER + price_unit: 1000.0 + product_uom: product.product_uom_unit + product_uom_qty: 5.0 + state: draft + 'delay': 7.0 + 'product_id': product_product_laptopacer0 + 'type': make_to_order + order_policy: manual + partner_id: base.res_partner_agrolait + partner_invoice_id: base.res_partner_address_8 + partner_order_id: base.res_partner_address_8 + partner_shipping_id: base.res_partner_address_8 + picking_policy: direct + pricelist_id: product.list0 + shop_id: sale.shop +- + Performing a workflow action order_confirm on module sale.order +- + !workflow {model: sale.order, action: order_confirm, ref: sale_order_so0} +- + I launch he scheduler to compute all procurements, and planify all requisitions order +- + !python {model: mrp.procurement.compute.all}: | + proc_obj = self.pool.get('mrp.procurement') + proc_obj._procure_confirm(cr,uid) + +- + Creating an purchase.requisition record +- + !record {model: purchase.requisition.partner, id: purchase_requisition_partner_0}: + partner_id: base.res_partner_4 + partner_address_id: base.res_partner_address_7 +- + !python {model: purchase.requisition}: | + requisition_obj = self.pool.get('purchase.requisition.partner') + req_obj = self.pool.get('purchase.requisition') + ids =req_obj.search(cr, uid, [('origin','=','TEST/TENDER/0001')]) + requisition_obj.create_order(cr,uid, [ref('purchase_requisition_partner_0')],{'active_ids': ids}) +- + !python {model: purchase.requisition}: | + purchase_obj = self.pool.get('purchase.order') + requisition_ids= self.search(cr, uid, [],context) + ids =purchase_obj.search(cr, uid, [('requisition_id','in',requisition_ids)]) + assert len(ids) < 2,"Purchase Order hasn't Created" +- + I change the quantities so that the purchase order for DistriPC includes 3 pieces and the + purchase order for Asustek includes 2 pieces. +- + !python {model: purchase.order}: | + purchase_id1= self.search(cr, uid, [('origin','=','TEST/TENDER/0001')]) + purchase_id2= self.search(cr, uid, [('origin','=','TE00001')]) + order_line1=self.browse(cr, uid, purchase_id1, context)[0].order_line[0].id + order_line2=self.browse(cr, uid, purchase_id2, context)[0].order_line[0].id + self.pool.get('purchase.order.line').write(cr, uid, [order_line1], {'product_qty':2}) + self.pool.get('purchase.order.line').write(cr, uid, [order_line2], {'product_qty':3}) + todo=[] + todo.append(purchase_id1[0]) + todo.append(purchase_id2[0]) + import netsvc + wf_service = netsvc.LocalService("workflow") + for ids in todo: + wf_service.trg_validate(uid, 'purchase.order',ids,'purchase_confirm', cr) + wf_service.trg_validate(uid, 'purchase.order',ids,'purchase_approve', cr) +- + !python {model: purchase.requisition}: | + ids =self.search(cr, uid, [('origin','=','TEST/TENDER/0001')]) + self.tender_done(cr,uid,ids) +- + I check that the delivery order of the customer is in state 'Waiting Goods' +- + !python {model: sale.order}: | + so = self.browse(cr, uid, ref("sale_order_so0")) + assert (so.picking_ids[0].state) =='confirmed',"Delivery Order not confirmed" + assert (so.picking_ids[0].move_lines[0].state=='waiting') +- + I receive the order of the supplier Asustek from the Incoming Products menu