Files
BE_IBL/application/controllers/inventory/Reagen.php
2026-04-15 15:23:57 +07:00

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);
}
}
}
?>