add progress

This commit is contained in:
2026-06-03 17:10:49 +07:00
parent dc4e16329f
commit 86d147945b
2 changed files with 322 additions and 333 deletions

View File

@@ -39,14 +39,14 @@ class PurchaseRequestNonPersediaan extends MY_Controller
$params[] = $status; $params[] = $status;
$params[] = '%' . $search . '%'; $params[] = '%' . $search . '%';
$sql = "SELECT M_UserLocationS_RegionalID as S_RegionalID, $sql = "SELECT
M_UserLocationS_RegionalID as S_RegionalID,
IFNULL(M_BranchCode, '') as M_BranchCode, IFNULL(M_BranchCode, '') as M_BranchCode,
IFNULL(M_BranchName, '') as M_BranchName IFNULL(M_BranchName, '') as M_BranchName
FROM m_userlocation FROM m_userlocation
LEFT JOIN m_branch ON M_BranchID = M_UserLocationM_BranchID LEFT JOIN m_branch ON M_BranchID = M_UserLocationM_BranchID
WHERE WHERE M_UserLocationIsActive = 'Y'
M_UserLocationIsActive = 'Y' AND AND M_UserLocationM_UserID = ?";
M_UserLocationM_UserID = ?";
$exec = $this->db->query($sql, [$userId]); $exec = $this->db->query($sql, [$userId]);
if (!$exec) { if (!$exec) {
$this->sys_error_db("select user location", $this->db); $this->sys_error_db("select user location", $this->db);
@@ -74,12 +74,11 @@ class PurchaseRequestNonPersediaan extends MY_Controller
$sql = "SELECT COUNT(*) as total $sql = "SELECT COUNT(*) as total
FROM purchase_request FROM purchase_request
JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID
WHERE WHERE PurchaseRequestIsActive = 'Y'
PurchaseRequestIsActive = 'Y' AND AND PurchaseRequestItemCategoryID <> '1'
PurchaseRequestItemCategoryID <> '1' AND AND ( PurchaseRequestDate BETWEEN ? AND ? )
( PurchaseRequestDate BETWEEN ? AND ? ) AND AND ( PurchaseRequestStatus = ? OR ? = '' )
( PurchaseRequestStatus = ? OR ? = '' ) AND AND ( PurchaseRequestNumber LIKE ?)
( PurchaseRequestNumber LIKE ?)
$filterBranch $filterBranch
$filterRegional"; $filterRegional";
@@ -96,7 +95,8 @@ class PurchaseRequestNonPersediaan extends MY_Controller
$params[] = $offset; $params[] = $offset;
$params[] = $pageSize; $params[] = $pageSize;
$sql = "SELECT DISTINCT PurchaseRequestID as prId, $sql = "SELECT DISTINCT
PurchaseRequestID as prId,
PurchaseRequestNumber as prNumber, PurchaseRequestNumber as prNumber,
PurchaseRequestDate as prDate, PurchaseRequestDate as prDate,
PurchaseRequestStatus as prStatus, PurchaseRequestStatus as prStatus,
@@ -125,15 +125,13 @@ class PurchaseRequestNonPersediaan extends MY_Controller
JOIN m_user requestedBy ON requestedBy.M_UserID = PurchaseRequestRequestedBy JOIN m_user requestedBy ON requestedBy.M_UserID = PurchaseRequestRequestedBy
LEFT JOIN m_user approvedBy ON approvedBy.M_UserID = PurchaseRequestApprovedBy LEFT JOIN m_user approvedBy ON approvedBy.M_UserID = PurchaseRequestApprovedBy
LEFT JOIN m_branch ON M_BranchCode = PurchaseRequestM_BranchCode LEFT JOIN m_branch ON M_BranchCode = PurchaseRequestM_BranchCode
LEFT JOIN asset_handover ah LEFT JOIN asset_handover ah ON ah.AssetHandoverPurchaseRequestID = PurchaseRequestID
ON ah.AssetHandoverPurchaseRequestID = PurchaseRequestID
AND ah.AssetHandoverIsActive = 'Y' AND ah.AssetHandoverIsActive = 'Y'
WHERE WHERE PurchaseRequestIsActive = 'Y'
PurchaseRequestIsActive = 'Y' AND AND PurchaseRequestItemCategoryID <> '1'
PurchaseRequestItemCategoryID <> '1' AND AND ( PurchaseRequestDate BETWEEN ? AND ? )
( PurchaseRequestDate BETWEEN ? AND ? ) AND AND ( PurchaseRequestStatus = ? OR ? = '' )
( PurchaseRequestStatus = ? OR ? = '' ) AND AND ( PurchaseRequestNumber LIKE ? )
( PurchaseRequestNumber LIKE ? )
$filterBranch $filterBranch
$filterRegional $filterRegional
ORDER BY PurchaseRequestID DESC ORDER BY PurchaseRequestID DESC
@@ -144,16 +142,14 @@ class PurchaseRequestNonPersediaan extends MY_Controller
$this->sys_error_db("select purchase request", $this->db); $this->sys_error_db("select purchase request", $this->db);
exit; exit;
} }
//echo $this->db->last_query();
//exit;
$rows = $exec->result_array(); $rows = $exec->result_array();
$query = $this->db->last_query();
$result = array( $result = array(
"total" => $totalPage, "total" => $totalPage,
"totalFilter" => $totalCount, "totalFilter" => $totalCount,
"records" => $rows "records" => $rows,
"db" => $query
); );
$this->sys_ok($result); $this->sys_ok($result);

