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') { $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; }