* Copyright (C) 2013-2015 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/list.php * \ingroup holiday * \brief List of holiday. */ require('../main.inc.php'); require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; require_once DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'; require_once DOL_DOCUMENT_ROOT.'/holiday/common.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php'; $langs->load('users'); $langs->load('holidays'); // Protection if external user if ($user->societe_id > 0) accessforbidden(); $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); $page = is_numeric($page) ? $page : 0; $page = $page == -1 ? 0 : $page; if (! $sortfield) $sortfield="cp.rowid"; if (! $sortorder) $sortorder="DESC"; $offset = $conf->liste_limit * $page ; $pageprev = $page - 1; $pagenext = $page + 1; $id = GETPOST('id','int'); $search_ref = GETPOST('search_ref'); $month_create = GETPOST('month_create'); $year_create = GETPOST('year_create'); $month_start = GETPOST('month_start'); $year_start = GETPOST('year_start'); $month_end = GETPOST('month_end'); $year_end = GETPOST('year_end'); $search_employe = GETPOST('search_employe'); $search_valideur = GETPOST('search_valideur'); $search_statut = GETPOST('select_statut'); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { $search_ref=""; $month_create=""; $year_create=""; $month_start=""; $year_start=""; $month_end=""; $year_end=""; $search_employe=""; $search_valideur=""; $search_statut=""; } /* * Actions */ // None /* * View */ $holiday = new Holiday($db); $holidaystatic=new Holiday($db); $fuser = new User($db); // Update sold $result = $holiday->updateBalance(); $max_year = 5; $min_year = 10; $filter=''; llxHeader(array(),$langs->trans('CPTitreMenu')); $order = $db->order($sortfield,$sortorder).$db->plimit($conf->liste_limit + 1, $offset); // WHERE if(!empty($search_ref)) { $filter.= " AND cp.rowid LIKE '%".$db->escape($search_ref)."%'\n"; } // DATE START if($year_start > 0) { if($month_start > 0) { $filter .= " AND (cp.date_debut BETWEEN '".$db->idate(dol_get_first_day($year_start,$month_start,1))."' AND '".$db->idate(dol_get_last_day($year_start,$month_start,1))."')"; //$filter.= " AND date_format(cp.date_debut, '%Y-%m') = '$year_start-$month_start'"; } else { $filter .= " AND (cp.date_debut BETWEEN '".$db->idate(dol_get_first_day($year_start,1,1))."' AND '".$db->idate(dol_get_last_day($year_start,12,1))."')"; //$filter.= " AND date_format(cp.date_debut, '%Y') = '$year_start'"; } } else { if($month_start > 0) { $filter.= " AND date_format(cp.date_debut, '%m') = '$month_start'"; } } // DATE FIN if($year_end > 0) { if($month_end > 0) { $filter .= " AND (cp.date_fin BETWEEN '".$db->idate(dol_get_first_day($year_end,$month_end,1))."' AND '".$db->idate(dol_get_last_day($year_end,$month_end,1))."')"; //$filter.= " AND date_format(cp.date_fin, '%Y-%m') = '$year_end-$month_end'"; } else { $filter .= " AND (cp.date_fin BETWEEN '".$db->idate(dol_get_first_day($year_end,1,1))."' AND '".$db->idate(dol_get_last_day($year_end,12,1))."')"; //$filter.= " AND date_format(cp.date_fin, '%Y') = '$year_end'"; } } else { if($month_end > 0) { $filter.= " AND date_format(cp.date_fin, '%m') = '$month_end'"; } } // DATE CREATE if($year_create > 0) { if($month_create > 0) { $filter .= " AND (cp.date_create BETWEEN '".$db->idate(dol_get_first_day($year_create,$month_create,1))."' AND '".$db->idate(dol_get_last_day($year_create,$month_create,1))."')"; //$filter.= " AND date_format(cp.date_create, '%Y-%m') = '$year_create-$month_create'"; } else { $filter .= " AND (cp.date_create BETWEEN '".$db->idate(dol_get_first_day($year_create,1,1))."' AND '".$db->idate(dol_get_last_day($year_create,12,1))."')"; //$filter.= " AND date_format(cp.date_create, '%Y') = '$year_create'"; } } else { if($month_create > 0) { $filter.= " AND date_format(cp.date_create, '%m') = '$month_create'"; } } // EMPLOYE if(!empty($search_employe) && $search_employe != -1) { $filter.= " AND cp.fk_user = '".$db->escape($search_employe)."'\n"; } // VALIDEUR if(!empty($search_valideur) && $search_valideur != -1) { $filter.= " AND cp.fk_validator = '".$db->escape($search_valideur)."'\n"; } // STATUT if(!empty($search_statut) && $search_statut != -1) { $filter.= " AND cp.statut = '".$db->escape($search_statut)."'\n"; } /************************************* * Fin des filtres de recherche *************************************/ // Récupération de l'ID de l'utilisateur $user_id = $user->id; if ($id > 0) { // Charge utilisateur edite $fuser->fetch($id); $fuser->getrights(); $user_id = $fuser->id; } // Récupération des congés payés de l'utilisateur ou de tous les users if (empty($user->rights->holiday->write_all) || $id > 0) { $holiday_payes = $holiday->fetchByUser($user_id,$order,$filter); // Load array $holiday->holiday } else { $holiday_payes = $holiday->fetchAll($order,$filter); // Load array $holiday->holiday } // Si erreur SQL if ($holiday_payes == '-1') { print_fiche_titre($langs->trans('CPTitreMenu'), '', 'title_hrm.png'); dol_print_error($db, $langs->trans('Error').' '.$holiday->error); exit(); } // Show table of vacations $var=true; $num = count($holiday->holiday); $form = new Form($db); $formother = new FormOther($db); if ($id > 0) { $head = user_prepare_head($fuser); $title = $langs->trans("User"); dol_fiche_head($head, 'paidholidays', $title, 0, 'user'); print ''; // Ref print ''; print ''; print ''; // LastName print ''; print ''; print "\n"; // FirstName print ''; print ''; print "\n"; print '
'.$langs->trans("Ref").''; print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin); print '
'.$langs->trans("LastName").''.$fuser->lastname.'
'.$langs->trans("FirstName").''.$fuser->firstname.'

'; } else { print_barre_liste($langs->trans("ListeCP"), $page, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, "", $num, 0, 'title_hrm.png'); dol_fiche_head(''); } $out=''; $typeleaves=$holiday->getTypes(1,1); foreach($typeleaves as $key => $val) { $nb_type = $holiday->getCPforUser($user->id, $val['rowid']); $nb_holiday += $nb_type; $out .= ' - '.$val['label'].': '.($nb_type?price2num($nb_type):0).'
'; } print $langs->trans('SoldeCPUser', round($nb_holiday,5)).'
'; print $out; dol_fiche_end(); if ($id > 0) print '
'; print '
'."\n"; print ''; print ""; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"cp.rowid","",'','',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateCreateCP"),$_SERVER["PHP_SELF"],"cp.date_create","",'','align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Employe"),$_SERVER["PHP_SELF"],"cp.fk_user","",'','',$sortfield,$sortorder); print_liste_field_titre($langs->trans("ValidatorCP"),$_SERVER["PHP_SELF"],"cp.fk_validator","",'','',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],'','','','',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Duration"),$_SERVER["PHP_SELF"],'','','','align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateDebCP"),$_SERVER["PHP_SELF"],"cp.date_debut","",'','align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateFinCP"),$_SERVER["PHP_SELF"],"cp.date_fin","",'','align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"cp.statut","",'','align="center"',$sortfield,$sortorder); print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; // FILTRES print ''; print ''; // DATE CREATE print ''; // UTILISATEUR if ($user->rights->holiday->write_all) { print ''; } else { //print ''; print ''; } // VALIDEUR if($user->rights->holiday->write_all) { print ''; } else { print ''; } // Type print ''; // DUREE print ''; // DATE DEBUT print ''; // DATE FIN print ''; // STATUT print ''; // ACTION print ''; print "\n"; // Lines if (! empty($holiday->holiday)) { $userstatic = new User($db); $approbatorstatic = new User($db); foreach($holiday->holiday as $infos_CP) { $var=!$var; // Utilisateur $userstatic->id=$infos_CP['fk_user']; $userstatic->lastname=$infos_CP['user_lastname']; $userstatic->firstname=$infos_CP['user_firstname']; // Valideur $approbatorstatic->id=$infos_CP['fk_validator']; $approbatorstatic->lastname=$infos_CP['validator_lastname']; $approbatorstatic->firstname=$infos_CP['validator_firstname']; $date = $infos_CP['date_create']; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''."\n"; } } // Si il n'y a pas d'enregistrement suite à une recherche if($holiday_payes == '2') { print ''; print ''; print ''; } print '
'; print ''; print ''; print ''; $formother->select_year($year_create,'year_create',1, $min_year, 0); print ''; print $form->select_dolusers($search_employe,"search_employe",1,"",0,'','',0,32); print ' '; print $form->select_dolusers($user->id,"search_employe",1,"",1,'','',0,32); print ''; $validator = new UserGroup($db); $excludefilter=$user->admin?'':'u.rowid <> '.$user->id; $valideurobjects = $validator->listUsersForGroup($excludefilter); $valideurarray = array(); foreach($valideurobjects as $val) $valideurarray[$val->id]=$val->id; print $form->select_dolusers($search_valideur,"search_valideur",1,"",0,$valideurarray,'', 0, 32); print ' '; print ' '; print ''; $formother->select_year($year_start,'year_start',1, $min_year, $max_year); print ''; print ''; $formother->select_year($year_end,'year_end',1, $min_year, $max_year); print ''; $holiday->selectStatutCP($search_statut); print ''; print ''; print ''; print '
'; $holidaystatic->id=$infos_CP['rowid']; $holidaystatic->ref=$infos_CP['rowid']; print $holidaystatic->getNomUrl(1); print ''.dol_print_date($date,'day').''.$userstatic->getNomUrl('1').''.$approbatorstatic->getNomUrl('1').''.$infos_CP['fk_type'].''; $nbopenedday=num_open_day($infos_CP['date_debut_gmt'], $infos_CP['date_fin_gmt'], 0, 1, $infos_CP['halfday']); print $nbopenedday.' '.$langs->trans('DurationDays'); print ''.dol_print_date($infos_CP['date_debut'],'day').''.dol_print_date($infos_CP['date_fin'],'day').''.$holidaystatic->LibStatut($infos_CP['statut'],5).'
'.$langs->trans('None').'
'; print '
'; if ($user_id == $user->id) { print '
'; print '
'; print ''.$langs->trans('AddCP').''; print '
'; } llxFooter(); $db->close();