110 changes: 102 additions & 8 deletions htdocs/product/stock/list.php
Expand Up @@ -45,18 +45,23 @@
$offset = $limit * $page;

$year = strftime("%Y",time());

$topLocations = array();

/*
* View
*/

$help_url='EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks';
llxHeader("",$langs->trans("ListOfWarehouses"),$help_url);

$sql = "SELECT e.rowid, e.label as ref, e.statut, e.lieu, e.address, e.zip, e.town, e.fk_pays,";
$sql.= " SUM(ps.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sellvalue";
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e";
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot_association as ea";
$sql.= " RIGHT JOIN ".MAIN_DB_PREFIX."entrepot as e ON e.rowid = ea.fk_entrepot_parent";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON e.rowid = ps.fk_entrepot";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON ps.fk_product = p.rowid";
$sql.= " WHERE e.entity = ".$conf->entity;
$sql.= " AND (e.entrepot_type IS NULL or e.entrepot_type = 0)";
if ($sref)
{
$sql.= " AND e.label LIKE '%".$db->escape($sref)."%'";
Expand All @@ -78,10 +83,7 @@
{
$num = $db->num_rows($result);

$i = 0;

$help_url='EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks';
llxHeader("",$langs->trans("ListOfWarehouses"),$help_url);
$i = 0;

print_barre_liste($langs->trans("ListOfWarehouses"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder,'',$num);

Expand All @@ -103,9 +105,11 @@
while ($i < min($num,$limit))
{
$objp = $db->fetch_object($result);
$topLocations[$objp->rowid]=$objp->ref;
print "<tr ".$bc[$var].">";
print '<td><a href="card.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowWarehouse"),'stock').' '.$objp->ref.'</a></td>';
// Location

// Location
print '<td>'.$objp->lieu.'</td>';
// PMP value
print '<td align="right">';
Expand Down Expand Up @@ -139,14 +143,104 @@
$db->free($result);

print "</table>";

}
else
{
dol_print_error($db);
}

// show sub locations
showSubLocations($topLocations,$db,$conf,$langs,$limit,$offset);



llxFooter();

$db->close();

function showSubLocations($locations,$db,$conf,$langs,$limit,$offset) {
//print 'something';
foreach ($locations as $id => $ref) {
$subLocations = array();
$sql = "SELECT e.rowid, e.label as ref, e.statut,";
$sql.= " SUM(ps.pmp * ps.reel) as estimatedvalue, SUM(p.price * ps.reel) as sellvalue";
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot_association as ea";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."entrepot as e ON e.rowid = ea.fk_entrepot_child";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON e.rowid = ps.fk_entrepot";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON ps.fk_product = p.rowid";
$sql.= " WHERE e.entity = ".$conf->entity;
$sql.= " AND ea.fk_entrepot_parent = ".$id;
$sql.= " GROUP BY e.rowid, e.label, e.statut";
$sql.= $db->order('e.label','ASC');
$sql.= $db->plimit($limit+1, $offset);

$result = $db->query($sql);
if ($result)
{
$num = $db->num_rows($result);

$i = 0;

if ($num)
{
print_barre_liste($ref,0, '', "", '', '', 0);
print '<table class="noborder" width="100%">';

print "<tr class=\"liste_titre\">";
print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"], "");
print_liste_field_titre($langs->trans("EstimatedStockValue"), $_SERVER["PHP_SELF"], "",'','','align="right"');
print_liste_field_titre($langs->trans("EstimatedStockValueSell"), $_SERVER["PHP_SELF"], "",'','','align="right"');
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"], "",'','','align="right"');
print "</tr>\n";
$entrepot=new Entrepot($db);
$total = $totalsell = 0;
$var=false;
while ($i < min($num,$limit))
{
$objp = $db->fetch_object($result);
$subLocations[$objp->rowid]=$objp->ref;
print "<tr ".$bc[$var].">";
print '<td><a href="card.php?id='.$objp->rowid.'">'.img_object($langs->trans("ShowWarehouse"),'stock').' '.$objp->ref.'</a></td>';
// PMP value
print '<td align="right">';
if (price2num($objp->estimatedvalue,'MT')) print price(price2num($objp->estimatedvalue,'MT'),1);
else print '';
print '</td>';
// Selling value
print '<td align="right">';
if (empty($conf->global->PRODUIT_MULTIPRICES)) print price(price2num($objp->sellvalue,'MT'),1);
else print $langs->trans("Variable");
print '</td>';
// Status
print '<td align="right">'.$entrepot->LibStatut($objp->statut,5).'</td>';
print "</tr>\n";

$total += price2num($objp->estimatedvalue,'MU');
$totalsell += price2num($objp->sellvalue,'MU');

$var=!$var;
$i++;
}

print '<tr class="liste_total">';
print '<td colspan="1" align="right">'.$langs->trans("Total").'</td>';
print '<td align="right">'.price(price2num($total,'MT'),1,$langs,0,0,-1,$conf->currency).'</td>';
print '<td align="right">'.price(price2num($totalsell,'MT'),1,$langs,0,0,-1,$conf->currency).'</td>';
print '<td align="right">&nbsp;</td>';
print "</tr>\n";
}

$db->free($result);

print "</table>";

}
else
{
dol_print_error($db);
}
// show sub locations
showSubLocations($subLocations,$db,$conf,$langs,$limit,$offset);
}
}