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 >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2012 - 2014 Regis Houssin < regis . houssin @ inodbox . 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 .
*/
2018-07-26 11:57:25 +02:00
require '../main.inc.php' ;
2014-03-17 14:30:55 +01:00
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' ;
2018-05-26 21:11:25 +02:00
// Load translation files required by the page
$langs -> loadLangs ( array ( 'users' , 'holidays' , 'trips' ));
2014-03-17 14:30:55 +01:00
2018-06-29 19:08:35 +02:00
$socid = GETPOST ( " socid " , " int " );
2014-10-03 02:00:50 +02:00
2014-03-17 14:30:55 +01:00
// Protection if external user
if ( $user -> societe_id > 0 ) accessforbidden ();
2018-06-29 19:08:35 +02:00
if ( empty ( $conf -> global -> MAIN_INFO_SOCIETE_NOM ) || empty ( $conf -> global -> MAIN_INFO_SOCIETE_COUNTRY )) $setupcompanynotcomplete = 1 ;
$holiday = new Holiday ( $db );
$holidaystatic = new Holiday ( $db );
2014-03-17 14:30:55 +01:00
/*
* Actions
*/
2018-06-29 19:08:35 +02:00
// Update sold
if ( ! empty ( $conf -> holiday -> enabled ) && ! empty ( $setupcompanynotcomplete ))
{
$result = $holiday -> updateBalance ();
}
2014-03-17 14:30:55 +01:00
/*
* View
*/
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
2017-11-04 20:03:08 +01:00
2017-11-11 01:10:17 +01:00
if ( ! empty ( $setupcompanynotcomplete ))
2017-11-04 20:03:08 +01:00
{
$langs -> load ( " errors " );
$warnpicto = img_warning ( $langs -> trans ( " WarningMandatorySetupNotComplete " ));
print '<br><div class="warning"><a href="' . DOL_URL_ROOT . '/admin/company.php?mainmenu=home' . ( empty ( $setupcompanynotcomplete ) ? '' : '&action=edit' ) . '">' . $warnpicto . ' ' . $langs -> trans ( " WarningMandatorySetupNotComplete " ) . '</a></div>' ;
2018-06-29 19:08:35 +02:00
llxFooter ();
2017-11-04 20:03:08 +01:00
exit ;
}
2014-03-17 14:30:55 +01:00
print '<div class="fichecenter"><div class="fichethirdleft">' ;
2017-02-21 14:17:44 +01:00
if ( ! empty ( $conf -> global -> MAIN_SEARCH_FORM_ON_HOME_AREAS )) // This is useless due to the global search combo
2014-03-17 14:30:55 +01:00
{
2017-02-21 14:17:44 +01:00
if ( ! empty ( $conf -> holiday -> enabled ) && $user -> rights -> holiday -> read )
{
$langs -> load ( " holiday " );
$listofsearchfields [ 'search_holiday' ] = array ( 'text' => 'TitreRequestCP' );
}
if ( ! empty ( $conf -> deplacement -> enabled ) && $user -> rights -> deplacement -> lire )
{
$langs -> load ( " trips " );
$listofsearchfields [ 'search_deplacement' ] = array ( 'text' => 'ExpenseReport' );
}
if ( ! empty ( $conf -> expensereport -> enabled ) && $user -> rights -> expensereport -> lire )
{
$langs -> load ( " trips " );
$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>' ;
print '<tr ' . $bc [ false ] . '>' ;
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>' ;
if ( $i == 0 ) print '<td rowspan="' . count ( $listofsearchfields ) . '"><input type="submit" value="' . $langs -> trans ( " Search " ) . '" class="button"></td>' ;
print '</tr>' ;
$i ++ ;
}
2017-06-27 04:25:41 +02:00
print '</table>' ;
2017-02-21 14:17:44 +01:00
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 ))
{
2018-03-19 15:13:36 +01:00
if ( empty ( $conf -> global -> HOLIDAY_HIDE_BALANCE ))
{
$user_id = $user -> id ;
print '<table class="noborder nohover" width="100%">' ;
print '<tr class="liste_titre"><th colspan="3">' . $langs -> trans ( " Holidays " ) . '</th></tr>' ;
print " <tr " . $bc [ 0 ] . " > " ;
print '<td colspan="3">' ;
$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 ;
print '</td>' ;
print '</tr>' ;
print '</table><br>' ;
}
elseif ( ! is_numeric ( $conf -> global -> HOLIDAY_HIDE_BALANCE ))
{
print $langs -> trans ( $conf -> global -> HOLIDAY_HIDE_BALANCE ) . '<br>' ;
}
2015-03-02 00:43:17 +01:00
}
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
2017-03-23 10:52:09 +01:00
// Latest leave requests
2015-12-24 12:37:38 +01:00
if ( ! empty ( $conf -> holiday -> enabled ) && $user -> rights -> holiday -> read )
{
2017-11-11 01:10:17 +01:00
$sql = " SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.email, 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 );
2017-06-27 04:25:41 +02:00
2015-12-24 12:37:38 +01:00
$listhalfday = array ( 'morning' => $langs -> trans ( " Morning " ), " afternoon " => $langs -> trans ( " Afternoon " ));
$typeleaves = $holidaystatic -> getTypes ( 1 , - 1 );
2017-06-27 04:25:41 +02:00
2015-12-24 12:37:38 +01:00
$i = 0 ;
2017-06-27 04:25:41 +02:00
print '<div class="div-table-responsive">' ;
2015-12-24 12:37:38 +01:00
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
2017-03-07 22:45:22 +01:00
print '<th colspan="3">' . $langs -> trans ( " BoxTitleLastLeaveRequests " , min ( $max , $num )) . '</th>' ;
print '<th>' . $langs -> trans ( " from " ) . '</th>' ;
print '<th>' . $langs -> trans ( " to " ) . '</th>' ;
print '<th align="right">' . $langs -> trans ( " DateModificationShort " ) . '</th>' ;
print '<th width="16"> </th>' ;
2015-12-24 12:37:38 +01:00
print '</tr>' ;
if ( $num )
{
while ( $i < $num && $i < $max )
{
$obj = $db -> fetch_object ( $result );
2017-11-11 01:10:17 +01:00
2015-12-24 12:37:38 +01:00
$holidaystatic -> id = $obj -> rowid ;
$holidaystatic -> ref = $obj -> ref ;
2017-11-11 01:10:17 +01:00
2015-12-24 12:37:38 +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 -> photo = $obj -> photo ;
2017-11-11 01:10:17 +01:00
$userstatic -> email = $obj -> email ;
2016-09-01 11:29:30 +02:00
$userstatic -> statut = $obj -> statut ;
2017-11-11 01:10:17 +01:00
2017-04-14 11:22:48 +02:00
print '<tr class="oddeven">' ;
2018-09-04 09:37:51 +02:00
print '<td class="nowraponall">' . $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>' ;
2017-06-27 04:25:41 +02:00
2016-12-12 12:33:43 +01:00
$starthalfday = ( $obj -> halfday == - 1 || $obj -> halfday == 2 ) ? 'afternoon' : 'morning' ;
$endhalfday = ( $obj -> halfday == 1 || $obj -> halfday == 2 ) ? 'morning' : 'afternoon' ;
2017-06-27 04:25:41 +02:00
2017-03-23 10:52:09 +01:00
print '<td>' . dol_print_date ( $obj -> date_start , 'day' ) . ' ' . $langs -> trans ( $listhalfday [ $starthalfday ]);
2015-12-24 12:37:38 +01:00
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>' ;
2017-06-27 04:25:41 +02:00
2015-12-24 12:37:38 +01:00
$i ++ ;
}
}
else
{
2017-04-14 13:02:29 +02:00
print '<tr class="oddeven"><td colspan="7" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
2015-12-24 12:37:38 +01:00
}
2017-06-27 04:25:41 +02:00
print '</table></div><br>' ;
2015-12-24 12:37:38 +01:00
}
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
{
2017-11-11 01:10:17 +01:00
$sql = " SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.email, 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 ;
2018-02-15 12:57:04 +01:00
print '<div class="div-table-responsive">' ;
2015-02-28 08:46:40 +01:00
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
2017-03-07 22:45:22 +01:00
print '<th colspan="2">' . $langs -> trans ( " BoxTitleLastModifiedExpenses " , min ( $max , $num )) . '</th>' ;
print '<th align="right">' . $langs -> trans ( " FeesKilometersOrAmout " ) . '</th>' ;
print '<th align="right">' . $langs -> trans ( " DateModificationShort " ) . '</th>' ;
print '<th width="16"> </th>' ;
2015-02-28 08:46:40 +01:00
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 );
2017-11-11 01:10:17 +01:00
2015-02-28 08:46:40 +01:00
$deplacementstatic -> ref = $obj -> rowid ;
$deplacementstatic -> id = $obj -> rowid ;
2017-11-11 01:10:17 +01:00
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 ;
2017-11-11 01:10:17 +01:00
$userstatic -> email = $obj -> email ;
2016-09-01 11:29:30 +02:00
$userstatic -> statut = $obj -> statut ;
$userstatic -> photo = $obj -> photo ;
2017-11-11 01:10:17 +01:00
2017-04-14 11:22:48 +02:00
print '<tr class="oddeven">' ;
2018-09-04 09:37:51 +02:00
print '<td class="nowraponall">' . $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>' ;
2017-06-27 04:25:41 +02:00
2015-02-28 08:46:40 +01:00
$i ++ ;
}
}
else
{
2017-04-14 13:02:29 +02:00
print '<tr class="oddeven"><td colspan="5" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
2015-02-28 08:46:40 +01:00
}
2018-02-15 12:57:04 +01:00
print '</table>' ;
print '</div>' ;
2015-02-28 08:46:40 +01:00
}
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 )
{
2017-11-11 01:10:17 +01:00
$sql = " SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.email, 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 ;
2018-02-15 12:57:04 +01:00
print '<div class="div-table-responsive">' ;
2015-02-28 08:46:40 +01:00
print '<table class="noborder" width="100%">' ;
print '<tr class="liste_titre">' ;
2017-03-07 22:45:22 +01:00
print '<th colspan="2">' . $langs -> trans ( " BoxTitleLastModifiedExpenses " , min ( $max , $num )) . '</th>' ;
print '<th align="right">' . $langs -> trans ( " TotalTTC " ) . '</th>' ;
print '<th align="right">' . $langs -> trans ( " DateModificationShort " ) . '</th>' ;
print '<th width="16"> </th>' ;
2015-02-28 08:46:40 +01:00
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 );
2017-11-11 01:10:17 +01:00
2015-06-29 06:41:24 +02:00
$expensereportstatic -> id = $obj -> rowid ;
$expensereportstatic -> ref = $obj -> ref ;
2017-11-11 01:10:17 +01:00
2015-02-28 08:46:40 +01:00
$userstatic -> id = $obj -> uid ;
$userstatic -> lastname = $obj -> lastname ;
$userstatic -> firstname = $obj -> firstname ;
2017-11-11 01:10:17 +01:00
$userstatic -> email = $obj -> email ;
2016-09-01 11:29:30 +02:00
$userstatic -> login = $obj -> login ;
$userstatic -> statut = $obj -> statut ;
$userstatic -> photo = $obj -> photo ;
2017-11-11 01:10:17 +01:00
2017-04-14 11:22:48 +02:00
print '<tr class="oddeven">' ;
2018-09-04 09:37:51 +02:00
print '<td class="nowraponall">' . $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>' ;
2017-06-27 04:25:41 +02:00
2015-02-28 08:46:40 +01:00
$i ++ ;
}
}
else
{
2017-04-14 13:02:29 +02:00
print '<tr class="oddeven"><td colspan="5" class="opacitymedium">' . $langs -> trans ( " None " ) . '</td></tr>' ;
2015-02-28 08:46:40 +01:00
}
2017-03-15 11:58:13 +01:00
print '</table>' ;
2018-02-15 12:57:04 +01:00
print '</div>' ;
2015-02-28 08:46:40 +01:00
}
else dol_print_error ( $db );
2014-03-17 14:30:55 +01:00
}
print '</div></div></div>' ;
2018-08-13 10:20:21 +02:00
// End of page
2014-03-17 14:30:55 +01:00
llxFooter ();
$db -> close ();