diff --git a/sale.py b/sale.py
index af01b608e2..9c9356d5fc 100644
--- a/sale.py
+++ b/sale.py
@@ -817,6 +817,142 @@ class Sale(ModelWorkflow, ModelSQL, ModelView):
shipment_obj.workflow_trigger_validate(shipment_id, 'waiting')
return shipment_id
+ def wkf_draft(self, sale):
+ self.write(sale.id, {'state': 'draft'})
+
+ def wkf_quotation(self, sale):
+ self.check_for_quotation(sale.id)
+ self.set_reference(sale.id)
+ self.write(sale.id, {'state': 'quotation'})
+
+ def wkf_confirmed(self, sale):
+ self.write(sale.id, {'state': 'confirmed'})
+
+ def wkf_waiting_invoice_sale(self, sale):
+ self.create_invoice(sale.id)
+ self.write(sale.id, {'invoice_state': 'waiting'})
+
+ def wkf_invoice_sale_exception(self, sale):
+ self.write(sale.id, {'invoice_state': 'exception'})
+
+ def wkf_invoice_sale_done(self, sale):
+ self.write(sale.id, {'invoice_state': 'paid'})
+
+ def wkf_shipment_invoice(self, sale):
+ self.create_shipment(sale.id)
+
+ def wkf_waiting_shipment_invoice(self, sale):
+ self.write(sale.id, {'shipment_state': 'waiting'})
+ self.create_shipment(sale.id)
+
+ def wkf_shipment_invoice_exception(self, sale):
+ self.write(sale.id, {'shipment_state': 'exception'})
+
+ def wkf_shipment_invoice_done(self, sale):
+ self.write(sale.id, {'shipment_state': 'sent'})
+
+ def wkf_shipment(self, sale):
+ self.create_shipment(sale.id)
+
+ def wkf_waiting_shipment(self, sale):
+ self.write(sale.id, {'shipment_state': 'waiting'})
+ self.create_shipment(sale.id)
+
+ def wkf_shipment_exception(self, sale):
+ self.write(sale.id, {'shipment_state': 'exception'})
+
+ def wkf_invoice_shipment(self, sale):
+ self.create_invoice(sale.id)
+ self.write(sale.id, {'invoice_state': 'waiting'})
+
+ def wkf_waiting_invoice_shipment(self, sale):
+ self.write(sale.id,
+ {'invoice_state': 'waiting', 'shipment_state': 'sent'})
+
+ def wkf_invoice_shipment_exception(self, sale):
+ self.write(sale.id, {'invoice_state': 'exception'})
+
+ def wkf_invoice_shipment_done(self, sale):
+ self.write(sale.id, {'invoice_state': 'paid'})
+
+ def wkf_invoice_shipment_method_done(self, sale):
+ self.write(sale.id, {'shipment_state': 'sent'})
+
+ def wkf_done(self, sale):
+ self.write(sale.id, {'state': 'done'})
+
+ def wkf_cancel(self, sale):
+ self.write(sale.id, {'state': 'cancel'})
+
+ def wkf_draft2quotation(self, sale):
+ return bool(sale.lines)
+
+ def wkf_invoice_method2waiting_invoice_sale(self, sale):
+ return sale.invoice_method == 'order'
+
+ def wkf_invoice_method2invoice_method_done(self, sale):
+ return sale.invoice_method != 'order'
+
+ def wkf_triggered_invoices(self, sale):
+ return [x.id for x in sale.invoices]
+
+ def wkf_waiting_invoice_sale2invoice_sale_exception(self, sale):
+ return sale.invoice_exception
+
+ def wkf_waiting_invoice_sale2invoice_sale_done(self, sale):
+ return sale.invoice_paid
+
+ def wkf_shipment_invoice_method2shipment_invoice_method_done(self, sale):
+ return sale.shipment_method != 'invoice'
+
+ def wkf_shipment_invoice_method2shipment_invoice(self, sale):
+ return self.shipment_method == 'invoice'
+
+ def wkf_triggered_shipments(self, sale):
+ return [x.id for x in sale.shipments]
+
+ def wkf_waiting_shipment_invoice2shipment_invoice_exception(self, sale):
+ return sale.shipment_exception
+
+ def wkf_waiting_shipment_invoice2shipment_invoice_done(self, sale):
+ return sale.shipment_done
+
+ def wkf_shipment_method2shipment_method_done(self, sale):
+ return sale.shipment_method != 'order'
+
+ def wkf_shipment_method2shipment(self, sale):
+ return sale.shipment_method == 'order'
+
+ def wkf_waiting_shipment2shipment_exception(self, sale):
+ return sale.shipment_exception
+
+ def wkf_waiting_shipment2invoice_shipment_method(self, sale):
+ return not sale.shipment_exception
+
+ def wkf_waiting_shipment2invoice_shipment_method_nosignal(self, sale):
+ return sale.shipment_done
+
+ def wkf_invoice_shipment_method2invoice_shipment(self, sale):
+ return sale.invoice_method == 'shipment'
+
+ def wkf_invoice_shipment_method2invoice_shipment_method_done(self, sale):
+ return sale.invoice_method != 'shipment' and sale.shipment_done
+
+ def wkf_invoice_shipment_method2waiting_shipment(self, sale):
+ return sale.invoice_method != 'shipment' and not sale.shipment_done
+
+ def wkf_invoice_shipment2waiting_shipment(self, sale):
+ return not sale.shipment_done
+
+ def wkf_invoice_shipment2waiting_invoice_shipment(self, sale):
+ return sale.shipment_done
+
+ def wkf_waiting_invoice_shipment2invoice_shipment_exception(self, sale):
+ return sale.invoice_exception
+
+ def wkf_waiting_invoice_shipment2invoice_shipment_done(self, sale):
+ return sale.invoice_paid
+
Sale()
diff --git a/sale.xml b/sale.xml
index 96907bf3dd..11c96a498e 100644
--- a/sale.xml
+++ b/sale.xml
@@ -371,22 +371,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
- write({'state': 'confirmed'})
+ wkf_confirmed
Invoice Method
@@ -396,20 +393,17 @@ this repository contains the full copyright notices and license terms. -->
Waiting Invoice
- function
- create_invoice()
write({'invoice_state': 'waiting'})
+ wkf_waiting_invoice_sale
Invoice Exception
- function
- write({'invoice_state': 'exception'})
+ wkf_invoice_sale_exception
Invoice Done
- function
- write({'invoice_state': 'paid'})
+ wkf_invoice_sale_done
Shipment Invoice Method
@@ -419,26 +413,22 @@ this repository contains the full copyright notices and license terms. -->
Shipment Invoice
- function
- create_shipment()
+ wkf_shipment_invoice
Waiting Shipment Invoice
- function
- write({'shipment_state': 'waiting'})
create_shipment()
+ wkf_waiting_shipment_invoice
Shipment Invoice Exception
- function
- write({'shipment_state': 'exception'})
+ wkf_shipment_invoice_exception
Shipment Invoice Done
- function
- write({'shipment_state': 'sent'})
+ wkf_shipment_invoice_done
Shipment Invoice Method Done
@@ -455,20 +445,17 @@ this repository contains the full copyright notices and license terms. -->
Shipment
- function
- create_shipment()
+ wkf_shipment
Waiting Shipment
- function
- write({'shipment_state': 'waiting'})
create_shipment()
+ wkf_waiting_shipment
Shipment Exception
- function
- write({'shipment_state': 'exception'})
+ wkf_shipment_exception
Invoice Shipment Method
@@ -478,32 +465,27 @@ 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': 'sent'})
+ wkf_waiting_invoice_shipment
Invoice Shipment Exception
- function
- 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': 'sent'})
+ wkf_invoice_shipment_method_done
Shipment Method Done
@@ -513,22 +495,20 @@ this repository contains the full copyright notices and license terms. -->
Done
AND
- function
- write({'state': 'done'})
+ wkf_done
Canceled
- function
- write({'state': 'cancel'})
+ wkf_cancel
- bool(lines)
+ wkf_draft2quotation
quotation
@@ -564,19 +544,20 @@ this repository contains the full copyright notices and license terms. -->
- invoice_method == 'order'
+ wkf_invoice_method2waiting_invoice_sale
- invoice_method != 'order'
+ wkf_invoice_method2invoice_method_done
account.invoice
- [x.id for x in invoices]
- invoice_exception
+ wkf_triggered_invoices
+ wkf_waiting_invoice_sale2invoice_sale_exception
@@ -594,8 +575,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_waiting_invoice_sale2invoice_sale_done
@@ -604,12 +585,14 @@ this repository contains the full copyright notices and license terms. -->
- shipment_method != 'invoice'
+ wkf_shipment_invoice_method2shipment_invoice_method_done
- shipment_method == 'invoice'
+ wkf_shipment_invoice_method2shipment_invoice
@@ -619,8 +602,9 @@ this repository contains the full copyright notices and license terms. -->
stock.shipment.out
- [x.id for x in shipments]
- shipment_exception
+ wkf_triggered_shipments
+ wkf_waiting_shipment_invoice2shipment_invoice_exception
@@ -638,8 +622,9 @@ this repository contains the full copyright notices and license terms. -->
stock.shipment.out
- [x.id for x in shipments]
- shipment_done
+ wkf_triggered_shipments
+ wkf_waiting_shipment_invoice2shipment_invoice_done
@@ -660,12 +645,12 @@ this repository contains the full copyright notices and license terms. -->
- shipment_method != 'order'
+ wkf_shipment_method2shipment_method_done
- shipment_method == 'order'
+ wkf_shipment_method2shipment
@@ -675,7 +660,7 @@ this repository contains the full copyright notices and license terms. -->
shipment_update
- shipment_exception
+ wkf_waiting_shipment2shipment_exception
@@ -693,44 +678,51 @@ this repository contains the full copyright notices and license terms. -->
shipment_update
- not shipment_exception
+ wkf_waiting_shipment2invoice_shipment_method
- shipment_done
+ wkf_waiting_shipment2invoice_shipment_method_nosignal
- invoice_method == 'shipment'
+ wkf_invoice_shipment_method2invoice_shipment
- invoice_method != 'shipment' and shipment_done
+ wkf_invoice_shipment_method2invoice_shipment_method_done
- invoice_method != 'shipment' and not shipment_done
+ wkf_invoice_shipment_method2waiting_shipment
- not shipment_done
+ wkf_invoice_shipment2waiting_shipment
- 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
@@ -748,8 +740,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