diff --git a/purchase.py b/purchase.py
index dd2f08a44a..b713326e21 100644
--- a/purchase.py
+++ b/purchase.py
@@ -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()
diff --git a/purchase.xml b/purchase.xml
index e76de11d36..bd32b028de 100644
--- a/purchase.xml
+++ b/purchase.xml
@@ -382,22 +382,19 @@ this repository contains the full copyright notices and license terms. -->
Draft
- function
- write({'state': 'draft'})
+ wkf_draft
Quotation
- function
- check_for_quotation()
set_reference()
write({'state': 'quotation'})
+ wkf_quotation
Confirmed
AND
- function
- set_purchase_date()
write({'state': 'confirmed'})
+ wkf_confirmed
Invoice Method
@@ -407,20 +404,17 @@ this repository contains the full copyright notices and license terms. -->
Waiting Invoice
- function
- create_invoice()
write({'invoice_state': 'waiting'})
+ wkf_invoice_waiting
Invoice Exception
- function
- write({'invoice_state': 'exception'})
+ wkf_invoice_exception
Invoice Done
- function
- write({'invoice_state': 'paid'})
+ wkf_invoice_done
Invoice Method Done
@@ -429,14 +423,12 @@ this repository contains the full copyright notices and license terms. -->
Waiting Shipment
- function
- write({'shipment_state': 'waiting'})
create_move()
+ wkf_shipment_waiting
Shipment Exception
- function
- write({'shipment_state': 'exception'})
+ wkf_shipment_exception
Invoice Shipment Method
@@ -446,51 +438,45 @@ this repository contains the full copyright notices and license terms. -->
Invoice Shipment
- function
- create_invoice()
write({'invoice_state': 'waiting'})
+ wkf_invoice_shipment
Waiting Invoice Shipment
- function
- write({'invoice_state': 'waiting', 'shipment_state': 'received'})
+ wkf_invoice_shipment_waiting
Invoice Shipment Exception
- write({'invoice_state': 'exception'})
+ wkf_invoice_shipment_exception
Invoice Shipment Done
- function
- write({'invoice_state': 'paid'})
+ wkf_invoice_shipment_done
Invoice Shipment Method Done
- function
- write({'shipment_state': 'received'})
+ wkf_invoice_shipment_method_done
Done
AND
- function
- write({'state': 'done'})
+ wkf_done
Canceled
- function
- write({'state': 'cancel'})
+ wkf_cancel
- bool(lines)
+ wkf_draft2quotation
quotation
@@ -525,19 +511,19 @@ this repository contains the full copyright notices and license terms. -->
- invoice_method == 'order'
+ wkf_invoice_method2invoice_waiting
- invoice_method != 'order'
+ wkf_invoice_method2invoice_done
account.invoice
- [x.id for x in invoices]
- invoice_exception
+ wkf_triggered_invoices
+ wkf_invoice_waiting2invoice_purchase_exception
@@ -555,8 +541,8 @@ this repository contains the full copyright notices and license terms. -->
account.invoice
- [x.id for x in invoices]
- invoice_paid
+ wkf_triggered_invoices
+ wkf_invoice_waiting2invoice_done
@@ -574,7 +560,7 @@ this repository contains the full copyright notices and license terms. -->
shipment_update
- shipment_exception
+ wkf_shipment_waiting2shipment_exception
@@ -592,44 +578,51 @@ this repository contains the full copyright notices and license terms. -->
shipment_update
- not shipment_exception
+ wkf_shipment_waiting2invoice_shipment_method
- shipment_done
+ wkf_shipment_waiting2invoice_shipment_method_nosignal
- invoice_method == 'shipment'
+ wkf_invoice_shipment_method2invoice_shipment
- invoice_method != 'shipment' and shipment_done
+ wkf_invoice_shipment_method2inv_shipment_method_done
- invoice_method != 'shipment' and not shipment_done
+ wkf_invoice_shipment_method2shipment_waiting
- not shipment_done
+ wkf_invoice_shipment2shipment_waiting
- shipment_done
+ wkf_invoice_shipment2waiting_invoice_shipment
account.invoice
- [x.id for x in invoices]
- invoice_exception
+ wkf_triggered_invoices
+ wkf_waiting_invoice_shipment2invoice_shipment_exception
@@ -647,8 +640,9 @@ this repository contains the full copyright notices and license terms. -->
account.invoice
- [x.id for x in invoices]
- invoice_paid
+ wkf_triggered_invoices
+ wkf_waiting_invoice_shipment2invoice_shipment_done