Use function name in workflow instead of python code

This commit is contained in:
Nicolas Évrard
2011-08-11 16:34:34 +02:00
parent baa3c1cd01
commit ca05a112ed
2 changed files with 144 additions and 48 deletions
+102
View File
@@ -723,6 +723,108 @@ class Purchase(ModelWorkflow, ModelSQL, ModelView):
for line in purchase.lines:
line_obj.create_move(line)
def wkf_draft(self, purchase):
self.write(purchase.id, {'state': 'draft'})
def wkf_quotation(self, purchase):
self.check_for_quotation(purchase.id)
self.set_reference(purchase.id)
self.write(purchase.id, {'state': 'quotation'})
def wkf_confirmed(self, purchase):
self.set_purchase_date(purchase.id)
self.write(purchase.id, {'state': 'confirmed'})
def wkf_invoice_waiting(self, purchase):
self.create_invoice(purchase.id)
self.write(purchase.id, {'invoice_state': 'waiting'})
def wkf_invoice_exception(self, purchase):
self.write(purchase.id, {'invoice_state': 'exception'})
def wkf_invoice_done(self, purchase):
self.write(purchase.id, {'invoice_state': 'paid'})
def wkf_shipment_waiting(self, purchase):
self.write(purchase.id, {'shipment_state': 'waiting'})
self.create_move(purchase.id)
def wkf_shipment_exception(self, purchase):
self.write(purchase.id, {'shipment_state': 'exception'})
def wkf_invoice_shipment(self, purchase):
self.create_invoice(purchase.id)
self.write(purchase.id, {'invoice_state': 'waiting'})
def wkf_invoice_shipment_waiting(self, purchase):
self.write(purchase.id,
{'invoice_state': 'waiting', 'shipment_state': 'received'})
def wkf_invoice_shipment_exception(self, purchase):
self.write(purchase.id, {'invoice_state': 'exception'})
def wkf_invoice_shipment_done(self, purchase):
self.write(purchase.id, {'invoice_state': 'paid'})
def wkf_invoice_shipment_method_done(self, purchase):
self.write(purchase.id, {'shipment_state': 'received'})
def wkf_done(self, purchase):
self.write(purchase.id, {'state': 'done'})
def wkf_cancel(self, purchase):
self.write(purchase.id, {'state': 'cancel'})
def wkf_draft2quotation(self, purchase):
return bool(purchase.lines)
def wkf_invoice_method2invoice_waiting(self, purchase):
return purchase.invoice_method == 'order'
def wkf_invoice_method2invoice_done(self, purchase):
return purchase.invoice_method != 'order'
def wkf_triggered_invoices(self, purchase):
return [x.id for x in purchase.invoices]
def wkf_invoice_waiting2invoice_purchase_exception(self, purchase):
return purchase.invoice_exception
def wkf_invoice_waiting2invoice_done(self, purchase):
return purchase.invoice_paid
def wkf_shipment_waiting2shipment_exception(self, purchase):
return purchase.shipment_exception
def wkf_shipment_waiting2invoice_shipment_method(self, purchase):
return not purchase.shipment_exception
def wkf_shipment_waiting2invoice_shipment_method_nosignal(self, purchase):
return purchase.shipment_done
def wkf_invoice_shipment_method2invoice_shipment(self, purchase):
return purchase.invoice_method == 'shipment'
def wkf_invoice_shipment_method2inv_shipment_method_done(self, purchase):
return purchase.invoice_method != 'shipment' and purchase.shipment_done
def wkf_invoice_shipment_method2shipment_waiting(self, purchase):
return (purchase.invoice_method != 'shipment'
and not purchase.shipment_done)
def wkf_invoice_shipment2shipment_waiting(self, purchase):
return not purchase.shipment_done
def wkf_invoice_shipment2waiting_invoice_shipment(self, purchase):
return purchase.shipment_done
def wkf_waiting_invoice_shipment2invoice_shipment_exception(self,
purchase):
return purchase.invoice_exception
def wkf_waiting_invoice_shipment2invoice_shipment_done(self, purchase):
return purchase.invoice_paid
Purchase()
+42 -48
View File
@@ -382,22 +382,19 @@ this repository contains the full copyright notices and license terms. -->
<record model="workflow.activity" id="purchase_activity_draft">
<field name="name">Draft</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'state': 'draft'})</field>
<field name="method">wkf_draft</field>
<field name="flow_start" eval="True"/>
</record>
<record model="workflow.activity" id="purchase_activity_quotation">
<field name="name">Quotation</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">check_for_quotation()&#10;set_reference()&#10;write({'state': 'quotation'})</field>
<field name="method">wkf_quotation</field>
</record>
<record model="workflow.activity" id="purchase_activity_confirmed">
<field name="name">Confirmed</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="split_mode">AND</field>
<field name="kind">function</field>
<field name="action">set_purchase_date()&#10;write({'state': 'confirmed'})</field>
<field name="method">wkf_confirmed</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_method">
<field name="name">Invoice Method</field>
@@ -407,20 +404,17 @@ this repository contains the full copyright notices and license terms. -->
<record model="workflow.activity" id="purchase_activity_waiting_invoice_purchase">
<field name="name">Waiting Invoice</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">create_invoice()&#10;write({'invoice_state': 'waiting'})</field>
<field name="method">wkf_invoice_waiting</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_purchase_exception">
<field name="name">Invoice Exception</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'invoice_state': 'exception'})</field>
<field name="method">wkf_invoice_exception</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_done">
<field name="name">Invoice Done</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'invoice_state': 'paid'})</field>
<field name="method">wkf_invoice_done</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_method_done">
<field name="name">Invoice Method Done</field>
@@ -429,14 +423,12 @@ this repository contains the full copyright notices and license terms. -->
<record model="workflow.activity" id="purchase_activity_waiting_shipment">
<field name="name">Waiting Shipment</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'shipment_state': 'waiting'})&#10;create_move()</field>
<field name="method">wkf_shipment_waiting</field>
</record>
<record model="workflow.activity" id="purchase_activity_shipment_exception">
<field name="name">Shipment Exception</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'shipment_state': 'exception'})</field>
<field name="method">wkf_shipment_exception</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_shipment_method">
<field name="name">Invoice Shipment Method</field>
@@ -446,51 +438,45 @@ this repository contains the full copyright notices and license terms. -->
<record model="workflow.activity" id="purchase_activity_invoice_shipment">
<field name="name">Invoice Shipment</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">create_invoice()&#10;write({'invoice_state': 'waiting'})</field>
<field name="method">wkf_invoice_shipment</field>
</record>
<record model="workflow.activity" id="purchase_activity_waiting_invoice_shipment">
<field name="name">Waiting Invoice Shipment</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'invoice_state': 'waiting', 'shipment_state': 'received'})</field>
<field name="method">wkf_invoice_shipment_waiting</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_shipment_exception">
<field name="name">Invoice Shipment Exception</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="action">write({'invoice_state': 'exception'})</field>
<field name="method">wkf_invoice_shipment_exception</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_shipment_done">
<field name="name">Invoice Shipment Done</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'invoice_state': 'paid'})</field>
<field name="method">wkf_invoice_shipment_done</field>
</record>
<record model="workflow.activity" id="purchase_activity_invoice_shipment_method_done">
<field name="name">Invoice Shipment Method Done</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'shipment_state': 'received'})</field>
<field name="method">wkf_invoice_shipment_method_done</field>
</record>
<record model="workflow.activity" id="purchase_activity_done">
<field name="name">Done</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="join_mode">AND</field>
<field name="kind">function</field>
<field name="action">write({'state': 'done'})</field>
<field name="method">wkf_done</field>
<field name="flow_stop" eval="True"/>
</record>
<record model="workflow.activity" id="purchase_activity_cancel">
<field name="name">Canceled</field>
<field name="workflow" ref="purchase_workflow"/>
<field name="kind">function</field>
<field name="action">write({'state': 'cancel'})</field>
<field name="method">wkf_cancel</field>
<field name="flow_stop" eval="True"/>
</record>
<record model="workflow.transition" id="purchase_transition_draft_quotation">
<field name="act_from" ref="purchase_activity_draft"/>
<field name="act_to" ref="purchase_activity_quotation"/>
<field name="condition">bool(lines)</field>
<field name="condition">wkf_draft2quotation</field>
<field name="signal">quotation</field>
<field name="group" ref="group_purchase"/>
</record>
@@ -525,19 +511,19 @@ this repository contains the full copyright notices and license terms. -->
<record model="workflow.transition" id="purchase_transition_invoice_method_waiting_invoice_purchase">
<field name="act_from" ref="purchase_activity_invoice_method"/>
<field name="act_to" ref="purchase_activity_waiting_invoice_purchase"/>
<field name="condition">invoice_method == 'order'</field>
<field name="condition">wkf_invoice_method2invoice_waiting</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_method_invoice_done">
<field name="act_from" ref="purchase_activity_invoice_method"/>
<field name="act_to" ref="purchase_activity_invoice_method_done"/>
<field name="condition">invoice_method != 'order'</field>
<field name="condition">wkf_invoice_method2invoice_done</field>
</record>
<record model="workflow.transition" id="purchase_transition_waiting_invoice_purchase_invoice_purchase_exception">
<field name="act_from" ref="purchase_activity_waiting_invoice_purchase"/>
<field name="act_to" ref="purchase_activity_invoice_purchase_exception"/>
<field name="trigger_model">account.invoice</field>
<field name="trigger_expr_id">[x.id for x in invoices]</field>
<field name="condition">invoice_exception</field>
<field name="trigger_ids">wkf_triggered_invoices</field>
<field name="condition">wkf_invoice_waiting2invoice_purchase_exception</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_purchase_exception_invoice_purchase">
<field name="act_from" ref="purchase_activity_invoice_purchase_exception"/>
@@ -555,8 +541,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_from" ref="purchase_activity_waiting_invoice_purchase"/>
<field name="act_to" ref="purchase_activity_invoice_done"/>
<field name="trigger_model">account.invoice</field>
<field name="trigger_expr_id">[x.id for x in invoices]</field>
<field name="condition">invoice_paid</field>
<field name="trigger_ids">wkf_triggered_invoices</field>
<field name="condition">wkf_invoice_waiting2invoice_done</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_done_invoice_method_done">
<field name="act_from" ref="purchase_activity_invoice_done"/>
@@ -574,7 +560,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_from" ref="purchase_activity_waiting_shipment"/>
<field name="act_to" ref="purchase_activity_shipment_exception"/>
<field name="signal">shipment_update</field>
<field name="condition">shipment_exception</field>
<field name="condition">wkf_shipment_waiting2shipment_exception</field>
</record>
<record model="workflow.transition" id="purchase_transition_shipment_exception_cancel">
<field name="act_from" ref="purchase_activity_shipment_exception"/>
@@ -592,44 +578,51 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_from" ref="purchase_activity_waiting_shipment"/>
<field name="act_to" ref="purchase_activity_invoice_shipment_method"/>
<field name="signal">shipment_update</field>
<field name="condition">not shipment_exception</field>
<field
name="condition">wkf_shipment_waiting2invoice_shipment_method</field>
</record>
<record model="workflow.transition" id="purchase_transition_waiting_shipment_invoice_shipment_method2">
<field name="act_from" ref="purchase_activity_waiting_shipment"/>
<field name="act_to" ref="purchase_activity_invoice_shipment_method"/>
<field name="condition">shipment_done</field>
<field
name="condition">wkf_shipment_waiting2invoice_shipment_method_nosignal</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_method_invoice_shipment">
<field name="act_from" ref="purchase_activity_invoice_shipment_method"/>
<field name="act_to" ref="purchase_activity_invoice_shipment"/>
<field name="condition">invoice_method == 'shipment'</field>
<field
name="condition">wkf_invoice_shipment_method2invoice_shipment</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_method_invoice_shipment_method_done">
<field name="act_from" ref="purchase_activity_invoice_shipment_method"/>
<field name="act_to" ref="purchase_activity_invoice_shipment_method_done"/>
<field name="condition">invoice_method != 'shipment' and shipment_done</field>
<field
name="condition">wkf_invoice_shipment_method2inv_shipment_method_done</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_method_waiting_shipment">
<field name="act_from" ref="purchase_activity_invoice_shipment_method"/>
<field name="act_to" ref="purchase_activity_waiting_shipment"/>
<field name="condition">invoice_method != 'shipment' and not shipment_done</field>
<field
name="condition">wkf_invoice_shipment_method2shipment_waiting</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_waiting_shipment">
<field name="act_from" ref="purchase_activity_invoice_shipment"/>
<field name="act_to" ref="purchase_activity_waiting_shipment"/>
<field name="condition">not shipment_done</field>
<field name="condition">wkf_invoice_shipment2shipment_waiting</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_waiting_invoice_shipment">
<field name="act_from" ref="purchase_activity_invoice_shipment"/>
<field name="act_to" ref="purchase_activity_waiting_invoice_shipment"/>
<field name="condition">shipment_done</field>
<field
name="condition">wkf_invoice_shipment2waiting_invoice_shipment</field>
</record>
<record model="workflow.transition" id="purchase_transition_waiting_invoice_shipment_invoice_shipment_exception">
<field name="act_from" ref="purchase_activity_waiting_invoice_shipment"/>
<field name="act_to" ref="purchase_activity_invoice_shipment_exception"/>
<field name="trigger_model">account.invoice</field>
<field name="trigger_expr_id">[x.id for x in invoices]</field>
<field name="condition">invoice_exception</field>
<field name="trigger_ids">wkf_triggered_invoices</field>
<field
name="condition">wkf_waiting_invoice_shipment2invoice_shipment_exception</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_exception_cancel">
<field name="act_from" ref="purchase_activity_invoice_shipment_exception"/>
@@ -647,8 +640,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_from" ref="purchase_activity_waiting_invoice_shipment"/>
<field name="act_to" ref="purchase_activity_invoice_shipment_done"/>
<field name="trigger_model">account.invoice</field>
<field name="trigger_expr_id">[x.id for x in invoices]</field>
<field name="condition">invoice_paid</field>
<field name="trigger_ids">wkf_triggered_invoices</field>
<field
name="condition">wkf_waiting_invoice_shipment2invoice_shipment_done</field>
</record>
<record model="workflow.transition" id="purchase_transition_invoice_shipment_done_invoice_shipment_method_done">
<field name="act_from" ref="purchase_activity_invoice_shipment_done"/>