Changes in workflow and created related functions in mrp_repair
bzr revid: ruchakpatel@gmail.com-20081021091508-pqt7k19aqpik4hyc
This commit is contained in:
@@ -125,9 +125,46 @@ class mrp_repair(osv.osv):
|
||||
self.write(cr, uid, [o.id], {'state': 'confirmed'})
|
||||
elif (o.invoice_method == 'b4repair'):
|
||||
self.write(cr, uid, [o.id], {'state': '2binvoiced'})
|
||||
elif (o.invoice_method == 'after_repair'):
|
||||
self.write(cr, uid, [o.id], {'state': 'confirmed'})
|
||||
self.pool.get('mrp.repair.lines').write(cr, uid, ids, {'state':'confirmed'})
|
||||
return True
|
||||
|
||||
def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed','done']):
|
||||
res = False
|
||||
invoices = {}
|
||||
invoice_ids = []
|
||||
|
||||
def action_confirm(self, cr, uid, ids, *args):
|
||||
for o in self.browse(cr,uid,ids):
|
||||
lines = []
|
||||
for line in o.operations:
|
||||
if (line.state in states) and not line.invoiced:
|
||||
lines.append(line.id)
|
||||
# created_lines = self.pool.get('sale.order.line').invoice_line_create(cr, uid, lines)
|
||||
# if created_lines:
|
||||
# invoices.setdefault(o.partner_id.id, []).append((o, created_lines))
|
||||
|
||||
picking_obj=self.pool.get('stock.picking')
|
||||
for val in invoices.values():
|
||||
if grouped:
|
||||
res = self._make_invoice(cr, uid, val[0][0], reduce(lambda x,y: x + y, [l for o,l in val], []))
|
||||
for o,l in val:
|
||||
self.write(cr, uid, [o.id], {'state' : 'progress'})
|
||||
if o.order_policy=='picking':
|
||||
picking_obj.write(cr,uid,map(lambda x:x.id,o.picking_ids),{'invoice_state':'invoiced'})
|
||||
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%d,%d)', (o.id, res))
|
||||
else:
|
||||
for order, il in val:
|
||||
res = self._make_invoice(cr, uid, order, il)
|
||||
invoice_ids.append(res)
|
||||
self.write(cr, uid, [order.id], {'state' : 'progress'})
|
||||
if order.order_policy=='picking':
|
||||
picking_obj.write(cr,uid,map(lambda x:x.id,order.picking_ids),{'invoice_state':'invoiced'})
|
||||
cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%d,%d)', (order.id, res))
|
||||
return res
|
||||
|
||||
|
||||
def action_ship_create(self, cr, uid, ids, *args):
|
||||
picking_id=False
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid).company_id
|
||||
for repair in self.browse(cr, uid, ids, context={}):
|
||||
@@ -182,7 +219,7 @@ class mrp_repair(osv.osv):
|
||||
})
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'mrp.procurement', proc_id, 'button_confirm', cr)
|
||||
|
||||
self.pool.get('mrp.repair.lines').write(cr, uid, [line.id], {'procurement_id': proc_id})
|
||||
elif line.product_id and line.product_id.product_tmpl_id.type=='service':
|
||||
proc_id = self.pool.get('mrp.procurement').create(cr, uid, {
|
||||
'name': line.name or 'Repair',
|
||||
@@ -196,7 +233,7 @@ class mrp_repair(osv.osv):
|
||||
})
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'mrp.procurement', proc_id, 'button_confirm', cr)
|
||||
|
||||
self.pool.get('mrp.repair.lines').write(cr, uid, [line.id], {'procurement_id': proc_id})
|
||||
else:
|
||||
#
|
||||
# No procurement because no product in the sale.order.line.
|
||||
@@ -208,6 +245,54 @@ class mrp_repair(osv.osv):
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
|
||||
self.write(cr, uid, [repair.id], val)
|
||||
|
||||
return True
|
||||
|
||||
def procurement_lines_get(self, cr, uid, ids, *args):
|
||||
res = []
|
||||
for order in self.browse(cr, uid, ids, context={}):
|
||||
for line in order.operations:
|
||||
if line.procurement_id:
|
||||
res.append(line.procurement_id.id)
|
||||
return res
|
||||
|
||||
def test_state(self, cr, uid, ids, mode, *args):
|
||||
assert mode in ('finished', 'canceled'), _("invalid mode for test_state")
|
||||
finished = True
|
||||
canceled = False
|
||||
write_done_ids = []
|
||||
write_cancel_ids = []
|
||||
for order in self.browse(cr, uid, ids, context={}):
|
||||
for line in order.operations:
|
||||
if line.procurement_id and (line.procurement_id.state != 'done') and (line.state!='done'):
|
||||
finished = False
|
||||
if line.procurement_id and line.procurement_id.state == 'cancel':
|
||||
canceled = True
|
||||
# if a line is finished (ie its procuremnt is done or it has not procuremernt and it
|
||||
# is not already marked as done, mark it as being so...
|
||||
if ((not line.procurement_id) or line.procurement_id.state == 'done') and line.state != 'done':
|
||||
write_done_ids.append(line.id)
|
||||
# ... same for canceled lines
|
||||
if line.procurement_id and line.procurement_id.state == 'cancel' and line.state != 'cancel':
|
||||
write_cancel_ids.append(line.id)
|
||||
if write_done_ids:
|
||||
self.pool.get('mrp.repair.lines').write(cr, uid, write_done_ids, {'state': 'done'})
|
||||
if write_cancel_ids:
|
||||
self.pool.get('mrp.repair.liness').write(cr, uid, write_cancel_ids, {'state': 'cancel'})
|
||||
|
||||
if mode=='finished':
|
||||
return finished
|
||||
elif mode=='canceled':
|
||||
return canceled
|
||||
|
||||
def action_ship_end(self, cr, uid, ids, context={}):
|
||||
for order in self.browse(cr, uid, ids):
|
||||
val = {}
|
||||
if (order.invoice_method=='after_repair'):
|
||||
val['state'] = '2binvoiced'
|
||||
else:
|
||||
val['state'] = 'confirmed'
|
||||
self.write(cr, uid, [order.id], val)
|
||||
return True
|
||||
mrp_repair()
|
||||
|
||||
|
||||
@@ -20,103 +20,229 @@
|
||||
<field name="action">action_wait()</field>
|
||||
<field name="split_mode">OR</field>
|
||||
</record>
|
||||
<record id="act_draft" model="workflow.activity">
|
||||
<record id="act_wait_invoice" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="flow_start">True</field>
|
||||
<field name="name">draft</field>
|
||||
<field name="split_mode">OR</field>
|
||||
<field name="name">wait_invoice</field>
|
||||
</record>
|
||||
<record id="act_confirmed" model="workflow.activity">
|
||||
<record id="act_wait_ship" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">confirmed</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">action_confirm()
|
||||
write({'state':'confirmed'})</field>
|
||||
</record>
|
||||
|
||||
<record id="act_2binvoiced" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">2binvoiced</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">write({'state':'2binvoiced'})</field>
|
||||
<field name="name">wait_ship</field>
|
||||
</record>
|
||||
|
||||
<record id="act_done" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">done</field>
|
||||
<field name="flow_stop">True</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">write({'state':'done'})</field>
|
||||
<field name="join_mode">AND</field>
|
||||
</record>
|
||||
|
||||
<record id="act_done" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">done</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">write({'state':'done'})</field>
|
||||
</record>
|
||||
|
||||
<record id="act_cancel" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">cancel</field>
|
||||
<field name="action">write({'state':'cancel'})</field>
|
||||
<field name="flow_stop">True</field>
|
||||
<field name="kind">stopall</field>
|
||||
<field name="action">action_cancel()</field>
|
||||
</record>
|
||||
<record id="act_cancel2" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">cancel2</field>
|
||||
<field name="flow_stop">True</field>
|
||||
<field name="kind">stopall</field>
|
||||
<field name="action">action_cancel()</field>
|
||||
</record>
|
||||
<record id="act_cancel3" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">cancel3</field>
|
||||
<field name="flow_stop">True</field>
|
||||
<field name="kind">stopall</field>
|
||||
<field name="action">action_cancel()</field>
|
||||
</record>
|
||||
|
||||
<record id="act_invoice" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">invoice</field>
|
||||
<field name="kind">subflow</field>
|
||||
<field name="subflow_id" search="[('name','=','account.invoice.basic')]"/>
|
||||
<field name="action">action_invoice_create()</field>
|
||||
</record>
|
||||
<record id="act_invoice_except" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">invoice_except</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">action_invoice_cancel()</field>
|
||||
</record>
|
||||
<record id="act_invoice_end" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">invoice_end</field>
|
||||
<field name="kind">dummy</field>
|
||||
</record>
|
||||
<record id="act_invoice_cancel" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">invoice_cancel</field>
|
||||
<field name="flow_stop">True</field>
|
||||
<field name="kind">stopall</field>
|
||||
<field name="action">action_cancel()</field>
|
||||
</record>
|
||||
|
||||
<record id="act_ship" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">ship</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">action_ship_create()</field>
|
||||
</record>
|
||||
|
||||
<record id="act_ship_except" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">ship_except</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">write({'state':'shipping_except'})</field>
|
||||
</record>
|
||||
<record id="act_ship_end" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">ship_end</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="action">action_ship_end()</field>
|
||||
</record>
|
||||
<record id="act_ship_cancel" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf_repair"/>
|
||||
<field name="name">ship_cancel</field>
|
||||
<field name="flow_stop">True</field>
|
||||
<field name="kind">stopall</field>
|
||||
<field name="action">action_cancel()</field>
|
||||
</record>
|
||||
|
||||
<!-- Transistion -->
|
||||
|
||||
<record id="trans_invoice_end_done" model="workflow.transition">
|
||||
<field name="act_from" ref="act_invoice_end"/>
|
||||
<field name="act_to" ref="act_done"/>
|
||||
</record>
|
||||
|
||||
<record id="trans_draft_router" model="workflow.transition">
|
||||
<field name="act_from" ref="act_draft"/>
|
||||
<field name="act_to" ref="act_router"/>
|
||||
<field name="signal">repair_confirm</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_router_confirmed" model="workflow.transition">
|
||||
<field name="act_from" ref="act_router"/>
|
||||
<field name="act_to" ref="act_confirmed"/>
|
||||
<field name="condition">(invoice_method=='none')</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_router_2binvoiced" model="workflow.transition">
|
||||
<field name="act_from" ref="act_router"/>
|
||||
<field name="act_to" ref="act_2binvoiced"/>
|
||||
<field name="condition">(invoice_method=='b4repair')</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_confirm_2binvoiced" model="workflow.transition">
|
||||
<field name="act_from" ref="act_confirmed"/>
|
||||
<field name="act_to" ref="act_2binvoiced"/>
|
||||
<field name="condition">(invoice_method=='after_repair')</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_draft_cancel" model="workflow.transition">
|
||||
<field name="act_from" ref="act_draft"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">cancel</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_confirmed_done" model="workflow.transition">
|
||||
<field name="act_from" ref="act_confirmed"/>
|
||||
<field name="act_to" ref="act_done"/>
|
||||
<field name="signal">repair_done</field>
|
||||
<record id="trans_wait_invoice_all_lines_invoiced" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_invoice"/>
|
||||
<field name="act_to" ref="act_invoice_end"/>
|
||||
<field name="signal">all_lines</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_confirmed_cancel" model="workflow.transition">
|
||||
<field name="act_from" ref="act_confirmed"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<record id="trans_router_wait_invoice_shipping" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_invoice"/>
|
||||
<field name="act_to" ref="act_invoice_end"/>
|
||||
<field name="condition">True</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_router_wait_invoice" model="workflow.transition">
|
||||
<field name="act_from" ref="act_router"/>
|
||||
<field name="act_to" ref="act_wait_invoice"/>
|
||||
</record>
|
||||
|
||||
<record id="trans_router_wait_ship" model="workflow.transition">
|
||||
<field name="act_from" ref="act_router"/>
|
||||
<field name="act_to" ref="act_wait_ship"/>
|
||||
</record>
|
||||
|
||||
<record id="trans_wait_invoice_cancel2" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_invoice"/>
|
||||
<field name="act_to" ref="act_cancel2"/>
|
||||
<field name="signal">cancel</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_2binvoiced_done" model="workflow.transition">
|
||||
<field name="act_from" ref="act_2binvoiced"/>
|
||||
<field name="act_to" ref="act_done"/>
|
||||
<field name="signal">make_invoice</field>
|
||||
<record id="trans_wait_ship_cancel3" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_ship"/>
|
||||
<field name="act_to" ref="act_cancel3"/>
|
||||
<field name="signal">cancel</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_2binvoiced_cancel" model="workflow.transition">
|
||||
<field name="act_from" ref="act_2binvoiced"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">cancel</field>
|
||||
<record id="trans_wait_ship_ship" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_ship"/>
|
||||
<field name="act_to" ref="act_ship"/>
|
||||
<field name="condition">(invoice_method=='after_repair' or invoice_method=='none')</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_wait_invoice_invoice" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_invoice"/>
|
||||
<field name="act_to" ref="act_invoice"/>
|
||||
<field name="condition">(invoice_method=='b4repair')</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_wait_invoice_invoice_manual" model="workflow.transition">
|
||||
<field name="act_from" ref="act_wait_invoice"/>
|
||||
<field name="act_to" ref="act_invoice"/>
|
||||
<field name="signal">manual_invoice</field>
|
||||
</record>
|
||||
|
||||
<record id="trans_invoice_invoice_end" model="workflow.transition">
|
||||
<field name="act_from" ref="act_invoice"/>
|
||||
<field name="act_to" ref="act_invoice_end"/>
|
||||
<field name="signal">subflow.paid</field>
|
||||
</record>
|
||||
<record id="trans_invoice_invoice_except" model="workflow.transition">
|
||||
<field name="act_from" ref="act_invoice"/>
|
||||
<field name="act_to" ref="act_invoice_except"/>
|
||||
<field name="signal">subflow.cancel</field>
|
||||
</record>
|
||||
<record id="trans_invoice_except_invoice" model="workflow.transition">
|
||||
<field name="act_from" ref="act_invoice_except"/>
|
||||
<field name="act_to" ref="act_invoice"/>
|
||||
<field name="signal">invoice_recreate</field>
|
||||
</record>
|
||||
<record id="trans_invoice_except_invoice_end" model="workflow.transition">
|
||||
<field name="act_from" ref="act_invoice_except"/>
|
||||
<field name="act_to" ref="act_invoice_end"/>
|
||||
<field name="signal">invoice_corrected</field>
|
||||
</record>
|
||||
<record id="trans_invoice_except_invoice_cancel" model="workflow.transition">
|
||||
<field name="act_from" ref="act_invoice_except"/>
|
||||
<field name="act_to" ref="act_invoice_cancel"/>
|
||||
<field name="signal">invoice_cancel</field>
|
||||
</record>
|
||||
<record id="trans_ship_end_done" model="workflow.transition">
|
||||
<field name="act_from" ref="act_ship_end"/>
|
||||
<field name="act_to" ref="act_done"/>
|
||||
</record>
|
||||
|
||||
<record id="trans_ship_ship_end" model="workflow.transition">
|
||||
<field name="act_from" ref="act_ship"/>
|
||||
<field name="act_to" ref="act_ship_end"/>
|
||||
<field name="trigger_model">mrp.procurement</field>
|
||||
<field name="trigger_expr_id">procurement_lines_get()</field>
|
||||
<field name="condition">test_state('finished')</field>
|
||||
</record>
|
||||
<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="trigger_model">mrp.procurement</field>
|
||||
<field name="trigger_expr_id">procurement_lines_get()</field>
|
||||
-->
|
||||
<field name="condition">test_state('canceled')</field>
|
||||
</record>
|
||||
<record id="trans_ship_except_ship" model="workflow.transition">
|
||||
<field name="act_from" ref="act_ship_except"/>
|
||||
<field name="act_to" ref="act_ship"/>
|
||||
<field name="signal">ship_recreate</field>
|
||||
</record>
|
||||
<record id="trans_ship_except_ship_end" model="workflow.transition">
|
||||
<field name="act_from" ref="act_ship_except"/>
|
||||
<field name="act_to" ref="act_ship_end"/>
|
||||
<field name="signal">ship_corrected</field>
|
||||
</record>
|
||||
<record id="trans_ship_except_ship_cancel" model="workflow.transition">
|
||||
<field name="act_from" ref="act_ship_except"/>
|
||||
<field name="act_to" ref="act_ship_cancel"/>
|
||||
<field name="signal">ship_cancel</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
||||
Reference in New Issue
Block a user