View File

@@ -85,6 +85,63 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
} }
function getInventarisBelumSerah()
{
try {
if (!$this->isLogin) {
throw new Exception('invalid token');
}
$para = $this->sys_input;
$sql = "SELECT
rod.ReceiveOrderPoDetailID,
rod.ReceiveOrderPoItemID,
rod.ReceiveOrderPoItemUnitID,
pod.PurchaseOrderDetailPurchaseRequestID AS PurchaseRequestID,
mi.M_ItemDesc,
rod.ReceiveOrderPoDetailQty AS originalQty,
COALESCE(ahd_count.InsertedQty, 0) AS serahQty,
rod.ReceiveOrderPoDetailQty - COALESCE(ahd_count.InsertedQty, 0) AS sisaQty,
CASE
WHEN COALESCE(ahd_count.InsertedQty, 0) = rod.ReceiveOrderPoDetailQty THEN 'Y'
ELSE 'N'
END AS isHandoverDone
FROM receive_order_po_detail rod
JOIN purchase_order_detail pod ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID
JOIN m_item mi ON mi.M_ItemID = rod.ReceiveOrderPoItemID
LEFT JOIN (
SELECT
AssetHandoverDetailReceiveOrderPoDetailID,
COUNT(*) AS InsertedQty
FROM asset_handover_detail ahd
JOIN asset_handover ah ON ahd.AssetHandoverDetailAssetHandoverID = ah.AssetHandoverID
AND ah.AssetHandoverIsActive = 'Y'
WHERE ahd.AssetHandoverDetailIsActive = 'Y'
AND ah.AssetHandoverReceiveOrderPoID = ?
GROUP BY AssetHandoverDetailReceiveOrderPoDetailID
) ahd_count ON ahd_count.AssetHandoverDetailReceiveOrderPoDetailID = rod.ReceiveOrderPoDetailID
WHERE rod.ReceiveOrderPoDetailReceiveOrderPoID = ?
AND rod.ReceiveOrderPoDetailIsActive = 'Y'";
$que = $this->db->query($sql, [$para['ROID'], $para['ROID']]);
if (!$que) {
throw new Exception('listing inventory belum yg diserah terima', 1);
}
$data = $que->result_array();
$this->sys_ok($data);
} catch (Exception $e) {
$message = $e->getMessage();
$code = $e->getCode();
if ($code == 1) {
$this->sys_error_db("[Error] " . $message);
} else {
$this->sys_error("[Error] " . $message);
}
exit;
}
}
function getPurchaseOrder() function getPurchaseOrder()
{ {
try { try {
@@ -241,15 +298,13 @@ class ReceiveItemPoInventaris extends MY_Controller
PoItemReceiveQty as originalQty, PoItemReceiveQty as originalQty,
PoItemReceiveQtyReceived as receivedQty, PoItemReceiveQtyReceived as receivedQty,
0 as qty, 0 as qty,
PoItemReceiveQty - PurchaseOrderSummaryQtyReceived AS qtyRest, PoItemReceiveQty - PoItemReceiveQtyReceived AS qtyRest,
PoItemReceivePrice, PoItemReceivePrice,
'N' as alreadySave 'N' as alreadySave
FROM po_item_receive FROM po_item_receive
JOIN purchase_order ON PoItemReceivePurchaseOrderID = PurchaseOrderID JOIN purchase_order ON PoItemReceivePurchaseOrderID = PurchaseOrderID
AND PurchaseOrderIsActive = 'Y' AND PurchaseOrderIsActive = 'Y'
AND PoItemReceiveIsActive = 'Y' AND PoItemReceiveIsActive = 'Y'
-- AND (PoItemReceiveQty - PoItemReceiveQtyReceived) > 0
JOIN purchase_order_summary ON PurchaseOrderSummaryID = PoItemReceivePurchaseOrderSummaryID
JOIN warehouse ON PoItemReceiveWarehouseID = WarehouseID JOIN warehouse ON PoItemReceiveWarehouseID = WarehouseID
AND WarehouseIsActive = 'Y' AND WarehouseIsActive = 'Y'
JOIN m_item ON PoItemReceiveItemID = M_ItemID JOIN m_item ON PoItemReceiveItemID = M_ItemID
@@ -487,9 +542,6 @@ class ReceiveItemPoInventaris extends MY_Controller
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName) THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName)
ELSE '' ELSE ''
END WarehouseName, END WarehouseName,
M_RuanganID,
M_RuanganName,
M_RuanganCode,
ReceiveOrderPoConfirmed, ReceiveOrderPoConfirmed,
DATE_FORMAT(ReceiveOrderPoConfirmedDate, '%d-%m-%Y %H:%i') AS ReceiveOrderPoConfirmedDate, DATE_FORMAT(ReceiveOrderPoConfirmedDate, '%d-%m-%Y %H:%i') AS ReceiveOrderPoConfirmedDate,
M_UserUsername AS ReceiveOrderPoConfirmedUserName M_UserUsername AS ReceiveOrderPoConfirmedUserName
@@ -501,7 +553,6 @@ class ReceiveItemPoInventaris extends MY_Controller
LEFT JOIN m_branch ON WarehouseM_BranchID = M_BranchID LEFT JOIN m_branch ON WarehouseM_BranchID = M_BranchID
AND M_BranchIsActive = 'Y' AND M_BranchIsActive = 'Y'
LEFT JOIN m_user ON ReceiveOrderPoConfirmedUserID = M_UserID LEFT JOIN m_user ON ReceiveOrderPoConfirmedUserID = M_UserID
LEFT JOIN m_ruangan ON M_RuanganM_BranchID = M_BranchID
WHERE ReceiveOrderPoIsActive = 'Y' WHERE ReceiveOrderPoIsActive = 'Y'
AND (ReceiveOrderPoNumber LIKE ? OR ReceiveOrderPoDONumber LIKE ?) AND (ReceiveOrderPoNumber LIKE ? OR ReceiveOrderPoDONumber LIKE ?)
AND ReceiveOrderPoIDate BETWEEN DATE(?) AND DATE(?) AND ReceiveOrderPoIDate BETWEEN DATE(?) AND DATE(?)
@@ -511,7 +562,7 @@ class ReceiveItemPoInventaris extends MY_Controller
SELECT DISTINCT ReceiveOrderPoDetailReceiveOrderPoID SELECT DISTINCT ReceiveOrderPoDetailReceiveOrderPoID
FROM receive_order_po_detail FROM receive_order_po_detail
JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID
WHERE PurchaseOrderItemCategoryID IN (1, 4) WHERE PurchaseOrderItemCategoryID IN (1,3,4)
AND ReceiveOrderPoDetailIsActive = 'Y' AND ReceiveOrderPoDetailIsActive = 'Y'
) )
ORDER BY ReceiveOrderPoID DESC"; ORDER BY ReceiveOrderPoID DESC";
@@ -542,7 +593,8 @@ class ReceiveItemPoInventaris extends MY_Controller
$records = $quedata->result_array(); $records = $quedata->result_array();
foreach ($records as $key => $value) { foreach ($records as $key => $value) {
$sql = "SELECT ReceiveOrderPoDocumentID, $sql = "SELECT
ReceiveOrderPoDocumentID,
ReceiveOrderPoDocumentDate, ReceiveOrderPoDocumentDate,
ReceiveOrderPoDocumentFile ReceiveOrderPoDocumentFile
FROM receive_order_po_document FROM receive_order_po_document
@@ -635,20 +687,15 @@ class ReceiveItemPoInventaris extends MY_Controller
u.M_UserID, u.M_UserID,
u.M_UserUsername u.M_UserUsername
FROM receive_order_po ro FROM receive_order_po ro
JOIN receive_order_po_detail rod JOIN receive_order_po_detail rod ON rod.ReceiveOrderPoDetailReceiveOrderPoID = ro.ReceiveOrderPoID
ON rod.ReceiveOrderPoDetailReceiveOrderPoID = ro.ReceiveOrderPoID
AND rod.ReceiveOrderPoDetailIsActive = 'Y' AND rod.ReceiveOrderPoDetailIsActive = 'Y'
JOIN purchase_order_detail pod JOIN purchase_order_detail pod ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID
ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID
AND pod.PurchaseOrderDetailIsActive = 'Y' AND pod.PurchaseOrderDetailIsActive = 'Y'
JOIN purchase_request pr JOIN purchase_request pr ON pr.PurchaseRequestID = pod.PurchaseOrderDetailPurchaseRequestID
ON pr.PurchaseRequestID = pod.PurchaseOrderDetailPurchaseRequestID
AND pr.PurchaseRequestIsActive = 'Y' AND pr.PurchaseRequestIsActive = 'Y'
JOIN m_user u JOIN m_user u ON u.M_UserID = pr.PurchaseRequestRequestedBy
ON u.M_UserID = pr.PurchaseRequestRequestedBy
AND u.M_UserIsActive = 'Y' AND u.M_UserIsActive = 'Y'
WHERE WHERE ro.ReceiveOrderPoID = ?
ro.ReceiveOrderPoID = ?
AND ro.ReceiveOrderPoIsActive = 'Y'"; AND ro.ReceiveOrderPoIsActive = 'Y'";
$que = $this->db->query($sql, [$param['ROID']]); $que = $this->db->query($sql, [$param['ROID']]);
} else { } else {
@@ -928,43 +975,6 @@ class ReceiveItemPoInventaris extends MY_Controller
$RODetailID = $this->db->insert_id(); $RODetailID = $this->db->insert_id();
// if (intval($obj['qty']) > 0) {
// $qty = intval($obj['qty']);
// for ($i = 0; $i < $qty; $i++) {
// # generate nomor barcode #
// $noBarcode = $this->generateNoBarcode($user, $param['lokasiID'], 'BNP', $obj['M_ItemID']);
// # INSERT INTO t_barcode_barang #
// $sqlInsertBarcode = "INSERT INTO t_barcode_barang(
// T_BarcodeBarangReceiveOrderPoID,
// T_BarcodeBarangReceiveOrderPoDetailID,
// T_BarcodeBarangRefType,
// T_BarcodeBarangM_ItemID,
// T_BarcodeBarangItemUnitID,
// T_BarcodeBarangNumber,
// T_BarcodeBarangM_RuanganID,
// T_BarcodeBarangM_BranchID,
// T_BarcodeBarangIsActive,
// T_BarcodeBarangUserID,
// T_BarcodeBarangCreated) VALUES(?,?,'PO',?,?,?,?,?,'Y',?,NOW())";
// $qryInsertBarcode = $this->db->query($sqlInsertBarcode, array(
// $roID,
// $RODetailID,
// $obj['M_ItemID'],
// $obj['ItemUnitID'],
// $noBarcode,
// $param['lokasiID'],
// $user['M_BranchID'],
// $user['M_UserID']
// ));
// if (!$qryInsertBarcode) {
// $this->db->trans_rollback();
// $this->sys_error_db("[Error] insert data barcode item");
// exit;
// }
// }
// }
# INSERT INTO receive_order_po_inspeksi # # INSERT INTO receive_order_po_inspeksi #
$inspeksi = $obj['inspeksi_item']; $inspeksi = $obj['inspeksi_item'];
$sqlInspeksi = "INSERT INTO receive_order_po_inspeksi ( $sqlInspeksi = "INSERT INTO receive_order_po_inspeksi (
@@ -1227,51 +1237,6 @@ class ReceiveItemPoInventaris extends MY_Controller
exit; exit;
} }
if (intval($obj['qty']) > 0) {
$qty = intval($obj['qty']);
for ($i = 0; $i < $qty; $i++) {
# INSERT INTO t_barcode_barang #
$barcode_item = $obj['barcode_item'];
foreach ($barcode_item as $key => $barcode) {
# generate nomor barcode #
$noBarcode = $this->generateNoBarcode($user, $param['lokasiID'], 'BNP', $obj['M_ItemID']);
$sqlInsertBarcode = "UPDATE t_barcode_barang SET
T_BarcodeBarangReceiveOrderPoID = ?,
T_BarcodeBarangReceiveOrderPoDetailID = ?,
T_BarcodeBarangRefType = 'PO',
T_BarcodeBarangM_ItemID = ?,
T_BarcodeBarangItemUnitID = ?,
T_BarcodeBarangNumber = ?,
T_BarcodeBarangM_RuanganID = ?,
T_BarcodeBarangM_BranchID = ?,
T_BarcodeBarangIsActive = 'Y',
T_BarcodeBarangUserID = ?,
T_BarcodeBarangLastUpdated = NOW()
WHERE T_BarcodeBarangID = ?";
$qryInsertBarcode = $this->db->query($sqlInsertBarcode, array(
$param['ReceiveOrderID'],
$obj['ReceiveOrderPoDetailID'],
$obj['M_ItemID'],
$obj['ItemUnitID'],
$noBarcode,
$param['lokasiID'],
$user['M_BranchID'],
$user['M_UserID'],
$barcode['T_BarcodeBarangID']
));
if (!$qryInsertBarcode) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] update data barcode item", $this->db);
exit;
}
}
}
}
# update form inspeksi item # # update form inspeksi item #
$inspeksi = $obj['inspeksi_item']; $inspeksi = $obj['inspeksi_item'];
$sql_inspeksi = "UPDATE receive_order_po_inspeksi SET $sql_inspeksi = "UPDATE receive_order_po_inspeksi SET
@@ -1408,43 +1373,6 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
$ro_detail_ID = $this->db->insert_id(); $ro_detail_ID = $this->db->insert_id();
if (intval($obj['qty']) > 0) {
$qty = intval($obj['qty']);
for ($i = 0; $i < $qty; $i++) {
# generate nomor barcode #
$noBarcode = $this->generateNoBarcode($user, $param['lokasiID'], 'BNP', $obj['M_ItemID']);
# INSERT INTO t_barcode_barang #
$sqlInsertBarcode = "INSERT INTO t_barcode_barang(
T_BarcodeBarangReceiveOrderPoID,
T_BarcodeBarangReceiveOrderPoDetailID,
T_BarcodeBarangRefType,
T_BarcodeBarangM_ItemID,
T_BarcodeBarangItemUnitID,
T_BarcodeBarangNumber,
T_BarcodeBarangM_RuanganID,
T_BarcodeBarangM_BranchID,
T_BarcodeBarangIsActive,
T_BarcodeBarangUserID,
T_BarcodeBarangCreated) VALUES(?,?,'PO',?,?,?,?,?,'Y',?,NOW())";
$qryInsertBarcode = $this->db->query($sqlInsertBarcode, array(
$param['ReceiveOrderID'],
$ro_detail_ID,
$obj['M_ItemID'],
$obj['ItemUnitID'],
$noBarcode,
$param['lokasiID'],
$user['M_BranchID'],
$user['M_UserID']
));
if (!$qryInsertBarcode) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] insert data barcode item");
exit;
}
}
}
# INSERT form inspeksi item # # INSERT form inspeksi item #
$inspekitem = $obj['inspeksi_item']; $inspekitem = $obj['inspeksi_item'];
$sql_insert_inspeksi = " INSERT INTO receive_order_po_inspeksi ( $sql_insert_inspeksi = " INSERT INTO receive_order_po_inspeksi (
@@ -2736,8 +2664,7 @@ class ReceiveItemPoInventaris extends MY_Controller
$sql_get_prid = "SELECT DISTINCT $sql_get_prid = "SELECT DISTINCT
pod.PurchaseOrderDetailPurchaseRequestID AS PurchaseRequestID pod.PurchaseOrderDetailPurchaseRequestID AS PurchaseRequestID
FROM receive_order_po_detail ropd FROM receive_order_po_detail ropd
JOIN purchase_order_detail pod JOIN purchase_order_detail pod ON pod.PurchaseOrderDetailID = ropd.ReceiveOrderPoDetailPurchaseOrderDetailID
ON pod.PurchaseOrderDetailID = ropd.ReceiveOrderPoDetailPurchaseOrderDetailID
WHERE ropd.ReceiveOrderPoDetailReceiveOrderPoID = ? WHERE ropd.ReceiveOrderPoDetailReceiveOrderPoID = ?
AND pod.PurchaseOrderDetailPurchaseRequestID IS NOT NULL"; AND pod.PurchaseOrderDetailPurchaseRequestID IS NOT NULL";
$que_get_prid = $this->db->query($sql_get_prid, [$param['receiveOrderPoID']]); $que_get_prid = $this->db->query($sql_get_prid, [$param['receiveOrderPoID']]);
@@ -2748,6 +2675,7 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
$data_prid = $que_get_prid->row_array(); $data_prid = $que_get_prid->row_array();
foreach ($param['item'] as $key => $item) {
# insert handover # # insert handover #
$sql_insert_handover = "INSERT INTO asset_handover( $sql_insert_handover = "INSERT INTO asset_handover(
AssetHandoverPurchaseRequestID, AssetHandoverPurchaseRequestID,
@@ -2757,9 +2685,10 @@ class ReceiveItemPoInventaris extends MY_Controller
AssetHandoverToUserID, AssetHandoverToUserID,
AssetHandoverIsActive, AssetHandoverIsActive,
AssetHandoverCreated, AssetHandoverCreated,
AssetHandoverUserID) VALUES(?,?,NOW(),?,?,'Y',NOW(),?)"; AssetHandoverUserID
) VALUES(?,?,NOW(),?,?,'Y',NOW(),?)";
$qry_insert_handover = $this->db->query($sql_insert_handover, [ $qry_insert_handover = $this->db->query($sql_insert_handover, [
$data_prid['PurchaseRequestID'], $item['PurchaseRequestID'],
$param['receiveOrderPoID'], $param['receiveOrderPoID'],
$param['ruanganID'], $param['ruanganID'],
$param['staffID'], $param['staffID'],
@@ -2770,41 +2699,59 @@ class ReceiveItemPoInventaris extends MY_Controller
$this->sys_error_db("[Error] insert asset handover"); $this->sys_error_db("[Error] insert asset handover");
exit; exit;
} }
$handoverID = $this->db->insert_id(); $handoverID = $this->db->insert_id();
# ambil data barcode # $qty_invnt = intval($item['serahQty']);
$sql_get_barcode = "SELECT for ($i = 0; $i < $qty_invnt; $i++) {
ropd.ReceiveOrderPoDetailID,
ropd.ReceiveOrderPoItemID AS M_ItemID, # generate barcode number each inventory item #
bb.T_BarcodeBarangID $noBarcode = $this->generateNoBarcode($user, $param['ruanganID'], 'BNP', $item['ReceiveOrderPoItemID']);
FROM receive_order_po_detail ropd $sql_insert_barcode = "INSERT INTO t_barcode_barang(
JOIN t_barcode_barang bb T_BarcodeBarangReceiveOrderPoID,
ON bb.T_BarcodeBarangReceiveOrderPoDetailID = ropd.ReceiveOrderPoDetailID T_BarcodeBarangReceiveOrderPoDetailID,
AND bb.T_BarcodeBarangIsActive = 'Y' T_BarcodeBarangRefType,
WHERE ropd.ReceiveOrderPoDetailReceiveOrderPoID = ?"; T_BarcodeBarangM_ItemID,
$que_get_barcode = $this->db->query($sql_get_barcode, [$param['receiveOrderPoID']]); T_BarcodeBarangItemUnitID,
if (!$que_get_barcode) { T_BarcodeBarangNumber,
T_BarcodeBarangM_RuanganID,
T_BarcodeBarangM_BranchID,
T_BarcodeBarangIsActive,
T_BarcodeBarangUserID,
T_BarcodeBarangCreated
) VALUES(?,?,'PO',?,?,?,?,?,'Y',?,NOW())";
$que_insert_barcode = $this->db->query($sql_insert_barcode, [
$param['receiveOrderPoID'],
$item['ReceiveOrderPoDetailID'],
$item['ReceiveOrderPoItemID'],
$item['ReceiveOrderPoItemUnitID'],
$noBarcode,
$param['ruanganID'],
$user['M_BranchID'],
$user['M_UserID']
]);
if (!$que_insert_barcode) {
$this->db->trans_rollback(); $this->db->trans_rollback();
$this->sys_error_db("[Error] get barcode barang from RO Detail"); $this->sys_error_db("[Error] insert no barcode invetaris");
exit; exit;
} }
$barcodes = $que_get_barcode->result_array(); $barcodeID = $this->db->insert_id();
# insert handover detail # # insert each inventory handover detail #
foreach ($barcodes as $key => $value) {
$sql_insert_handover_detail = "INSERT INTO asset_handover_detail( $sql_insert_handover_detail = "INSERT INTO asset_handover_detail(
AssetHandoverDetailAssetHandoverID, AssetHandoverDetailAssetHandoverID,
AssetHandoverDetailReceiveOrderPoDetailID,
AssetHandoverDetailT_BarcodeBarangID, AssetHandoverDetailT_BarcodeBarangID,
AssetHandoverDetailM_ItemID, AssetHandoverDetailM_ItemID,
AssetHandoverDetailIsActive, AssetHandoverDetailIsActive,
AssetHandoverDetailCreated, AssetHandoverDetailCreated,
AssetHandoverDetailUserID) VALUES(?,?,?,'Y',NOW(),?)"; AssetHandoverDetailUserID
) VALUES(?,?,?,?,'Y',NOW(),?)";
$que_insert_handover_detail = $this->db->query($sql_insert_handover_detail, [ $que_insert_handover_detail = $this->db->query($sql_insert_handover_detail, [
$handoverID, $handoverID,
$value['T_BarcodeBarangID'], $item['ReceiveOrderPoDetailID'],
$value['M_ItemID'], $barcodeID,
$item['ReceiveOrderPoItemID'],
$user['M_UserID'] $user['M_UserID']
]); ]);
if (!$que_insert_handover_detail) { if (!$que_insert_handover_detail) {
@@ -2813,8 +2760,53 @@ class ReceiveItemPoInventaris extends MY_Controller
exit; exit;
} }
} }
}
# check if all received inventaris are all handed over #
$sql_cek_allhanded = "SELECT
rod.ReceiveOrderPoDetailID,
CASE
WHEN COALESCE(ahd_count.InsertedQty, 0) = rod.ReceiveOrderPoDetailQty THEN 'Y'
ELSE 'N'
END AS isHandoverDone
FROM receive_order_po_detail rod
JOIN m_item mi ON mi.M_ItemID = rod.ReceiveOrderPoItemID
LEFT JOIN (
SELECT
AssetHandoverDetailReceiveOrderPoDetailID,
COUNT(*) AS InsertedQty
FROM asset_handover_detail ahd
JOIN asset_handover ah
ON ahd.AssetHandoverDetailAssetHandoverID = ah.AssetHandoverID
AND ah.AssetHandoverIsActive = 'Y'
WHERE ahd.AssetHandoverDetailIsActive = 'Y'
AND ah.AssetHandoverReceiveOrderPoID = ?
GROUP BY AssetHandoverDetailReceiveOrderPoDetailID
) ahd_count
ON ahd_count.AssetHandoverDetailReceiveOrderPoDetailID = rod.ReceiveOrderPoDetailID
WHERE rod.ReceiveOrderPoDetailReceiveOrderPoID = ?
AND rod.ReceiveOrderPoDetailIsActive = 'Y'";
$que_cek_allhanded = $this->db->query($sql_cek_allhanded, [
$param['receiveOrderPoID'],
$param['receiveOrderPoID']
]);
if (!$que_cek_allhanded) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] cek data all handed over");
exit;
}
$cek_allhanded = $que_cek_allhanded->result_array();
$isAllHanded = count($cek_allhanded) > 0;
foreach ($cek_allhanded as $key => $value) {
if ($value['isHandoverDone'] != 'Y') {
$isAllHanded = false;
break;
}
}
# update status handover di receive order po # # update status handover di receive order po #
if ($isAllHanded) {
$sql_update_ro = "UPDATE receive_order_po SET $sql_update_ro = "UPDATE receive_order_po SET
ReceiveOrderPoIsHandover = 'Y', ReceiveOrderPoIsHandover = 'Y',
ReceiveOrderPoLastUpdated = NOW(), ReceiveOrderPoLastUpdated = NOW(),
@@ -2829,6 +2821,7 @@ class ReceiveItemPoInventaris extends MY_Controller
$this->sys_error_db("[Error] update status handover di RO"); $this->sys_error_db("[Error] update status handover di RO");
exit; exit;
} }
}
$this->db->trans_commit(); $this->db->trans_commit();
$this->sys_ok("[Success] Berhasil menyimpan data serah terima barang"); $this->sys_ok("[Success] Berhasil menyimpan data serah terima barang");