[IMP,RM] sale:

Remove get_picking_details.yml
Update __openerp__.py 
put condition in workflow instead of signal
rename function and define doc in sale.py
remove extra import datetime from order_policy.yml
Try to improve the cancel_order.yml

bzr revid: dbr@tinyerp.com-20111123095334-62l8rwqkpq7ofyog
This commit is contained in:
DBR (OpenERP) 2011-11-23 15:23:34 +05:30
parent a8220e67c8
commit 672929cd5c
7 changed files with 32 additions and 47 deletions

View File

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

View File

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

View File

@ -221,7 +221,7 @@
<record id="trans_ship_ship_except" model="workflow.transition">
<field name="act_from" ref="act_ship"/>
<field name="act_to" ref="act_ship_except"/>
<field name="signal">ship_exception</field>
<field name="condition">test_state('canceled')</field>
</record>
<record id="trans_ship_except_ship" model="workflow.transition">

View File

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

View File

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

View File

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

View File

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