From 03de8707510de11d19c3844aec8890d68a7c1223 Mon Sep 17 00:00:00 2001 From: bagtaib Date: Wed, 22 Jun 2022 16:29:15 +0200 Subject: [PATCH 1/4] NEW #21204 --- htdocs/admin/workflow.php | 6 ++++++ .../interface_20_modWorkflow_WorkflowManager.class.php | 6 ++++++ htdocs/langs/en_US/workflow.lang | 1 + 3 files changed, 13 insertions(+) diff --git a/htdocs/admin/workflow.php b/htdocs/admin/workflow.php index 47e6e87a244..4c7339f8520 100644 --- a/htdocs/admin/workflow.php +++ b/htdocs/admin/workflow.php @@ -65,6 +65,12 @@ $workflowcodes = array( 'enabled'=>(!empty($conf->propal->enabled) && !empty($conf->commande->enabled)), 'picto'=>'order' ), + 'WORKFLOW_PROPAL_NOTCREATE_ORDER_IFEXISTS'=>array( + 'family'=>'create', + 'position'=>15, + 'enabled'=>(!empty($conf->propal->enabled) && !empty($conf->commande->enabled)), + 'picto'=>'order' + ), 'WORKFLOW_ORDER_AUTOCREATE_INVOICE'=>array( 'family'=>'create', 'position'=>20, diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index 8bd1e0d647d..5dc95a0679e 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -86,8 +86,14 @@ class InterfaceWorkflowManager extends DolibarrTriggers } return $ret; } + if (!empty($conf->global->WORKFLOW_PROPAL_NOTCREATE_ORDER_IFEXISTS)) { + $object->fetchObjectLinked(); + if (!empty($object->linkedObjectsIds['commande'])) + return $ret; + } } + // Order to invoice if ($action == 'ORDER_CLOSE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); diff --git a/htdocs/langs/en_US/workflow.lang b/htdocs/langs/en_US/workflow.lang index 803a31c9646..15c8b75d3ed 100644 --- a/htdocs/langs/en_US/workflow.lang +++ b/htdocs/langs/en_US/workflow.lang @@ -3,6 +3,7 @@ WorkflowSetup=Workflow module setup WorkflowDesc=This module provides some automatic actions. By default, the workflow is open (you can do things in the order you want) but here you can activate some automatic actions. ThereIsNoWorkflowToModify=There is no workflow modifications available with the activated modules. # Autocreate +descWORKFLOW_PROPAL_NOTCREATE_ORDER_IFEXISTS=Do not Automatically create a sales order after a commercial proposal is signed if it already exists descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Automatically create a sales order after a commercial proposal is signed (the new order will have same amount as the proposal) descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Automatically create a customer invoice after a commercial proposal is signed (the new invoice will have same amount as the proposal) descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Automatically create a customer invoice after a contract is validated From cc0be635dc38a722931dde3a2f4c5757cecb06af Mon Sep 17 00:00:00 2001 From: bagtaib Date: Thu, 23 Jun 2022 15:37:37 +0200 Subject: [PATCH 2/4] removed the new option and enhanced the old one --- htdocs/admin/workflow.php | 6 --- ...e_20_modWorkflow_WorkflowManager.class.php | 39 ++++++++++--------- htdocs/langs/en_US/orders.lang | 1 + htdocs/langs/en_US/workflow.lang | 1 - 4 files changed, 21 insertions(+), 26 deletions(-) diff --git a/htdocs/admin/workflow.php b/htdocs/admin/workflow.php index 4c7339f8520..47e6e87a244 100644 --- a/htdocs/admin/workflow.php +++ b/htdocs/admin/workflow.php @@ -65,12 +65,6 @@ $workflowcodes = array( 'enabled'=>(!empty($conf->propal->enabled) && !empty($conf->commande->enabled)), 'picto'=>'order' ), - 'WORKFLOW_PROPAL_NOTCREATE_ORDER_IFEXISTS'=>array( - 'family'=>'create', - 'position'=>15, - 'enabled'=>(!empty($conf->propal->enabled) && !empty($conf->commande->enabled)), - 'picto'=>'order' - ), 'WORKFLOW_ORDER_AUTOCREATE_INVOICE'=>array( 'family'=>'create', 'position'=>20, diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index 5dc95a0679e..b04be51379d 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -72,27 +72,28 @@ class InterfaceWorkflowManager extends DolibarrTriggers if ($action == 'PROPAL_CLOSE_SIGNED') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) { - include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; - $newobject = new Commande($this->db); - - $newobject->context['createfrompropal'] = 'createfrompropal'; - $newobject->context['origin'] = $object->element; - $newobject->context['origin_id'] = $object->id; - - $ret = $newobject->createFromProposal($object, $user); - if ($ret < 0) { - $this->error = $newobject->error; - $this->errors[] = $newobject->error; - } - return $ret; - } - if (!empty($conf->global->WORKFLOW_PROPAL_NOTCREATE_ORDER_IFEXISTS)) { $object->fetchObjectLinked(); - if (!empty($object->linkedObjectsIds['commande'])) + if (!empty($object->linkedObjectsIds['commande'])){ + setEventMessages($langs->trans("OrderExists"), null, 'warnings'); return $ret; - } - } - + } + else { + include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; + $newobject = new Commande($this->db); + + $newobject->context['createfrompropal'] = 'createfrompropal'; + $newobject->context['origin'] = $object->element; + $newobject->context['origin_id'] = $object->id; + + $ret = $newobject->createFromProposal($object, $user); + if ($ret < 0) { + $this->error = $newobject->error; + $this->errors[] = $newobject->error; + } + return $ret; + } + } + } // Order to invoice if ($action == 'ORDER_CLOSE') { diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index a4261f8e62c..aa7dd934ede 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=An order was already open linked to this proposal, so no other order was created automatically OrdersArea=Customers orders area SuppliersOrdersArea=Purchase orders area OrderCard=Order card diff --git a/htdocs/langs/en_US/workflow.lang b/htdocs/langs/en_US/workflow.lang index 15c8b75d3ed..803a31c9646 100644 --- a/htdocs/langs/en_US/workflow.lang +++ b/htdocs/langs/en_US/workflow.lang @@ -3,7 +3,6 @@ WorkflowSetup=Workflow module setup WorkflowDesc=This module provides some automatic actions. By default, the workflow is open (you can do things in the order you want) but here you can activate some automatic actions. ThereIsNoWorkflowToModify=There is no workflow modifications available with the activated modules. # Autocreate -descWORKFLOW_PROPAL_NOTCREATE_ORDER_IFEXISTS=Do not Automatically create a sales order after a commercial proposal is signed if it already exists descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Automatically create a sales order after a commercial proposal is signed (the new order will have same amount as the proposal) descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Automatically create a customer invoice after a commercial proposal is signed (the new invoice will have same amount as the proposal) descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Automatically create a customer invoice after a contract is validated From 2f1eff28815183ddd43b535e516a5fd465a1ee2a Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 23 Jun 2022 13:42:37 +0000 Subject: [PATCH 3/4] Fixing style errors. --- ...terface_20_modWorkflow_WorkflowManager.class.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index b04be51379d..cc6a1168c32 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -73,18 +73,17 @@ class InterfaceWorkflowManager extends DolibarrTriggers dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) { $object->fetchObjectLinked(); - if (!empty($object->linkedObjectsIds['commande'])){ + if (!empty($object->linkedObjectsIds['commande'])) { setEventMessages($langs->trans("OrderExists"), null, 'warnings'); return $ret; - } - else { + } else { include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; $newobject = new Commande($this->db); - + $newobject->context['createfrompropal'] = 'createfrompropal'; $newobject->context['origin'] = $object->element; $newobject->context['origin_id'] = $object->id; - + $ret = $newobject->createFromProposal($object, $user); if ($ret < 0) { $this->error = $newobject->error; @@ -92,8 +91,8 @@ class InterfaceWorkflowManager extends DolibarrTriggers } return $ret; } - } - } + } + } // Order to invoice if ($action == 'ORDER_CLOSE') { From d3807286d4af5cc60461c4219a52e04bb0c78193 Mon Sep 17 00:00:00 2001 From: bagtaib Date: Fri, 24 Jun 2022 13:41:21 +0200 Subject: [PATCH 4/4] fix spaces --- ...terface_20_modWorkflow_WorkflowManager.class.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index b04be51379d..cc6a1168c32 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -73,18 +73,17 @@ class InterfaceWorkflowManager extends DolibarrTriggers dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) { $object->fetchObjectLinked(); - if (!empty($object->linkedObjectsIds['commande'])){ + if (!empty($object->linkedObjectsIds['commande'])) { setEventMessages($langs->trans("OrderExists"), null, 'warnings'); return $ret; - } - else { + } else { include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; $newobject = new Commande($this->db); - + $newobject->context['createfrompropal'] = 'createfrompropal'; $newobject->context['origin'] = $object->element; $newobject->context['origin_id'] = $object->id; - + $ret = $newobject->createFromProposal($object, $user); if ($ret < 0) { $this->error = $newobject->error; @@ -92,8 +91,8 @@ class InterfaceWorkflowManager extends DolibarrTriggers } return $ret; } - } - } + } + } // Order to invoice if ($action == 'ORDER_CLOSE') {