Files
crm.e5.pl/modules/EcmSales/ProductSummary.php
2025-11-08 12:54:24 +01:00

150 lines
5.5 KiB
PHP

<?php
if (!defined('sugarEntry') || !sugarEntry)
die ('Not A Valid Entry Point');
global $sugar_version, $sugar_config, $current_user, $app_strings, $mod_strings;
require_once('modules/EcmInsideOrders/EcmInsideOrder.php');
require_once('include/time.php');
require_once('include/json_config.php');
// add jquery
echo '<link rel="stylesheet" type="text/css" href="modules/EcmSales/css/style.css"/>';
echo '<script type="text/javascript" src="include/jQuery/jquery-lastes.js"></script>';
echo '<script type="text/javascript" src="include/jQuery/jquery.tablesorter.pager.js"></script>';
echo '<script type="text/javascript" src="modules/EcmSales/javascript/ProductSummary.js"></script>';
$json_config = new json_config ();
$focus = new EcmSale ();
$db = $GLOBALS['db'];
$positions = array();
$total = 0;
$stock = 0;
$id_array = isset($_GET['ids']) ? explode(",", $_GET['ids']) : array();
$where = "and doc.id IN ('" . implode("','", $id_array) . "')";
if (isset($_GET['product_group']) && $_GET['product_group'] == '1') $where .= " and pr.group_ks=1";
if (isset($_GET['product_group']) && $_GET['product_group'] == '2') $where .= " and pr.group_ks=2";
if (isset($_GET['product_group']) && $_GET['product_group'] == '3') $where .= " and pr.group_ks=3";
$query = "SELECT
pr.id,
item.code,
item.name,
ROUND(SUM(item.quantity),0) AS quantity,
ROUND(IFNULL(x.stock, 0),0) AS stock,
pr.group_ks,
pr.product_category_name,
pr.product_category_id
FROM ecmsaleitems AS item
INNER JOIN ecmsales AS doc ON doc.id=item.ecmsale_id
INNER JOIN ecmproducts AS pr ON pr.id=item.ecmproduct_id
LEFT JOIN (
SELECT SUM(quantity) AS stock, product_id
FROM ecmstockstates
GROUP BY product_id
) x ON x.product_id=item.ecmproduct_id
WHERE doc.deleted='0' AND doc.status!='s10' " . $where . "
AND NOT EXISTS (
SELECT NULL
FROM ecmstockdocouts t1
WHERE t1.ecmsale_id = doc.id
)
GROUP BY item.ecmproduct_id
ORDER BY pr.group_ks DESC";
$rows = $db->query($query);
while ($r = $db->fetchByAssoc($rows)) {
$row = array();
$row['id'] = $r['id'];
$row['code'] = $r['code'];
$row['name'] = $r['name'];
$row['quantity'] = $r['quantity'];
$row['stock'] = $r['stock'];
$row['product_category_name'] = $r['product_category_name'];
$row['group_ks'] = $r['group_ks'];
$daj = '';
if ($r['group_ks'] == '1') $daj = 'TH';
if ($r['group_ks'] == '2') $daj = 'WG';
if ($r['group_ks'] == '3') $daj = 'S';
$row['group_ks_name'] = $daj;
$result = $db->query("SELECT stock_address, is_not_full FROM ecmproducts_stock_addresses WHERE ecmproduct_id='" . $r['id'] . "' ORDER BY stock_address");
$addresses_raw = array();
while ($addr = $db->fetchByAssoc($result)) {
$addresses_raw[] = array(
'addr' => trim($addr['stock_address']),
'not_full' => ($addr['is_not_full'] == '1')
);
}
if (!empty($addresses_raw)) {
usort($addresses_raw, function ($a, $b) {
return strcmp($a['addr'], $b['addr']);
});
}
$only_addrs = array();
$has_not_full = 0;
foreach ($addresses_raw as $ar) {
$only_addrs[] = $ar['addr'];
if ($ar['not_full']) $has_not_full = 1;
}
$row['stock_addresses_sort_key'] = implode(' ', $only_addrs);
$row['has_not_full'] = $has_not_full;
$stock_addresses_html = '';
foreach ($addresses_raw as $ar) {
if ($ar['not_full']) {
$stock_addresses_html .= " <span style='color: red;'>" . $ar['addr'] . "</span>";
} else {
$stock_addresses_html .= " " . $ar['addr'];
}
}
$row['stock_addresses'] = $stock_addresses_html;
$positions[] = $row;
$total += (float)$r['quantity'];
$stock += (float)$r['stock'];
}
usort($positions, function ($a, $b) {
$ka = isset($a['stock_addresses_sort_key']) ? $a['stock_addresses_sort_key'] : '';
$kb = isset($b['stock_addresses_sort_key']) ? $b['stock_addresses_sort_key'] : '';
return strcmp($ka, $kb);
});
$data = $positions;
$data['quantity'] = $total;
$data['stock'] = $stock;
if (!isset($_REQUEST['to_pdf'])) {
$edit->ss = new Sugar_Smarty();
$edit->module = 'EcmSales';
$edit->ss->assign("CREATED_BY_NAME", $focus->created_by_name);
$edit->ss->assign("MODIFIED_BY_NAME", $focus->modified_by_name);
$edit->ss->assign('FOCUS', $focus);
$edit->ss->assign('POST', $_POST);
$edit->ss->assign('LINK', isset($link) ? $link : '');
$edit->ss->assign('IDS', isset($_GET['ids']) ? $_GET['ids'] : '');
$edit->ss->assign('POSITION_LIST', $data);
$edit->ss->assign('MOD', $mod_strings);
$edit->ss->display('modules/EcmSales/tpls/ProductSummary.tpl');
} else {
$t = '<table style="border: 1px solid black; border-collapse: collapse;"><tr><td><b>Kod</b></td><td><b>Nazwa</b></td><td><b>Ilość</b></td><td><b>Adres magazynowy</b></td></tr>';
foreach ($data as $r) {
if (isset($r['code'])) {
$t .= '<tr><td style="border: 1px solid black;">' . $r['code'] . '</td><td style="border: 1px solid black;">' . $r['name'] . '</td><td style="border: 1px solid black;">' . $r['quantity'] . '</td><td style="border: 1px solid black;">' . $r['stock_addresses'] . '</td></tr>';
}
}
$t .= '</table>';
echo $t;
}