150 lines
5.5 KiB
PHP
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;
|
|
} |