isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = ""; if (isset($prm['search'])) { $search = trim($prm["search"]); if ($search != "") { $search = '%' . $prm['search'] . '%'; } else { $search = '%%'; } } $number_limit = 20; $number_offset = 0; if ($prm['current_page'] > 0) { $number_offset = ($prm['current_page'] - 1) * $number_limit; } $sql_count = "SELECT count(*) as total FROM supplier WHERE SupplierIsActive = 'Y' AND (SupplierCode LIKE ? OR SupplierName LIKE ?)"; $qry_count = $this->db->query($sql_count, [$search, $search]); $tot_count = 0; $tot_page = 0; if ($qry_count) { $tot_count = $qry_count->result_array()[0]["total"]; $tot_page = ceil($tot_count / $number_limit); } else { $this->db->trans_rollback(); $this->sys_error_db("supplier count error", $this->db); exit; } $sql = "SELECT SupplierID, SupplierCode, SupplierName, SupplierTermOfPayment, SupplierIsPpn, SupplierIsPph, SupplierPpnPct, SupplierPphPct, SupplierAddress, SupplierPhone, SupplierAdminName as SupplierPIC, SupplierAdminEmail as SupplierPICEmail, SupplierAdminPhone as SupplierPICPhone, SupplierAdminHp as SupplierPICHp FROM supplier WHERE SupplierIsActive = 'Y' AND (SupplierCode LIKE ? OR SupplierName LIKE ?) ORDER BY SupplierID DESC LIMIT ? OFFSET ?"; $qry = $this->db->query($sql, [$search, $search, $number_limit, $number_offset]); if ($qry) { $rows = $qry->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("supplier list error", $this->db); exit; } $result = array( "total_page" => $tot_page, "total_filter" => $tot_count, "records" => $rows, "sql" => $this->db->last_query() ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function searchdetail() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; // Get supplier ID from parameters if (!isset($prm['supplier_id'])) { $this->sys_error("Supplier ID is required"); exit; } $supplier_id = $prm['supplier_id']; // Handle search parameter $search = ""; if (isset($prm['search'])) { $search = trim($prm["search"]); if ($search != "") { $search = '%' . $prm['search'] . '%'; } else { $search = '%%'; } } // Pagination setup $number_limit = 20; $number_offset = 0; if ($prm['current_page'] > 0) { $number_offset = ($prm['current_page'] - 1) * $number_limit; } // Count total records $sql_count = "SELECT COUNT(*) as total FROM supplier_price sp JOIN m_item mi ON sp.SupplierPriceM_ItemID = mi.M_ItemID LEFT JOIN itemunit iu ON sp.SupplierPriceItemUnitID = iu.ItemUnitID WHERE sp.SupplierPriceIsActive = 'Y' AND sp.SupplierPriceSupplierID = ? AND (mi.M_ItemCode LIKE ? OR mi.M_ItemDesc LIKE ?)"; $qry_count = $this->db->query($sql_count, [$supplier_id, $search, $search]); $tot_count = 0; $tot_page = 0; if ($qry_count) { $tot_count = $qry_count->result_array()[0]["total"]; $tot_page = ceil($tot_count / $number_limit); } else { $this->db->trans_rollback(); $this->sys_error_db("supplier price count error", $this->db); exit; } // Get detailed records $sql = "SELECT sp.SupplierPriceID, sp.SupplierPriceSupplierID, mi.M_ItemID, mi.M_ItemCode, mi.M_ItemDesc, iu.ItemUnitID, iu.ItemUnitCode, iu.ItemUnitName, sp.SupplierPricePrice, sp.SupplierPriceCreated, sp.SupplierPriceLastUpdated, sp.SupplierPriceMinQty, sp.SupplierPriceMinInclusive, sp.SupplierPriceMaxQty, sp.SupplierPriceMaxInclusive, sp.SupplierPriceFlagQty FROM supplier_price sp JOIN m_item mi ON sp.SupplierPriceM_ItemID = mi.M_ItemID LEFT JOIN itemunit iu ON sp.SupplierPriceItemUnitID = iu.ItemUnitID WHERE sp.SupplierPriceIsActive = 'Y' AND sp.SupplierPriceSupplierID = ? AND (mi.M_ItemCode LIKE ? OR mi.M_ItemDesc LIKE ?) ORDER BY sp.SupplierPriceID DESC LIMIT ? OFFSET ?"; $qry = $this->db->query($sql, [$supplier_id, $search, $search, $number_limit, $number_offset]); if ($qry) { $rows = $qry->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("supplier price list error", $this->db); exit; } $result = array( "total_page" => $tot_page, "total_filter" => $tot_count, "records" => $rows, "sql" => $this->db->last_query() ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function save() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userId = $this->sys_user["M_UserID"]; // Validate required parameters if (!isset($prm['nameSupplier']) || trim($prm['nameSupplier']) == "") { $this->sys_error("Supplier name is required"); exit; } $nameSupplier = ""; if (isset($prm['nameSupplier'])) { $nameSupplier = trim($prm['nameSupplier']); } // $isPpn = ""; // if (isset($prm['isPpn'])) { // $isPpn = trim($prm['isPpn']); // } // $isPph = ""; // if (isset($prm['isPph'])) { // $isPph = trim($prm['isPph']); // } // $PpnPercent = ""; // if (isset($prm['PpnPercent'])) { // $PpnPercent = trim($prm['PpnPercent']); // } // $PphPercent = ""; // if (isset($prm['PphPercent'])) { // $PphPercent = trim($prm['PphPercent']); // } $SupplierAddress = ""; if (isset($prm['SupplierAddress'])) { $SupplierAddress = trim($prm['SupplierAddress']); } $SupplierPhone = ""; if (isset($prm['SupplierPhone'])) { $SupplierPhone = trim($prm['SupplierPhone']); } $SupplierPIC = ""; if (isset($prm['SupplierPIC'])) { $SupplierPIC = trim($prm['SupplierPIC']); } $SupplierPICEmail = ""; if (isset($prm['SupplierPICEmail'])) { $SupplierPICEmail = trim($prm['SupplierPICEmail']); } $SupplierPICPhone = ""; if (isset($prm['SupplierPICPhone'])) { $SupplierPICPhone = trim($prm['SupplierPICPhone']); } $SupplierPICHp = ""; if (isset($prm['SupplierPICHp'])) { $SupplierPICHp = trim($prm['SupplierPICHp']); } $suppliertop = 0; if (isset($prm['SupplierTOP'])) { $suppliertop = intval($prm['SupplierTOP']); } $codeSql = "SELECT `fn_numbering`('S') as codeSp"; $exec = $this->db->query($codeSql, []); $codeSupplier = ""; if (!$exec) { $this->db->trans_rollback(); $this->sys_error_db("generate code error", $this->db); exit; } else { $codeSupplier = $exec->result_array()[0]["codeSp"]; } // Check for existing supplier with same name $sql_check = "SELECT COUNT(*) as total FROM supplier WHERE SupplierName = ? AND SupplierIsActive = 'Y'"; $qry_check = $this->db->query($sql_check, [$nameSupplier]); if ($qry_check && $qry_check->result_array()[0]['total'] > 0) { $this->sys_error("Nama supplier sudah ada"); exit; } $sql = "INSERT INTO supplier( SupplierCode, SupplierName, -- SupplierIsPpn, -- SupplierIsPph, -- SupplierPpnPct, -- SupplierPphPct, SupplierTermOfPayment, SupplierAddress, SupplierPhone, SupplierAdminName, SupplierAdminEmail, SupplierAdminPhone, SupplierAdminHp, SupplierIsActive, SupplierCreatedUserID, SupplierCreated ) VALUES(?,?,?,?,?,?,?,?,?,'Y',?,NOW())"; $qry = $this->db->query($sql, [ $codeSupplier, $nameSupplier, $suppliertop, $SupplierAddress, $SupplierPhone, $SupplierPIC, $SupplierPICEmail, $SupplierPICPhone, $SupplierPICHp, // $isPpn, // $isPph, // $PpnPercent, // $PphPercent, $userId ]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("supplier insert error", $this->db); exit; } $this->db->trans_commit(); $newInsert = "SELECT * FROM supplier WHERE SupplierCode = '{$codeSupplier}' AND SupplierIsActive = 'Y'"; $records = $this->db->query($newInsert, [])->result_array(); $this->sys_ok(array( "total" => 1, "records" => $records )); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function update() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userId = $this->sys_user["M_UserID"]; // Validate required parameters if (!isset($prm['nameSupplier']) || trim($prm['nameSupplier']) == "") { $this->sys_error("Supplier name is required"); exit; } $nameSupplier = ""; if (isset($prm['nameSupplier'])) { $nameSupplier = trim($prm['nameSupplier']); } $SupplierAddress = ""; if (isset($prm['SupplierAddress'])) { $SupplierAddress = trim($prm['SupplierAddress']); } $suppliertop = 0; if (isset($prm['SupplierAddress'])) { $suppliertop = intval($prm['SupplierTOP']); } $SupplierPhone = ""; if (isset($prm['SupplierPhone'])) { $SupplierPhone = trim($prm['SupplierPhone']); } $SupplierPIC = ""; if (isset($prm['SupplierPIC'])) { $SupplierPIC = trim($prm['SupplierPIC']); } $SupplierPICEmail = ""; if (isset($prm['SupplierPICEmail'])) { $SupplierPICEmail = trim($prm['SupplierPICEmail']); } $SupplierPICPhone = ""; if (isset($prm['SupplierPICPhone'])) { $SupplierPICPhone = trim($prm['SupplierPICPhone']); } $SupplierPICHp = ""; if (isset($prm['SupplierPICHp'])) { $SupplierPICHp = trim($prm['SupplierPICHp']); } // $isPpn = ""; // if (isset($prm['isPpn'])) { // $isPpn = trim($prm['isPpn']); // } // $isPph = ""; // if (isset($prm['isPph'])) { // $isPph = trim($prm['isPph']); // } // $PpnPercent = ""; // if (isset($prm['PpnPercent'])) { // $PpnPercent = trim($prm['PpnPercent']); // } // $PphPercent = ""; // if (isset($prm['PphPercent'])) { // $PphPercent = trim($prm['PphPercent']); // } $supplier_id = ""; if (isset($prm['supplier_id'])) { $supplier_id = trim($prm['supplier_id']); } $sql = "UPDATE supplier SET SupplierName = ?, SupplierAddress = ?, SupplierTermOfPayment = ?, SupplierPhone = ?, SupplierAdminName = ?, SupplierAdminEmail = ?, SupplierAdminPhone = ?, SupplierAdminHp = ?, SupplierLastUpdatedUserID = ?, SupplierLastUpdated = NOW() WHERE SupplierID = ?"; $qry = $this->db->query($sql, [ $nameSupplier, $SupplierAddress, $suppliertop, $SupplierPhone, $SupplierPIC, $SupplierPICEmail, $SupplierPICPhone, $SupplierPICHp, $userId, $supplier_id ]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("supplier update error" . $this->db->last_query(), $this->db); exit; } $this->db->trans_commit(); $newInsert = "SELECT * FROM supplier WHERE SupplierID = {$supplier_id} AND SupplierIsActive = 'Y'"; $records = $this->db->query($newInsert, [])->result_array(); $this->sys_ok(array( "total" => 1, "records" => $records )); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function deletesupplier() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userId = $this->sys_user["M_UserID"]; $supplier_id = ""; if (isset($prm['supplier_id'])) { $supplier_id = trim($prm['supplier_id']); } $sql = "UPDATE supplier SET SupplierIsActive = 'N', SupplierDeletedUserID = ?, SupplierDeleted = NOW() WHERE SupplierID = ?"; $qry = $this->db->query($sql, [ $userId, $supplier_id ]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("supplier update error", $this->db); exit; } $sql_price = "UPDATE supplier_price SET SupplierPriceIsActive = 'N', SupplierPriceUserID = ?, SupplierPriceLastUpdated = NOW() WHERE SupplierPriceSupplierID = ?"; $qry_price = $this->db->query($sql_price, [ $userId, $supplier_id ]); if (!$qry_price) { $this->db->trans_rollback(); $this->sys_error_db("supplier price update error", $this->db); exit; } $this->db->trans_commit(); $this->sys_ok(array( "total" => 1, "records" => array("xId" => $prm["supplier_id"]) )); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function searchItem() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); } $payload = $this->sys_input; $search = ""; if (isset($payload["search"])) { $search = trim($payload["search"]); if ($search != "") { $search = "%" . $payload["search"] . "%"; } else { $search = "%%"; } } $number_limit = 10; $sql = "SELECT M_ItemID, M_ItemCode, IF(M_ItemDesc = '', '-', M_ItemDesc) AS M_ItemDesc FROM m_item WHERE (M_ItemCode LIKE ? OR M_ItemDesc LIKE ?) ORDER BY M_ItemDesc ASC LIMIT ?"; $qry = $this->db->query($sql, array($search, $search, $number_limit)); if ($qry) { $rows = $qry->result_array(); } else { $this->db->trans_rollback(); $this->sys_error_db("select item error", $this->db); exit; } $result = array( "records" => $rows, "total_filter" => sizeof($rows) ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function getUnit() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = isset($prm["search"]) ? $prm["search"] : ""; $itemID = $prm["itemID"]; $sql = "SELECT ItemUnitID, ItemUnitCode, ItemUnitName, ItemUnitCreated, ItemUnitLastUpdated, ItemUnitIsActive, ItemUnitUserID FROM itemunit JOIN itemunitmap ON ItemUnitMapItemUnitID = ItemUnitID AND ItemUnitMapM_ItemID = {$itemID} AND ItemUnitMapIsActive = 'Y' AND ItemUnitMapIsPurchase = 'Y' WHERE ItemUnitIsActive = 'Y' AND ItemUnitName LIKE '%$search%' ORDER BY ItemUnitName ASC"; $query = $this->db->query($sql); if (!$query) { $this->sys_error_db("item unit list", $this->db); exit; } $rows = $query->result_array(); $result = array( "records" => $rows, "sql" => $this->db->last_query() ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function saveprice() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userId = $this->sys_user["M_UserID"]; // Validate required parameters if (!isset($prm['supplier_id']) || !isset($prm['item_id']) || !isset($prm['unit_id']) || !isset($prm['price'])) { $this->sys_error("All fields are required"); exit; } $supplier_id = trim($prm['supplier_id']); $item_id = trim($prm['item_id']); $unit_id = trim($prm['unit_id']); $price = trim($prm['price']); $supplierMinInclusive = 'Y'; $supplierMinQty = 0; $supplierMaxInclusive = 'Y'; $supplierMaxQty = 0; $type = $prm['type']; if ($type == "R") { if (intval($prm['min_value']) == 0 || intval($prm['max_value']) == 0) { $this->sys_error("Qty rentang harus diisi"); exit; } $supplierMinInclusive = $prm['min_inclusive'] == true ? 'Y' : 'N'; $supplierMinQty = $prm['min_value']; $supplierMaxInclusive = $prm['max_inclusive'] == true ? 'Y' : 'N'; $supplierMaxQty = $prm['max_value']; } // Ambil semua data aktif untuk kombinasi supplier + item + unit $sql_check = "SELECT SupplierPriceFlagQty, SupplierPriceMinQty, SupplierPriceMaxQty FROM supplier_price WHERE SupplierPriceSupplierID = ? AND SupplierPriceM_ItemID = ? AND SupplierPriceItemUnitID = ? AND SupplierPriceIsActive = 'Y'"; $qry_check = $this->db->query($sql_check, [$supplier_id, $item_id, $unit_id]); if (!$qry_check) { $this->sys_error_db("Gagal select supplier price", $this->db); exit; } $rows = $qry_check->result_array(); // Cek tipe existing $hasTakTerhingga = false; $hasRentang = false; foreach ($rows as $r) { if ($r['SupplierPriceFlagQty'] == 'T') $hasTakTerhingga = true; if ($r['SupplierPriceFlagQty'] == 'R') $hasRentang = true; } // --- VALIDASI FLAG T --- if ($type == 'T' && ($hasTakTerhingga || $hasRentang)) { $this->sys_error("Tidak bisa menambahkan tipe TAK TERHINGGA. Sudah ada data RENTANG atau TAK TERHINGGA untuk item dan unit ini."); exit; } if ($type == 'R' && $hasTakTerhingga) { $this->sys_error("Tidak bisa menambahkan tipe RENTANG. Sudah ada data TAK TERHINGGA untuk item dan unit ini."); exit; } // --- VALIDASI RENTANG (OVERLAP) --- if ($type == 'R') { $minQty = (int) $prm['min_value']; // ambil dari input user $maxQty = (int) $prm['max_value']; if ($maxQty <= $minQty) { $this->sys_error("Max Qty harus lebih besar dari Min Qty."); exit; } foreach ($rows as $r) { if ($r['SupplierPriceFlagQty'] == 'R') { $existMin = (int) $r['SupplierPriceMinQty']; $existMax = (int) $r['SupplierPriceMaxQty']; // Cek overlap (tumpang tindih) if ( ($minQty >= $existMin && $minQty <= $existMax) || // min masuk rentang lama ($maxQty >= $existMin && $maxQty <= $existMax) || // max masuk rentang lama ($minQty <= $existMin && $maxQty >= $existMax) // mencakup seluruh rentang lama ) { $this->sys_error("Rentang Qty " . $minQty . " - " . $maxQty . " tumpang tindih dengan rentang yang sudah ada (" . $existMin . "-" . $existMax . ")."); exit; } } } } // Jika lolos semua validasi, lanjut INSERT $sql = "INSERT INTO supplier_price( SupplierPriceSupplierID, SupplierPriceM_ItemID, SupplierPriceItemUnitID, SupplierPricePrice, SupplierPriceMinQty, SupplierPriceMinInclusive, SupplierPriceMaxQty, SupplierPriceMaxInclusive, SupplierPriceFlagQty, SupplierPriceIsActive, SupplierPriceUserID, SupplierPriceCreated ) VALUES(?,?,?,?,?,?,?,?,?,'Y',?,NOW())"; $qry = $this->db->query($sql, [ $supplier_id, $item_id, $unit_id, $price, $supplierMinQty, $supplierMinInclusive, $supplierMaxQty, $supplierMaxInclusive, $type, $userId ]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("supplier price insert error", $this->db); exit; } $this->db->trans_commit(); $newInsert = "SELECT sp.*, mi.M_ItemCode, mi.M_ItemDesc, iu.ItemUnitCode, iu.ItemUnitName FROM supplier_price sp JOIN m_item mi ON sp.SupplierPriceM_ItemID = mi.M_ItemID JOIN itemunit iu ON sp.SupplierPriceItemUnitID = iu.ItemUnitID WHERE sp.SupplierPriceID = LAST_INSERT_ID()"; $records = $this->db->query($newInsert)->result_array(); $this->sys_ok(array( "total" => 1, "records" => $records )); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function updateprice() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userId = $this->sys_user["M_UserID"]; // Validate required parameters if (!isset($prm['supplier_price_id']) || !isset($prm['item_id']) || !isset($prm['unit_id']) || !isset($prm['price'])) { $this->sys_error("All fields are required"); exit; } $supplier_id = trim($prm['supplier_id']); $supplier_price_id = trim($prm['supplier_price_id']); $item_id = trim($prm['item_id']); $unit_id = trim($prm['unit_id']); $price = trim($prm['price']); $supplierMinInclusive = 'Y'; $supplierMinQty = 0; $supplierMaxInclusive = 'Y'; $supplierMaxQty = 0; $type = $prm['type']; if ($type == "R") { if (intval($prm['min_value']) == 0 || intval($prm['max_value']) == 0) { $this->sys_error("Qty rentang harus diisi"); exit; } $supplierMinInclusive = $prm['min_inclusive'] == true ? 'Y' : 'N'; $supplierMinQty = $prm['min_value']; $supplierMaxInclusive = $prm['max_inclusive'] == true ? 'Y' : 'N'; $supplierMaxQty = $prm['max_value']; } // Check for existing supplier price with type flag qty // $sql_check = "SELECT COUNT(*) as total // FROM supplier_price // WHERE SupplierPriceSupplierID = ? // AND SupplierPriceM_ItemID = ? // AND SupplierPriceItemUnitID = ? // AND SupplierPriceIsActive = 'Y' // AND SupplierPriceFlagQty = ? // AND SupplierPriceID != ?"; // $qry_check = $this->db->query($sql_check, [$supplier_id, $item_id, $unit_id, $type, $supplier_price_id]); // echo $this->db->last_query(); // exit; // if ($qry_check && $qry_check->result_array()[0]['total'] > 0) { // $this->sys_error("Price for this item and unit already exists"); // exit; // } // Ambil semua data aktif untuk kombinasi supplier + item + unit $sql_check = "SELECT SupplierPriceFlagQty, SupplierPriceMinQty, SupplierPriceMaxQty FROM supplier_price WHERE SupplierPriceSupplierID = ? AND SupplierPriceM_ItemID = ? AND SupplierPriceItemUnitID = ? AND SupplierPriceIsActive = 'Y' AND SupplierPriceID != ?"; $qry_check = $this->db->query($sql_check, [$supplier_id, $item_id, $unit_id, $supplier_price_id]); if (!$qry_check) { $this->sys_error_db("Gagal select supplier price", $this->db); exit; } $rows = $qry_check->result_array(); // Cek tipe existing $hasTakTerhingga = false; $hasRentang = false; foreach ($rows as $r) { if ($r['SupplierPriceFlagQty'] == 'T') $hasTakTerhingga = true; if ($r['SupplierPriceFlagQty'] == 'R') $hasRentang = true; } // --- VALIDASI FLAG T --- if ($type == 'T' && ($hasTakTerhingga || $hasRentang)) { $this->sys_error("Tidak bisa menambahkan tipe TAK TERHINGGA. Sudah ada data RENTANG atau TAK TERHINGGA untuk item dan unit ini."); exit; } if ($type == 'R' && $hasTakTerhingga) { $this->sys_error("Tidak bisa menambahkan tipe RENTANG. Sudah ada data TAK TERHINGGA untuk item dan unit ini."); exit; } // --- VALIDASI RENTANG (OVERLAP) --- if ($type == 'R') { $minQty = (int) $prm['min_value']; // ambil dari input user $maxQty = (int) $prm['max_value']; if ($maxQty <= $minQty) { $this->sys_error("Max Qty harus lebih besar dari Min Qty."); exit; } foreach ($rows as $r) { if ($r['SupplierPriceFlagQty'] == 'R') { $existMin = (int) $r['SupplierPriceMinQty']; $existMax = (int) $r['SupplierPriceMaxQty']; // Cek overlap (tumpang tindih) if ( ($minQty >= $existMin && $minQty <= $existMax) || // min masuk rentang lama ($maxQty >= $existMin && $maxQty <= $existMax) || // max masuk rentang lama ($minQty <= $existMin && $maxQty >= $existMax) // mencakup seluruh rentang lama ) { $this->sys_error("Rentang Qty " . $minQty . " - " . $maxQty . " tumpang tindih dengan rentang yang sudah ada (" . $existMin . "-" . $existMax . ")."); exit; } } } } $sql = "UPDATE supplier_price SET SupplierPriceM_ItemID = ?, SupplierPriceItemUnitID = ?, SupplierPricePrice = ?, SupplierPriceMinQty = ?, SupplierPriceMinInclusive = ?, SupplierPriceMaxQty = ?, SupplierPriceMaxInclusive = ?, SupplierPriceFlagQty = ?, SupplierPriceUserID = ?, SupplierPriceLastUpdated = NOW() WHERE SupplierPriceID = ?"; $qry = $this->db->query($sql, [ $item_id, $unit_id, $price, $supplierMinQty, $supplierMinInclusive, $supplierMaxQty, $supplierMaxInclusive, $type, $userId, $supplier_price_id ]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("supplier price insert error", $this->db); exit; } $this->db->trans_commit(); $newInsert = "SELECT sp.*, mi.M_ItemCode, mi.M_ItemDesc, iu.ItemUnitCode, iu.ItemUnitName FROM supplier_price sp JOIN m_item mi ON sp.SupplierPriceM_ItemID = mi.M_ItemID JOIN itemunit iu ON sp.SupplierPriceItemUnitID = iu.ItemUnitID WHERE sp.SupplierPriceID = {$supplier_price_id}"; $records = $this->db->query($newInsert)->result_array(); $this->sys_ok(array( "total" => 1, "records" => $records )); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function deleteprice() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db->trans_begin(); $prm = $this->sys_input; $userId = $this->sys_user["M_UserID"]; // Validate required parameters if (!isset($prm['supplier_price_id'])) { $this->sys_error("All fields are required"); exit; } $supplier_id = trim($prm['supplier_id']); $supplier_price_id = trim($prm['supplier_price_id']); $item_id = trim($prm['item_id']); $unit_id = trim($prm['unit_id']); $price = trim($prm['price']); $sql = "UPDATE supplier_price SET SupplierPriceIsActive = 'N', SupplierPriceUserID = ?, SupplierPriceLastUpdated = NOW() WHERE SupplierPriceID = ?"; $qry = $this->db->query($sql, [ $userId, $supplier_price_id ]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("supplier price delete error", $this->db); exit; } $this->db->trans_commit(); $this->sys_ok(array( "total" => 1, "qry" => $this->db->last_query() )); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } }