export stock addresses
This commit is contained in:
@@ -1,151 +1,186 @@
|
||||
<?php
|
||||
//error_reporting(E_ALL);
|
||||
//ini_set('display_errors', 1);
|
||||
$db = $GLOBALS['db'];
|
||||
if ($_GET['ajax']) {
|
||||
switch ($_GET['ajax']) {
|
||||
case 'addAddress':
|
||||
$productId = $_GET['productId'];
|
||||
$address = $_GET['address'];
|
||||
$isNotFull = $_GET['isNotFull'];
|
||||
// check if product exists
|
||||
$productId = $db->fetchByAssoc($db->query("SELECT id FROM ecmproducts WHERE id = '$productId'"))['id'];
|
||||
if ($productId == null) {
|
||||
echo json_encode(array('status' => 'Error', 'msg' => 'Nie znalaziono produktu w bazie: '.$index ));
|
||||
}
|
||||
// check if location is empty
|
||||
$location = $db->fetchByAssoc($db->query("SELECT stock_address FROM ecmproducts_stock_addresses WHERE stock_address = '$address'"));
|
||||
if ($location != null) {
|
||||
echo json_encode(array('status' => 'Error', 'msg' => 'Wskazana lokalizacja jest zajęta: '.$address ));
|
||||
return;
|
||||
}
|
||||
$db->query("INSERT INTO ecmproducts_stock_addresses (ecmproduct_id, stock_address, is_not_full) VALUES ('$productId','$address', $isNotFull)");
|
||||
echo json_encode(array('status' => 'Success', 'msg' => 'addAddress' ));
|
||||
break;
|
||||
case 'removeAddress':
|
||||
$address = $_GET['address'];
|
||||
$db->query("DELETE FROM ecmproducts_stock_addresses WHERE stock_address='$address'");
|
||||
echo json_encode(array('status' => 'Success', 'msg' => 'removeAddress' ));
|
||||
break;
|
||||
case 'setIsNotFull':
|
||||
$address = $_GET['address'];
|
||||
$isNotFull = $_GET['isNotFull'] == 'true' ? 1 : 0;
|
||||
$db->query("UPDATE ecmproducts_stock_addresses SET is_not_full=$isNotFull WHERE stock_address='$address'");
|
||||
echo json_encode(array('status' => 'Success', 'msg' => 'setIsNotFull'));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$pRes = $db->query("SELECT DISTINCT id, code FROM ecmproducts WHERE deleted=0;");
|
||||
$codes = array();
|
||||
while ($p = $db -> fetchByAssoc($pRes)) {
|
||||
$index = str_replace("'", "'", $p['code']);
|
||||
array_push($codes, ['id' => $p['id'], 'code' => $index]);
|
||||
}
|
||||
|
||||
$smarty = new Sugar_Smarty ();
|
||||
|
||||
if (strlen($_GET['searchType']) > 0 && $_GET['searchType'] == 'address')
|
||||
{
|
||||
//error_reporting(E_ALL);
|
||||
//ini_set('display_errors', 1);
|
||||
$db = $GLOBALS['db'];
|
||||
if ($_GET['ajax']) {
|
||||
switch ($_GET['ajax']) {
|
||||
case 'addAddress':
|
||||
$productId = $_GET['productId'];
|
||||
$address = $_GET['address'];
|
||||
$product = $db->fetchByAssoc($db->query("
|
||||
$isNotFull = $_GET['isNotFull'];
|
||||
// check if product exists
|
||||
$productId = $db->fetchByAssoc($db->query("SELECT id FROM ecmproducts WHERE id = '$productId'"))['id'];
|
||||
if ($productId == null) {
|
||||
echo json_encode(array('status' => 'Error', 'msg' => 'Nie znalaziono produktu w bazie: ' . $index));
|
||||
}
|
||||
// check if location is empty
|
||||
$location = $db->fetchByAssoc($db->query("SELECT stock_address FROM ecmproducts_stock_addresses WHERE stock_address = '$address'"));
|
||||
if ($location != null) {
|
||||
echo json_encode(array('status' => 'Error', 'msg' => 'Wskazana lokalizacja jest zajęta: ' . $address));
|
||||
return;
|
||||
}
|
||||
$db->query("INSERT INTO ecmproducts_stock_addresses (ecmproduct_id, stock_address, is_not_full) VALUES ('$productId','$address', $isNotFull)");
|
||||
echo json_encode(array('status' => 'Success', 'msg' => 'addAddress'));
|
||||
break;
|
||||
case 'removeAddress':
|
||||
$address = $_GET['address'];
|
||||
$db->query("DELETE FROM ecmproducts_stock_addresses WHERE stock_address='$address'");
|
||||
echo json_encode(array('status' => 'Success', 'msg' => 'removeAddress'));
|
||||
break;
|
||||
case 'setIsNotFull':
|
||||
$address = $_GET['address'];
|
||||
$isNotFull = $_GET['isNotFull'] == 'true' ? 1 : 0;
|
||||
$db->query("UPDATE ecmproducts_stock_addresses SET is_not_full=$isNotFull WHERE stock_address='$address'");
|
||||
echo json_encode(array('status' => 'Success', 'msg' => 'setIsNotFull'));
|
||||
break;
|
||||
case 'export':
|
||||
exportExcel();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$pRes = $db->query("SELECT DISTINCT id, code FROM ecmproducts WHERE deleted=0;");
|
||||
$codes = array();
|
||||
while ($p = $db->fetchByAssoc($pRes)) {
|
||||
$index = str_replace("'", "'", $p['code']);
|
||||
array_push($codes, ['id' => $p['id'], 'code' => $index]);
|
||||
}
|
||||
|
||||
$smarty = new Sugar_Smarty ();
|
||||
|
||||
if (strlen($_GET['searchType']) > 0 && $_GET['searchType'] == 'address') {
|
||||
$address = $_GET['address'];
|
||||
$product = $db->fetchByAssoc($db->query("
|
||||
SELECT a.ecmproduct_id, p.name, p.code, p.ems_qty_in_stock AS stock_state, a.is_not_full FROM ecmproducts_stock_addresses AS a
|
||||
INNER JOIN ecmproducts as p ON p.id=a.ecmproduct_id
|
||||
WHERE stock_address='$address';"));
|
||||
$state = $db->fetchByAssoc($db->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='".$product['ecmproduct_id']."'"));
|
||||
$product['stock_state'] = $state['qty'];
|
||||
$smarty->assign("PROCESS", "ADDRESS");
|
||||
$smarty->assign("PRODUCT", $product);
|
||||
}
|
||||
|
||||
if (strlen($_GET['searchType']) > 0 && $_GET['searchType'] == 'index')
|
||||
{
|
||||
$id = $_GET['productId'];
|
||||
$res = $db->query("
|
||||
$state = $db->fetchByAssoc($db->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='" . $product['ecmproduct_id'] . "'"));
|
||||
$product['stock_state'] = $state['qty'];
|
||||
$smarty->assign("PROCESS", "ADDRESS");
|
||||
$smarty->assign("PRODUCT", $product);
|
||||
}
|
||||
|
||||
if (strlen($_GET['searchType']) > 0 && $_GET['searchType'] == 'index') {
|
||||
$id = $_GET['productId'];
|
||||
$res = $db->query("
|
||||
SELECT a.ecmproduct_id, a.stock_address, a.is_not_full, p.name, p.code FROM ecmproducts_stock_addresses AS a
|
||||
INNER JOIN ecmproducts as p ON p.id=a.ecmproduct_id
|
||||
WHERE p.id='$id' AND p.deleted=0;");
|
||||
$addresses = array();
|
||||
while ($r = $db -> fetchByAssoc($res)) {
|
||||
array_push($addresses, $r);
|
||||
}
|
||||
$product = $db->fetchByAssoc($db->query("SELECT id, name, code, ems_qty_in_stock FROM ecmproducts WHERE id = '$id';"));
|
||||
$state = $db->fetchByAssoc($db->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='$id'"));
|
||||
$product['ems_qty_in_stock'] = $state['qty'];
|
||||
$smarty->assign("PROCESS", "PRODUCT");
|
||||
$smarty->assign("PRODUCT", $product);
|
||||
$smarty->assign("ADDRESSES", $addresses);
|
||||
$addresses = array();
|
||||
while ($r = $db->fetchByAssoc($res)) {
|
||||
array_push($addresses, $r);
|
||||
}
|
||||
|
||||
if (strlen($_GET['searchType']) > 0 && $_GET['searchType'] == 'allAddresses')
|
||||
{
|
||||
if ($_GET['onlyFull'] == "on") {
|
||||
$allAddresses = getAllAddresses(true);
|
||||
} else {
|
||||
$allAddresses = getAllAddresses(false);
|
||||
}
|
||||
$res = $db->query("
|
||||
SELECT a.ecmproduct_id, a.stock_address, a.is_not_full, p.name, p.code, p.ems_qty_in_stock FROM ecmproducts_stock_addresses AS a
|
||||
INNER JOIN ecmproducts as p ON p.id=a.ecmproduct_id");
|
||||
$used = array();
|
||||
while ($r = $db -> fetchByAssoc($res)) {
|
||||
array_push($used, $r);
|
||||
}
|
||||
$addresses = array();
|
||||
$sum = 0;
|
||||
foreach ($allAddresses as $a ) {
|
||||
$i = array_search($a, array_column($used, 'stock_address'));
|
||||
$element = ($i !== false ? $used[$i] : null);
|
||||
$row = array();
|
||||
$row['stock_address'] = $a;
|
||||
$row['is_not_full'] = $element['is_not_full'];
|
||||
if ($element) {
|
||||
$row['name'] = $element['name'];
|
||||
$row['code'] = $element['code'];
|
||||
$row['ecmproduct_id'] = $element['ecmproduct_id'];
|
||||
$state = $db->fetchByAssoc($db->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='".$element['ecmproduct_id']."'"));
|
||||
$row['stock_state'] = $state['qty'];
|
||||
}
|
||||
if ($_GET['allType'] == 'used' && $element) {
|
||||
array_push($addresses, $row);
|
||||
$sum++;
|
||||
} else if ($_GET['allType'] == 'empty' && !$element) {
|
||||
array_push($addresses, $row);
|
||||
$sum++;
|
||||
} else if ($_GET['allType'] == 'all') {
|
||||
array_push($addresses, $row);
|
||||
$sum++;
|
||||
}
|
||||
}
|
||||
|
||||
$smarty->assign("SUM", $sum);
|
||||
$smarty->assign("ALL_TYPE", $_GET['allType']);
|
||||
$smarty->assign("ONLY_FULL", $_GET['onlyFull']);
|
||||
$smarty->assign("PROCESS", "ALL_ADDRESSES");
|
||||
$smarty->assign("ADDRESSES", $addresses);
|
||||
}
|
||||
|
||||
$smarty->assign("CODES", json_encode($codes));
|
||||
$smarty->assign("CURRENT_ADDRESS", $_GET['address']);
|
||||
$smarty->assign("CURRENT_INDEX", $_GET['index']);
|
||||
echo $smarty->display ( 'modules/EcmProducts/tpls/stockAddress.tpl' );
|
||||
$product = $db->fetchByAssoc($db->query("SELECT id, name, code, ems_qty_in_stock FROM ecmproducts WHERE id = '$id';"));
|
||||
$state = $db->fetchByAssoc($db->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='$id'"));
|
||||
$product['ems_qty_in_stock'] = $state['qty'];
|
||||
$smarty->assign("PROCESS", "PRODUCT");
|
||||
$smarty->assign("PRODUCT", $product);
|
||||
$smarty->assign("ADDRESSES", $addresses);
|
||||
}
|
||||
|
||||
function getAllAddresses($onlyFull) {
|
||||
if (strlen($_GET['searchType']) > 0 && $_GET['searchType'] == 'allAddresses') {
|
||||
if ($_GET['onlyFull'] == "on") {
|
||||
$allAddresses = getAllAddresses(true);
|
||||
} else {
|
||||
$allAddresses = getAllAddresses(false);
|
||||
}
|
||||
$res = $db->query("
|
||||
SELECT a.ecmproduct_id, a.stock_address, a.is_not_full, p.name, p.code, p.ems_qty_in_stock FROM ecmproducts_stock_addresses AS a
|
||||
INNER JOIN ecmproducts as p ON p.id=a.ecmproduct_id");
|
||||
$used = array();
|
||||
while ($r = $db->fetchByAssoc($res)) {
|
||||
array_push($used, $r);
|
||||
}
|
||||
$addresses = array();
|
||||
for ($i = 1; $i <= 17; $i++) {
|
||||
$s1 = (strlen($i) == 1) ? '0'.$i : $i;
|
||||
for ($j = 1; $j <= 15; $j++) {
|
||||
$s2 = (strlen($j) == 1) ? '0'.$j : $j;
|
||||
for ($k = 1; $k <=3; $k++) {
|
||||
if ($onlyFull) {
|
||||
array_push($addresses, $s1.'.'.$s2.'.'.$k.'.0');
|
||||
} else {
|
||||
for ($l = 0; $l <=2; $l++) {
|
||||
array_push($addresses, $s1.'.'.$s2.'.'.$k.'.'.$l);
|
||||
}
|
||||
}
|
||||
$sum = 0;
|
||||
foreach ($allAddresses as $a) {
|
||||
$i = array_search($a, array_column($used, 'stock_address'));
|
||||
$element = ($i !== false ? $used[$i] : null);
|
||||
$row = array();
|
||||
$row['stock_address'] = $a;
|
||||
$row['is_not_full'] = $element['is_not_full'];
|
||||
if ($element) {
|
||||
$row['name'] = $element['name'];
|
||||
$row['code'] = $element['code'];
|
||||
$row['ecmproduct_id'] = $element['ecmproduct_id'];
|
||||
$state = $db->fetchByAssoc($db->query("SELECT SUM(quantity) as qty FROM ecmstockstates WHERE product_id='" . $element['ecmproduct_id'] . "'"));
|
||||
$row['stock_state'] = $state['qty'];
|
||||
}
|
||||
if ($_GET['allType'] == 'used' && $element) {
|
||||
array_push($addresses, $row);
|
||||
$sum++;
|
||||
} else if ($_GET['allType'] == 'empty' && !$element) {
|
||||
array_push($addresses, $row);
|
||||
$sum++;
|
||||
} else if ($_GET['allType'] == 'all') {
|
||||
array_push($addresses, $row);
|
||||
$sum++;
|
||||
}
|
||||
}
|
||||
|
||||
$smarty->assign("SUM", $sum);
|
||||
$smarty->assign("ALL_TYPE", $_GET['allType']);
|
||||
$smarty->assign("ONLY_FULL", $_GET['onlyFull']);
|
||||
$smarty->assign("PROCESS", "ALL_ADDRESSES");
|
||||
$smarty->assign("ADDRESSES", $addresses);
|
||||
}
|
||||
|
||||
$smarty->assign("CODES", json_encode($codes));
|
||||
$smarty->assign("CURRENT_ADDRESS", $_GET['address']);
|
||||
$smarty->assign("CURRENT_INDEX", $_GET['index']);
|
||||
echo $smarty->display('modules/EcmProducts/tpls/stockAddress.tpl');
|
||||
}
|
||||
|
||||
function getAllAddresses($onlyFull)
|
||||
{
|
||||
$addresses = array();
|
||||
for ($i = 1; $i <= 17; $i++) {
|
||||
$s1 = (strlen($i) == 1) ? '0' . $i : $i;
|
||||
for ($j = 1; $j <= 15; $j++) {
|
||||
$s2 = (strlen($j) == 1) ? '0' . $j : $j;
|
||||
for ($k = 1; $k <= 3; $k++) {
|
||||
if ($onlyFull) {
|
||||
array_push($addresses, $s1 . '.' . $s2 . '.' . $k . '.0');
|
||||
} else {
|
||||
for ($l = 0; $l <= 2; $l++) {
|
||||
array_push($addresses, $s1 . '.' . $s2 . '.' . $k . '.' . $l);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $addresses;
|
||||
}
|
||||
}
|
||||
return $addresses;
|
||||
}
|
||||
|
||||
function exportExcel()
|
||||
{
|
||||
$db = $GLOBALS['db'];
|
||||
|
||||
$address = $_GET['address'];
|
||||
$res = $db->query("SELECT p.code, s.stock_address
|
||||
FROM ecmproducts_stock_addresses AS s
|
||||
INNER JOIN ecmproducts AS p
|
||||
ON p.id = s.ecmproduct_id
|
||||
ORDER BY s.stock_address;");
|
||||
$result = array();
|
||||
while ($row = $db->fetchByAssoc($res)) {
|
||||
array_push($result, $row);
|
||||
}
|
||||
|
||||
$headers = [
|
||||
'Indeks', 'Adres'
|
||||
];
|
||||
|
||||
$sheetData = array_merge([$headers], $result);
|
||||
|
||||
require_once 'modules/EcmReports/BimIT-Reports/lib/xlsxGenerator.php';
|
||||
|
||||
$xlsx = Shuchkin\SimpleXLSXGen::fromArray($sheetData);
|
||||
$xlsx_content = (string)$xlsx;
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'fileContent' => base64_encode($xlsx_content),
|
||||
'fileName' => 'adresy_magazynowe.xlsx'
|
||||
]);
|
||||
}
|
||||
Reference in New Issue
Block a user