From 5a6e4f54f0f0e5cca892ad3c1fd874ca7d983e4a Mon Sep 17 00:00:00 2001 From: ATM-Nicolas Date: Fri, 8 Jan 2021 16:01:59 +0100 Subject: [PATCH] NEW : Workflow to set a shipment as closed --- htdocs/admin/workflow.php | 11 ++++++++++- ...nterface_20_modWorkflow_WorkflowManager.class.php | 12 ++++++++++++ htdocs/langs/en_US/workflow.lang | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/workflow.php b/htdocs/admin/workflow.php index 6bd3edca2b8..c1e099362ad 100644 --- a/htdocs/admin/workflow.php +++ b/htdocs/admin/workflow.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; if (!$user->admin) accessforbidden(); // Load translation files required by the page -$langs->loadLangs(array("admin", "workflow", "propal", "workflow", "orders", "supplier_proposal", "receptions", "errors")); +$langs->loadLangs(array("admin", "workflow", "propal", "workflow", "orders", "supplier_proposal", "receptions", "errors", 'sendings')); $action = GETPOST('action', 'aZ09'); @@ -130,6 +130,14 @@ $workflowcodes = array( 'enabled'=>(!empty($conf->reception->enabled) && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), 'picto'=>'bill' ), + + // Automatic classification shipping + 'WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE' => array( + 'family' => 'classify_shipping', + 'position' => 66, + 'enabled' => ! empty($conf->expedition->enabled) && ! empty($conf->facture->enabled), + 'picto' => 'shipment' + ) ); if (!empty($conf->modules_parts['workflow']) && is_array($conf->modules_parts['workflow'])) { @@ -190,6 +198,7 @@ foreach ($workflowcodes as $key => $params) { if ($reg[1] == 'supplier_proposal') $header .= ' - '.$langs->trans('SupplierProposal'); if ($reg[1] == 'supplier_order') $header .= ' - '.$langs->trans('SupplierOrder'); if ($reg[1] == 'reception') $header .= ' - '.$langs->trans('Reception'); + if ($reg[1] == 'shipping') $header .= ' - '.$langs->trans('Shipment'); } else { $header = $langs->trans("Description"); } diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index 9793022319e..d8eda6a8baf 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -158,6 +158,18 @@ class InterfaceWorkflowManager extends DolibarrTriggers } } + if (! empty($conf->expedition->enabled) && ! empty($conf->workflow->enabled) && ! empty($conf->global->WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE)) { + /** @var Facture $object */ + $object->fetchObjectLinked('', 'shipping', $object->id, $object->element); + + if (! empty($object->linkedObjects)) { + /** @var Expedition $shipment */ + $shipment = array_shift($object->linkedObjects['shipping']); + + $ret = $shipment->setClosed(); + } + } + return $ret; } diff --git a/htdocs/langs/en_US/workflow.lang b/htdocs/langs/en_US/workflow.lang index 646b97ec31d..15fd8ef07c2 100644 --- a/htdocs/langs/en_US/workflow.lang +++ b/htdocs/langs/en_US/workflow.lang @@ -21,3 +21,5 @@ descWORKFLOW_BILL_ON_RECEPTION=Classify receptions to "billed" when a linked sup descWORKFLOW_TICKET_CLOSE_INTERVENTION=Close all interventions linked to the ticket when a ticket is closed AutomaticCreation=Automatic creation AutomaticClassification=Automatic classification +# Autoclassify shipment +descWORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE=Classify linked source shipment as closed when customer invoice is validated \ No newline at end of file