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"