* Copyright (C) 2012 Laurent Destailleur * Copyright (C) 2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/holiday/fiche.php * \ingroup holiday * \brief Form and file creation of paid holiday. */ require('../main.inc.php'); require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/holiday.lib.php'; require_once DOL_DOCUMENT_ROOT.'/holiday/common.inc.php'; // Get parameters $myparam = GETPOST("myparam"); $action=GETPOST('action', 'alpha'); $id=GETPOST('id', 'int'); // Protection if external user if ($user->societe_id > 0) accessforbidden(); $user_id = $user->id; $now=dol_now(); /******************************************************************* * Actions ********************************************************************/ // Si création de la demande if ($action == 'create') { $cp = new Holiday($db); // Si pas le droit de créer une demande if(!$user->rights->holiday->write) { header('Location: fiche.php?action=request&error=CantCreate'); exit; } $date_debut = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year')); $date_fin = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year')); $starthalfday=GETPOST('starthalfday'); $endhalfday=GETPOST('endhalfday'); $halfday=0; if ($starthalfday == 'afternoon' && $endhalfday == 'morning') $halfday=2; else if ($starthalfday == 'afternoon') $halfday=-1; else if ($endhalfday == 'morning') $halfday=1; $valideur = GETPOST('valideur'); $description = trim(GETPOST('description')); $userID = GETPOST('userID'); // Si pas de date de début if (empty($date_debut)) { header('Location: fiche.php?action=request&error=nodatedebut'); exit; } // Si pas de date de fin if (empty($date_fin)) { header('Location: fiche.php?action=request&error=nodatefin'); exit; } // Si date de début après la date de fin if ($date_debut > $date_fin) { header('Location: fiche.php?action=request&error=datefin'); exit; } // Check if there is already holiday for this period $verifCP = $cp->verifDateHolidayCP($userID, $date_debut, $date_fin, $halfday); if (! $verifCP) { header('Location: fiche.php?action=request&error=alreadyCP'); exit; } // Si aucun jours ouvrés dans la demande $nbopenedday=num_open_day($date_debut, $date_fin, 0, 1, $halfday); if($nbopenedday < 1) { header('Location: fiche.php?action=request&error=DureeHoliday'); exit; } // Si pas de validateur choisi if ($valideur < 1) { header('Location: fiche.php?action=request&error=Valideur'); exit; } $cp->fk_user = $user_id; $cp->description = $description; $cp->date_debut = $date_debut; $cp->date_fin = $date_fin; $cp->fk_validator = $valideur; $cp->halfday = $halfday; $verif = $cp->create($user_id); // Si pas d'erreur SQL on redirige vers la fiche de la demande if ($verif > 0) { header('Location: fiche.php?id='.$verif); exit; } else { // Sinon on affiche le formulaire de demande avec le message d'erreur SQL header('Location: fiche.php?action=request&error=SQL_Create&msg='.$cp->error); exit; } } if ($action == 'update') { $date_debut = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year')); $date_fin = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year')); $starthalfday=GETPOST('starthalfday'); $endhalfday=GETPOST('endhalfday'); $halfday=0; if ($starthalfday == 'afternoon' && $endhalfday == 'morning') $halfday=2; else if ($starthalfday == 'afternoon') $halfday=-1; else if ($endhalfday == 'morning') $halfday=1; // Si pas le droit de modifier une demande if(!$user->rights->holiday->write) { header('Location: fiche.php?action=request&error=CantUpdate'); exit; } $cp = new Holiday($db); $cp->fetch($_POST['holiday_id']); // Si en attente de validation if ($cp->statut == 1) { // Si c'est le créateur ou qu'il a le droit de tout lire / modifier if ($user->id == $cp->fk_user || $user->rights->holiday->lire_tous) { $valideur = $_POST['valideur']; $description = trim($_POST['description']); // Si pas de date de début if (empty($_POST['date_debut_'])) { header('Location: fiche.php?id='.$_POST['holiday_id'].'&action=edit&error=nodatedebut'); exit; } // Si pas de date de fin if (empty($_POST['date_fin_'])) { header('Location: fiche.php?id='.$_POST['holiday_id'].'&action=edit&error=nodatefin'); exit; } // Si date de début après la date de fin if ($date_debut > $date_fin) { header('Location: fiche.php?id='.$_POST['holiday_id'].'&action=edit&error=datefin'); exit; } // Si pas de valideur choisi if ($valideur < 1) { header('Location: fiche.php?id='.$_POST['holiday_id'].'&action=edit&error=Valideur'); exit; } // Si pas de jours ouvrés dans la demande $nbopenedday=num_open_day($date_debut, $date_fin, 0, 1, $halfday); if ($nbopenedday < 1) { header('Location: fiche.php?id='.$_POST['holiday_id'].'&action=edit&error=DureeHoliday'); exit; } $cp->description = $description; $cp->date_debut = $date_debut; $cp->date_fin = $date_fin; $cp->fk_validator = $valideur; $cp->halfday = $halfday; // Update $verif = $cp->update($user->id); if ($verif > 0) { header('Location: fiche.php?id='.$_POST['holiday_id']); exit; } else { // Sinon on affiche le formulaire de demande avec le message d'erreur SQL header('Location: fiche.php?id='.$_POST['holiday_id'].'&action=edit&error=SQL_Create&msg='.$cp->error); exit; } } } else { header('Location: fiche.php?id='.$_POST['holiday_id']); exit; } } // Si suppression de la demande if ($action == 'confirm_delete' && $_GET['confirm'] == 'yes') { if($user->rights->holiday->delete) { $cp = new Holiday($db); $cp->fetch($_GET['id']); // Si c'est bien un brouillon if($cp->statut == 1) { // Si l'utilisateur à le droit de lire cette demande, il peut la supprimer if($user->id == $cp->fk_user || $user->rights->holiday->lire_tous) { $cp->delete($_GET['id']); header('Location: index.php'); exit; } else { $error = $langs->trans('ErrorCantDeleteCP'); } } } } // Si envoi de la demande if ($action == 'confirm_send') { $cp = new Holiday($db); $cp->fetch($_GET['id']); $userID = $user->id; // Si brouillon et créateur if($cp->statut == 1 && $userID == $cp->fk_user) { $cp->statut = 2; $verif = $cp->update($user->id); // Si pas d'erreur SQL on redirige vers la fiche de la demande if ($verif > 0) { // To $destinataire = new User($db); $destinataire->fetch($cp->fk_validator); $emailTo = $destinataire->email; // From $expediteur = new User($db); $expediteur->fetch($cp->fk_user); $emailFrom = $expediteur->email; // Subject $societeName = $conf->global->MAIN_INFO_SOCIETE_NOM; if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $societeName = $conf->global->MAIN_APPLICATION_TITLE; $subject = $societeName." - ".$langs->transnoentitiesnoconv("HolidaysToValidate"); // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; $message.= "Veuillez trouver ci-dessous une demande de congés payés à valider.\n"; $delayForRequest = $cp->getConfCP('delayForRequest'); //$delayForRequest = $delayForRequest * (60*60*24); $nextMonth = dol_time_plus_duree($now, $delayForRequest, 'd'); // Si l'option pour avertir le valideur en cas de délai trop court if($cp->getConfCP('AlertValidatorDelay')) { if($cp->date_debut < $nextMonth) { $message.= "\n"; $message.= "Cette demande de congés payés à été effectué dans un délai de moins de ".$cp->getConfCP('delayForRequest')." jours avant ceux-ci.\n"; } } // Si l'option pour avertir le valideur en cas de solde inférieur à la demande if($cp->getConfCP('AlertValidatorSolde')) { $nbopenedday=num_open_day($cp->date_debut,$cp->date_fin,0,1); if ($nbopenedday > $cp->getCPforUser($cp->fk_user)) { $message.= "\n"; $message.= "L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis.\n"; } } $message.= "\n"; $message.= "- ".$langs->transnoentitiesnoconv("Name")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Period")." : ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; $mail = new CMailFile($subject,$emailTo,$emailFrom,$message); // Envoi du mail $result=$mail->sendfile(); if (!$result) { header('Location: fiche.php?id='.$_GET['id'].'&error=mail&error_content='.$mail->error); exit; } header('Location: fiche.php?id='.$_GET['id']); exit; } else { // Sinon on affiche le formulaire de demande avec le message d'erreur SQL header('Location: fiche.php?id='.$_GET['id'].'&error=SQL_Create&msg='.$cp->error); exit; } } } // Si Validation de la demande if($action == 'confirm_valid') { $cp = new Holiday($db); $cp->fetch($_GET['id']); $userID = $user->id; // Si statut en attente de validation et valideur = utilisateur if($cp->statut == 2 && $userID == $cp->fk_validator) { $cp->date_valid = dol_now(); $cp->fk_user_valid = $user->id; $cp->statut = 3; $verif = $cp->update($user->id); // Si pas d'erreur SQL on redirige vers la fiche de la demande if($verif > 0) { // Retrait du nombre de jours prit $nbJour = $nbopenedday=num_open_day($cp->date_debut,$cp->date_fin,0,1); $soldeActuel = $cp->getCpforUser($cp->fk_user); $newSolde = $soldeActuel - ($nbJour*$cp->getConfCP('nbHolidayDeducted')); // On ajoute la modification dans le LOG $cp->addLogCP($userID,$cp->fk_user,'Event : '.$langs->transnoentitiesnoconv("Holiday"),$newSolde); // Mise à jour du solde $cp->updateSoldeCP($cp->fk_user,$newSolde); // To $destinataire = new User($db); $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; // From $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); $emailFrom = $expediteur->email; // Subject $societeName = $conf->global->MAIN_INFO_SOCIETE_NOM; if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $societeName = $conf->global->MAIN_APPLICATION_TITLE; $subject = $societeName." - ".$langs->transnoentitiesnoconv("HolidaysValidated"); // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; $message.= "Votre demande de congés payés du ".dol_print_date($cp->date_debut,'day')." au ".dol_print_date($cp->date_fin,'day')." vient d'être validée!\n"; $message.= "- ".$langs->transnoentitiesnoconv("ValidatedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; $mail = new CMailFile($subject,$emailTo,$emailFrom,$message); // Envoi du mail $result=$mail->sendfile(); if(!$result) { header('Location: fiche.php?id='.$_GET['id'].'&error=mail&error_content='.$mail->error); exit; } header('Location: fiche.php?id='.$_GET['id']); exit; } else { // Sinon on affiche le formulaire de demande avec le message d'erreur SQL header('Location: fiche.php?id='.$_GET['id'].'&error=SQL_Create&msg='.$cp->error); exit; } } } if ($action == 'confirm_refuse') { if(!empty($_POST['detail_refuse'])) { $cp = new Holiday($db); $cp->fetch($_GET['id']); $userID = $user->id; // Si statut en attente de validation et valideur = utilisateur if($cp->statut == 2 && $userID == $cp->fk_validator) { $cp->date_refuse = date('Y-m-d H:i:s', time()); $cp->fk_user_refuse = $user->id; $cp->statut = 5; $cp->detail_refuse = $_POST['detail_refuse']; $verif = $cp->update($user->id); // Si pas d'erreur SQL on redirige vers la fiche de la demande if($verif > 0) { // To $destinataire = new User($db); $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; // From $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); $emailFrom = $expediteur->email; // Subject $societeName = $conf->global->MAIN_INFO_SOCIETE_NOM; if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $societeName = $conf->global->MAIN_APPLICATION_TITLE; $subject = $societeName." - ".$langs->transnoentitiesnoconv("HolidaysRefused"); // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; $message.= "Votre demande de congés payés ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')." vient d'être refusée pour le motif suivant :\n"; $message.= $_POST['detail_refuse']."\n\n"; $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; $mail = new CMailFile($subject,$emailTo,$emailFrom,$message); // Envoi du mail $result=$mail->sendfile(); if(!$result) { header('Location: fiche.php?id='.$_GET['id'].'&error=mail&error_content='.$mail->error); exit; } header('Location: fiche.php?id='.$_GET['id']); exit; } else { // Sinon on affiche le formulaire de demande avec le message d'erreur SQL header('Location: fiche.php?id='.$_GET['id'].'&error=SQL_Create&msg='.$cp->error); exit; } } } else { header('Location: fiche.php?id='.$_GET['id'].'&error=NoMotifRefuse'); exit; } } // Si Validation de la demande if ($action == 'confirm_cancel' && $_GET['confirm'] == 'yes') { $cp = new Holiday($db); $cp->fetch($_GET['id']); $userID = $user->id; // Si statut en attente de validation et valideur = utilisateur if ($cp->statut == 2 && $userID == $cp->fk_validator) { $cp->date_cancel = dol_now(); $cp->fk_user_cancel = $user->id; $cp->statut = 4; $verif = $cp->update($user->id); // Si pas d'erreur SQL on redirige vers la fiche de la demande if($verif > 0) { // To $destinataire = new User($db); $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; // From $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); $emailFrom = $expediteur->email; // Subject $societeName = $conf->global->MAIN_INFO_SOCIETE_NOM; if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $societeName = $conf->global->MAIN_APPLICATION_TITLE; $subject = $societeName." - ".$langs->transnoentitiesnoconv("HolidaysCanceled"); // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; $message.= "Votre demande de congés ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')." va été annulée.\n"; $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; $mail = new CMailFile($subject,$emailTo,$emailFrom,$message); // Envoi du mail $result=$mail->sendfile(); if(!$result) { header('Location: fiche.php?id='.$_GET['id'].'&error=mail&error_content='.$mail->error); exit; } header('Location: fiche.php?id='.$_GET['id']); exit; } else { // Sinon on affiche le formulaire de demande avec le message d'erreur SQL header('Location: fiche.php?id='.$_GET['id'].'&error=SQL_Create&msg='.$cp->error); exit; } } } /* * View */ $form = new Form($db); $cp = new Holiday($db); $listhalfday=array('morning'=>$langs->trans("Morning"),"afternoon"=>$langs->trans("Afternoon")); llxHeader(array(),$langs->trans('CPTitreMenu')); if (empty($id) || $action == 'add' || $action == 'request') { // Si l'utilisateur n'a pas le droit de faire une demande if(!$user->rights->holiday->write) { $errors[]=$langs->trans('CantCreateCP'); } else { // Formulaire de demande de congés payés print_fiche_titre($langs->trans('MenuAddCP')); // Si il y a une erreur if (GETPOST('error')) { switch(GETPOST('error')) { case 'datefin' : $errors[] = $langs->trans('ErrorEndDateCP'); break; case 'SQL_Create' : $errors[] = $langs->trans('ErrorSQLCreateCP').' '.htmlentities($_GET['msg']).''; break; case 'CantCreate' : $errors[] = $langs->trans('CantCreateCP'); break; case 'Valideur' : $errors[] = $langs->trans('InvalidValidatorCP'); break; case 'nodatedebut' : $errors[] = $langs->trans('NoDateDebut'); break; case 'nodatedebut' : $errors[] = $langs->trans('NoDateFin'); break; case 'DureeHoliday' : $errors[] = $langs->trans('ErrorDureeCP'); break; case 'alreadyCP' : $errors[] = $langs->trans('alreadyCPexist'); break; } dol_htmloutput_mesg('',$errors,'error'); } $delayForRequest = $cp->getConfCP('delayForRequest'); //$delayForRequest = $delayForRequest * (60*60*24); $nextMonth = dol_time_plus_duree($now, $delayForRequest, 'd'); print ''."\n"; // Formulaire de demande print '
'."\n"; print ''."\n"; print ''."\n"; print '
'; print ''.$langs->trans('DelayToRequestCP',$cp->getConfCP('delayForRequest')).'

'; $nb_holiday = $cp->getCPforUser($user->id) / $cp->getConfCP('nbHolidayDeducted'); print ''.$langs->trans('SoldeCPUser', round($nb_holiday,0)).'

'; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; // Liste des utiliseurs du groupes choisi dans la config $idGroupValid = $cp->getConfCP('userGroup'); $validator = new UserGroup($db, $idGroupValid); $valideurarray = $validator->listUsersForGroup(); print ''; print ''; print ''; print ''; print ''; print ''; print ''; print '
'.$langs->trans("DateDebCP").' ('.$langs->trans("FirstDayOfHoliday").')'; // Si la demande ne vient pas de l'agenda if(!isset($_GET['datep'])) { $form->select_date(-1,'date_debut_'); } else { $tmpdate = dol_mktime(0, 0, 0, GETPOST('datepmonth'), GETPOST('datepday'), GETPOST('datepyear')); $form->select_date($tmpdate,'date_debut_'); } print '     '; print $form->selectarray('starthalfday', $listhalfday, (GETPOST('starthalfday')?GETPOST('starthalfday'):'morning')); print '
'.$langs->trans("DateFinCP").' ('.$langs->trans("LastDayOfHoliday").')'; // Si la demande ne vient pas de l'agenda if(!isset($_GET['datep'])) { $form->select_date(-1,'date_fin_'); } else { $tmpdate = dol_mktime(0, 0, 0, GETPOST('datefmonth'), GETPOST('datefday'), GETPOST('datefyear')); $form->select_date($tmpdate,'date_fin_'); } print '     '; print $form->selectarray('endhalfday', $listhalfday, (GETPOST('endhalfday')?GETPOST('endhalfday'):'afternoon')); print '
'.$langs->trans("ValidateByCP").''; print $form->select_dolusers($validator->id, "valideur", 1, "", 0, $valideurarray); print '
'.$langs->trans("DescCP").''; print ''; print '
'; print '
'; print '
'; print ''."\n"; print '
'; print ''; print '    '; print ''; print '
'; } } else { if ($error) { print '
'; print $error; print '

'; print '
'; } else { // Affichage de la fiche d'une demande de congés payés if ($id > 0) { $cp->fetch($id); $valideur = new User($db); $valideur->fetch($cp->fk_validator); $userRequest = new User($db); $userRequest->fetch($cp->fk_user); // Utilisateur connecté $userID = $user->id; //print_fiche_titre($langs->trans('TitreRequestCP')); // Si il y a une erreur if (GETPOST('error')) { switch(GETPOST('error')) { case 'datefin' : $errors[] = $langs->transnoentitiesnoconv('ErrorEndDateCP'); break; case 'SQL_Create' : $errors[] = $langs->transnoentitiesnoconv('ErrorSQLCreateCP').' '.$_GET['msg']; break; case 'CantCreate' : $errors[] = $langs->transnoentitiesnoconv('CantCreateCP'); break; case 'Valideur' : $errors[] = $langs->transnoentitiesnoconv('InvalidValidatorCP'); break; case 'nodatedebut' : $errors[] = $langs->transnoentitiesnoconv('NoDateDebut'); break; case 'nodatedebut' : $errors[] = $langs->transnoentitiesnoconv('NoDateFin'); break; case 'DureeHoliday' : $errors[] = $langs->transnoentitiesnoconv('ErrorDureeCP'); break; case 'NoMotifRefuse' : $errors[] = $langs->transnoentitiesnoconv('NoMotifRefuseCP'); break; case 'mail' : $errors[] = $langs->transnoentitiesnoconv('ErrorMailNotSend')."\n".$_GET['error_content']; break; } dol_htmloutput_mesg('',$errors,'error'); } // On vérifie si l'utilisateur à le droit de lire cette demande if($user->id == $cp->fk_user || $user->rights->holiday->lire_tous) { if ($action == 'delete' && $cp->statut == 1) { if($user->rights->holiday->delete) { $ret=$form->form_confirm("fiche.php?id=".$id,$langs->trans("TitleDeleteCP"),$langs->trans("ConfirmDeleteCP"),"confirm_delete", '', 0, 1); if ($ret == 'html') print '
'; } } // Si envoi en validation if ($action == 'sendToValidate' && $cp->statut == 1 && $userID == $cp->fk_user) { $ret=$form->form_confirm("fiche.php?id=".$id,$langs->trans("TitleToValidCP"),$langs->trans("ConfirmToValidCP"),"confirm_send", '', 1, 1); if ($ret == 'html') print '
'; } // Si validation de la demande if ($action == 'valid' && $cp->statut == 2 && $userID == $cp->fk_validator) { $ret=$form->form_confirm("fiche.php?id=".$id,$langs->trans("TitleValidCP"),$langs->trans("ConfirmValidCP"),"confirm_valid", '', 1, 1); if ($ret == 'html') print '
'; } // Si refus de la demande if ($action == 'refuse' && $cp->statut == 2 && $userID == $cp->fk_validator) { $array_input = array(array('type'=>"text",'label'=>"Entrez ci-dessous un motif de refus :",'name'=>"detail_refuse",'size'=>"50",'value'=>"")); $ret=$form->form_confirm("fiche.php?id=".$id."&action=confirm_refuse", $langs->trans("TitleRefuseCP"), "", "confirm_refuse", $array_input, 1, 0); if ($ret == 'html') print '
'; } // Si annulation de la demande if ($action == 'cancel' && $cp->statut == 2 && $userID == $cp->fk_validator) { $ret=$form->form_confirm("fiche.php?id=".$id,$langs->trans("TitleCancelCP"),$langs->trans("ConfirmCancelCP"),"confirm_cancel", '', 1, 1); if ($ret == 'html') print '
'; } $head=holiday_prepare_head($cp); dol_fiche_head($head,'card',$langs->trans("CPTitreMenu"),0,'holiday'); if ($action == 'edit' && $user->id == $cp->fk_user && $cp->statut == 1) { $edit = true; print ''."\n"; print ''."\n"; print ''."\n"; } print ''; print ''; $linkback=''; print ''; print ''; print ''; print ''; $starthalfday=($cp->halfday == -1 || $cp->halfday == 2)?'afternoon':'morning'; $endhalfday=($cp->halfday == 1 || $cp->halfday == 2)?'morning':'afternoon'; if(!$edit) { print ''; print ''; print ''; print ''; } else { print ''; print ''; print ''; print ''; } if (!$edit) { print ''; print ''; print ''; print ''; } else { print ''; print ''; print ''; print ''; } print ''; print ''; print ''; print ''; // Status print ''; print ''; print ''; print ''; if ($cp->statut == 5) { print ''; print ''; print ''; print ''; } // Description if (!$edit) { print ''; print ''; print ''; print ''; } else { print ''; print ''; print ''; print ''; } print ''; print '
'.$langs->trans("Ref").''; print $form->showrefnav($cp, 'id', $linkback, 1, 'rowid', 'ref'); print '
'.$langs->trans('DateDebCP').' ('.$langs->trans("FirstDayOfHoliday").')'.dol_print_date($cp->date_debut,'day'); print '     '; print $langs->trans($listhalfday[$starthalfday]); print '
'.$langs->trans('DateDebCP').' ('.$langs->trans("FirstDayOfHoliday").')'; $form->select_date($cp->date_debut,'date_debut_'); print '     '; print $form->selectarray('starthalfday', $listhalfday, (GETPOST('starthalfday')?GETPOST('starthalfday'):$starthalfday)); print '
'.$langs->trans('DateFinCP').' ('.$langs->trans("LastDayOfHoliday").')'.dol_print_date($cp->date_fin,'day'); print '     '; print $langs->trans($listhalfday[$endhalfday]); print '
'.$langs->trans('DateFinCP').' ('.$langs->trans("LastDayOfHoliday").')'; $form->select_date($cp->date_fin,'date_fin_'); print '     '; print $form->selectarray('endhalfday', $listhalfday, (GETPOST('endhalfday')?GETPOST('endhalfday'):$endhalfday)); print '
'.$langs->trans('NbUseDaysCP').''.num_open_day($cp->date_debut, $cp->date_fin, 0, 1, $cp->halfday).'
'.$langs->trans('StatutCP').''.$cp->getLibStatut(2).'
'.$langs->trans('DetailRefusCP').''.$cp->detail_refuse.'
'.$langs->trans('DescCP').''.nl2br($cp->description).'
'.$langs->trans('DescCP').'
'."\n"; print '

'; print ''."\n"; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; if(!$edit) { print ''; print ''; print ''; print ''; } else { print ''; print ''; // Liste des utiliseurs du groupes choisi dans la config $idGroupValid = $cp->getConfCP('userGroup'); $validator = new UserGroup($db,$idGroupValid); $valideur = $validator->listUsersForGroup(); print ''; print ''; } print ''; print ''; print ''; print ''; if($cp->statut == 3) { print ''; print ''; print ''; print ''; } if($cp->statut == 4) { print ''; print ''; print ''; print ''; } if($cp->statut == 5) { print ''; print ''; print ''; print ''; } print ''; print '
'.$langs->trans("InfosWorkflowCP").'
'.$langs->trans('RequestByCP').''.$userRequest->getNomUrl(1).'
'.$langs->trans('ValidateByCP').''.$valideur->getNomUrl(1).'
'.$langs->trans('ValidateByCP').''; $form->select_users($cp->fk_validator,"valideur",1,"",0,$valideur,''); print '
'.$langs->trans('DateCreateCP').''.dol_print_date($cp->date_create,'dayhour').'
'.$langs->trans('DateValidCP').''.dol_print_date($cp->date_valid,'dayhour').'
'.$langs->trans('DateCancelCP').''.dol_print_date($cp->date_cancel,'dayhour').'
'.$langs->trans('DateRefusCP').''.dol_print_date($cp->date_refuse,'dayhour').'
'; if ($edit && $user->id == $cp->fk_user && $cp->statut == 1) { print '
'; if($user->rights->holiday->write && $_GET['action'] == 'edit' && $cp->statut == 1) { print ''; } print '
'; print '
'; } dol_fiche_end(); if (! $edit) { print '
'; // Boutons d'actions if($user->rights->holiday->write && $_GET['action'] != 'edit' && $cp->statut == 1) { print ''.$langs->trans("EditCP").''; } if($user->id == $cp->fk_user && $cp->statut == 1) { print ''.$langs->trans("Validate").''; } if($user->rights->holiday->delete && $cp->statut == 1) { print ''.$langs->trans("DeleteCP").''; } // Si le statut est en attente de validation et que le valideur est connecté if ($userID == $cp->fk_validator && $cp->statut == 2) { print ''.$langs->trans("Approve").''; print ''.$langs->trans("ActionRefuseCP").''; } if (($userID == $cp->fk_validator && $cp->statut == 2) || ($cp->date_debut > dol_now()) || $user->admin) { print ''.$langs->trans("ActionCancelCP").''; } print '
'; } } else { print '
'; print $langs->trans('ErrorUserViewCP'); print '

'; print '
'; } } else { print '
'; print $langs->trans('ErrorIDFicheCP'); print '

'; print '
'; } } } // End of page llxFooter(); if (is_object($db)) $db->close(); ?>