* Copyright (C) 2011 Dimitri Mouillard * * 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 2 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 fiche.php * \ingroup holiday * \brief Form and file creation of paid holiday. * \version $Id: fiche.php,v 1.16 2011/09/15 11:00:00 dmouillard Exp $ * \author dmouillard@teclib.com * \remarks 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. "/holiday/common.inc.php"); // Get parameters $myparam = GETPOST("myparam"); $action=GETPOST('action'); // Protection if external user if ($user->societe_id > 0) accessforbidden(); $user_id = $user->id; /******************************************************************* * Actions ********************************************************************/ // Si création de la demande if ($action == 'add') { // 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, $_POST['date_debut_month'], $_POST['date_debut_day'], $_POST['date_debut_year']); $date_fin = dol_mktime(0, 0, 0, $_POST['date_fin_month'], $_POST['date_fin_day'], $_POST['date_fin_year']); $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; } $testDateDebut = $date_debut; $testDateFin = $date_fin; // Si date de début après la date de fin if($testDateDebut > $testDateFin) { header('Location: fiche.php?action=request&error=datefin'); exit; } $cp = new Holiday($db); $verifCP = $cp->verifDateHolidayCP($userID,$date_debut,$date_fin); // On vérifie si il n'y a pas déjà des congés payés sur cette période if(!$verifCP) { header('Location: fiche.php?action=request&error=alreadyCP'); exit; } // Si aucun jours ouvrés dans la demande if($cp->getOpenDays($testDateDebut,$testDateFin) < 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; $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') { // 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) { $date_debut = $_POST['date_debut_year'].'-'.str_pad($_POST['date_debut_month'],2,"0",STR_PAD_LEFT).'-'.str_pad($_POST['date_debut_day'],2,"0",STR_PAD_LEFT); $date_fin = $_POST['date_fin_year'].'-'.str_pad($_POST['date_fin_month'],2,"0",STR_PAD_LEFT).'-'.str_pad($_POST['date_fin_day'],2,"0",STR_PAD_LEFT); $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; } $testDateDebut = strtotime($date_debut); $testDateFin = strtotime($date_fin); // Si date de début après la date de fin if ($testDateDebut > $testDateFin) { 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 if ($cp->getOpenDays($testDateDebut,$testDateFin) < 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; $verif = $cp->update($user->id); // Si pas d'erreur SQL on redirige vers la fiche de la demande 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) { // A $destinataire = new User($db); $destinataire->fetch($cp->fk_validator); $emailTo = $destinataire->email; // De $expediteur = new User($db); $expediteur->fetch($cp->fk_user); $emailFrom = $expediteur->email; // Sujet if($conf->global->MAIN_APPLICATION_TITLE != NULL) { $societeName = addslashes($conf->global->MAIN_APPLICATION_TITLE); } else { $societeName = addslashes($conf->global->MAIN_INFO_SOCIETE_NOM); } $subject = stripslashes($societeName)." - Demande de congés payés à valider"; // Contenu $message = "Bonjour {$destinataire->prenom},\n\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 = date('Y-m-d', time()+$delayForRequest); // 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"; $message.= " 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')) { if($cp->getOpenDays(strtotime($cp->date_debut),strtotime($cp->date_fin)) > $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.= "- Demandeur : {$expediteur->prenom} {$expediteur->nom}\n"; $message.= "- Période : du ".date('d/m/Y',strtotime($cp->date_debut))." au ".date('d/m/Y',strtotime($cp->date_fin))."\n"; $message.= "- Lien : {$dolibarr_main_url_root}/holiday/fiche.php?id={$cp->rowid}\n\n"; $message.= "Bien cordialement,\n".$societeName; $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 = date('Y-m-d H:i:s', time()); $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 = $cp->getOpenDays(strtotime($cp->date_debut),strtotime($cp->date_fin)); $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 : Prise de congés payés',$newSolde); // Mise à jour du solde $cp->updateSoldeCP($cp->fk_user,$newSolde); // A $destinataire = new User($db); $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; // De $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); $emailFrom = $expediteur->email; // Sujet if($conf->global->MAIN_APPLICATION_TITLE != NULL) { $societeName = addslashes($conf->global->MAIN_APPLICATION_TITLE); } else { $societeName = addslashes($conf->global->MAIN_INFO_SOCIETE_NOM); } $subject = stripslashes($societeName)." - Demande de congés payés validée"; // Contenu $message = "Bonjour {$destinataire->prenom},\n\n"; $message.= "Votre demande de congés payés du ".$cp->date_debut." au ".$cp->date_fin." vient d'être validée!\n"; $message.= "- Valideur : {$expediteur->prenom} {$expediteur->nom}\n"; $message.= "- Lien : {$dolibarr_main_url_root}/holiday/fiche.php?id={$cp->rowid}\n\n"; $message.= "Bien cordialement,\n".$societeName; $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) { // A $destinataire = new User($db); $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; // De $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); $emailFrom = $expediteur->email; // Sujet if($conf->global->MAIN_APPLICATION_TITLE != NULL) { $societeName = addslashes($conf->global->MAIN_APPLICATION_TITLE); } else { $societeName = addslashes($conf->global->MAIN_INFO_SOCIETE_NOM); } $subject = stripslashes($societeName)." - Demande de congés payés refusée"; // Contenu $message = "Bonjour {$destinataire->prenom},\n\n"; $message.= "Votre demande de congés payés ".$cp->date_debut." au ".$cp->date_fin." vient d'être refusée pour le motif suivant :\n"; $message.= $_POST['detail_refuse']."\n\n"; $message.= "- Valideur : {$expediteur->prenom} {$expediteur->nom}\n"; $message.= "- Lien : {$dolibarr_main_url_root}/holiday/fiche.php?id={$cp->rowid}\n\n"; $message.= "Bien cordialement,\n".$societeName; $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 = date('Y-m-d H:i:s', time()); $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) { // A $destinataire = new User($db); $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; // De $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); $emailFrom = $expediteur->email; // Sujet if($conf->global->MAIN_APPLICATION_TITLE != NULL) { $societeName = addslashes($conf->global->MAIN_APPLICATION_TITLE); } else { $societeName = addslashes($conf->global->MAIN_INFO_SOCIETE_NOM); } $subject = stripslashes($societeName)."- Demande de congés payés annulée"; // Contenu $message = "Bonjour {$destinataire->prenom},\n\n"; $message.= "Votre demande de congés payés ".$cp->date_debut." au ".$cp->date_fin." vient d'être annulée !\n"; $message.= "- Valideur : {$expediteur->prenom} {$expediteur->nom}\n"; $message.= "- Lien : {$dolibarr_main_url_root}/holiday/fiche.php?id={$cp->rowid}\n\n"; $message.= "Bien cordialement,\n".$societeName; $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 ****************************************************/ llxHeader(array(),$langs->trans('CPTitreMenu')); if ($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'); } $html = new Form($db); $cp = new Holiday($db); $delayForRequest = $cp->getConfCP('delayForRequest'); $delayForRequest = $delayForRequest * (60*60*24); $nextMonth = date('Y-m-d', time()+$delayForRequest); 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").''; // Si la demande ne vient pas de l'agenda if(!isset($_GET['datep'])) { $html->select_date($nextMonth,'date_debut_'); } else { $tmpdate = dol_mktime(0, 0, 0, GETPOST('datepmonth'), GETPOST('datepday'), GETPOST('datepyear')); $html->select_date($tmpdate,'date_debut_'); } print '
'.$langs->trans("DateFinCP").''; // Si la demande ne vient pas de l'agenda if(!isset($_GET['datep'])) { $html->select_date($nextMonth,'date_fin_'); } else { $tmpdate = dol_mktime(0, 0, 0, GETPOST('datefmonth'), GETPOST('datefday'), GETPOST('datefyear')); $html->select_date($tmpdate,'date_fin_'); } print '
'.$langs->trans("ValidateByCP").''; print $html->select_dolusers($valideur,"valideur",1,"",0,$valideurarray,''); print '
'.$langs->trans("DescCP").''; print ''; print '
'; print '
'; print '
'; print ''."\n"; print '
'; print ''; print '    '; print ''; print '
'; } } elseif(isset($_GET['id'])) { if ($error) { print '
'; print $error; print '

