add api file po asset, api receive item inventaris add insert into table stock_inventaris

This commit is contained in:
2026-07-08 17:15:55 +07:00
parent 5ecf65a820
commit 22719de06f
2 changed files with 191 additions and 130 deletions

View File

@@ -1,8 +1,10 @@
<?php <?php
class PurchaseOrderAset extends MY_Controller { class PurchaseOrderAset extends MY_Controller
{
var $db; var $db;
public function index() { public function index()
{
echo "Purchase Order Aset API"; echo "Purchase Order Aset API";
} }
@@ -12,69 +14,80 @@ class PurchaseOrderAset extends MY_Controller {
} }
## QUERY ## ## QUERY ##
public function getListSupplier() { public function getListSupplier()
{
try { try {
if (!$this->isLogin) { if (!$this->isLogin) {
$this->sys_error("invalid token"); throw new Exception('Invalid token');
exit;
} }
$sql = "SELECT $sql = "SELECT
SupplierID, SupplierID,
SupplierName SupplierName
FROM supplier FROM supplier
WHERE SupplierIsActive = 'Y'"; WHERE SupplierIsActive = 'Y'";
$que = $this->db->query($sql, []); $que = $this->db->query($sql, []);
if (!$que) { if (!$que) {
$this->sys_error_db("[Error] get data supplier"); throw new Exception('failed to query list supplier', 1);
exit;
} }
$data = $que->result_array(); $data = $que->result_array();
$this->sys_ok($data); $this->sys_ok($data);
} catch (Exception $exc) { } catch (Exception $exc) {
$this->sys_error($exc->getMessage()); $msg = '[Error] ' . $exc->getMessage();
$code = $exc->getCode();
if ($code == 0) {
$this->sys_error($msg);
} else {
$this->sys_error_db($msg);
}
exit;
} }
} }
public function getListCabang() { public function getListCabang()
{
try { try {
if (!$this->isLogin) { if (!$this->isLogin) {
$this->sys_error("invalid token"); throw new Exception('Invalid token');
exit;
} }
$user = $this->sys_user; $user = $this->sys_user;
$sql = "SELECT
$sql = "SELECT
M_BranchID, M_BranchID,
M_BranchCode, M_BranchCode,
M_BranchName M_BranchName
FROM m_branch FROM m_branch
WHERE M_BranchIsActive = 'Y' WHERE M_BranchIsActive = 'Y'
AND M_BranchS_RegionalID = ?"; AND M_BranchS_RegionalID = ?";
$que = $this->db->query($sql, [$user['S_RegionalID']]); $que = $this->db->query($sql, [$user['S_RegionalID']]);
if (!$que) { if (!$que) {
$this->sys_error_db("[Error] failed get list cabang"); throw new Exception('failed to query list cabang', 1);
exit;
} }
$data = $que->result_array(); $data = $que->result_array();
$this->sys_ok($data); $this->sys_ok($data);
} catch (Exception $exc) { } catch (Exception $exc) {
$this->sys_error($exc->getMessage()); $msg = '[Error] ' . $exc->getMessage();
$code = $exc->getCode();
if ($code == 0) {
$this->sys_error($msg);
} else {
$this->sys_error_db($msg);
}
exit;
} }
} }
public function searchRequestAset() { public function searchRequestAset()
{
try { try {
if (!$this->isLogin) { if (!$this->isLogin) {
$this->sys_error("invalid token"); throw new Exception('Invalid token');
exit;
} }
$para = $this->sys_input; $para = $this->sys_input;
$keyword = "%"; $keyword = "%";
if ($para['search'] != '') { if ($para['search'] != '') {
$keyword .= $para['search'] . "%"; $keyword .= $para['search'] . "%";
@@ -86,68 +99,71 @@ class PurchaseOrderAset extends MY_Controller {
$offset = ($para['currpage'] - 1) * $limit; $offset = ($para['currpage'] - 1) * $limit;
} }
$sql = "SELECT $sql = "SELECT
PurchaseRequestID, PurchaseRequestID,
PurchaseRequestNumber, PurchaseRequestNumber,
PurchaseRequestDetailID, PurchaseRequestDetailID,
PurchaseRequestFlagID, PurchaseRequestFlagID,
PurchaseRequestFlagM_BranchCode AS BranchCode, PurchaseRequestFlagM_BranchCode AS BranchCode,
PurchaseRequestItemCategoryID AS ItemCategoryID, PurchaseRequestItemCategoryID AS ItemCategoryID,
PurchaseRequestFlagQtyRest - PurchaseRequestFlagQtyProses AS UnprocessFlagQty, PurchaseRequestFlagQtyRest - PurchaseRequestFlagQtyProses AS UnprocessFlagQty,
PurchaseRequestDetailQty AS RequestQty, PurchaseRequestDetailQty AS RequestQty,
PurchaseRequestDetailQty AS OriginalQty, PurchaseRequestDetailQty AS OriginalQty,
M_BranchName, M_BranchName,
M_ItemID, M_ItemID,
M_ItemCode, M_ItemCode,
M_ItemDesc, M_ItemDesc,
ItemUnitID, ItemUnitID,
ItemUnitName, ItemUnitName,
SupplierPricePrice as SupplierPrice SupplierPricePrice as SupplierPrice
FROM purchase_request FROM purchase_request
JOIN purchase_request_detail ON PurchaseRequestDetailPurchaseRequestID = PurchaseRequestID JOIN purchase_request_detail ON PurchaseRequestDetailPurchaseRequestID = PurchaseRequestID
AND PurchaseRequestDetailIsActive = 'Y' AND PurchaseRequestDetailIsActive = 'Y'
AND PurchaseRequestM_BranchCode = ? AND PurchaseRequestM_BranchCode = ?
AND PurchaseRequestItemCategoryID = '3' -- id category item asset AND PurchaseRequestItemCategoryID = '3' -- id category item asset
AND PurchaseRequestNumber LIKE ? AND PurchaseRequestNumber LIKE ?
JOIN purchase_request_flag ON PurchaseRequestFlagPurchaseRequestDetailID = PurchaseRequestDetailID JOIN purchase_request_flag ON PurchaseRequestFlagPurchaseRequestDetailID = PurchaseRequestDetailID
AND PurchaseRequestFlagStatus = 'PO' AND PurchaseRequestFlagStatus = 'PO'
AND PurchaseRequestFlagIsActive = 'Y' AND PurchaseRequestFlagIsActive = 'Y'
JOIN m_item ON M_ItemID = PurchaseRequestDetailM_ItemID JOIN m_item ON M_ItemID = PurchaseRequestDetailM_ItemID
JOIN itemunit ON ItemUnitID = PurchaseRequestDetailItemUnitID JOIN itemunit ON ItemUnitID = PurchaseRequestDetailItemUnitID
JOIN supplier_price ON SupplierPriceSupplierID = ? JOIN supplier_price ON SupplierPriceSupplierID = ?
AND SupplierPriceM_ItemID = M_ItemID AND SupplierPriceM_ItemID = M_ItemID
AND SupplierPriceItemUnitID = ItemUnitID AND SupplierPriceItemUnitID = ItemUnitID
AND SupplierPriceIsActive = 'Y' AND SupplierPriceIsActive = 'Y'
JOIN m_branch ON M_BranchCode = PurchaseRequestFlagM_BranchCode JOIN m_branch ON M_BranchCode = PurchaseRequestFlagM_BranchCode
AND M_BranchIsActive = 'Y' AND M_BranchIsActive = 'Y'
WHERE NOT EXISTS ( WHERE NOT EXISTS (
SELECT 1 SELECT 1
FROM purchase_order_detail FROM purchase_order_detail
JOIN purchase_order ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID JOIN purchase_order ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID
AND PurchaseOrderStatus = 'Approved' AND PurchaseOrderStatus = 'Approved'
AND PurchaseOrderIsActive = 'Y' AND PurchaseOrderIsActive = 'Y'
AND PurchaseOrderDetailIsActive = 'Y' AND PurchaseOrderDetailIsActive = 'Y'
WHERE PurchaseOrderDetailPurchaseRequestDetailID = PurchaseRequestDetailID WHERE PurchaseOrderDetailPurchaseRequestDetailID = PurchaseRequestDetailID
)"; )";
$sql_data = $sql . " LIMIT ? OFFSET ? "; $sql_data = $sql . " LIMIT ? OFFSET ? ";
$que_data = $this->db->query($sql_data, [ $que_data = $this->db->query($sql_data, [
$para['branchcode'], $keyword, $para['supplierID'], $para['branchcode'],
$limit, $offset $keyword,
$para['supplierID'],
$limit,
$offset
]); ]);
if (!$que_data) { if (!$que_data) {
$this->sys_error_db("[Error] get daftar request data"); throw new Exception('failed to query data request order aset', 1);
exit;
} }
$data = $que_data->result_array(); $data = $que_data->result_array();
$sql_total = "SELECT COUNT(*) AS total FROM ($sql) AS x"; $sql_total = "SELECT COUNT(*) AS total FROM ($sql) AS x";
$que_total = $this->db->query($sql_total, [ $que_total = $this->db->query($sql_total, [
$para['branchcode'], $keyword, $para['supplierID'] $para['branchcode'],
$keyword,
$para['supplierID']
]); ]);
if (!$que_total) { if (!$que_total) {
$this->sys_error_db("[Error] get total request aset"); throw new Exception('failed to query total request order aset', 1);
exit;
} }
$total = $que_total->row_array()['total']; $total = $que_total->row_array()['total'];
@@ -158,29 +174,64 @@ class PurchaseOrderAset extends MY_Controller {
$this->sys_ok($out); $this->sys_ok($out);
} catch (Exception $exc) { } catch (Exception $exc) {
$this->sys_error($exc->getMessage()); $msg = '[Error] ' . $exc->getMessage();
$code = $exc->getCode();
if ($code == 0) {
$this->sys_error($msg);
} else {
$this->sys_error_db($msg);
}
exit;
} }
} }
public function getUserApproveLevel() { public function getUserApproveLevel()
{
try { try {
if (!$this->isLogin) { if (!$this->isLogin) {
$this->sys_error("invalid token"); throw new Exception('Invalid token');
exit;
} }
$user = $this->sys_user; $user = $this->sys_user;
$sql = "SELECT M_UserM_ApproveLevelID FROM m_user $sql = "SELECT M_UserM_ApproveLevelID
WHERE M_UserIsActive = 'Y' AND M_UserID = ? "; FROM m_user
WHERE M_UserIsActive = 'Y'
AND M_UserID = ? ";
$que = $this->db->query($sql, [$user['M_UserID']]); $que = $this->db->query($sql, [$user['M_UserID']]);
if (!$que) { if (!$que) {
$this->sys_error_db("[Error] failed get approval level user"); throw new Exception('failed to query approval level', 1);
exit;
} }
$data = $que->row_array(); $data = $que->row_array();
$this->sys_ok($data); $this->sys_ok($data);
} catch (Exception $exc) { } catch (Exception $exc) {
$this->sys_error($exc->getMessage()); $msg = '[Error] ' . $exc->getMessage();
$code = $exc->getCode();
if ($code == 0) {
$this->sys_error($msg);
} else {
$this->sys_error_db($msg);
}
exit;
} }
} }
}
## MUTATIONS ##
public function insertPurchaseOrderAsset()
{
try {
if (!$this->isLogin) {
throw new Exception('Invalid token');
}
} catch (Exception $e) {
$msg = '[Error] ' . $e->getMessage();
$code = $e->getCode();
if ($code == 0) {
$this->sys_error($msg);
} else {
$this->sys_error_db($msg);
}
exit;
}
}
}

View File

@@ -1668,9 +1668,9 @@ class ReceiveItemPoInventaris extends MY_Controller
foreach ($data_detail_ro as $key => $detail) { foreach ($data_detail_ro as $key => $detail) {
# UPDATE PO Summary # # UPDATE PO Summary #
$sql_posummary = "UPDATE purchase_order_summary SET $sql_posummary = "UPDATE purchase_order_summary SET
PurchaseOrderSummaryQtyReceived = PurchaseOrderSummaryQtyReceived + ? PurchaseOrderSummaryQtyReceived = PurchaseOrderSummaryQtyReceived + ?
WHERE PurchaseOrderSummaryIsActive = 'Y' WHERE PurchaseOrderSummaryIsActive = 'Y'
AND PurchaseOrderSummaryID = ?"; AND PurchaseOrderSummaryID = ?";
$que_posummary = $this->db->query($sql_posummary, [ $que_posummary = $this->db->query($sql_posummary, [
intval($detail['ReceiveOrderPoDetailQty']), intval($detail['ReceiveOrderPoDetailQty']),
$detail['ReceiveOrderPoDetailPurchaseOrderSummaryID'] $detail['ReceiveOrderPoDetailPurchaseOrderSummaryID']
@@ -1946,18 +1946,18 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
// insert stockid barcode barang // insert stockid barcode barang
$sql_update_barcode = "UPDATE t_barcode_barang SET // $sql_update_barcode = "UPDATE t_barcode_barang SET
T_BarcodeBarangStockID = ? // T_BarcodeBarangStockID = ?
WHERE T_BarcodeBarangReceiveOrderPoDetailID = ?"; // WHERE T_BarcodeBarangReceiveOrderPoDetailID = ?";
$qry_update_barcode = $this->db->query($sql_update_barcode, [ // $qry_update_barcode = $this->db->query($sql_update_barcode, [
$stock_ID, // $stock_ID,
$detail['ReceiveOrderPoDetailID'] // $detail['ReceiveOrderPoDetailID']
]); // ]);
if (!$qry_update_barcode) { // if (!$qry_update_barcode) {
$this->db->trans_rollback(); // $this->db->trans_rollback();
$this->sys_error_db("[Error] update barcode stockID", $this->db); // $this->sys_error_db("[Error] update barcode stockID", $this->db);
exit; // exit;
} // }
} else { } else {
$sql_insert_stock = "INSERT INTO stock ( $sql_insert_stock = "INSERT INTO stock (
StockWarehouseAlmariID, StockWarehouseAlmariID,
@@ -1990,18 +1990,18 @@ class ReceiveItemPoInventaris extends MY_Controller
$stock_qty_end = intval($batch['qty']); $stock_qty_end = intval($batch['qty']);
// insert stockid barcode barang // insert stockid barcode barang
$sql_update_barcode = "UPDATE t_barcode_barang SET // $sql_update_barcode = "UPDATE t_barcode_barang SET
T_BarcodeBarangStockID = ? // T_BarcodeBarangStockID = ?
WHERE T_BarcodeBarangReceiveOrderPoDetailID = ?"; // WHERE T_BarcodeBarangReceiveOrderPoDetailID = ?";
$qry_update_barcode = $this->db->query($sql_update_barcode, [ // $qry_update_barcode = $this->db->query($sql_update_barcode, [
$stockID, // $stockID,
$detail['ReceiveOrderPoDetailID'] // $detail['ReceiveOrderPoDetailID']
]); // ]);
if (!$qry_update_barcode) { // if (!$qry_update_barcode) {
$this->db->trans_rollback(); // $this->db->trans_rollback();
$this->sys_error_db("[Error] update barcode stockID", $this->db); // $this->sys_error_db("[Error] update barcode stockID", $this->db);
exit; // exit;
} // }
} }
// insert stock card // insert stock card
@@ -2095,14 +2095,14 @@ class ReceiveItemPoInventaris extends MY_Controller
// insert jurnal tx for GRNI // insert jurnal tx for GRNI
$total_grni = round($total_debet - ($total_discount_item + $total_discount_po), 2) + $ship_cost; $total_grni = round($total_debet - ($total_discount_item + $total_discount_po), 2) + $ship_cost;
$sql_grni = "INSERT INTO jurnal_tx ( $sql_grni = "INSERT INTO jurnal_tx (
jurnalTxJurnalID, jurnalTxJurnalID,
jurnalTxCoaID, jurnalTxCoaID,
jurnalTxDescription, jurnalTxDescription,
jurnalTxDebit, jurnalTxDebit,
jurnalTxCredit, jurnalTxCredit,
jurnalTxM_UserID jurnalTxM_UserID
) SELECT ?, coaID, coaDescription, 0, ?, ? ) SELECT ?, coaID, coaDescription, 0, ?, ?
FROM coa WHERE coaAccountNo = '2110100030' LIMIT 1"; FROM coa WHERE coaAccountNo = '2110100030' LIMIT 1";
$que_grni = $this->db->query($sql_grni, [$jurnal_ID, $total_grni, $user['M_UserID']]); $que_grni = $this->db->query($sql_grni, [$jurnal_ID, $total_grni, $user['M_UserID']]);
if (!$que_grni) { if (!$que_grni) {
$this->db->trans_rollback(); $this->db->trans_rollback();
@@ -2112,13 +2112,13 @@ class ReceiveItemPoInventaris extends MY_Controller
$grni_jurnal_id = $this->db->insert_id(); $grni_jurnal_id = $this->db->insert_id();
$sql_addon_grni = "INSERT INTO jurnal_addon ( $sql_addon_grni = "INSERT INTO jurnal_addon (
jurnalAddOnJurnalID, jurnalAddOnJurnalID,
jurnalAddOnJurnalTxID, jurnalAddOnJurnalTxID,
jurnalAddOnCode, jurnalAddOnCode,
jurnalAddOnValue, jurnalAddOnValue,
jurnalAddOnCreated, jurnalAddOnCreated,
jurnalAddOnCreatedUserID jurnalAddOnCreatedUserID
) VALUES (?,?,'RONUMB',?,NOW(),?)"; ) VALUES (?,?,'RONUMB',?,NOW(),?)";
$que_addon_grni = $this->db->query($sql_addon_grni, [ $que_addon_grni = $this->db->query($sql_addon_grni, [
$jurnal_ID, $jurnal_ID,
$grni_jurnal_id, $grni_jurnal_id,
@@ -2736,6 +2736,16 @@ class ReceiveItemPoInventaris extends MY_Controller
$barcodeID = $this->db->insert_id(); $barcodeID = $this->db->insert_id();
# insert stock inventaris #
$sql_stockinventaris = "INSERT INTO stock_inventaris (
StockInventoryStockID,
StockInventoryRuanganID,
StockInventoryBarcode,
StockInventoryCabangID,
StockInventoryCreatedUserID
) VALUES (?,?,?,?,?)";
$que_stockinventaris = $this->db->query($sql_stockinventaris, []);
# insert each inventory handover detail # # insert each inventory handover detail #
$sql_insert_handover_detail = "INSERT INTO asset_handover_detail( $sql_insert_handover_detail = "INSERT INTO asset_handover_detail(
AssetHandoverDetailAssetHandoverID, AssetHandoverDetailAssetHandoverID,