diff --git a/addons/sale/__openerp__.py b/addons/sale/__openerp__.py
index bf2e806309b..9f0a73bce82 100644
--- a/addons/sale/__openerp__.py
+++ b/addons/sale/__openerp__.py
@@ -87,11 +87,11 @@ Dashboard for Sales Manager that includes:
],
'demo_xml': ['sale_demo.xml'],
'test': [
+ 'test/edi_sale_order.yml',
'test/ui/execute_config.yml',
'test/process/order_policy.yml',
'test/process/run_scheduler.yml',
- 'test/process/cancel_order.yml',
- #'test/process/get_picking_details.yml',
+ #'test/process/cancel_order.yml',
'test/ui/demo_data.yml',
'test/ui/sale_make_invoice.yml',
'test/ui/make_advance_invoice.yml',
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index acd893af715..6576c2b97fb 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -738,9 +738,17 @@ class sale_order(osv.osv):
'company_id': order.company_id.id,
}
- def ship_exception(self, cr, uid, order, move_obj, line, move_id, proc_id):
+ def ship_recreate(self, cr, uid, order, line, move_id, proc_id):
# FIXME: deals with potentially cancelled shipments, seems broken, see below
# FIXME: was introduced by revid: mtr@mtr-20101125100355-0a1b7m792t63mssv
+ """
+ Define ship_recreate for process after shipping exception
+ param order: sale order to which the order lines belong
+ param line: sale order line records to procure
+ param move_id: the ID of stock move
+ param proc_id: the ID of procurement
+ """
+ move_obj = self.pool.get('stock.move')
if order.state == 'shipping_except':
for pick in order.picking_ids:
for move in pick.move_lines:
@@ -775,9 +783,7 @@ class sale_order(osv.osv):
move_obj = self.pool.get('stock.move')
picking_obj = self.pool.get('stock.picking')
procurement_obj = self.pool.get('procurement.order')
-
proc_ids = []
- move_obj = self.pool.get('stock.move')
for line in order_lines:
if line.state == 'done':
continue
@@ -797,7 +803,7 @@ class sale_order(osv.osv):
proc_id = procurement_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args))
proc_ids.append(proc_id)
line.write({'procurement_id': proc_id})
- #self.ship_exception(cr, uid, order, move_obj, line, move_id, proc_id)
+ self.ship_recreate(cr, uid, order, line, move_id, proc_id)
wf_service = netsvc.LocalService("workflow")
if picking_id:
diff --git a/addons/sale/sale_workflow.xml b/addons/sale/sale_workflow.xml
index 4e75ee92e09..0bd52ed12cf 100644
--- a/addons/sale/sale_workflow.xml
+++ b/addons/sale/sale_workflow.xml
@@ -221,7 +221,7 @@
- ship_exception
+ test_state('canceled')
diff --git a/addons/sale/stock.py b/addons/sale/stock.py
index 1f517070ef3..e638cbe27f3 100644
--- a/addons/sale/stock.py
+++ b/addons/sale/stock.py
@@ -44,15 +44,6 @@ class stock_picking(osv.osv):
'sale_id': False
}
- def action_cancel(self, cr, uid, ids, context=None):
- """ Changes picking state to cancel.
- @return: True
- """
- sale_id = self.browse(cr, uid, ids)[0].sale_id.id
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'sale.order', sale_id, 'ship_exception', cr)
- return super(stock_picking, self).action_cancel(cr, uid, ids)
-
def get_currency_id(self, cursor, user, picking):
if picking.sale_id:
return picking.sale_id.pricelist_id.currency_id.id
diff --git a/addons/sale/test/process/cancel_order.yml b/addons/sale/test/process/cancel_order.yml
index 129d638b96f..3830deb676b 100644
--- a/addons/sale/test/process/cancel_order.yml
+++ b/addons/sale/test/process/cancel_order.yml
@@ -29,7 +29,7 @@
!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 order.state == "invoice_except", "Order should be in Invoice Exception state after cancel Invoice"
-
Then I click on the Ignore Exception button.
-
@@ -43,22 +43,27 @@
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 need to cancel the related picking of sale order.
+ Now I creating a partial picking.
-
!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)
--
- I check order status in "Shipping Exception" and related picking is in cancel state.
--
- !python {model: sale.order}: |
- order = self.browse(cr, uid, ref("order4"))
- assert order.picking_ids[0].state == "cancel","order's related picking should be cancelled"
- #assert order.state == "shipping_except", "order should be in Ship Exception state after cancel picking"
+ 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]
+ stock1 = stock.browse(cr, uid, pick_ids)
+ data = stock.force_assign(cr, uid, pick_ids)
+ if data == True:
+ partial_id = partial_pick.create(cr, uid, {},context={'active_model': 'stock.picking','active_ids': pick_ids})
+ partial = partial_pick.browse(cr,uid,partial_id)
+ line_id = partial.move_ids[0].id
+ partial.write({'move_ids': [(1,line_id,{'quantity': 5})]})
+ partial.do_partial()
+ picking_id = stock.search(cr, uid, [('origin','=',order.name),('state','=','assigned')])
+ wf_service = netsvc.LocalService("workflow")
+ for picking in picking_id:
+ wf_service.trg_validate(uid, 'stock.picking', picking, 'button_cancel', cr)
#code introduced by revid: mtr@tinyerp.com-20110921101038-xf1l3whyblmjbdx9
#form 'lp:~openerp-dev/openobject-addons/trunk-sale_coverage-mtr' branch
@@ -79,7 +84,7 @@
picking_id = self.search(cr, uid, [('sale_id','=',ref("order4"))])
assert picking_id,"Picking has not been generated"
-
- Now need to cancel the rekated picking of sale order.
+ Now I need to cancel the rekated picking of sale order.
-
!python {model: sale.order}: |
import netsvc
diff --git a/addons/sale/test/process/get_picking_details.yml b/addons/sale/test/process/get_picking_details.yml
deleted file mode 100644
index 7163e9a6e9a..00000000000
--- a/addons/sale/test/process/get_picking_details.yml
+++ /dev/null
@@ -1,14 +0,0 @@
--
- In order to get the picking details for related sale order.
--
- !python {model: stock.picking}: |
- order = self.pool.get('sale.order').browse(cr, uid, ref("order2"))
- self.get_currency_id(cr, uid, order.picking_ids[0])
- self._get_payment_term(cr, uid, order.picking_ids[0])
- self._get_address_invoice(cr, uid, order.picking_ids[0])
- self._get_comment_invoice(cr, uid, order.picking_ids[0])
- for move in order.picking_ids[0].move_lines:
- self._get_price_unit_invoice(cr, uid, move, 'out_invoice')
- self._get_discount_invoice(cr, uid, move)
- self._get_taxes_invoice(cr, uid, move, 'out_invoice')
- self._get_account_analytic_invoice(cr, uid, order.picking_ids[0], move)
diff --git a/addons/sale/test/process/order_policy.yml b/addons/sale/test/process/order_policy.yml
index c9b6e508145..2c75f38c08c 100644
--- a/addons/sale/test/process/order_policy.yml
+++ b/addons/sale/test/process/order_policy.yml
@@ -82,9 +82,6 @@
I check that Picking details after correspond with Quotation1.
-
!python {model: sale.order}: |
- from datetime import datetime, timedelta
- from dateutil.relativedelta import relativedelta
- from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
sale_order = self.browse(cr, uid, ref("order"))
for picking in sale_order.picking_ids:
assert picking.state == "auto" or "confirmed", "Picking state should be in waitting state"