From c53c3195b5b09cf138ca19205055ebef914d8b98 Mon Sep 17 00:00:00 2001 From: "DBR (OpenERP)" Date: Wed, 19 Oct 2011 13:06:46 +0530 Subject: [PATCH] [IMP]purchase: Improve code for Merge order [include the duplication] and also improve code for cancel order bzr revid: dbr@tinyerp.com-20111019073646-n4jhu8mg2cerz82q --- addons/purchase/__openerp__.py | 4 +- .../test/process/invoice_from_reception.yml | 19 +++--- .../test/process/merge_purchase_order.yml | 59 ++++--------------- .../test/process/purchase_order_cancel.yml | 32 ++++++---- 4 files changed, 44 insertions(+), 70 deletions(-) diff --git a/addons/purchase/__openerp__.py b/addons/purchase/__openerp__.py index d4b49adc52b..60d4be1e7dc 100644 --- a/addons/purchase/__openerp__.py +++ b/addons/purchase/__openerp__.py @@ -65,8 +65,8 @@ Dashboard for purchase management that includes: 'test/process/invoice_from_reception.yml', #'test/process/purchase_from_picking.yml', #'test/process/procurement_buy.yml', - #'test/process/merge_purchase_order.yml', - #'test/process/purchase_order_cancel.yml', + 'test/process/merge_purchase_order.yml', + 'test/process/purchase_order_cancel.yml', #'test/process/purchase_report.yml', ], 'demo': [ diff --git a/addons/purchase/test/process/invoice_from_reception.yml b/addons/purchase/test/process/invoice_from_reception.yml index 178d2361e56..e590985136b 100644 --- a/addons/purchase/test/process/invoice_from_reception.yml +++ b/addons/purchase/test/process/invoice_from_reception.yml @@ -4,19 +4,24 @@ !python {model: purchase.order}: | self.action_picking_create(cr, uid, [ref("order_purchase2")]) - - I create an invoice for order by clicking on "Create Invoice" wizard + I create reception for order where invoice control is 'Based on receptions'. - - !python {model: stock.invoice.onshipping}: | - import time - pick_ids = [x.id for x in self.pool.get('purchase.order').browse(cr, uid, ref("order_purchase2")).picking_ids] - id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.expenses_journal')},{'active_ids': pick_ids, 'active_model': 'stock.picking'}) - self.create_invoice(cr, uid, [id], {"active_ids": pick_ids, "active_id": pick_ids[0]}) + !python {model: purchase.order}: | + self.action_invoice_create(cr, uid, [ref("order_purchase2")]) - Reception is ready for process so now done the process. - !python {model: purchase.order}: | pick_ids = [x.id for x in self.browse(cr, uid, ref("order_purchase2")).picking_ids] self.pool.get('stock.picking').validate_picking(cr, uid, pick_ids) +- + I create an invoice for order by clicking on "Create Invoice" wizard +- + !python {model: purchase.order}: | + + stock = self.pool.get('stock.picking') + pick_ids = [x.id for x in self.browse(cr, uid, ref("order_purchase2")).picking_ids] + stock.action_invoice_create(cr, uid,pick_ids, ref('account.expenses_journal')) - Now,put all Purchase Order invoice in open state. - @@ -24,7 +29,6 @@ import netsvc purchase = self.pool.get('purchase.order') invoice_ids = [x.id for x in purchase.browse(cr, uid, ref("order_purchase2")).invoice_ids] - invoice_ids.append([x.id for x in purchase.browse(cr, uid, ref("order_purchase1")).invoice_ids][0]) wf_service = netsvc.LocalService("workflow") for invoice in invoice_ids: wf_service.trg_validate(uid, 'account.invoice', invoice, 'invoice_open', cr) @@ -33,4 +37,3 @@ - !python {model: purchase.order}: | assert self.browse(cr, uid, ref("order_purchase2")).shipped == True,"Reception is not delivered" - assert self.browse(cr, uid, ref("order_purchase1")).invoiced == True,"Purchase order is not Invoiced & Paid" diff --git a/addons/purchase/test/process/merge_purchase_order.yml b/addons/purchase/test/process/merge_purchase_order.yml index 29c63519b05..3cf6712d982 100644 --- a/addons/purchase/test/process/merge_purchase_order.yml +++ b/addons/purchase/test/process/merge_purchase_order.yml @@ -4,56 +4,17 @@ PO belong to same suppliers. PO have same stock location and same price list. - - I create first purchase order for 'Metal Cleats' product. + Initially purchase order is in the draft state for merging those orders. - - !record {model: purchase.order, id: purchase_order_po2}: - company_id: base.main_company - date_order: !eval time.strftime('%Y-%m-%d') - invoice_method: order - location_id: stock.stock_location_stock - order_line: - - date_planned: !eval time.strftime('%Y-%m-%d') - name: Metal Cleats - price_unit: 100.0 - product_id: product.product_product_metalcleats0 - product_qty: 5 - product_uom: product.product_uom_unit - state: draft - partner_address_id: base.res_partner_address_7 - partner_id: base.res_partner_4 - pricelist_id: purchase.list0 + !python {model: purchase.order}: | + assert self.browse(cr, uid, ref("order_purchase3")).state == 'draft',"Purchase order should be in draft state" - - Initially purchase order is in the draft state. -- - !assert {model: purchase.order, id: purchase_order_po2}: - - state == 'draft' -- - I create second purchase order for 'Side Panel' product. -- - !record {model: purchase.order, id: purchase_order_po3}: - company_id: base.main_company - date_order: !eval time.strftime('%Y-%m-%d') - invoice_method: order - location_id: stock.stock_location_stock - order_line: - - date_planned: !eval time.strftime('%Y-%m-%d') - name: Metal Cleats - price_unit: 100.0 - product_id: product.product_product_sidepanel0 - product_qty: 5 - product_uom: product.product_uom_unit - state: draft - partner_address_id: base.res_partner_address_7 - partner_id: base.res_partner_4 - pricelist_id: purchase.list0 -- - Initially purchase order is in the draft state. -- - !assert {model: purchase.order, id: purchase_order_po3}: - - state == 'draft' -- - I have merged first and second purchase order which are in draft state, belong to the same supplier,have same stock location, same pricelist. + I have to merge the purchase order so for that I create one duplicate order. - !python {model: purchase.order.group}: | - context.update({'active_ids':[ref('purchase_order_po2'),ref('purchase_order_po3')]}) - self.merge_orders(cr, uid, context.get('active_ids'), context) + purchase = self.pool.get('purchase.order') + purchase_id = purchase.copy(cr, uid, ref("order_purchase3")) + assert purchase.browse(cr, uid, purchase_id).state == 'draft',"Purchase order(copy) should be draft" + self.merge_orders(cr, uid, [1], {'active_ids':[ref('order_purchase3'),purchase_id],'active_model': 'purchase.order','active_id':ref('order_purchase3')}) + assert purchase.browse(cr, uid, ref("order_purchase3")).state == 'cancel',"Purchase order should be cancelled" + assert purchase.browse(cr, uid, purchase_id).state == 'cancel',"After merge purchase order(copy) should be cancelled" \ No newline at end of file diff --git a/addons/purchase/test/process/purchase_order_cancel.yml b/addons/purchase/test/process/purchase_order_cancel.yml index a2b3f42f2ec..ee95ceee6e7 100644 --- a/addons/purchase/test/process/purchase_order_cancel.yml +++ b/addons/purchase/test/process/purchase_order_cancel.yml @@ -1,40 +1,50 @@ - - In order to test to Cancel purchase order from Different State,I start cancel the previously created PO. + In order to test to Cancel purchase order from Different State,I start cancel the confirm order. - Now I have to cancel previously created purchase order for product 'Side Panel'. - I have to first cancel Picking of Purchase order . - !python {model: stock.picking}: | - search_ids=self.search(cr, uid, [('purchase_id', '=', ref("purchase_order_po1"))]) + search_ids=self.search(cr, uid, [('purchase_id', '=', ref("order_purchase4"))]) self.action_cancel(cr, uid, search_ids) - - Now I am able to cancel purchase order for product 'Side Panel' because related picking was cancel. + Now I am able to cancel purchase order because related picking was cancel. - !python {model: purchase.order}: | - self.action_cancel(cr, uid, [ref("purchase_order_po1")]) + self.action_cancel(cr, uid, [ref("order_purchase4")]) - Initially purchase order is in the cancel state. - - !assert {model: purchase.order, id: purchase_order_po1}: + !assert {model: purchase.order, id: order_purchase4}: - state == 'cancel' - - Now again set purchase order for product 'Side Panel' to draft state. + Now again set purchase order to draft state. - !python {model: purchase.order}: | - self.action_cancel_draft(cr, uid, [ref("purchase_order_po1")]) + self.action_cancel_draft(cr, uid, [ref("order_purchase4")]) - Initially purchase order is in the draft state. - - !assert {model: purchase.order, id: purchase_order_po1}: + !assert {model: purchase.order, id: order_purchase4}: - state == 'draft' - - I have to cancel PO form draft state. + I have to cancel order form draft state. - !python {model: purchase.order}: | - self.action_cancel(cr, uid, [ref("purchase_order_po1")]) + self.action_cancel(cr, uid, [ref("order_purchase4")]) - Initially purchase order is in the cancel state. - - !assert {model: purchase.order, id: purchase_order_po1}: + !assert {model: purchase.order, id: order_purchase4}: - state == 'cancel' +- + Now again put it in draft state. +- + !python {model: purchase.order}: | + self.action_cancel_draft(cr, uid, [ref("order_purchase4")]) +- + Initially purchase order is in the draft state. +- + !assert {model: purchase.order, id: order_purchase4}: + - state == 'draft'