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