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