From c4d1db263c4e1dc961e0b1f21da104863175be91 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 20 May 2020 23:15:18 +0200 Subject: [PATCH] Fix end of workflow of MO --- htdocs/langs/en_US/agenda.lang | 2 ++ htdocs/mrp/class/mo.class.php | 6 +++--- htdocs/mrp/mo_card.php | 34 +++++++++++++++++++++++++++++++++- htdocs/mrp/mo_production.php | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index f4c8c5b4fbc..6463b4eb9a0 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -112,8 +112,10 @@ BOM_CLOSEInDolibarr=BOM disabled BOM_REOPENInDolibarr=BOM reopen BOM_DELETEInDolibarr=BOM deleted MRP_MO_VALIDATEInDolibarr=MO validated +MRP_MO_UNVALIDATEInDolibarr=MO set to draft status MRP_MO_PRODUCEDInDolibarr=MO produced MRP_MO_DELETEInDolibarr=MO deleted +MRP_MO_CANCELInDolibarr=MO canceled ##### End agenda events ##### AgendaModelModule=Document templates for event DateActionStart=Start date diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 07c6eae52a1..e16f7fec71a 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -929,7 +929,7 @@ class Mo extends CommonObject return -1; }*/ - return $this->setStatusCommon($user, self::STATUS_DRAFT, $notrigger, 'MO_UNVALIDATE'); + return $this->setStatusCommon($user, self::STATUS_DRAFT, $notrigger, 'MRP_MO_UNVALIDATE'); } /** @@ -954,7 +954,7 @@ class Mo extends CommonObject return -1; }*/ - return $this->setStatusCommon($user, self::STATUS_CANCELED, $notrigger, 'MO_CLOSE'); + return $this->setStatusCommon($user, self::STATUS_CANCELED, $notrigger, 'MRP_MO_CANCEL'); } /** @@ -967,7 +967,7 @@ class Mo extends CommonObject public function reopen($user, $notrigger = 0) { // Protection - if ($this->status != self::STATUS_CANCELED) + if ($this->status != self::STATUS_PRODUCED && $this->status != self::STATUS_CANCELED) { return 0; } diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 86b2b886dea..0e2cc09e811 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -169,6 +169,35 @@ if (empty($reshook)) { $object->setProject(GETPOST('projectid', 'int')); } + + // Action close produced + if ($action == 'confirm_produced' && $confirm == 'yes' && $permissiontoadd) + { + $result = $object->setStatut($object::STATUS_PRODUCED, 0, '', 'MRP_MO_PRODUCED'); + if ($result >= 0) + { + // Define output language + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (!empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + $model = $object->modelpdf; + $ret = $object->fetch($id); // Reload to get new records + + $object->generateDocument($model, $outputlangs, 0, 0, 0); + } + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } } @@ -630,10 +659,13 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { if ($object->status == $object::STATUS_VALIDATED || $object->status == $object::STATUS_INPROGRESS) { + // TODO If production is already > 1, show only close, else show cancel + print ''.$langs->trans("Close").''."\n"; + print ''.$langs->trans("Cancel").''."\n"; } - if ($object->status == $object::STATUS_CANCELED) + if ($object->status == $object::STATUS_PRODUCED || $object->status == $object::STATUS_CANCELED) { print ''.$langs->trans("Re-Open").''."\n"; } diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index f762ca9291c..9f05283345a 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -383,6 +383,35 @@ if (empty($reshook)) exit; } } + + // Action close produced + if ($action == 'confirm_produced' && $confirm == 'yes' && $permissiontoadd) + { + $result = $object->setStatut($object::STATUS_PRODUCED, 0, '', 'MRP_MO_PRODUCED'); + if ($result >= 0) + { + // Define output language + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (!empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + $model = $object->modelpdf; + $ret = $object->fetch($id); // Reload to get new records + + $object->generateDocument($model, $outputlangs, 0, 0, 0); + } + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } } @@ -599,6 +628,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { if ($object->status == $object::STATUS_VALIDATED || $object->status == $object::STATUS_INPROGRESS) { + // TODO If production is already > 1, show only close, else show cancel + print ''.$langs->trans("Close").''."\n"; + print ''.$langs->trans("Cancel").''."\n"; }