29 require
'../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
31 require_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
34 $langs->loadlangs(array(
'users',
'other',
'holiday',
'hrm'));
36 $action =
GETPOST(
'action',
'aZ09');
37 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'defineholidaylist';
38 $massaction =
GETPOST(
'massaction',
'alpha');
39 $optioncss =
GETPOST(
'optioncss',
'alpha');
41 $search_name =
GETPOST(
'search_name',
'alpha');
42 $search_supervisor =
GETPOST(
'search_supervisor',
'int');
45 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
46 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
47 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
49 if (empty($page) || $page == -1) {
52 $offset = $limit * $page;
53 $pageprev = $page - 1;
54 $pagenext = $page + 1;
56 $sortfield =
"t.rowid";
64 if ($user->socid > 0) {
69 if (empty($user->rights->holiday->read)) {
75 $hookmanager->initHooks(array(
'defineholidaylist'));
80 if (empty($conf->holiday->enabled)) {
81 llxHeader(
'', $langs->trans(
'CPTitreMenu'));
82 print
'<div class="tabBar">';
83 print
'<span style="color: #FF0000;">'.$langs->trans(
'NotActiveModCP').
'</span>';
95 if (
GETPOST(
'cancel',
'alpha')) {
96 $action =
'list'; $massaction =
'';
98 if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
102 $parameters = array();
103 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
108 if (empty($reshook)) {
110 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
113 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
115 $search_supervisor =
'';
117 $search_array_options = array();
135 $typeleaves = $holiday->getTypes(1, 1);
137 $userID = array_keys(
GETPOST(
'update_cp'));
138 $userID = $userID[0];
142 foreach ($typeleaves as $key => $val) {
143 $userValue =
GETPOST(
'nb_holiday_'.$val[
'rowid']);
144 $userValue = $userValue[$userID];
146 if (!empty($userValue) || (
string) $userValue ==
'0') {
153 $note_holiday =
GETPOST(
'note_holiday');
154 $comment = ((isset($note_holiday[$userID]) && !empty($note_holiday[$userID])) ?
' ('.$note_holiday[$userID].
')' :
'');
157 if ($userValue !=
'') {
159 $result = $holiday->addLogCP($user->id, $userID, $langs->transnoentitiesnoconv(
'ManualUpdate').$comment, $userValue, $val[
'rowid']);
163 } elseif ($result == 0) {
164 setEventMessages($langs->trans(
"HolidayQtyNotModified", $user->login),
null,
'warnings');
171 $result = $holiday->updateSoldeCP($userID, $userValue, $val[
'rowid']);
208 $userstatic =
new User($db);
211 $title = $langs->trans(
'CPTitreMenu');
216 $typeleaves = $holiday->getTypes(1, 1);
217 $result = $holiday->updateBalance();
223 print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
224 if ($optioncss !=
'') {
225 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
227 print
'<input type="hidden" name="token" value="'.newToken().
'">';
228 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
229 print
'<input type="hidden" name="action" value="update">';
230 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
231 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
232 print
'<input type="hidden" name="page" value="'.$page.
'">';
233 print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
237 print
'<div class="info">'.$langs->trans(
'LastUpdateCP').
': '.
"\n";
238 $lastUpdate = $holiday->getConfCP(
'lastUpdate');
240 print
'<strong>'.dol_print_date($db->jdate($lastUpdate),
'dayhour').
'</strong>';
241 print
'<br>'.$langs->trans(
"MonthOfLastMonthlyUpdate").
': <strong>'.$langs->trans(
'Month'.substr($lastUpdate, 4, 2)).
' '.substr($lastUpdate, 0, 4).
'</strong>'.
"\n";
243 print $langs->trans(
'None');
245 print
"</div><br>\n";
251 $userchilds = array();
252 if (empty($user->rights->holiday->readall)) {
253 $userchilds = $user->getAllChildIds(1);
254 $filters .=
' AND u.rowid IN ('.$db->sanitize(join(
', ', $userchilds)).
')';
256 if (!empty($search_name)) {
257 $filters .=
natural_search(array(
'u.firstname',
'u.lastname'), $search_name);
259 if ($search_supervisor > 0) {
260 $filters .=
natural_search(array(
'u.fk_user'), $search_supervisor, 2);
262 $filters .=
' AND employee = 1';
264 $listUsers = $holiday->fetchUsers(
false,
true, $filters);
265 if (is_numeric($listUsers) && $listUsers < 0) {
272 if (count($typeleaves) == 0) {
274 print $langs->trans(
"NoLeaveWithCounterDefined").
"<br>\n";
275 print $langs->trans(
"GoIntoDictionaryHolidayTypes");
279 if (!empty($user->rights->holiday->define_holiday)) {
285 print
'<div class="div-table-responsive">';
286 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'" id="tablelines3">'.
"\n";
288 print
'<tr class="liste_titre_filter">';
291 print
'<td class="liste_titre"><input type="text" name="search_name" value="'.dol_escape_htmltag($search_name).
'"></td>';
294 print
'<td class="liste_titre">';
295 print
$form->select_dolusers($search_supervisor,
'search_supervisor', 1,
null, 0,
null,
null, 0, 0, 0,
'', 0,
'',
'maxwidth200');
299 if (count($typeleaves)) {
300 foreach ($typeleaves as $key => $val) {
301 print
'<td class="liste_titre" style="text-align:center"></td>';
304 print
'<td class="liste_titre"></td>';
306 print
'<td class="liste_titre"></td>';
309 print
'<td class="liste_titre maxwidthsearch center">';
310 $searchpicto =
$form->showFilterButtons();
316 print
'<tr class="liste_titre">';
319 if (count($typeleaves)) {
320 foreach ($typeleaves as $key => $val) {
321 $labeltype = ($langs->trans($val[
'code']) != $val[
'code']) ? $langs->trans($val[
'code']) : $langs->trans($val[
'label']);
331 $usersupervisor =
new User($db);
333 foreach ($listUsers as $users) {
335 if (empty($user->rights->holiday->readall)) {
336 if (($users[
'rowid'] != $user->id) && (!in_array($users[
'rowid'], $userchilds))) {
341 $userstatic->id = $users[
'rowid'];
342 $userstatic->lastname = $users[
'lastname'];
343 $userstatic->firstname = $users[
'firstname'];
344 $userstatic->gender = $users[
'gender'];
345 $userstatic->photo = $users[
'photo'];
346 $userstatic->statut = $users[
'status'];
347 $userstatic->employee = $users[
'employee'];
348 $userstatic->fk_user = $users[
'fk_user'];
350 if ($userstatic->fk_user > 0) {
351 $usersupervisor->fetch($userstatic->fk_user);
354 print
'<tr class="oddeven">';
358 print $userstatic->getNomUrl(-1);
363 if ($userstatic->fk_user > 0) {
364 print $usersupervisor->getNomUrl(-1);
369 if (count($typeleaves)) {
370 foreach ($typeleaves as $key => $val) {
372 if ($holiday->getCPforUser($users[
'rowid'], $val[
'rowid']) !=
'') {
373 $nbtoshow =
price2num($holiday->getCPforUser($users[
'rowid'], $val[
'rowid']), 5);
377 print
'<td style="text-align:center">';
379 print
'<input type="text"'.($canedit ?
'' :
' disabled="disabled"').
' value="'.$nbtoshow.
'" name="nb_holiday_'.$val[
'rowid'].
'['.$users[
'rowid'].
']" class="width75 center" />';
393 print
'<input type="text"'.($canedit ?
'' :
' disabled="disabled"').
' class="maxwidthonsmartphone" value="" name="note_holiday['.$users[
'rowid'].
']" size="30"/>';
399 if (!empty($user->rights->holiday->define_holiday)) {
400 print
'<input type="submit" name="update_cp['.$users[
'rowid'].
']" value="'.
dol_escape_htmltag($langs->trans(
"Save")).
'" class="button smallpaddingimp"/>';