'; print '
'; } else { // Affichage de la fiche d'une demande de congés payés if ($_GET['id'] > 0) { $cp = new Holiday($db); $cp->fetch($_GET['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->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 'NoMotifRefuse' : $errors[] = $langs->trans('NoMotifRefuseCP'); break; case 'mail' : $errors[] = $langs->trans('ErrorMailNotSend').'
'.$_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) { $html = new Form($db); $ret=$html->form_confirm("fiche.php?id=".$_GET['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) { $html = new Form($db); $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleToValidCP"),$langs->trans("ConfirmToValidCP"),"confirm_send", '', 0, 1); if ($ret == 'html') print '
'; } // Si validation de la demande if ($action == 'valid' && $cp->statut == 2 && $userID == $cp->fk_validator) { $html = new Form($db); $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleValidCP"),$langs->trans("ConfirmValidCP"),"confirm_valid", '', 0, 1); if ($ret == 'html') print '
'; } // Si refus de la demande if ($action == 'refuse' && $cp->statut == 2 && $userID == $cp->fk_validator) { $html = new Form($db); $array_input = array(array('type'=>"text",'label'=>"Entrez ci-dessous un motif de refus :",'name'=>"detail_refuse",'size'=>"50",'value'=>"")); $ret=$html->form_confirm("fiche.php?id=".$_GET['id']."&action=confirm_refuse",$langs->trans("TitleRefuseCP"),"","confirm_refuse",$array_input,"",0); if ($ret == 'html') print '
'; } // Si annulation de la demande if ($action == 'cancel' && $cp->statut == 2 && $userID == $cp->fk_validator) { $html = new Form($db); $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleCancelCP"),$langs->trans("ConfirmCancelCP"),"confirm_cancel", '', 0, 1); if ($ret == 'html') print '
'; } dol_fiche_head(array(),'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"; $html = new Form($db); } print ''; print ''; /*print ''; print ''; print '';*/ print ''; print ''; print ''; print ''; 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("InfosCP").'
'.$langs->trans("Ref").''.$cp->rowid.'
'.$langs->trans('DateDebCP').''.dol_print_date($cp->date_debut,'day').'
'.$langs->trans('DateDebCP').''; $html->select_date($cp->date_debut,'date_debut_'); print '
'.$langs->trans('DateFinCP').''.dol_print_date($cp->date_fin,'day').'
'.$langs->trans('DateFinCP').''; $html->select_date($cp->date_fin,'date_fin_'); print '
'.$langs->trans('NbUseDaysCP').''.$cp->getOpenDays(strtotime($cp->date_debut),strtotime($cp->date_fin)).'
'.$langs->trans('StatutCP').''.$cp->getStatutCP($cp->statut).'
'.$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').''; $html->select_users($cp->fk_validator,"valideur",1,"",0,$valideur,''); print '
'.$langs->trans('DateCreateCP').''.$cp->date_create.'
'.$langs->trans('DateValidCP').''.$cp->date_valid.'
'.$langs->trans('DateCancelCP').''.$cp->date_cancel.'
'.$langs->trans('DateRefusCP').''.$cp->date_refuse.'
'; dol_fiche_end(); print '
'."\n"; if ($edit) { print '
'; if($user->rights->holiday->write && $_GET['action'] == 'edit' && $cp->statut == 1) { print ''; } print '
'; print '
'; } if (! $edit) { print '
'; print '
'."\n"; // Boutons d'actions if($user->rights->holiday->write && $_GET['action'] != 'edit' && $cp->statut == 1) { print ''.$langs->trans("EditCP").''; } if($user->rights->holiday->delete && $cp->statut == 1) { print ''.$langs->trans("DeleteCP").''; } if($user->id == $cp->fk_user && $cp->statut == 1) { print ''.$langs->trans("SendToValidationCP").''; } // 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("ActionValidCP").''; print ''.$langs->trans("ActionRefuseCP").''; 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(); ?>