2006-12-02 21:12:50 +01:00
< ? php
/* Copyright ( C ) 2001 - 2006 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2011-01-10 21:46:21 +01:00
* Copyright ( C ) 2004 - 2011 Laurent Destailleur < eldy @ users . sourceforge . net >
2012-12-30 15:13:49 +01:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
2013-06-03 15:34:12 +02:00
* Copyright ( C ) 2013 Cédric Salvador < csalvador @ gpcsolutions . fr >
2006-12-02 21:12:50 +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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2006-12-02 21:12:50 +01:00
* ( 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
2011-08-01 01:19:04 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2006-12-02 21:12:50 +01:00
*/
/**
2009-01-10 01:44:38 +01:00
* \file htdocs / product / reassort . php
* \ingroup produit
2011-01-10 21:46:21 +01:00
* \brief Page to list stocks
2009-01-10 01:44:38 +01:00
*/
2006-12-02 21:12:50 +01:00
2012-08-22 23:24:21 +02:00
require '../main.inc.php' ;
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php' ;
2006-12-02 21:12:50 +01:00
2010-05-02 19:05:07 +02:00
$langs -> load ( " products " );
2006-12-18 15:07:30 +01:00
$langs -> load ( " stocks " );
2006-12-02 21:12:50 +01:00
2009-05-04 10:31:42 +02:00
// Security check
if ( $user -> societe_id ) $socid = $user -> societe_id ;
2009-06-08 20:14:37 +02:00
$result = restrictedArea ( $user , 'produit|service' );
2006-12-02 21:12:50 +01:00
2012-07-24 17:52:46 +02:00
$action = GETPOST ( 'action' , 'alpha' );
$sref = GETPOST ( " sref " );
$snom = GETPOST ( " snom " );
$sall = GETPOST ( " sall " );
$type = GETPOST ( " type " , " int " );
$sbarcode = GETPOST ( " sbarcode " );
$catid = GETPOST ( 'catid' , 'int' );
$toolowstock = GETPOST ( 'toolowstock' );
$tosell = GETPOST ( " tosell " );
$tobuy = GETPOST ( " tobuy " );
$fourn_id = GETPOST ( " fourn_id " , 'int' );
2006-12-02 21:12:50 +01:00
2012-07-24 17:52:46 +02:00
$sortfield = GETPOST ( " sortfield " , 'alpha' );
$sortorder = GETPOST ( " sortorder " , 'alpha' );
$page = GETPOST ( " page " , 'int' );
2009-02-04 23:30:46 +01:00
if ( ! $sortfield ) $sortfield = " stock_physique " ;
2006-12-02 21:12:50 +01:00
if ( ! $sortorder ) $sortorder = " ASC " ;
$limit = $conf -> liste_limit ;
$offset = $limit * $page ;
2011-02-20 17:20:22 +01:00
// Load sale and categ filters
$search_sale = GETPOST ( " search_sale " );
$search_categ = GETPOST ( " search_categ " );
2012-07-24 17:52:46 +02:00
// Get object canvas (By default, this is not defined, so standard usage of dolibarr)
//$object->getCanvas($id);
$canvas = GETPOST ( " canvas " );
$objcanvas = '' ;
if ( ! empty ( $canvas ))
{
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/canvas.class.php' ;
2012-07-24 17:52:46 +02:00
$objcanvas = new Canvas ( $db , $action );
$objcanvas -> getCanvas ( 'product' , 'list' , $canvas );
}
2011-02-20 17:20:22 +01:00
if ( ! empty ( $_POST [ " button_removefilter_x " ]))
2006-12-02 21:12:50 +01:00
{
2011-02-20 17:20:22 +01:00
$sref = " " ;
$snom = " " ;
$sall = " " ;
$search_sale = " " ;
$search_categ = " " ;
$type = " " ;
$catid = '' ;
$toolowstock = '' ;
2006-12-02 21:12:50 +01:00
}
2010-06-08 10:51:52 +02:00
2011-02-20 17:20:22 +01:00
/*
* Actions
*/
// None
2006-12-02 21:12:50 +01:00
/*
2010-06-08 10:51:52 +02:00
* View
2006-12-02 21:12:50 +01:00
*/
2010-06-08 10:51:52 +02:00
$htmlother = new FormOther ( $db );
2006-12-02 21:12:50 +01:00
$title = $langs -> trans ( " ProductsAndServices " );
2011-01-10 23:20:41 +01:00
$sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,' ;
$sql .= ' p.fk_product_type, p.tms as datem,' ;
2010-08-19 22:58:08 +02:00
$sql .= ' p.duration, p.tosell as statut, p.tobuy, p.seuil_stock_alerte,' ;
2009-01-28 10:00:29 +01:00
$sql .= ' SUM(s.reel) as stock_physique' ;
2013-05-31 11:05:50 +02:00
$sql .= ', p.desiredstock' ;
2011-02-20 17:20:22 +01:00
$sql .= ' FROM (' . MAIN_DB_PREFIX . 'product as p' ;
2010-06-08 10:51:52 +02:00
// We'll need this table joined to the select in order to filter by categ
if ( $search_categ ) $sql .= " , " . MAIN_DB_PREFIX . " categorie_product as cp " ;
2011-02-20 17:20:22 +01:00
$sql .= ') LEFT JOIN ' . MAIN_DB_PREFIX . 'product_stock as s on p.rowid = s.fk_product' ;
2012-02-11 10:18:09 +01:00
$sql .= " WHERE p.entity IN ( " . getEntity ( 'product' , 1 ) . " ) " ;
2010-06-08 10:51:52 +02:00
if ( $search_categ ) $sql .= " AND p.rowid = cp.fk_product " ; // Join for the needed table to filter by categ
2006-12-02 21:12:50 +01:00
if ( $sall )
{
2012-02-11 10:18:09 +01:00
$sql .= " AND (p.ref LIKE '% " . $db -> escape ( $sall ) . " %' OR p.label LIKE '% " . $db -> escape ( $sall ) . " %' OR p.description LIKE '% " . $db -> escape ( $sall ) . " %' OR p.note LIKE '% " . $db -> escape ( $sall ) . " %') " ;
2006-12-02 21:12:50 +01:00
}
2011-09-20 12:30:56 +02:00
// if the type is not 1, we show all products (type = 0,2,3)
2011-01-10 23:20:41 +01:00
if ( dol_strlen ( $type ))
2006-12-02 21:12:50 +01:00
{
2011-10-04 01:26:07 +02:00
if ( $type == 1 )
{
2011-01-10 23:20:41 +01:00
$sql .= " AND p.fk_product_type = '1' " ;
2011-10-04 01:26:07 +02:00
}
else
{
2011-01-10 23:20:41 +01:00
$sql .= " AND p.fk_product_type <> '1' " ;
}
2006-12-02 21:12:50 +01:00
}
2012-02-11 10:18:09 +01:00
if ( $sref ) $sql .= " AND p.ref LIKE '% " . $sref . " %' " ;
if ( $sbarcode ) $sql .= " AND p.barcode LIKE '% " . $sbarcode . " %' " ;
if ( $snom ) $sql .= " AND p.label LIKE '% " . $db -> escape ( $snom ) . " %' " ;
2012-07-24 17:52:46 +02:00
if ( ! empty ( $tosell ))
2006-12-02 21:12:50 +01:00
{
2012-07-24 17:52:46 +02:00
$sql .= " AND p.tosell = " . $tosell ;
2006-12-02 21:12:50 +01:00
}
2012-07-24 17:52:46 +02:00
if ( ! empty ( $tobuy ))
2010-08-19 22:58:08 +02:00
{
2012-07-24 17:52:46 +02:00
$sql .= " AND p.tobuy = " . $tobuy ;
2010-08-19 22:58:08 +02:00
}
2012-07-24 17:52:46 +02:00
if ( ! empty ( $canvas ))
2011-01-10 23:20:41 +01:00
{
2011-02-24 19:22:24 +01:00
$sql .= " AND p.canvas = ' " . $db -> escape ( $canvas ) . " ' " ;
2011-01-10 23:20:41 +01:00
}
2006-12-02 21:12:50 +01:00
if ( $catid )
{
2009-04-27 22:37:50 +02:00
$sql .= " AND cp.fk_categorie = " . $catid ;
2006-12-02 21:12:50 +01:00
}
if ( $fourn_id > 0 )
{
2009-04-27 22:37:50 +02:00
$sql .= " AND p.rowid = pf.fk_product AND pf.fk_soc = " . $fourn_id ;
2006-12-02 21:12:50 +01:00
}
2010-06-08 10:51:52 +02:00
// Insert categ filter
if ( $search_categ )
{
2011-02-24 19:22:24 +01:00
$sql .= " AND cp.fk_categorie = " . $db -> escape ( $search_categ );
2010-06-08 10:51:52 +02:00
}
2011-01-10 23:20:41 +01:00
$sql .= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type, " ;
$sql .= " p.fk_product_type, p.tms, " ;
2010-08-19 22:58:08 +02:00
$sql .= " p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte " ;
2013-05-31 11:05:50 +02:00
$sql .= " , p.desiredstock " ;
2011-02-20 17:20:22 +01:00
if ( $toolowstock ) $sql .= " HAVING SUM(s.reel) < p.seuil_stock_alerte " ; // Not used yet
2010-03-13 00:40:39 +01:00
$sql .= $db -> order ( $sortfield , $sortorder );
2012-01-22 21:17:02 +01:00
$sql .= $db -> plimit ( $limit + 1 , $offset );
2011-09-20 15:32:16 +02:00
$resql = $db -> query ( $sql );
2006-12-02 21:12:50 +01:00
if ( $resql )
{
2009-01-10 01:44:38 +01:00
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num == 1 && ( $sall or $snom or $sref ))
{
$objp = $db -> fetch_object ( $resql );
2012-08-31 05:58:38 +02:00
header ( " Location: fiche.php?id= $objp->rowid " );
2009-01-10 01:44:38 +01:00
exit ;
}
2010-06-08 10:51:52 +02:00
$helpurl = '' ;
$helpurl = 'EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks' ;
2012-07-24 17:52:46 +02:00
if ( isset ( $type ))
2009-01-10 01:44:38 +01:00
{
if ( $type == 1 ) { $texte = $langs -> trans ( " Services " ); }
else { $texte = $langs -> trans ( " Products " ); }
} else {
$texte = $langs -> trans ( " ProductsAndServices " );
}
2010-06-08 10:51:52 +02:00
$texte .= ' (' . $langs -> trans ( " Stocks " ) . ')' ;
2009-01-10 01:44:38 +01:00
2010-06-08 10:51:52 +02:00
llxHeader ( " " , $title , $helpurl , $texte );
2009-01-10 01:44:38 +01:00
2012-07-24 17:52:46 +02:00
if ( $sref || $snom || $sall || GETPOST ( 'search' ))
2009-01-10 01:44:38 +01:00
{
2012-07-24 17:52:46 +02:00
print_barre_liste ( $texte , $page , " reassort.php " , " &sref= " . $sref . " &snom= " . $snom . " &sall= " . $sall . " &tosell= " . $tosell . " &tobuy= " . $tobuy , $sortfield , $sortorder , '' , $num );
2009-01-10 01:44:38 +01:00
}
else
{
print_barre_liste ( $texte , $page , " reassort.php " , " &sref= $sref &snom= $snom &fourn_id= $fourn_id " . ( isset ( $type ) ? " &type= $type " : " " ), $sortfield , $sortorder , '' , $num );
}
2012-07-24 17:52:46 +02:00
if ( ! empty ( $catid ))
2009-01-10 01:44:38 +01:00
{
print " <div id='ways'> " ;
2011-02-20 17:20:22 +01:00
$c = new Categorie ( $db );
$c -> fetch ( $catid );
2009-01-10 01:44:38 +01:00
$ways = $c -> print_all_ways ( ' > ' , 'product/reassort.php' );
2010-03-16 00:54:37 +01:00
print " > " . $ways [ 0 ] . " <br> \n " ;
print " </div><br> " ;
2009-01-10 01:44:38 +01:00
}
print '<form action="reassort.php" method="post" name="formulaire">' ;
2009-05-17 10:01:54 +02:00
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
2009-01-10 01:44:38 +01:00
print '<input type="hidden" name="sortfield" value="' . $sortfield . '">' ;
print '<input type="hidden" name="sortorder" value="' . $sortorder . '">' ;
print '<input type="hidden" name="type" value="' . $type . '">' ;
print '<table class="liste" width="100%">' ;
2010-06-08 10:51:52 +02:00
// Filter on categories
$moreforfilter = '' ;
2012-07-24 17:52:46 +02:00
if ( ! empty ( $conf -> categorie -> enabled ))
2010-06-08 10:51:52 +02:00
{
$moreforfilter .= $langs -> trans ( 'Categories' ) . ': ' ;
$moreforfilter .= $htmlother -> select_categories ( 0 , $search_categ , 'search_categ' );
2011-05-22 21:52:45 +02:00
$moreforfilter .= ' ' ;
2010-06-08 10:51:52 +02:00
}
2011-05-22 21:52:45 +02:00
$moreforfilter .= $langs -> trans ( " StockTooLow " ) . ' <input type="checkbox" name="toolowstock" value="1"' . ( $toolowstock ? ' checked="checked"' : '' ) . '>' ;
2010-06-08 10:51:52 +02:00
if ( $moreforfilter )
{
print '<tr class="liste_titre">' ;
print '<td class="liste_titre" colspan="9">' ;
print $moreforfilter ;
print '</td></tr>' ;
}
2010-08-19 22:58:08 +02:00
$param = " &tosell= $tosell &tobuy= $tobuy " . ( isset ( $type ) ? " &type= $type " : " " ) . " &fourn_id= $fourn_id &snom= $snom &sref= $sref " ;
2009-01-10 01:44:38 +01:00
// Lignes des titres
print " <tr class= \" liste_titre \" > " ;
2010-08-19 22:58:08 +02:00
print_liste_field_titre ( $langs -> trans ( " Ref " ), " reassort.php " , " p.ref " , $param , " " , " " , $sortfield , $sortorder );
print_liste_field_titre ( $langs -> trans ( " Label " ), " reassort.php " , " p.label " , $param , " " , " " , $sortfield , $sortorder );
2012-09-15 11:21:22 +02:00
if ( ! empty ( $conf -> service -> enabled ) && $type == 1 ) print_liste_field_titre ( $langs -> trans ( " Duration " ), " reassort.php " , " p.duration " , $param , " " , 'align="center"' , $sortfield , $sortorder );
2010-08-19 22:58:08 +02:00
print_liste_field_titre ( $langs -> trans ( " MininumStock " ), " reassort.php " , " p.seuil_stock_alerte " , $param , " " , 'align="right"' , $sortfield , $sortorder );
2013-05-31 11:05:50 +02:00
print_liste_field_titre ( $langs -> trans ( " DesiredStock " ), " reassort.php " , " p.desiredstock " , $param , " " , 'align="right"' , $sortfield , $sortorder );
2010-08-19 22:58:08 +02:00
print_liste_field_titre ( $langs -> trans ( " PhysicalStock " ), " reassort.php " , " stock_physique " , $param , " " , 'align="right"' , $sortfield , $sortorder );
2010-06-08 10:51:52 +02:00
// TODO Add info of running suppliers/customers orders
2010-08-19 22:58:08 +02:00
//print_liste_field_titre($langs->trans("TheoreticalStock"),"reassort.php", "stock_theorique",$param,"",'align="right"',$sortfield,$sortorder);
2009-06-03 21:58:51 +02:00
print '<td class="liste_titre"> </td>' ;
2010-08-19 22:58:08 +02:00
print_liste_field_titre ( $langs -> trans ( " Sell " ), " reassort.php " , " p.tosell " , $param , " " , 'align="right"' , $sortfield , $sortorder );
print_liste_field_titre ( $langs -> trans ( " Buy " ), " reassort.php " , " p.tobuy " , $param , " " , 'align="right"' , $sortfield , $sortorder );
2009-01-10 01:44:38 +01:00
print " </tr> \n " ;
// Lignes des champs de filtre
print '<tr class="liste_titre">' ;
print '<td class="liste_titre">' ;
print '<input class="flat" type="text" name="sref" value="' . $sref . '">' ;
print '</td>' ;
print '<td class="liste_titre">' ;
print '<input class="flat" type="text" name="snom" value="' . $snom . '">' ;
print '</td>' ;
2012-07-24 17:52:46 +02:00
if ( ! empty ( $conf -> service -> enabled ) && $type == 1 )
2009-01-10 01:44:38 +01:00
{
print '<td class="liste_titre">' ;
print ' ' ;
print '</td>' ;
}
2009-06-03 21:58:51 +02:00
print '<td class="liste_titre"> </td>' ;
2011-01-10 23:20:41 +01:00
print '<td class="liste_titre" align="right"> </td>' ;
2009-06-03 21:58:51 +02:00
print '<td class="liste_titre"> </td>' ;
2013-05-31 11:05:50 +02:00
print '<td class="liste_titre"> </td>' ;
print '<td class="liste_titre"> </td>' ;
2009-01-10 01:44:38 +01:00
print '<td class="liste_titre" align="right">' ;
2014-01-13 10:15:07 +01:00
print '<input type="image" class="liste_titre" name="button_search" src="' . img_picto ( $langs -> trans ( " Search " ), 'search.png' , '' , '' , 1 ) . '" alt="' . $langs -> trans ( " Search " ) . '">' ;
print '<input type="image" class="liste_titre" name="button_removefilter" src="' . img_picto ( $langs -> trans ( " Search " ), 'searchclear.png' , '' , '' , 1 ) . '" alt="' . $langs -> trans ( " RemoveFilter " ) . '">' ;
2009-01-10 01:44:38 +01:00
print '</td>' ;
print '</tr>' ;
$product_static = new Product ( $db );
$var = True ;
while ( $i < min ( $num , $limit ))
{
$objp = $db -> fetch_object ( $resql );
// Multilangs
2012-07-24 17:52:46 +02:00
if ( ! empty ( $conf -> global -> MAIN_MULTILANGS )) // si l'option est active
2009-01-10 01:44:38 +01:00
{
2009-04-27 22:37:50 +02:00
$sql = " SELECT label " ;
2010-02-18 10:04:55 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " product_lang " ;
2009-04-27 22:37:50 +02:00
$sql .= " WHERE fk_product= " . $objp -> rowid ;
$sql .= " AND lang=' " . $langs -> getDefaultLang () . " ' " ;
2009-01-10 01:44:38 +01:00
$sql .= " LIMIT 1 " ;
2010-03-13 00:40:39 +01:00
2009-01-10 01:44:38 +01:00
$result = $db -> query ( $sql );
if ( $result )
{
$objtp = $db -> fetch_object ( $result );
2012-07-24 17:52:46 +02:00
if ( ! empty ( $objtp -> label )) $objp -> label = $objtp -> label ;
2009-01-10 01:44:38 +01:00
}
}
$var =! $var ;
2013-04-25 01:13:13 +02:00
print '<tr ' . $bc [ $var ] . '><td class="nowrap">' ;
2008-05-26 23:27:50 +02:00
$product_static -> ref = $objp -> ref ;
2009-01-10 01:44:38 +01:00
$product_static -> id = $objp -> rowid ;
2008-05-26 23:27:50 +02:00
$product_static -> type = $objp -> fk_product_type ;
2009-01-10 01:44:38 +01:00
print $product_static -> getNomUrl ( 1 , '' , 16 );
//if ($objp->stock_theorique < $objp->seuil_stock_alerte) print ' '.img_warning($langs->trans("StockTooLow"));
print '</td>' ;
print '<td>' . $objp -> label . '</td>' ;
2012-07-24 17:52:46 +02:00
if ( ! empty ( $conf -> service -> enabled ) && $type == 1 )
2009-01-10 01:44:38 +01:00
{
print '<td align="center">' ;
2009-10-23 21:03:01 +02:00
if ( preg_match ( '/([0-9]+)y/i' , $objp -> duration , $regs )) print $regs [ 1 ] . ' ' . $langs -> trans ( " DurationYear " );
elseif ( preg_match ( '/([0-9]+)m/i' , $objp -> duration , $regs )) print $regs [ 1 ] . ' ' . $langs -> trans ( " DurationMonth " );
elseif ( preg_match ( '/([0-9]+)d/i' , $objp -> duration , $regs )) print $regs [ 1 ] . ' ' . $langs -> trans ( " DurationDay " );
2009-01-10 01:44:38 +01:00
else print $objp -> duration ;
print '</td>' ;
}
//print '<td align="right">'.$objp->stock_theorique.'</td>';
print '<td align="right">' . $objp -> seuil_stock_alerte . '</td>' ;
2013-05-31 11:05:50 +02:00
print '<td align="right">' . $objp -> desiredstock . '</td>' ;
2011-01-10 23:20:41 +01:00
print '<td align="right">' ;
if ( $objp -> seuil_stock_alerte && ( $objp -> stock_physique < $objp -> seuil_stock_alerte )) print img_warning ( $langs -> trans ( " StockTooLow " )) . ' ' ;
print $objp -> stock_physique ;
2011-01-10 21:46:21 +01:00
print '</td>' ;
2009-06-03 21:58:51 +02:00
print '<td align="right"><a href="' . DOL_URL_ROOT . '/product/stock/mouvement.php?idproduct=' . $product_static -> id . '">' . $langs -> trans ( " Movements " ) . '</a></td>' ;
2013-04-25 01:13:13 +02:00
print '<td align="right" class="nowrap">' . $product_static -> LibStatut ( $objp -> statut , 5 , 0 ) . '</td>' ;
print '<td align="right" class="nowrap">' . $product_static -> LibStatut ( $objp -> tobuy , 5 , 1 ) . '</td>' ;
2009-01-10 01:44:38 +01:00
print " </tr> \n " ;
$i ++ ;
2006-12-02 21:12:50 +01:00
}
2009-01-10 01:44:38 +01:00
print " </table> " ;
print '</form>' ;
if ( $num > $conf -> liste_limit )
2006-12-02 21:12:50 +01:00
{
2012-07-24 17:52:46 +02:00
if ( $sref || $snom || $sall || GETPOST ( 'search' ))
2009-01-10 01:44:38 +01:00
{
2010-08-19 23:12:56 +02:00
print_barre_liste ( '' , $page , " reassort.php " , " &sref= " . $sref . " &snom= " . $snom . " &sall= " . $sall . " &tosell= " . $tosell . " &tobuy= " . $tobuy , $sortfield , $sortorder , '' , $num , 0 , '' );
2009-01-10 01:44:38 +01:00
}
else
{
2010-08-19 23:12:56 +02:00
print_barre_liste ( '' , $page , " reassort.php " , " &sref= $sref &snom= $snom &fourn_id= $fourn_id " . ( isset ( $type ) ? " &type= $type " : " " ) . " &tosell= " . $tosell . " &tobuy= " . $tobuy , $sortfield , $sortorder , '' , $num , 0 , '' );
2009-01-10 01:44:38 +01:00
}
2006-12-02 21:12:50 +01:00
}
2009-01-10 01:44:38 +01:00
$db -> free ( $resql );
2006-12-02 21:12:50 +01:00
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2006-12-02 21:12:50 +01:00
}
2011-08-27 16:24:16 +02:00
llxFooter ();
2012-07-24 17:52:46 +02:00
$db -> close ();
2013-05-31 11:05:50 +02:00
?>