NEW Add the workflow interaction close intervention on closing ticket

This commit is contained in:
Laurent Destailleur 2020-08-28 19:07:17 +02:00
parent 50b791cfca
commit 04ad25d90f
3 changed files with 30 additions and 21 deletions

View File

@ -88,8 +88,10 @@ $workflowcodes = array(
'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL'=>array('family'=>'classify_supplier_proposal', 'position'=>60, 'enabled'=>'! empty($conf->supplier_proposal->enabled) && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', 'picto'=>'propal', 'warning'=>''),
// Automatic classification supplier order
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER'=>array('family'=>'classify_supplier_order', 'position'=>62, 'enabled'=>'!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)', 'picto'=>'order', 'warning'=>''),
//Automatic classification reception
// Automatic classification reception
'WORKFLOW_BILL_ON_RECEPTION'=>array('family'=>'classify_reception', 'position'=>64, '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 of intervention
'WORKFLOW_TICKET_CLOSE_INTERVENTION'=>array('family'=>'classify_intervention', 'position'=>100, 'enabled'=>'! empty($conf->ticket->enabled) && !empty($conf->ficheinter->enabled)', 'picto'=>'intervention'),
);
if (!empty($conf->modules_parts['workflow']) && is_array($conf->modules_parts['workflow']))
@ -131,8 +133,8 @@ foreach ($workflowcodes as $key => $params)
{
print '<tr class="liste_titre">'."\n";
print ' <td>';
if ($family == 'create')
{
$reg = array();
if ($family == 'create') {
print $langs->trans("AutomaticCreation");
} elseif (preg_match('/classify_(.*)/', $family, $reg))
{
@ -142,6 +144,7 @@ foreach ($workflowcodes as $key => $params)
if ($reg[1] == 'supplier_proposal') print ' - '.$langs->trans('SupplierProposal');
if ($reg[1] == 'supplier_order') print ' - '.$langs->trans('SupplierOrder');
if ($reg[1] == 'reception') print ' - '.$langs->trans('Reception');
if ($reg[1] == 'intervention') print ' - '.$langs->trans('Intervention');
} else {
print $langs->trans("Description");
}
@ -152,7 +155,7 @@ foreach ($workflowcodes as $key => $params)
}
print "<tr class=\"oddeven\">\n";
print "<td>".img_object('', $picto).$langs->trans('desc'.$key);
print "<td>".img_object('', $picto, 'class="paddingright"').$langs->trans('desc'.$key);
if (!empty($params['warning']))
{
$langs->load("errors");

View File

@ -16,5 +16,8 @@ descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classify linked source sales order
# Autoclassify purchase order
descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classify linked source vendor proposal as billed when vendor invoice is validated (and if the amount of the invoice is the same as the total amount of the linked proposal)
descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classify linked source purchase order as billed when vendor invoice is validated (and if the amount of the invoice is the same as the total amount of the linked order)
descWORKFLOW_BILL_ON_RECEPTION=Classify receptions to "billed" when a linked supplier order is validated
# Autoclose intervention
descWORKFLOW_TICKET_CLOSE_INTERVENTION=Close all interventions linked to the ticket when a ticket is closed
AutomaticCreation=Automatic creation
AutomaticClassification=Automatic classification

View File

@ -1700,24 +1700,27 @@ class Ticket extends CommonObject
$error = 0;
// Valid and close fichinter linked
$this->fetchObjectLinked($this->id, $this->element, null, 'fichinter');
if ($this->linkedObjectsIds)
{
foreach ($this->linkedObjectsIds['fichinter'] as $fichinter_id) {
$fichinter = new Fichinter($this->db);
$fichinter->fetch($fichinter_id);
if ($fichinter->statut == 0) {
$result = $fichinter->setValid($user);
if (!$result) {
$this->errors[] = $fichinter->error;
$error++;
if (!empty($conf->ficheinter->enabled) && ! empty($conf->global->WORKFLOW_TICKET_CLOSE_INTERVENTION)) {
dol_syslog("We have closed the ticket, so we close all linked interventions");
$this->fetchObjectLinked($this->id, $this->element, null, 'fichinter');
if ($this->linkedObjectsIds)
{
foreach ($this->linkedObjectsIds['fichinter'] as $fichinter_id) {
$fichinter = new Fichinter($this->db);
$fichinter->fetch($fichinter_id);
if ($fichinter->statut == 0) {
$result = $fichinter->setValid($user);
if (!$result) {
$this->errors[] = $fichinter->error;
$error++;
}
}
}
if ($fichinter->statut < 3) {
$result = $fichinter->setStatut(3);
if (!$result) {
$this->errors[] = $fichinter->error;
$error++;
if ($fichinter->statut < 3) {
$result = $fichinter->setStatut(3);
if (!$result) {
$this->errors[] = $fichinter->error;
$error++;
}
}
}
}