diff --git a/addons/sale/sale_demo.xml b/addons/sale/sale_demo.xml
index b7d1f406249..a5314a8f3e8 100644
--- a/addons/sale/sale_demo.xml
+++ b/addons/sale/sale_demo.xml
@@ -255,8 +255,8 @@
make_to_order
15
-
-
+
+
diff --git a/addons/sale/test/process/cancel_order.yml b/addons/sale/test/process/cancel_order.yml
index 5619176d655..e5d971c419c 100644
--- a/addons/sale/test/process/cancel_order.yml
+++ b/addons/sale/test/process/cancel_order.yml
@@ -1,138 +1,92 @@
-
In order to test the cancel sale order.
-
- I try to cancel sale order and It's order policy is Manual.
+ Now I cancel quotation.
-
!python {model: sale.order}: |
- try:
- self.action_cancel(cr, uid, [ref("order4")])
- except Exception,e:
- pass
+ self.action_cancel(cr, uid, [ref("order7")])
+-
+ I check state of quotation after cancelled.
+-
+ !assert {model: sale.order, id: order7}:
+ - state == 'cancel'
+-
+ I set cancelled quotation to draft.
+-
+ !python {model: sale.order}: |
+ self.action_cancel_draft(cr, uid, [ref("order7")])
+
+-
+ I confirm order
+-
+ !workflow {model: sale.order, action: order_confirm, ref: order7}
+-
+ I send delivery in two shipments, so I am doing a partial delivery order.
+-
+ !python {model: stock.picking}: |
+ delivery_orders = self.search(cr, uid, [('sale_id','=',ref("order7"))])
+ first_picking = self.browse(cr, uid, delivery_orders[0], context=context)
+ if first_picking.force_assign(context=context):
+ print first_picking.move_lines
+ first_move = first_picking.move_lines[0]
+ values = {'move%s'%(first_move.id): {'product_qty': 5}}
+ first_picking.do_partial(values, context=context)
+-
+ Now I cancel a lastest shipment
+-
+ !python {model: stock.picking}: |
+ import netsvc
+ delivery_orders = self.search(cr, uid, [('sale_id','=',ref("order7"))])
+ last_delivery_order_id = delivery_orders[-1]
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'stock.picking', last_delivery_order_id, 'button_cancel', cr)
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ I check order status in "Ship Exception".
+-
+ !assert {model: sale.order, id: order7}:
+ - state == "ship_except"
+-
+ Now I regenerate shipment
+-
+ !workflow {model: sale.order, action: ship_recreate, ref: order7}
+-
+ I check state of order in 'In Progress'.
+-
+ !assert {model: sale.order, id: order7}:
+ - state == 'progress'
+-
+ I make invoice for order
+-
+ !workflow {model: sale.order, action: manual_invoice, ref: order7}
-
To cancel the sale order from Invoice Exception, I have to cancel the invoice of sale order.
-
!python {model: sale.order}: |
- import netsvc
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'sale.order', ref('order3'), 'order_confirm', cr)
-
- invoice_ids = [x.id for x in self.browse(cr, uid, ref("order3")).invoice_ids]
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice', invoice, 'invoice_cancel', cr)
-
-#code introduced by revid: mtr@tinyerp.com-20110915060653-cbedeckll1ijre66
-#form 'lp:~openerp-dev/openobject-addons/trunk-sale_coverage-mtr' branch
+ invoice_ids = self.browse(cr, uid, ref("order7")).invoice_ids
+ first_invoice_id = invoice_ids[0]
+ wf_service.trg_validate(uid, 'account.invoice', first_invoice_id, 'invoice_cancel', cr)
-
I check order status in "Invoice Exception" and related invoice is in cancel state.
-
- !python {model: sale.order}: |
- order = self.browse(cr, uid, ref("order3"))
- assert order.invoice_ids[0].state == "cancel","order's related invoice should be cancelled"
- assert order.state == "invoice_except", "Order should be in Invoice Exception state after cancel Invoice"
+ !assert {model: sale.order, id: order7}:
+ - state == "invoice_except", "Order should be in Invoice Exception state after cancel Invoice"
-
Then I click on the Ignore Exception button.
-
- !workflow {model: sale.order, action: invoice_corrected, ref: order3}
+ !workflow {model: sale.order, action: invoice_corrected, ref: order7}
+
-
- And then again I set the invoice to draft state.
+ I check state of order in 'In Progress'.
-
- !python {model: account.invoice}: |
- sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("order3"))
- invoice_id = self.search(cr, uid, [('origin','=',so.name),('state','=','cancel')])
- self.action_cancel_draft(cr, uid, invoice_id, ({'active_model': 'ir.ui.menu','active_ids': [ref("sale.menu_sale_order")], 'type': 'out_invoice', 'active_id': ref("sale.menu_sale_order")},))
--
- Now I creating a partial picking.
--
- !python {model: sale.order}: |
- import netsvc
- import time
- order = self.browse(cr, uid, ref("order4"))
- assert order.picking_ids, "Picking is not created for this sale order"
- partial_pick = self.pool.get('stock.partial.picking')
- stock = self.pool.get('stock.picking')
- pick_ids = [x.id for x in self.browse(cr, uid, ref("order4")).picking_ids]
- data = stock.force_assign(cr, uid, pick_ids)
- if data == True:
- context={'active_model': 'stock.picking','active_ids': pick_ids}
- values = {'move_ids': [(1,order.picking_ids[0].move_lines[0].id,{'update_cost': 0, 'product_id': ref('product.product_product_pc1'), 'product_uom': ref('product.product_uom_unit'), 'currency': False, 'prodlot_id': False, 'cost': False, 'location_dest_id': ref('stock.stock_location_customers'), 'location_id': ref('stock.stock_location_stock'), 'quantity': 5})]}
- stock.do_partial(cr, uid, pick_ids, values, context)
--
- Now I cancel a partial picking.
--
- !python {model: sale.order}: |
- import netsvc
- order = self.browse(cr, uid, ref("order4"))
- assert len(order.picking_ids) >= 2,'After partial picking there must be two or more picking'
- assert order.picking_ids[0].state == 'assigned',"Partial Picking should be in 'Ready to progress' state"
- #assert order.picking_ids[0].move_lines[0].product_qty == 10.0,"Partial Picking product quantity must be 10.0"
- pick_ids = order.picking_ids
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'stock.picking', order.picking_ids[0].id, 'button_cancel', cr)
--
- I check partial picking is in cancel state.
--
- !python {model: sale.order}: |
- import netsvc
- order = self.browse(cr, uid, ref("order4"))
- print order.state,order.picking_ids[0]
- assert order.picking_ids[0].state == 'cancel',"After cancel the picking should be in cancelled state"
--
- The scheduler runs.
--
- !function {model: procurement.order, name: run_scheduler}:
- - model: procurement.order
- search: "[]"
--
- I check order status in "Ship Exception".
--
- !python {model: sale.order}: |
- import netsvc
- order = self.browse(cr, uid, ref("order4"))
- #print order.state,order.picking_ids[0]
-
-#code introduced by revid: mtr@tinyerp.com-20110921101038-xf1l3whyblmjbdx9
-#form 'lp:~openerp-dev/openobject-addons/trunk-sale_coverage-mtr' branch
--
- Then I click on the "Recreate Packing" button on sale order
--
- !workflow {model: sale.order, action: ship_recreate, ref: order4}
--
- I verfiy that sale order state is now 'In Progress'.
--
- !assert {model: sale.order, id: order4}:
+ !assert {model: sale.order, id: order7}:
- state == 'progress'
--
- I verify that picking is generated for sale order.
--
- !python {model: stock.picking}: |
- order = self.browse(cr, uid, ref("order4"))
- picking_id = self.search(cr, uid, [('sale_id','=',ref("order4"))])
- assert picking_id,"Picking has not been generated"
--
- Now I need to cancel the rekated picking of sale order.
--
- !python {model: sale.order}: |
- import netsvc
- order = self.browse(cr, uid, ref("order4"))
- picking_ids = [x.id for x in self.browse(cr, uid, ref("order4")).picking_ids]
- wf_service = netsvc.LocalService("workflow")
- for picking in picking_ids:
- wf_service.trg_validate(uid, 'stock.picking', picking, 'button_cancel', cr)
--
- Now I am able to cancel this sale order.
--
- !python {model: sale.order}: |
- self.action_cancel(cr, uid, [ref("order4")])
--
- I check that sale order is cancelled.
--
- !assert {model: sale.order, id: order4}:
- - state == 'cancel'
--
- Again set cancelled order to draft.
--
- !python {model: sale.order}: |
- self.action_cancel_draft(cr, uid, [ref("order4")])
+
+
+