[IMP]purchase: Improve code for Merge order [include the duplication] and also improve code for cancel order

bzr revid: dbr@tinyerp.com-20111019073646-n4jhu8mg2cerz82q
This commit is contained in:
DBR (OpenERP) 2011-10-19 13:06:46 +05:30
parent 9b45d19df1
commit c53c3195b5
4 changed files with 44 additions and 70 deletions

View File

@ -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': [

View File

@ -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"

View File

@ -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"

View File

@ -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'