Stock Addresses on Stock report

This commit is contained in:
2025-11-30 16:08:08 +00:00
parent 2424bb76a3
commit 292748248b
2 changed files with 356 additions and 308 deletions

View File

@@ -117,6 +117,14 @@ while ( $r = $db->fetchByAssoc ( $rows ) ) {
$row["quantity"] = $r["quantity"]; $row["quantity"] = $r["quantity"];
$row["price"] = $r["price"]; $row["price"] = $r["price"];
// stock addresses
$a = $db->query("SELECT stock_address FROM ecmproducts_stock_addresses WHERE ecmproduct_id='" . $r['id'] . "' ORDER BY stock_address");
$addresses = array();
while ($addr = $db->fetchByAssoc($a)) {
$addresses[] = $addr['stock_address'];
}
$row['stock_address'] = implode(", ", $addresses);
$querySubCategory = "SELECT category.name as 'podkategoria' $querySubCategory = "SELECT category.name as 'podkategoria'
FROM FROM
ecmproductcategories_bean bean ecmproductcategories_bean bean
@@ -153,7 +161,8 @@ while ( $r = $db->fetchByAssoc ( $rows ) ) {
foreach ($data as $key => &$element) { foreach ($data as $key => &$element) {
$categoryArray1[$element["kategoria"] == "" ? "Inne" : $element["kategoria"]][$element["podkategoria"] == "" ? "Reszta" : $element["podkategoria"]][$key] = $element; $categoryArray1[$element["kategoria"] == "" ? "Inne" : $element["kategoria"]][$element["podkategoria"] == "" ? "Reszta" : $element["podkategoria"]][$key] = $element;
} }
function cmp($a, $b) { function cmp($a, $b)
{
if ($a["name"] == $b["name"]) { if ($a["name"] == $b["name"]) {
return 0; return 0;
} }
@@ -180,6 +189,7 @@ foreach ( $categoryArray1 as $key1 => &$element1 ) {
$tmp2[$key1][$key2][$i]["id"] = $element3["id"]; $tmp2[$key1][$key2][$i]["id"] = $element3["id"];
$tmp2[$key1][$key2][$i]["name"] = $element3["name"]; $tmp2[$key1][$key2][$i]["name"] = $element3["name"];
$tmp2[$key1][$key2][$i]["code"] = $element3["code"]; $tmp2[$key1][$key2][$i]["code"] = $element3["code"];
$tmp2[$key1][$key2][$i]["stock_address"] = $element3["stock_address"];
$tmp2[$key1][$key2][$i]["quantity"] = $element3["quantity"]; $tmp2[$key1][$key2][$i]["quantity"] = $element3["quantity"];
$tmp2[$key1][$key2][$i]["price"] = $element3["price"]; $tmp2[$key1][$key2][$i]["price"] = $element3["price"];
} }
@@ -286,5 +296,3 @@ $smarty->assign ('selectKS',$_GET['productKS']);
$smarty->assign("selectProductActive", $selectProductActive); $smarty->assign("selectProductActive", $selectProductActive);
$smarty->assign("selectProductEol", $selectProductEol); $smarty->assign("selectProductEol", $selectProductEol);
echo $smarty->display('modules/EcmReports/tpls/ReportStocks.tpl'); echo $smarty->display('modules/EcmReports/tpls/ReportStocks.tpl');
?>

View File

@@ -48,6 +48,7 @@
background: #EFEFF1; background: #EFEFF1;
color: #343432; color: #343432;
} }
table.tablesorter tbody tr.alt-row td { table.tablesorter tbody tr.alt-row td {
background: #FFF; background: #FFF;
color: #343432; color: #343432;
@@ -58,21 +59,25 @@
background: #E8E8E8; background: #E8E8E8;
color: #343432; color: #343432;
} }
table.tablesorter tbody tr.alt-row:hover td { table.tablesorter tbody tr.alt-row:hover td {
background: #E8E8E8; background: #E8E8E8;
color: #343432; color: #343432;
} }
table.tablesorter tbody tr.sumAll td { table.tablesorter tbody tr.sumAll td {
background: #EBEBED; background: #EBEBED;
color: black; color: black;
} }
table.tablesorter tbody tr.sumAll:hover td { table.tablesorter tbody tr.sumAll:hover td {
background: #E0E0E2; background: #E0E0E2;
color: black; color: black;
font-weight: bold; font-weight: bold;
} }
table.tablesorter .sumRow, .oddListRowS1 { table.tablesorter .sumRow,
.oddListRowS1 {
text-align: right; text-align: right;
} }
@@ -102,7 +107,8 @@
<tbody> <tbody>
<tr> <tr>
<td> <td>
<img src="themes/Sugar/images/EcmProducts.gif" style="margin-top: 3px; margin-right: 3px;" alt="EcmProducts" width="16" border="0" height="16"> <img src="themes/Sugar/images/EcmProducts.gif" style="margin-top: 3px; margin-right: 3px;"
alt="EcmProducts" width="16" border="0" height="16">
</td> </td>
<td> <td>
<h2>{$MOD.LBL_REPORT_STOCKS} </h2> <h2>{$MOD.LBL_REPORT_STOCKS} </h2>
@@ -120,7 +126,8 @@
<form action="index.php" method="get" name="searchReportStocks"> <form action="index.php" method="get" name="searchReportStocks">
<input type="hidden" name="module" value="EcmReports" /> <input type="hidden" name="module" value="EcmReports" />
<input type="hidden" name="action" value="ReportStocks" /> <input type="hidden" name="action" value="ReportStocks" />
<table style="border-top: 0px none; margin-bottom: 4px;width:100%" class="tabForm" border="0" cellpadding="0" cellspacing="0"> <table style="border-top: 0px none; margin-bottom: 4px;width:100%" class="tabForm" border="0" cellpadding="0"
cellspacing="0">
<tr> <tr>
<td class="dataLabel" width="5%" nowrap="nowrap">{$MOD.LBL_STOCK}</td> <td class="dataLabel" width="5%" nowrap="nowrap">{$MOD.LBL_STOCK}</td>
@@ -128,7 +135,8 @@
<select id="stock" name="selectStock"> <select id="stock" name="selectStock">
<option value="" { if $selectStock=="" } selected="true" {/if}>{$MOD.LBL_ALL_STOCKS}</option> <option value="" { if $selectStock=="" } selected="true" {/if}>{$MOD.LBL_ALL_STOCKS}</option>
{foreach from=$STOCKS item=STOCK key=count name=loop} {foreach from=$STOCKS item=STOCK key=count name=loop}
<option value="{$STOCK.id}" { if $selectStock==$STOCK.id} selected="true" {/if} >{$STOCK.name}</option> <option value="{$STOCK.id}" { if $selectStock==$STOCK.id} selected="true" {/if}>{$STOCK.name}
</option>
{/foreach} {/foreach}
</select> </select>
</td> </td>
@@ -137,7 +145,8 @@
<td class="dataLabel" width="5%" nowrap="nowrap">{$MOD.LBL_PRODUCT_ACTIVE}</td> <td class="dataLabel" width="5%" nowrap="nowrap">{$MOD.LBL_PRODUCT_ACTIVE}</td>
<td class="dataField" width="10%" nowrap="nowrap"> <td class="dataField" width="10%" nowrap="nowrap">
<select id="productActive" name="selectProductActive"> <select id="productActive" name="selectProductActive">
<option value="" { if $selectProductActive==""} selected="true" {/if} >{$MOD.LBL_YES}/{$MOD.LBL_NO}</option> <option value="" { if $selectProductActive=="" } selected="true" {/if}>{$MOD.LBL_YES}/{$MOD.LBL_NO}
</option>
<option value="1" { if $selectProductActive=="1" } selected="true" {/if}>{$MOD.LBL_YES}</option> <option value="1" { if $selectProductActive=="1" } selected="true" {/if}>{$MOD.LBL_YES}</option>
<option value="0" { if $selectProductActive=="0" } selected="true" {/if}>{$MOD.LBL_NO}</option> <option value="0" { if $selectProductActive=="0" } selected="true" {/if}>{$MOD.LBL_NO}</option>
</select> </select>
@@ -146,7 +155,8 @@
<td class="dataLabel" width="5%" nowrap="nowrap">End of line</td> <td class="dataLabel" width="5%" nowrap="nowrap">End of line</td>
<td class="dataField" width="10%" nowrap="nowrap"> <td class="dataField" width="10%" nowrap="nowrap">
<select id="productEol" name="selectProductEol"> <select id="productEol" name="selectProductEol">
<option value="" { if $selectProductEol==""} selected="true" {/if} >{$MOD.LBL_YES}/{$MOD.LBL_NO}</option> <option value="" { if $selectProductEol=="" } selected="true" {/if}>{$MOD.LBL_YES}/{$MOD.LBL_NO}
</option>
<option value="1" { if $selectProductEol=="1" } selected="true" {/if}>{$MOD.LBL_YES}</option> <option value="1" { if $selectProductEol=="1" } selected="true" {/if}>{$MOD.LBL_YES}</option>
<option value="0" { if $selectProductEol=="0" } selected="true" {/if}>{$MOD.LBL_NO}</option> <option value="0" { if $selectProductEol=="0" } selected="true" {/if}>{$MOD.LBL_NO}</option>
</select> </select>
@@ -179,7 +189,8 @@
</table> </table>
<input class="button" name="submit" value="{$MOD.LBL_EXECUTE}" type="submit"> <input class="button" name="submit" value="{$MOD.LBL_EXECUTE}" type="submit">
<input class="button" name="clear" value="{$MOD.LBL_CLEAR}" type="button" onclick="location.href='index.php?module=EcmReports&action=ReportSales';"> <input class="button" name="clear" value="{$MOD.LBL_CLEAR}" type="button"
onclick="location.href='index.php?module=EcmReports&action=ReportSales';">
<input id="excelEksport" class="button" name="importToExcel" value="{$MOD.BTN_EXCEL_EXPORT}" type="button"> <input id="excelEksport" class="button" name="importToExcel" value="{$MOD.BTN_EXCEL_EXPORT}" type="button">
@@ -190,11 +201,30 @@
<thead> <thead>
<tr class="tablesorter-headerRow" role="row"> <tr class="tablesorter-headerRow" role="row">
<th width="30%" class="sorter-text tablesorter-header tablesorter-headerUnSorted" data-column="0" tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on" style="-moz-user-select: none;" aria-sort="none" aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_PRODUCTS}</th> <th width="30%" class="sorter-text tablesorter-header tablesorter-headerUnSorted" data-column="0"
<th width="10%" class="sorter-text tablesorter-header tablesorter-headerUnSorted" data-column="1" tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on" style="-moz-user-select: none;" aria-sort="none" aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_INDEX}</th> tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on"
<th width="8%" class="sorter-saas tablesorter-header tablesorter-headerUnSorted" data-column="5" tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on" style="-moz-user-select: none;" aria-sort="none" aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_QUANTITY}</th> style="-moz-user-select: none;" aria-sort="none"
<th width="8%" class="sorter-saas tablesorter-header tablesorter-headerUnSorted" data-column="6" tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on" style="-moz-user-select: none;" aria-sort="none" aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_VALUE}</th> aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_PRODUCTS}</th>
<th width="8%" class="sorter-saas tablesorter-header tablesorter-headerUnSorted" data-column="6" tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on" style="-moz-user-select: none;" aria-sort="none" aria-label="Name: No sort applied, activate to apply an ascending sort">Średnia Cena</th> <th width="4%" class="sorter-text tablesorter-header tablesorter-headerUnSorted" data-column="1"
tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on"
style="-moz-user-select: none;" aria-sort="none"
aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_INDEX}</th>
<th width="6%" class="sorter-text tablesorter-header tablesorter-headerUnSorted" data-column="1"
tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on"
style="-moz-user-select: none;" aria-sort="none"
aria-label="Name: No sort applied, activate to apply an ascending sort">Adres magazynowy</th>
<th width="8%" class="sorter-saas tablesorter-header tablesorter-headerUnSorted" data-column="5"
tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on"
style="-moz-user-select: none;" aria-sort="none"
aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_QUANTITY}</th>
<th width="8%" class="sorter-saas tablesorter-header tablesorter-headerUnSorted" data-column="6"
tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on"
style="-moz-user-select: none;" aria-sort="none"
aria-label="Name: No sort applied, activate to apply an ascending sort">{$MOD.LBL_VALUE}</th>
<th width="8%" class="sorter-saas tablesorter-header tablesorter-headerUnSorted" data-column="6"
tabindex="0" scope="col" role="columnheader" aria-disabled="false" unselectable="on"
style="-moz-user-select: none;" aria-sort="none"
aria-label="Name: No sort applied, activate to apply an ascending sort">Średnia Cena</th>
</tr> </tr>
</thead> </thead>
{foreach from=$DATA item=CAT key=CATNAME name=loop} {foreach from=$DATA item=CAT key=CATNAME name=loop}
@@ -205,20 +235,26 @@
<td class="oddListRowS1 alignLeft"><a class="plusStyle showTables">[+]</a><b> {$CATNAME}</b></td> <td class="oddListRowS1 alignLeft"><a class="plusStyle showTables">[+]</a><b> {$CATNAME}</b></td>
{/if} {/if}
<td class="oddListRowS1"></td> <td class="oddListRowS1"></td>
<td class="oddListRowS1"></td>
<td class="oddListRowS1 sumRow"><b>{$DATA.$CATNAME.QuantitySum|number_format:4:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$DATA.$CATNAME.QuantitySum|number_format:4:",":"." }</b></td>
<td class="oddListRowS1 sumRow"><b>{$DATA.$CATNAME.PriceSum|number_format:2:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$DATA.$CATNAME.PriceSum|number_format:2:",":"." }</b></td>
<td class="oddListRowS1 sumRow" ><b>{$DATA.$CATNAME.PriceSum/$DATA.$CATNAME.QuantitySum|number_format:2:",":"." }</b></td> <td class="oddListRowS1 sumRow">
<b>{$DATA.$CATNAME.PriceSum/$DATA.$CATNAME.QuantitySum|number_format:2:",":"." }</b></td>
</tr> </tr>
</tbody> </tbody>
{foreach from=$CAT item=CAT2 key=CAT2NAME name=loop} {foreach from=$CAT item=CAT2 key=CAT2NAME name=loop}
{if $CAT2NAME!="QuantitySum" && $CAT2NAME!="PriceSum"} {if $CAT2NAME!="QuantitySum" && $CAT2NAME!="PriceSum"}
<tbody id="functions-core" class="tablesorter-infoOnly tablesShowHide"> <tbody id="functions-core" class="tablesorter-infoOnly tablesShowHide">
<tr class="subcategory"> <tr class="subcategory">
<td class="oddListRowS1 alignLeft"><a class="showRows" style="color: cadetblue; text-decoration: none; cursor: pointer;">[+]</a><b> {$CAT2NAME}</b></td> <td class="oddListRowS1 alignLeft"><a class="showRows"
style="color: cadetblue; text-decoration: none; cursor: pointer;">[+]</a><b> {$CAT2NAME}</b>
</td>
<td class="oddListRowS1"></td>
<td class="oddListRowS1"></td> <td class="oddListRowS1"></td>
<td class="oddListRowS1 sumRow"><b>{$CAT.$CAT2NAME.QuantitySum2|number_format:4:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$CAT.$CAT2NAME.QuantitySum2|number_format:4:",":"." }</b></td>
<td class="oddListRowS1 sumRow"><b>{$CAT.$CAT2NAME.PriceSum2|number_format:2:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$CAT.$CAT2NAME.PriceSum2|number_format:2:",":"." }</b></td>
<td class="oddListRowS1 sumRow" ><b>{$CAT.$CAT2NAME.PriceSum2/$CAT.$CAT2NAME.QuantitySum2|number_format:2:",":"." }</b></td> <td class="oddListRowS1 sumRow">
<b>{$CAT.$CAT2NAME.PriceSum2/$CAT.$CAT2NAME.QuantitySum2|number_format:2:",":"." }</b></td>
</tr> </tr>
</tbody> </tbody>
@@ -232,11 +268,13 @@
{/if} {/if}
<td class="oddListRowS1 alignLeft" style="text-align:left;"> <td class="oddListRowS1 alignLeft" style="text-align:left;">
<a target="new" href="index.php?module=EcmProducts&action=index&return_module=EcmProducts&action=DetailView&record={$ROW.id}"> <a target="new"
href="index.php?module=EcmProducts&action=index&return_module=EcmProducts&action=DetailView&record={$ROW.id}">
{$ROW.name} {$ROW.name}
</a> </a>
</td> </td>
<td class="oddListRowS1 alignLeft">{$ROW.code}</td> <td class="oddListRowS1 alignLeft">{$ROW.code}</td>
<td class="oddListRowS1">{$ROW.stock_address}</td>
<td class="oddListRowS1">{$ROW.quantity|number_format:4:",":"."}</td> <td class="oddListRowS1">{$ROW.quantity|number_format:4:",":"."}</td>
<td class="oddListRowS1">{$ROW.price|number_format:2:",":"."}</td> <td class="oddListRowS1">{$ROW.price|number_format:2:",":"."}</td>
<td class="oddListRowS1">{$ROW.price/$ROW.quantity|number_format:2:",":"."}</td> <td class="oddListRowS1">{$ROW.price/$ROW.quantity|number_format:2:",":"."}</td>
@@ -253,9 +291,11 @@
<tr class="static category sumAll"> <tr class="static category sumAll">
<td class="oddListRowS1 alignLeft"><b>{$MOD.LBL_SUM}:</b></td> <td class="oddListRowS1 alignLeft"><b>{$MOD.LBL_SUM}:</b></td>
<td class="oddListRowS1"></td> <td class="oddListRowS1"></td>
<td class="oddListRowS1"></td>
<td class="oddListRowS1 sumRow"><b>{$SUM.QuantitySumSum|number_format:4:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$SUM.QuantitySumSum|number_format:4:",":"." }</b></td>
<td class="oddListRowS1 sumRow"><b>{$SUM.PriceSumSum|number_format:2:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$SUM.PriceSumSum|number_format:2:",":"." }</b></td>
<td class="oddListRowS1 sumRow" ><b>{$SUM.PriceSumSum/$SUM.QuantitySumSum|number_format:2:",":"." }</b></td> <td class="oddListRowS1 sumRow"><b>{$SUM.PriceSumSum/$SUM.QuantitySumSum|number_format:2:",":"." }</b>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>