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

@@ -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()
{
try {
@@ -241,15 +298,13 @@ class ReceiveItemPoInventaris extends MY_Controller
PoItemReceiveQty as originalQty,
PoItemReceiveQtyReceived as receivedQty,
0 as qty,
PoItemReceiveQty - PurchaseOrderSummaryQtyReceived AS qtyRest,
PoItemReceiveQty - PoItemReceiveQtyReceived AS qtyRest,
PoItemReceivePrice,
'N' as alreadySave
FROM po_item_receive
JOIN purchase_order ON PoItemReceivePurchaseOrderID = PurchaseOrderID
AND PurchaseOrderIsActive = 'Y'
AND PoItemReceiveIsActive = 'Y'
-- AND (PoItemReceiveQty - PoItemReceiveQtyReceived) > 0
JOIN purchase_order_summary ON PurchaseOrderSummaryID = PoItemReceivePurchaseOrderSummaryID
JOIN warehouse ON PoItemReceiveWarehouseID = WarehouseID
AND WarehouseIsActive = 'Y'
JOIN m_item ON PoItemReceiveItemID = M_ItemID
@@ -467,54 +522,50 @@ class ReceiveItemPoInventaris extends MY_Controller
}
$sql = "SELECT
ReceiveOrderPoNumber,
ReceiveOrderPoID,
ReceiveOrderPoSupplierID,
ReceiveOrderPoIDate,
ReceiveOrderShippingCostAmount,
ReceiveOrderPoNote,
ReceiveOrderPoRefNumber,
ReceiveOrderPoDONumber,
ReceiveOrderPoIsHandover,
SupplierID,
SupplierName,
WarehouseID,
WarehouseCode,
CASE
WHEN WarehouseType = 'B'
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName)
WHEN WarehouseType = 'R'
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName)
ELSE ''
END WarehouseName,
M_RuanganID,
M_RuanganName,
M_RuanganCode,
ReceiveOrderPoConfirmed,
DATE_FORMAT(ReceiveOrderPoConfirmedDate, '%d-%m-%Y %H:%i') AS ReceiveOrderPoConfirmedDate,
M_UserUsername AS ReceiveOrderPoConfirmedUserName
FROM receive_order_po
JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
JOIN supplier ON ReceiveOrderPoSupplierID = SupplierID
JOIN s_regional ON WarehouseS_RegionalID = S_RegionalID
AND S_RegionalIsActive = 'Y'
LEFT JOIN m_branch ON WarehouseM_BranchID = M_BranchID
AND M_BranchIsActive = 'Y'
LEFT JOIN m_user ON ReceiveOrderPoConfirmedUserID = M_UserID
LEFT JOIN m_ruangan ON M_RuanganM_BranchID = M_BranchID
WHERE ReceiveOrderPoIsActive = 'Y'
AND (ReceiveOrderPoNumber LIKE ? OR ReceiveOrderPoDONumber LIKE ?)
AND ReceiveOrderPoIDate BETWEEN DATE(?) AND DATE(?)
AND ReceiveOrderPoS_RegionalID = ?
AND ReceiveOrderPoM_BranchCode LIKE ?
AND ReceiveOrderPoID NOT IN (
SELECT DISTINCT ReceiveOrderPoDetailReceiveOrderPoID
FROM receive_order_po_detail
JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID
WHERE PurchaseOrderItemCategoryID IN (1, 4)
AND ReceiveOrderPoDetailIsActive = 'Y'
)
ORDER BY ReceiveOrderPoID DESC";
ReceiveOrderPoNumber,
ReceiveOrderPoID,
ReceiveOrderPoSupplierID,
ReceiveOrderPoIDate,
ReceiveOrderShippingCostAmount,
ReceiveOrderPoNote,
ReceiveOrderPoRefNumber,
ReceiveOrderPoDONumber,
ReceiveOrderPoIsHandover,
SupplierID,
SupplierName,
WarehouseID,
WarehouseCode,
CASE
WHEN WarehouseType = 'B'
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName)
WHEN WarehouseType = 'R'
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName)
ELSE ''
END WarehouseName,
ReceiveOrderPoConfirmed,
DATE_FORMAT(ReceiveOrderPoConfirmedDate, '%d-%m-%Y %H:%i') AS ReceiveOrderPoConfirmedDate,
M_UserUsername AS ReceiveOrderPoConfirmedUserName
FROM receive_order_po
JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
JOIN supplier ON ReceiveOrderPoSupplierID = SupplierID
JOIN s_regional ON WarehouseS_RegionalID = S_RegionalID
AND S_RegionalIsActive = 'Y'
LEFT JOIN m_branch ON WarehouseM_BranchID = M_BranchID
AND M_BranchIsActive = 'Y'
LEFT JOIN m_user ON ReceiveOrderPoConfirmedUserID = M_UserID
WHERE ReceiveOrderPoIsActive = 'Y'
AND (ReceiveOrderPoNumber LIKE ? OR ReceiveOrderPoDONumber LIKE ?)
AND ReceiveOrderPoIDate BETWEEN DATE(?) AND DATE(?)
AND ReceiveOrderPoS_RegionalID = ?
AND ReceiveOrderPoM_BranchCode LIKE ?
AND ReceiveOrderPoID NOT IN (
SELECT DISTINCT ReceiveOrderPoDetailReceiveOrderPoID
FROM receive_order_po_detail
JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID
WHERE PurchaseOrderItemCategoryID IN (1,3,4)
AND ReceiveOrderPoDetailIsActive = 'Y'
)
ORDER BY ReceiveOrderPoID DESC";
$sqltotal = "SELECT COUNT(*) as total FROM ($sql) as x";
$quetotal = $this->db->query($sqltotal, [$search, $search, $startdate, $enddate, $regID, $brnCD]);
@@ -542,12 +593,13 @@ class ReceiveItemPoInventaris extends MY_Controller
$records = $quedata->result_array();
foreach ($records as $key => $value) {
$sql = "SELECT ReceiveOrderPoDocumentID,
ReceiveOrderPoDocumentDate,
ReceiveOrderPoDocumentFile
$sql = "SELECT
ReceiveOrderPoDocumentID,
ReceiveOrderPoDocumentDate,
ReceiveOrderPoDocumentFile
FROM receive_order_po_document
WHERE ReceiveOrderPoDocumentIsActive = 'Y'
AND ReceiveOrderPoDocumentReceiveOrderPoID = ?";
AND ReceiveOrderPoDocumentReceiveOrderPoID = ?";
$qry = $this->db->query($sql, [$value['ReceiveOrderPoID']]);
if (!$qry) {
$this->sys_error_db("[Error] get document RO");
@@ -632,24 +684,19 @@ class ReceiveItemPoInventaris extends MY_Controller
if ($param['isSerahTerima'] == 'Y') {
$sql = "SELECT DISTINCT
u.M_UserID,
u.M_UserUsername
FROM receive_order_po ro
JOIN receive_order_po_detail rod
ON rod.ReceiveOrderPoDetailReceiveOrderPoID = ro.ReceiveOrderPoID
AND rod.ReceiveOrderPoDetailIsActive = 'Y'
JOIN purchase_order_detail pod
ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID
AND pod.PurchaseOrderDetailIsActive = 'Y'
JOIN purchase_request pr
ON pr.PurchaseRequestID = pod.PurchaseOrderDetailPurchaseRequestID
AND pr.PurchaseRequestIsActive = 'Y'
JOIN m_user u
ON u.M_UserID = pr.PurchaseRequestRequestedBy
AND u.M_UserIsActive = 'Y'
WHERE
ro.ReceiveOrderPoID = ?
AND ro.ReceiveOrderPoIsActive = 'Y'";
u.M_UserID,
u.M_UserUsername
FROM receive_order_po ro
JOIN receive_order_po_detail rod ON rod.ReceiveOrderPoDetailReceiveOrderPoID = ro.ReceiveOrderPoID
AND rod.ReceiveOrderPoDetailIsActive = 'Y'
JOIN purchase_order_detail pod ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID
AND pod.PurchaseOrderDetailIsActive = 'Y'
JOIN purchase_request pr ON pr.PurchaseRequestID = pod.PurchaseOrderDetailPurchaseRequestID
AND pr.PurchaseRequestIsActive = 'Y'
JOIN m_user u ON u.M_UserID = pr.PurchaseRequestRequestedBy
AND u.M_UserIsActive = 'Y'
WHERE ro.ReceiveOrderPoID = ?
AND ro.ReceiveOrderPoIsActive = 'Y'";
$que = $this->db->query($sql, [$param['ROID']]);
} else {
$sql = "SELECT
@@ -928,43 +975,6 @@ class ReceiveItemPoInventaris extends MY_Controller
$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 #
$inspeksi = $obj['inspeksi_item'];
$sqlInspeksi = "INSERT INTO receive_order_po_inspeksi (
@@ -1098,9 +1108,9 @@ class ReceiveItemPoInventaris extends MY_Controller
# CHECK IF DETAIL ALREADY IN TABLE RECEIVE #
$sql_check_ro = "SELECT ReceiveOrderPoDetailID, ReceiveOrderPoDetailPoItemReceiveID
FROM receive_order_po_detail
WHERE ReceiveOrderPoDetailReceiveOrderPoID = ?
AND ReceiveOrderPoDetailIsActive = 'Y'";
FROM receive_order_po_detail
WHERE ReceiveOrderPoDetailReceiveOrderPoID = ?
AND ReceiveOrderPoDetailIsActive = 'Y'";
$que_check_ro = $this->db->query($sql_check_ro, [$param['ReceiveOrderID']]);
if (!$que_check_ro) {
$this->db->trans_rollback();
@@ -1156,12 +1166,12 @@ class ReceiveItemPoInventaris extends MY_Controller
# UPDATE po item receive #
$sql_up_po_receive = "UPDATE po_item_receive
JOIN receive_order_po_detail ON ReceiveOrderPoDetailPoItemReceiveID = PoItemReceiveID
AND ReceiveOrderPoDetailID = ?
SET
PoItemReceiveQtyReceived = (PoItemReceiveQtyReceived - ReceiveOrderPoDetailQty) + ?,
PoItemReceiveUpdatedUserID = ?
WHERE PoItemReceiveID = ?";
JOIN receive_order_po_detail ON ReceiveOrderPoDetailPoItemReceiveID = PoItemReceiveID
AND ReceiveOrderPoDetailID = ?
SET
PoItemReceiveQtyReceived = (PoItemReceiveQtyReceived - ReceiveOrderPoDetailQty) + ?,
PoItemReceiveUpdatedUserID = ?
WHERE PoItemReceiveID = ?";
$que_up_po_receive = $this->db->query($sql_up_po_receive, [
$obj['ReceiveOrderPoDetailID'],
$obj['qty'],
@@ -1191,20 +1201,20 @@ class ReceiveItemPoInventaris extends MY_Controller
}
$sql_update_detail = "UPDATE receive_order_po_detail SET
ReceiveOrderPoDetailReceiveOrderPoID = ?,
ReceiveOrderPoDetailPurchaseOrderID = ?,
ReceiveOrderPoDetailPurchaseOrderSummaryID = ?,
ReceiveOrderPoDetailPurchaseOrderDetailID = ?,
ReceiveOrderPoDetailPoItemReceiveID = ?,
ReceiveOrderPoDetailQty = ?,
ReceiveOrderPoDetailPrice = ?,
ReceiveOrderPoDetailTotal = ?,
ReceiveOrderPoItemID = ?,
ReceiveOrderPoItemUnitID = ?,
ReceiveOrderPoDetailBatchNo = ?,
ReceiveOrderPoDetailEd = ?,
ReceiveOrderPoDetailBatchList = ?
WHERE ReceiveOrderPoDetailID = ?";
ReceiveOrderPoDetailReceiveOrderPoID = ?,
ReceiveOrderPoDetailPurchaseOrderID = ?,
ReceiveOrderPoDetailPurchaseOrderSummaryID = ?,
ReceiveOrderPoDetailPurchaseOrderDetailID = ?,
ReceiveOrderPoDetailPoItemReceiveID = ?,
ReceiveOrderPoDetailQty = ?,
ReceiveOrderPoDetailPrice = ?,
ReceiveOrderPoDetailTotal = ?,
ReceiveOrderPoItemID = ?,
ReceiveOrderPoItemUnitID = ?,
ReceiveOrderPoDetailBatchNo = ?,
ReceiveOrderPoDetailEd = ?,
ReceiveOrderPoDetailBatchList = ?
WHERE ReceiveOrderPoDetailID = ?";
$que_update_detail = $this->db->query($sql_update_detail, [
$param['ReceiveOrderID'],
$obj['PoItemReceivePurchaseOrderID'],
@@ -1227,51 +1237,6 @@ class ReceiveItemPoInventaris extends MY_Controller
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 #
$inspeksi = $obj['inspeksi_item'];
$sql_inspeksi = "UPDATE receive_order_po_inspeksi SET
@@ -1408,43 +1373,6 @@ class ReceiveItemPoInventaris extends MY_Controller
}
$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 #
$inspekitem = $obj['inspeksi_item'];
$sql_insert_inspeksi = " INSERT INTO receive_order_po_inspeksi (
@@ -2736,10 +2664,9 @@ class ReceiveItemPoInventaris extends MY_Controller
$sql_get_prid = "SELECT DISTINCT
pod.PurchaseOrderDetailPurchaseRequestID AS PurchaseRequestID
FROM receive_order_po_detail ropd
JOIN purchase_order_detail pod
ON pod.PurchaseOrderDetailID = ropd.ReceiveOrderPoDetailPurchaseOrderDetailID
JOIN purchase_order_detail pod ON pod.PurchaseOrderDetailID = ropd.ReceiveOrderPoDetailPurchaseOrderDetailID
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']]);
if (!$que_get_prid) {
$this->db->trans_rollback();
@@ -2748,86 +2675,152 @@ class ReceiveItemPoInventaris extends MY_Controller
}
$data_prid = $que_get_prid->row_array();
# insert handover #
$sql_insert_handover = "INSERT INTO asset_handover(
AssetHandoverPurchaseRequestID,
AssetHandoverReceiveOrderPoID,
AssetHandoverDate,
AssetHandoverM_RuanganID,
AssetHandoverToUserID,
AssetHandoverIsActive,
AssetHandoverCreated,
AssetHandoverUserID) VALUES(?,?,NOW(),?,?,'Y',NOW(),?)";
$qry_insert_handover = $this->db->query($sql_insert_handover, [
$data_prid['PurchaseRequestID'],
$param['receiveOrderPoID'],
$param['ruanganID'],
$param['staffID'],
$user['M_UserID']
]);
if (!$qry_insert_handover) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] insert asset handover");
exit;
}
$handoverID = $this->db->insert_id();
# ambil data barcode #
$sql_get_barcode = "SELECT
ropd.ReceiveOrderPoDetailID,
ropd.ReceiveOrderPoItemID AS M_ItemID,
bb.T_BarcodeBarangID
FROM receive_order_po_detail ropd
JOIN t_barcode_barang bb
ON bb.T_BarcodeBarangReceiveOrderPoDetailID = ropd.ReceiveOrderPoDetailID
AND bb.T_BarcodeBarangIsActive = 'Y'
WHERE ropd.ReceiveOrderPoDetailReceiveOrderPoID = ?";
$que_get_barcode = $this->db->query($sql_get_barcode, [$param['receiveOrderPoID']]);
if (!$que_get_barcode) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] get barcode barang from RO Detail");
exit;
}
$barcodes = $que_get_barcode->result_array();
# insert handover detail #
foreach ($barcodes as $key => $value) {
$sql_insert_handover_detail = "INSERT INTO asset_handover_detail(
AssetHandoverDetailAssetHandoverID,
AssetHandoverDetailT_BarcodeBarangID,
AssetHandoverDetailM_ItemID,
AssetHandoverDetailIsActive,
AssetHandoverDetailCreated,
AssetHandoverDetailUserID) VALUES(?,?,?,'Y',NOW(),?)";
$que_insert_handover_detail = $this->db->query($sql_insert_handover_detail, [
$handoverID,
$value['T_BarcodeBarangID'],
$value['M_ItemID'],
foreach ($param['item'] as $key => $item) {
# insert handover #
$sql_insert_handover = "INSERT INTO asset_handover(
AssetHandoverPurchaseRequestID,
AssetHandoverReceiveOrderPoID,
AssetHandoverDate,
AssetHandoverM_RuanganID,
AssetHandoverToUserID,
AssetHandoverIsActive,
AssetHandoverCreated,
AssetHandoverUserID
) VALUES(?,?,NOW(),?,?,'Y',NOW(),?)";
$qry_insert_handover = $this->db->query($sql_insert_handover, [
$item['PurchaseRequestID'],
$param['receiveOrderPoID'],
$param['ruanganID'],
$param['staffID'],
$user['M_UserID']
]);
if (!$que_insert_handover_detail) {
if (!$qry_insert_handover) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] insert asset handover detail");
$this->sys_error_db("[Error] insert asset handover");
exit;
}
$handoverID = $this->db->insert_id();
$qty_invnt = intval($item['serahQty']);
for ($i = 0; $i < $qty_invnt; $i++) {
# generate barcode number each inventory item #
$noBarcode = $this->generateNoBarcode($user, $param['ruanganID'], 'BNP', $item['ReceiveOrderPoItemID']);
$sql_insert_barcode = "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())";
$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->sys_error_db("[Error] insert no barcode invetaris");
exit;
}
$barcodeID = $this->db->insert_id();
# insert each inventory handover detail #
$sql_insert_handover_detail = "INSERT INTO asset_handover_detail(
AssetHandoverDetailAssetHandoverID,
AssetHandoverDetailReceiveOrderPoDetailID,
AssetHandoverDetailT_BarcodeBarangID,
AssetHandoverDetailM_ItemID,
AssetHandoverDetailIsActive,
AssetHandoverDetailCreated,
AssetHandoverDetailUserID
) VALUES(?,?,?,?,'Y',NOW(),?)";
$que_insert_handover_detail = $this->db->query($sql_insert_handover_detail, [
$handoverID,
$item['ReceiveOrderPoDetailID'],
$barcodeID,
$item['ReceiveOrderPoItemID'],
$user['M_UserID']
]);
if (!$que_insert_handover_detail) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] insert asset handover detail");
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 #
$sql_update_ro = "UPDATE receive_order_po SET
ReceiveOrderPoIsHandover = 'Y',
ReceiveOrderPoLastUpdated = NOW(),
ReceiveOrderPoLastUpdatedUserID = ?
WHERE ReceiveOrderPoID = ?";
$que_update_ro = $this->db->query($sql_update_ro, [
$user['M_UserID'],
$param['receiveOrderPoID']
]);
if (!$que_update_ro) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] update status handover di RO");
exit;
if ($isAllHanded) {
$sql_update_ro = "UPDATE receive_order_po SET
ReceiveOrderPoIsHandover = 'Y',
ReceiveOrderPoLastUpdated = NOW(),
ReceiveOrderPoLastUpdatedUserID = ?
WHERE ReceiveOrderPoID = ?";
$que_update_ro = $this->db->query($sql_update_ro, [
$user['M_UserID'],
$param['receiveOrderPoID']
]);
if (!$que_update_ro) {
$this->db->trans_rollback();
$this->sys_error_db("[Error] update status handover di RO");
exit;
}
}
$this->db->trans_commit();
@@ -2928,18 +2921,18 @@ class ReceiveItemPoInventaris extends MY_Controller
$user = $this->sys_user;
$sql = "SELECT
T_BarcodeBarangID as id,
T_BarcodeBarangNumber,
M_ItemDesc,
M_BranchName,
M_RuanganName,
'N' as chex
T_BarcodeBarangID as id,
T_BarcodeBarangNumber,
M_ItemDesc,
M_BranchName,
M_RuanganName,
'N' as chex
FROM t_barcode_barang
JOIN m_item ON M_ItemID = T_BarcodeBarangM_ItemID
JOIN m_branch ON M_BranchID = T_BarcodeBarangM_BranchID
LEFT JOIN m_ruangan ON M_RuanganID = T_BarcodeBarangM_RuanganID
WHERE T_BarcodeBarangReceiveOrderPoID = ?
AND T_BarcodeBarangIsActive = 'Y'
AND T_BarcodeBarangIsActive = 'Y'
ORDER BY T_BarcodeBarangID";
$que = $this->db->query($sql, [$param['ROID']]);
if (!$que) {