433 lines
16 KiB
PHP
433 lines
16 KiB
PHP
<?php
|
|
class Reagen extends MY_Controller
|
|
{
|
|
var $db_inventory;
|
|
var $load;
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_inventory = $this->load->database("inventory", true);
|
|
}
|
|
|
|
function index()
|
|
{
|
|
echo "Masterdata test reagen";
|
|
$cek = $this->db_inventory->query("select database() as current_db")->result();
|
|
print_r($cek);
|
|
}
|
|
|
|
function search()
|
|
{
|
|
try {
|
|
if (! $this->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 = "%%";
|
|
}
|
|
}
|
|
|
|
$sortBy = $prm["sortBy"];
|
|
$sortStatus = $prm["sortStatus"];
|
|
if($sortBy){
|
|
$q_sort = "ORDER BY ".$sortBy." ".$sortStatus;
|
|
}
|
|
|
|
$number_offset = 0;
|
|
$number_limit = 10;
|
|
if ($prm["current_page"] > 0) {
|
|
$number_offset = ($prm["current_page"] - 1) * $number_limit;
|
|
}
|
|
|
|
$sql_filter = "SELECT COUNT(*) as total
|
|
FROM item
|
|
JOIN itemgroup ON ItemItemGroupID = ItemGroupID
|
|
AND ItemGroupIsActive = 'Y'
|
|
WHERE ItemGroupIsReagen = 'Y' AND ItemIsActive = 'Y' GROUP BY ItemID AND
|
|
(ItemSKU like ? OR ItemName like ?)";
|
|
|
|
$qry_filter = $this->db_inventory->query($sql_filter, array($search, $search));
|
|
// $last_query = $this->db_inventory->last_query();
|
|
// echo ($last_query);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($qry_filter) {
|
|
$tot_count = $qry_filter->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count/$number_limit);
|
|
} else {
|
|
$this->db_inventory->trans_rollback();
|
|
$this->sys_error_db("reagen count error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT ItemID as id,
|
|
ItemSKU,
|
|
ItemName,
|
|
IFNULL(ReagenUseQty, 0) as ReagenUseQty,
|
|
IFNULL(ReagenUseItemUnitID, 0) as ReagenUseItemUnitID
|
|
FROM item
|
|
JOIN itemgroup ON ItemItemGroupID = ItemGroupID
|
|
AND ItemGroupIsActive = 'Y'
|
|
LEFT JOIN reagenuse ON ItemID = ReagenUseItemID
|
|
AND ReagenUseIsActive = 'Y'
|
|
WHERE ItemGroupIsReagen = 'Y' AND ItemIsActive = 'Y' AND
|
|
(ItemSKU like ? OR ItemName like ?) GROUP BY ItemID
|
|
$q_sort LIMIT ? OFFSET ?";
|
|
$qry = $this->db_inventory->query($sql, array($search, $search, $number_limit, $number_offset));
|
|
// $last_qry = $this->db_inventory->last_query();
|
|
// print_r($last_qry);
|
|
if ($sql) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("reagen select error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total" => $tot_page,
|
|
"total_filter" => $tot_count,
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function get_itemunit()
|
|
{
|
|
try {
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$id = "id";
|
|
if (isset($prm['id'])) {
|
|
$id = trim($prm["id"]);
|
|
}
|
|
$sql = "SELECT ItemUnitMapID as id,
|
|
ItemUnitMapItemID as itemid,
|
|
ItemUnitMapItemUnitID as itemunitid,
|
|
ItemUnitName,
|
|
IFNULL(ReagenUseQty, 0) as ReagenUseQty
|
|
FROM itemunitmap
|
|
JOIN item ON ItemUnitMapItemID = ItemID
|
|
AND ItemIsActive = 'Y'
|
|
JOIN itemunit ON ItemUnitMapItemUnitID = ItemUnitID
|
|
AND ItemUnitIsActive = 'Y'
|
|
LEFT JOIN reagenuse ON ItemID = ReagenUseItemID
|
|
AND ReagenUseIsActive = 'Y'
|
|
WHERE ItemUnitMapIsActive = 'Y'AND ItemID = ?";
|
|
$qry = $this->db_inventory->query($sql, array($id));
|
|
$last_qry = $this->db_inventory->last_query();
|
|
|
|
if (!$qry) {
|
|
$this->db_inventory->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db_inventory->error()["message"],
|
|
"sql" => $last_qry
|
|
);
|
|
$this->sys_error_db($error, $this->db_inventory);
|
|
exit;
|
|
}
|
|
$rows = $qry->result_array();
|
|
$result = array(
|
|
"records" => $rows,
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function get_nattest()
|
|
{
|
|
try {
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$sql = "SELECT Nat_TestID as id,
|
|
Nat_TestCode,
|
|
Nat_TestName
|
|
FROM one_aditya.nat_test
|
|
WHERE Nat_TestIsResult = 'Y' AND Nat_TestIsActive = 'Y'";
|
|
$qry = $this->db_inventory->query($sql);
|
|
$last_qry = $this->db_inventory->last_query();
|
|
if (!$qry) {
|
|
$this->db_inventory->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db_inventory->error()["message"],
|
|
"sql" => $last_qry
|
|
);
|
|
$this->sys_error_db($error, $this->db_inventory);
|
|
exit;
|
|
}
|
|
$rows = $qry->result_array();
|
|
$result = array(
|
|
"records" => $rows,
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function addReagendetail()
|
|
{
|
|
try {
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$this->db_inventory->trans_begin();
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user['M_UserID'];
|
|
$itemid = "";
|
|
if (isset($prm['itemid'])) {
|
|
$itemid = trim($prm["itemid"]);
|
|
}
|
|
$itemunitid = "";
|
|
if (isset($prm['itemunitid'])) {
|
|
$itemunitid = trim($prm["itemunitid"]);
|
|
}
|
|
$nattestid = "";
|
|
if (isset($prm['nattestid'])) {
|
|
$nattestid = trim($prm["nattestid"]);
|
|
}
|
|
$qty = "";
|
|
if (isset($prm['qty'])) {
|
|
$qty = trim($prm["qty"]);
|
|
}
|
|
$qty_test = "";
|
|
if (isset($prm['qty_test'])) {
|
|
$qty_test = trim($prm["qty_test"]);
|
|
}
|
|
$grouptestid = 0;
|
|
if (isset($prm['grouptestid'])) {
|
|
$grouptestid = trim($prm["grouptestid"]);
|
|
}
|
|
|
|
$sql_select = "SELECT ReagenUseID,
|
|
ReagenUseItemID,
|
|
ReagenUseItemUnitID,
|
|
ReagenUseQty
|
|
FROM reagenuse
|
|
WHERE ReagenUseItemID = ? AND ReagenUseItemUnitID = ?";
|
|
$qry_select = $this->db_inventory->query($sql_select, array($itemid, $itemunitid));
|
|
if ($qry_select) {
|
|
$rows = $qry_select->result_array();
|
|
} else {
|
|
$this->sys_error_db("select reagenuse error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
// print_r($rows);
|
|
if (count($rows) > 0) {
|
|
// print_r($rows);
|
|
$reagenuseid = $rows[0]["ReagenUseID"];
|
|
$sql_update = "UPDATE reagenuse SET
|
|
ReagenUseQty = ?,
|
|
ReagenUseIsActive = 'Y',
|
|
ReagenUseUserID = ?,
|
|
ReagenUseLastUpdated = NOW()
|
|
WHERE ReagenUseID = ?";
|
|
$qry_update = $this->db_inventory->query($sql_update, array(
|
|
$qty,
|
|
$userid,
|
|
$reagenuseid
|
|
));
|
|
if (!$qry_update) {
|
|
$this->sys_error_db("update reagen error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
} else {
|
|
$sql_reagen = "INSERT INTO reagenuse(
|
|
ReagenUseItemID,
|
|
ReagenUseItemUnitID,
|
|
ReagenUseQty,
|
|
ReagenUseIsActive,
|
|
ReagenUseUserID,
|
|
ReagenUseCreated,
|
|
ReagenUseLastUpdated) VALUES(?,?,?,'Y',?,NOW(),NOW())";
|
|
$qry_reagen = $this->db_inventory->query($sql_reagen, array(
|
|
$itemid,
|
|
$itemunitid,
|
|
$qty,
|
|
$userid
|
|
));
|
|
if ($qry_reagen) {
|
|
$reagenuseid = $this->db_inventory->insert_id();
|
|
} else {
|
|
$this->db_inventory->trans_rollback();
|
|
$this->sys_error_db("insert reagenuse error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$sql_cari = "SELECT ReagenUseDetailID,
|
|
ReagenUseDetailReagenUseID
|
|
FROM reagenusedetail
|
|
WHERE ReagenUseDetailReagenUseID = ? AND ReagenUseDetailNat_testID = ? ";
|
|
$qry_cari = $this->db_inventory->query($sql_cari, array($reagenuseid, $nattestid));
|
|
if ($qry_cari) {
|
|
$row = $qry_cari->result_array();
|
|
} else {
|
|
$this->sys_error_db("select reagenusedetail error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
|
|
if (count($row) > 0) {
|
|
// print_r($row);
|
|
$reagenusedetailid = $row[0]["ReagenUseDetailID"];
|
|
$sql_edit = "UPDATE reagenusedetail SET
|
|
ReagenUseDetailNat_testID = ?,
|
|
ReagenUseDetailGroupTestID = ?,
|
|
ReagenUseDetailAmount = ?,
|
|
ReagenUseDetailIsActive = 'Y',
|
|
ReagenUseDetailLastUpdated = NOW(),
|
|
ReagenUseDetailUserID = ?
|
|
WHERE ReagenUseDetailID = ?";
|
|
$qry_edit = $this->db_inventory->query($sql_edit, array(
|
|
$nattestid,
|
|
$grouptestid,
|
|
$qty_test,
|
|
$userid,
|
|
$reagenusedetailid
|
|
));
|
|
if (!$qry_edit) {
|
|
$this->sys_error_db("update reagenusedetail error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
} else {
|
|
$sql_detail = "INSERT INTO reagenusedetail(
|
|
ReagenUseDetailReagenUseID,
|
|
ReagenUseDetailNat_testID,
|
|
ReagenUseDetailGroupTestID,
|
|
ReagenUseDetailAmount,
|
|
ReagenUseDetailIsActive,
|
|
ReagenUseDetailCreated,
|
|
ReagenUseDetailLastUpdated,
|
|
ReagenUseDetailUserID) VALUES(?, ?, ?, ?, 'Y', NOW(), NOW(), ?)";
|
|
$qry_reagen = $this->db_inventory->query($sql_detail, array(
|
|
$reagenuseid,
|
|
$nattestid,
|
|
$grouptestid,
|
|
$qty_test,
|
|
$userid
|
|
));
|
|
if(!$qry_reagen) {
|
|
$this->db_inventory->trans_rollback();
|
|
$this->sys_error_db("insert reagenusedetail error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$this->db_inventory->trans_commit();
|
|
$result = array(
|
|
"affected_rows" => $this->db_inventory->affected_rows(),
|
|
"inserted_id" => $this->db_inventory->insert_id()
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function searchtest() {
|
|
try {
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
|
|
$id_item = "id_item";
|
|
if (isset($prm['id_item'])) {
|
|
$id_item = trim($prm["id_item"]);
|
|
}
|
|
|
|
$number_offset = 0;
|
|
$number_limit = 10;
|
|
if ($prm["current_page"] > 0) {
|
|
$number_offset = ($prm["current_page"] - 1) * $number_limit;
|
|
}
|
|
|
|
$sql_filter = "SELECT COUNT(*) as total
|
|
FROM reagenusedetail
|
|
JOIN reagenuse ON ReagenUseDetailReagenUseID = ReagenUseID
|
|
AND ReagenUseIsActive = 'Y'
|
|
JOIN item ON ReagenUseItemID = ItemID
|
|
AND ItemIsActive = 'Y'
|
|
JOIN itemunit ON ReagenUseItemUnitID = ItemUnitID
|
|
AND ItemUnitIsActive = 'Y'
|
|
JOIN one_aditya.nat_test ON ReagenUseDetailNat_testID = Nat_TestID
|
|
AND Nat_TestIsActive = 'Y'
|
|
WHERE ReagenUseDetailIsActive = 'Y' AND ItemID = ?";
|
|
$qry_filter = $this->db_inventory->query($sql_filter, array($id_item));
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($qry_filter) {
|
|
$tot_count = $qry_filter->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count/$number_limit);
|
|
} else {
|
|
$this->sys_error_db("reagenusedetail count error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT ReagenUseDetailID as id,
|
|
ReagenUseDetailReagenUseID as reagen_id,
|
|
ReagenUseQty as qty,
|
|
ItemName as item_name,
|
|
ItemUnitName as itemunit_name,
|
|
ReagenUseDetailNat_testID as nattest_id,
|
|
Nat_TestName as nattest_name,
|
|
ReagenUseDetailAmount as amount
|
|
FROM reagenusedetail
|
|
JOIN reagenuse ON ReagenUseDetailReagenUseID = ReagenUseID
|
|
AND ReagenUseIsActive = 'Y'
|
|
JOIN item ON ReagenUseItemID = ItemID
|
|
AND ItemIsActive = 'Y'
|
|
JOIN itemunit ON ReagenUseItemUnitID = ItemUnitID
|
|
AND ItemUnitIsActive = 'Y'
|
|
JOIN one_aditya.nat_test ON ReagenUseDetailNat_testID = Nat_TestID
|
|
AND Nat_TestIsActive = 'Y'
|
|
WHERE ReagenUseDetailIsActive = 'Y' AND ItemID = ?
|
|
LIMIT ? OFFSET ?";
|
|
$qry = $this->db_inventory->query($sql, array($id_item, $number_limit, $number_offset));
|
|
if($qry){
|
|
$rows = $qry->result_array();
|
|
}else{
|
|
$this->sys_error_db("reagenusedetail select error", $this->db_inventory);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total_page" => $tot_page,
|
|
"total_filter" => $tot_count,
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|
|
?>
|