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(" 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); } 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'); } 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; } 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' ]); }