2014-03-17 14:30:55 +01:00
< ? php
2014-10-02 08:44:49 +02:00
/* Copyright ( C ) 2011 Dimitri Mouillard < dmouillard @ teclib . com >
2015-06-27 11:45:23 +02:00
* Copyright ( C ) 2013 - 2015 Laurent Destailleur < eldy @ users . sourceforge . net >
2014-10-02 08:44:49 +02:00
* Copyright ( C ) 2012 - 2014 Regis Houssin < regis . houssin @ capnetworks . com >
2016-04-04 05:29:12 +02:00
* Copyright ( C ) 2015 - 2016 Alexandre Spangaro < aspangaro . dolibarr @ gmail . com >
2014-03-17 14:30:55 +01:00
*
* 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 < http :// www . gnu . org / licenses />.
*/
/**
2016-07-26 21:12:52 +02:00
* \file htdocs / hrm / index . php
2014-03-17 14:30:55 +01:00
* \ingroup hrm
* \brief Home page for HRM area .
*/
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 . '/core/lib/functions2.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/lib/usergroups.lib.php' ;
2015-02-28 08:46:40 +01:00
if ( $conf -> deplacement -> enabled ) require_once DOL_DOCUMENT_ROOT . '/compta/deplacement/class/deplacement.class.php' ;
if ( $conf -> expensereport -> enabled ) require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php' ;
2014-03-17 14:30:55 +01:00
require_once DOL_DOCUMENT_ROOT . '/holiday/class/holiday.class.php' ;
$langs -> load ( 'users' );
$langs -> load ( 'holidays' );
2014-04-27 04:08:34 +02:00
$langs -> load ( 'trips' );
2014-03-17 14:30:55 +01:00
2014-10-03 02:00:50 +02:00
$socid = GETPOST ( " socid " );
2014-03-17 14:30:55 +01:00
// Protection if external user
if ( $user -> societe_id > 0 ) accessforbidden ();
/*
* Actions
*/
// None
/*
* View
*/
$holiday = new Holiday ( $db );
$holidaystatic = new Holiday ( $db );
2014-10-30 12:19:38 +01:00
$childids = $user -> getAllChildIds ();
$childids [] = $user -> id ;
2014-03-17 14:30:55 +01:00
2016-04-09 16:04:07 +02:00
llxHeader ( '' , $langs -> trans ( 'HRMArea' ));
2014-03-17 14:30:55 +01:00
2015-09-24 18:33:48 +02:00
print load_fiche_titre ( $langs -> trans ( " HRMArea " ), '' , 'title_hrm.png' );
2014-03-17 14:30:55 +01:00
print '<div class="fichecenter"><div class="fichethirdleft">' ;
2015-10-17 01:40:46 +02:00
if ( ! empty ( $conf -> holiday -> enabled ) && $user -> rights -> holiday -> read )
{
$langs -> load ( " holiday " );
$listofsearchfields [ 'search_holiday' ] = array ( 'text' => 'TitreRequestCP' );
}
2014-03-17 14:30:55 +01:00
if ( ! empty ( $conf -> deplacement -> enabled ) && $user -> rights -> deplacement -> lire )
{
$langs -> load ( " trips " );
2015-10-17 01:40:46 +02:00
$listofsearchfields [ 'search_deplacement' ] = array ( 'text' => 'ExpenseReport' );
2014-03-17 14:30:55 +01:00
}
2015-02-28 08:46:40 +01:00
if ( ! empty ( $conf -> expensereport -> enabled ) && $user -> rights -> expensereport -> lire )
{
$langs -> load ( " trips " );
2015-10-17 01:40:46 +02:00
$listofsearchfields [ 'search_expensereport' ] = array ( 'text' => 'ExpenseReport' );
}
if ( count ( $listofsearchfields ))
{
print '<form method="post" action="' . DOL_URL_ROOT . '/core/search.php">' ;
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<table class="noborder nohover centpercent">' ;
$i = 0 ;
foreach ( $listofsearchfields as $key => $value )
{
if ( $i == 0 ) print '<tr class="liste_titre"><td colspan="3">' . $langs -> trans ( " Search " ) . '</td></tr>' ;
2016-01-01 23:44:23 +01:00
print '<tr ' . $bc [ false ] . '>' ;
2016-08-31 12:38:54 +02:00
print '<td class="nowrap"><label for="' . $key . '">' . $langs -> trans ( $value [ " text " ]) . '</label></td><td><input type="text" class="flat inputsearch" name="' . $key . '" id="' . $key . '" size="18"></td>' ;
2015-10-17 01:40:46 +02:00
if ( $i == 0 ) print '<td rowspan="' . count ( $listofsearchfields ) . '"><input type="submit" value="' . $langs -> trans ( " Search " ) . '" class="button"></td>' ;
print '</tr>' ;
$i ++ ;
}
print '</table>' ;
print '</form>' ;
print '<br>' ;
2015-02-28 08:46:40 +01:00
}
2014-03-17 14:30:55 +01:00
2015-03-02 00:43:17 +01:00
if ( ! empty ( $conf -> holiday -> enabled ))
{
$user_id = $user -> id ;
print '<table class="noborder nohover" width="100%">' ;
print '<tr class="liste_titre"><td colspan="3">' . $langs -> trans ( " Holidays " ) . '</td></tr>' ;
print " <tr " . $bc [ 0 ] . " > " ;
print '<td colspan="3">' ;
2015-06-27 11:45:23 +02:00
$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' ] . ': <strong>' . ( $nb_type ? price2num ( $nb_type ) : 0 ) . '</strong><br>' ;
}
print $langs -> trans ( 'SoldeCPUser' , round ( $nb_holiday , 5 )) . '<br>' ;
print $out ;
2015-03-02 00:43:17 +01:00
print '</td>' ;
print '</tr>' ;
print '</table><br>' ;
}
2014-03-17 14:30:55 +01:00
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">' ;
$max = 10 ;
$langs -> load ( " boxes " );
2015-12-24 12:37:38 +01:00
2016-01-10 14:58:54 +01:00
// Last leave requests
2015-12-24 12:37:38 +01:00
if ( ! empty ( $conf -> holiday -> enabled ) && $user -> rights -> holiday -> read )
{
2016-09-01 11:29:30 +02:00
$sql = " SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.photo, u.statut, x.rowid, x.rowid as ref, x.fk_type, x.date_debut as date_start, x.date_fin as date_end, x.halfday, x.tms as dm, x.statut as status " ;
2015-12-24 12:37:38 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " holiday as x, " . MAIN_DB_PREFIX . " user as u " ;
$sql .= " WHERE u.rowid = x.fk_user " ;
$sql .= " AND x.entity = " . $conf -> entity ;
if ( empty ( $user -> rights -> holiday -> read_all )) $sql .= ' AND x.fk_user IN (' . join ( ',' , $childids ) . ')' ;
//if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND x.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
//if (!empty($socid)) $sql.= " AND x.fk_soc = ".$socid;
$sql .= $db -> order ( " x.tms " , " DESC " );
$sql .= $db -> plimit ( $max , 0 );
$result = $db -> query ( $sql );
if ( $result )
{
$var = false ;
$num = $db -> num_rows ( $result );
$holidaystatic = new Holiday ( $db );
$userstatic = new User ( $db );
$listhalfday = array ( 'morning' => $langs -> trans ( " Morning " ), " afternoon " => $langs -> trans ( " Afternoon " ));
$typeleaves = $holidaystatic -> getTypes ( 1 , - 1 );
$i = 0 ;
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
print '<td colspan="3">' . $langs -> trans ( " BoxTitleLastLeaveRequests " , min ( $max , $num )) . '</td>' ;
print '<td>' . $langs -> trans ( " from " ) . '</td>' ;
print '<td>' . $langs -> trans ( " to " ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( " DateModificationShort " ) . '</td>' ;
print '<td width="16"> </td>' ;
print '</tr>' ;
if ( $num )
{
while ( $i < $num && $i < $max )
{
$obj = $db -> fetch_object ( $result );
$holidaystatic -> id = $obj -> rowid ;
$holidaystatic -> ref = $obj -> ref ;
$userstatic -> id = $obj -> uid ;
$userstatic -> lastname = $obj -> lastname ;
$userstatic -> firstname = $obj -> firstname ;
2016-09-01 11:29:30 +02:00
$userstatic -> login = $obj -> login ;
$userstatic -> photo = $obj -> photo ;
$userstatic -> statut = $obj -> statut ;
2015-12-24 12:37:38 +01:00
print '<tr ' . $bc [ $var ] . '>' ;
print '<td>' . $holidaystatic -> getNomUrl ( 1 ) . '</td>' ;
2016-09-01 11:29:30 +02:00
print '<td>' . $userstatic -> getNomUrl ( - 1 , 'leave' ) . '</td>' ;
2015-12-24 12:37:38 +01:00
print '<td>' . $typeleaves [ $obj -> fk_type ][ 'label' ] . '</td>' ;
$starthalfday = ( $obj -> halfday == - 1 || $obj -> halfday == 2 ) ? 'afternoon' : 'morning' ;
$endhalfday = ( $obj -> halfday == 1 || $obj -> halfday == 2 ) ? 'morning' : 'afternoon' ;
print '<td>' . dol_print_date ( $obj -> date_start , 'day' ) . ' ' . $langs -> trans ( $listhalfday [ $endhalfday ]);
print '<td>' . dol_print_date ( $obj -> date_end , 'day' ) . ' ' . $langs -> trans ( $listhalfday [ $endhalfday ]);
print '<td align="right">' . dol_print_date ( $db -> jdate ( $obj -> dm ), 'day' ) . '</td>' ;
print '<td>' . $holidaystatic -> LibStatut ( $obj -> status , 3 ) . '</td>' ;
print '</tr>' ;
$var =! $var ;
$i ++ ;
}
}
else
{
2016-06-07 15:58:02 +02:00
print '<tr ' . $bc [ $var ] . '><td colspan="7" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
2015-12-24 12:37:38 +01:00
}
print '</table><br>' ;
}
else dol_print_error ( $db );
}
// Last expense report (old module)
2015-02-28 08:46:40 +01:00
if ( ! empty ( $conf -> deplacement -> enabled ) && $user -> rights -> deplacement -> lire )
2014-03-17 14:30:55 +01:00
{
2016-09-01 11:29:30 +02:00
$sql = " SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.statut, u.photo, d.rowid, d.dated as date, d.tms as dm, d.km, d.fk_statut " ;
2015-02-28 08:46:40 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " deplacement as d, " . MAIN_DB_PREFIX . " user as u " ;
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " , " . MAIN_DB_PREFIX . " societe as s, " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
$sql .= " WHERE u.rowid = d.fk_user " ;
$sql .= " AND d.entity = " . $conf -> entity ;
if ( empty ( $user -> rights -> deplacement -> readall ) && empty ( $user -> rights -> deplacement -> lire_tous )) $sql .= ' AND d.fk_user IN (' . join ( ',' , $childids ) . ')' ;
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " AND d.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " . $user -> id ;
if ( ! empty ( $socid )) $sql .= " AND d.fk_soc = " . $socid ;
$sql .= $db -> order ( " d.tms " , " DESC " );
$sql .= $db -> plimit ( $max , 0 );
$result = $db -> query ( $sql );
if ( $result )
{
$var = false ;
$num = $db -> num_rows ( $result );
$i = 0 ;
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
print '<td colspan="2">' . $langs -> trans ( " BoxTitleLastModifiedExpenses " , min ( $max , $num )) . '</td>' ;
print '<td align="right">' . $langs -> trans ( " FeesKilometersOrAmout " ) . '</td>' ;
print '<td align="right">' . $langs -> trans ( " DateModificationShort " ) . '</td>' ;
print '<td width="16"> </td>' ;
print '</tr>' ;
if ( $num )
{
$total_ttc = $totalam = $total = 0 ;
$deplacementstatic = new Deplacement ( $db );
$userstatic = new User ( $db );
while ( $i < $num && $i < $max )
{
$obj = $db -> fetch_object ( $result );
$deplacementstatic -> ref = $obj -> rowid ;
$deplacementstatic -> id = $obj -> rowid ;
$userstatic -> id = $obj -> uid ;
$userstatic -> lastname = $obj -> lastname ;
$userstatic -> firstname = $obj -> firstname ;
2016-09-01 11:29:30 +02:00
$userstatic -> login = $obj -> login ;
$userstatic -> statut = $obj -> statut ;
$userstatic -> photo = $obj -> photo ;
2015-02-28 08:46:40 +01:00
print '<tr ' . $bc [ $var ] . '>' ;
print '<td>' . $deplacementstatic -> getNomUrl ( 1 ) . '</td>' ;
2016-09-01 11:29:30 +02:00
print '<td>' . $userstatic -> getNomUrl ( - 1 ) . '</td>' ;
2015-02-28 08:46:40 +01:00
print '<td align="right">' . $obj -> km . '</td>' ;
print '<td align="right">' . dol_print_date ( $db -> jdate ( $obj -> dm ), 'day' ) . '</td>' ;
print '<td>' . $deplacementstatic -> LibStatut ( $obj -> fk_statut , 3 ) . '</td>' ;
print '</tr>' ;
$var =! $var ;
$i ++ ;
}
}
else
{
2016-06-07 15:58:02 +02:00
print '<tr ' . $bc [ $var ] . '><td colspan="5" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
2015-02-28 08:46:40 +01:00
}
print '</table><br>' ;
}
else dol_print_error ( $db );
}
2014-03-17 14:30:55 +01:00
2015-12-24 12:37:38 +01:00
// Last expense report (new module)
2015-02-28 08:46:40 +01:00
if ( ! empty ( $conf -> expensereport -> enabled ) && $user -> rights -> expensereport -> lire )
{
2016-09-01 11:29:30 +02:00
$sql = " SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.statut, u.photo, x.rowid, x.ref, x.date_debut as date, x.tms as dm, x.total_ttc, x.fk_statut as status " ;
2015-02-28 08:46:40 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " expensereport as x, " . MAIN_DB_PREFIX . " user as u " ;
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " , " . MAIN_DB_PREFIX . " societe as s, " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
$sql .= " WHERE u.rowid = x.fk_user_author " ;
$sql .= " AND x.entity = " . $conf -> entity ;
if ( empty ( $user -> rights -> expensereport -> readall ) && empty ( $user -> rights -> expensereport -> lire_tous )) $sql .= ' AND x.fk_user_author IN (' . join ( ',' , $childids ) . ')' ;
//if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND x.fk_soc = s. rowid AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
//if (!empty($socid)) $sql.= " AND x.fk_soc = ".$socid;
$sql .= $db -> order ( " x.tms " , " DESC " );
$sql .= $db -> plimit ( $max , 0 );
$result = $db -> query ( $sql );
if ( $result )
{
$var = false ;
$num = $db -> num_rows ( $result );
$i = 0 ;
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
print '<td colspan="2">' . $langs -> trans ( " BoxTitleLastModifiedExpenses " , min ( $max , $num )) . '</td>' ;
2015-03-08 07:21:07 +01:00
print '<td align="right">' . $langs -> trans ( " TotalTTC " ) . '</td>' ;
2015-02-28 08:46:40 +01:00
print '<td align="right">' . $langs -> trans ( " DateModificationShort " ) . '</td>' ;
print '<td width="16"> </td>' ;
print '</tr>' ;
if ( $num )
{
$total_ttc = $totalam = $total = 0 ;
$expensereportstatic = new ExpenseReport ( $db );
$userstatic = new User ( $db );
while ( $i < $num && $i < $max )
{
$obj = $db -> fetch_object ( $result );
2015-06-29 06:41:24 +02:00
$expensereportstatic -> id = $obj -> rowid ;
$expensereportstatic -> ref = $obj -> ref ;
2015-02-28 08:46:40 +01:00
$userstatic -> id = $obj -> uid ;
$userstatic -> lastname = $obj -> lastname ;
$userstatic -> firstname = $obj -> firstname ;
2016-09-01 11:29:30 +02:00
$userstatic -> login = $obj -> login ;
$userstatic -> statut = $obj -> statut ;
$userstatic -> photo = $obj -> photo ;
2015-02-28 08:46:40 +01:00
print '<tr ' . $bc [ $var ] . '>' ;
2015-06-29 06:41:24 +02:00
print '<td>' . $expensereportstatic -> getNomUrl ( 1 ) . '</td>' ;
2016-09-01 11:29:30 +02:00
print '<td>' . $userstatic -> getNomUrl ( - 1 ) . '</td>' ;
2015-03-08 07:21:07 +01:00
print '<td align="right">' . price ( $obj -> total_ttc ) . '</td>' ;
2015-02-28 08:46:40 +01:00
print '<td align="right">' . dol_print_date ( $db -> jdate ( $obj -> dm ), 'day' ) . '</td>' ;
2015-03-08 07:21:07 +01:00
print '<td>' . $expensereportstatic -> LibStatut ( $obj -> status , 3 ) . '</td>' ;
2015-02-28 08:46:40 +01:00
print '</tr>' ;
$var =! $var ;
$i ++ ;
}
}
else
{
2016-06-07 15:58:02 +02:00
print '<tr ' . $bc [ $var ] . '><td colspan="5" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
2015-02-28 08:46:40 +01:00
}
print '</table><br>' ;
}
else dol_print_error ( $db );
2014-03-17 14:30:55 +01:00
}
print '</div></div></div>' ;
llxFooter ();
$db -> close ();