From 5d115bcf6919d8796ef2abcd0e2291e5de0855ec Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 30 May 2017 20:58:32 +0200 Subject: [PATCH] Fix deadlock feature, can't process a leave request when validator has left company. --- htdocs/holiday/card.php | 60 +++++++++++++++++++++++++++++---- htdocs/langs/en_US/holiday.lang | 2 +- htdocs/langs/en_US/main.lang | 2 ++ 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index c875caab271..78e2940942f 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -570,14 +570,43 @@ if ($action == 'confirm_refuse') } } + +// Si Validation de la demande +if ($action == 'confirm_draft' && GETPOST('confirm') == 'yes') +{ + $object = new Holiday($db); + $object->fetch($id); + + $oldstatus = $object->statut; + $object->statut = 1; + + $result = $object->update($user); + if ($result < 0) + { + $error = $langs->trans('ErrorBackToDraft'); + } + + if (! $error) + { + $db->commit(); + + header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); + exit; + } + else + { + $db->rollback(); + } +} + // Si Validation de la demande if ($action == 'confirm_cancel' && GETPOST('confirm') == 'yes') { $object = new Holiday($db); $object->fetch($id); - // Si statut en attente de validation et valideur = utilisateur - if (($object->statut == 2 || $object->statut == 3) && ($user->id == $object->fk_validator || $user->id == $object->fk_user)) + // Si statut en attente de validation et valideur = valideur ou utilisateur, ou droits de faire pour les autres + if (($object->statut == 2 || $object->statut == 3) && ($user->id == $object->fk_validator || $user->id == $object->fk_user || ! empty($user->rights->holiday->write_all))) { $db->begin(); @@ -989,6 +1018,12 @@ else print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id,$langs->trans("TitleCancelCP"),$langs->trans("ConfirmCancelCP"),"confirm_cancel", '', 1, 1); } + // Si back to draft + if ($action == 'backtodraft') + { + print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id,$langs->trans("TitleSetToDraft"),$langs->trans("ConfirmSetToDraft"),"confirm_draft", '', 1, 1); + } + $head=holiday_prepare_head($object); @@ -1208,18 +1243,31 @@ else print ''.$langs->trans("DeleteCP").''; } - if ($user->id == $object->fk_validator && $object->statut == 2) + if ($object->statut == 2) { - print ''.$langs->trans("Approve").''; - print ''.$langs->trans("ActionRefuseCP").''; + if ($user->id == $object->fk_validator) + { + print ''.$langs->trans("Approve").''; + print ''.$langs->trans("ActionRefuseCP").''; + } + else + { + print ''.$langs->trans("Approve").''; + print ''.$langs->trans("ActionRefuseCP").''; + } } - if (($user->id == $object->fk_validator || $user->id == $object->fk_user) && ($object->statut == 2 || $object->statut == 3)) // Status validated or approved + if (($user->id == $object->fk_validator || $user->id == $object->fk_user || ! empty($user->rights->holiday->write_all)) && ($object->statut == 2 || $object->statut == 3)) // Status validated or approved { if (($object->date_debut > dol_now()) || $user->admin) print ''.$langs->trans("ActionCancelCP").''; else print ''.$langs->trans("ActionCancelCP").''; } + if ($canedit && $object->statut == 4) + { + print ''.$langs->trans("SetToDraft").''; + } + print ''; } diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index 441701c098d..e8d225d5af6 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -16,7 +16,7 @@ CancelCP=Canceled RefuseCP=Refused ValidatorCP=Approbator ListeCP=List of leaves -ReviewedByCP=Will be reviewed by +ReviewedByCP=Will be approved by DescCP=Description SendRequestCP=Create leave request DelayToRequestCP=Leave requests must be made at least %s day(s) before them. diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index ec4e218a11e..ba95ce233f8 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -757,6 +757,8 @@ SomeTranslationAreUncomplete=Some languages may be partially translated or may c DirectDownloadLink=Direct download link Download=Download ActualizeCurrency=Update currency rate +TitleSetToDraft=Go back to draft +ConfirmSetToDraft=Are you sure you want to go back to Draft status ? # Week day Monday=Monday Tuesday=Tuesday