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);
@@ -72,14 +72,13 @@ class PurchaseRequestNonPersediaan extends MY_Controller
$totalPage = 1; $totalPage = 1;
$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,
@@ -119,41 +119,37 @@ class PurchaseRequestNonPersediaan extends MY_Controller
ah.AssetHandoverID AS handoverID, ah.AssetHandoverID AS handoverID,
ah.AssetHandoverDate AS handoverDate, ah.AssetHandoverDate AS handoverDate,
ah.AssetHandoverToUserID AS handoverToUserID ah.AssetHandoverToUserID AS handoverToUserID
FROM purchase_request FROM purchase_request
JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID
JOIN item_category ON item_category.ItemCategoryID = PurchaseRequestItemCategoryID JOIN item_category ON item_category.ItemCategoryID = PurchaseRequestItemCategoryID
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
LIMIT ?, ?"; LIMIT ?, ?";
$exec = $this->db->query($sql, $params); $exec = $this->db->query($sql, $params);
if (!$exec) { if (!$exec) {
$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
@@ -467,54 +522,50 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
$sql = "SELECT $sql = "SELECT
ReceiveOrderPoNumber, ReceiveOrderPoNumber,
ReceiveOrderPoID, ReceiveOrderPoID,
ReceiveOrderPoSupplierID, ReceiveOrderPoSupplierID,
ReceiveOrderPoIDate, ReceiveOrderPoIDate,
ReceiveOrderShippingCostAmount, ReceiveOrderShippingCostAmount,
ReceiveOrderPoNote, ReceiveOrderPoNote,
ReceiveOrderPoRefNumber, ReceiveOrderPoRefNumber,
ReceiveOrderPoDONumber, ReceiveOrderPoDONumber,
ReceiveOrderPoIsHandover, ReceiveOrderPoIsHandover,
SupplierID, SupplierID,
SupplierName, SupplierName,
WarehouseID, WarehouseID,
WarehouseCode, WarehouseCode,
CASE CASE
WHEN WarehouseType = 'B' WHEN WarehouseType = 'B'
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName) THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName)
WHEN WarehouseType = 'R' WHEN WarehouseType = 'R'
THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName) THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName)
ELSE '' ELSE ''
END WarehouseName, END WarehouseName,
M_RuanganID, ReceiveOrderPoConfirmed,
M_RuanganName, DATE_FORMAT(ReceiveOrderPoConfirmedDate, '%d-%m-%Y %H:%i') AS ReceiveOrderPoConfirmedDate,
M_RuanganCode, M_UserUsername AS ReceiveOrderPoConfirmedUserName
ReceiveOrderPoConfirmed, FROM receive_order_po
DATE_FORMAT(ReceiveOrderPoConfirmedDate, '%d-%m-%Y %H:%i') AS ReceiveOrderPoConfirmedDate, JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID
M_UserUsername AS ReceiveOrderPoConfirmedUserName JOIN supplier ON ReceiveOrderPoSupplierID = SupplierID
FROM receive_order_po JOIN s_regional ON WarehouseS_RegionalID = S_RegionalID
JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID AND S_RegionalIsActive = 'Y'
JOIN supplier ON ReceiveOrderPoSupplierID = SupplierID LEFT JOIN m_branch ON WarehouseM_BranchID = M_BranchID
JOIN s_regional ON WarehouseS_RegionalID = S_RegionalID AND M_BranchIsActive = 'Y'
AND S_RegionalIsActive = 'Y' LEFT JOIN m_user ON ReceiveOrderPoConfirmedUserID = M_UserID
LEFT JOIN m_branch ON WarehouseM_BranchID = M_BranchID WHERE ReceiveOrderPoIsActive = 'Y'
AND M_BranchIsActive = 'Y' AND (ReceiveOrderPoNumber LIKE ? OR ReceiveOrderPoDONumber LIKE ?)
LEFT JOIN m_user ON ReceiveOrderPoConfirmedUserID = M_UserID AND ReceiveOrderPoIDate BETWEEN DATE(?) AND DATE(?)
LEFT JOIN m_ruangan ON M_RuanganM_BranchID = M_BranchID AND ReceiveOrderPoS_RegionalID = ?
WHERE ReceiveOrderPoIsActive = 'Y' AND ReceiveOrderPoM_BranchCode LIKE ?
AND (ReceiveOrderPoNumber LIKE ? OR ReceiveOrderPoDONumber LIKE ?) AND ReceiveOrderPoID NOT IN (
AND ReceiveOrderPoIDate BETWEEN DATE(?) AND DATE(?) SELECT DISTINCT ReceiveOrderPoDetailReceiveOrderPoID
AND ReceiveOrderPoS_RegionalID = ? FROM receive_order_po_detail
AND ReceiveOrderPoM_BranchCode LIKE ? JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID
AND ReceiveOrderPoID NOT IN ( WHERE PurchaseOrderItemCategoryID IN (1,3,4)
SELECT DISTINCT ReceiveOrderPoDetailReceiveOrderPoID AND ReceiveOrderPoDetailIsActive = 'Y'
FROM receive_order_po_detail )
JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = PurchaseOrderID ORDER BY ReceiveOrderPoID DESC";
WHERE PurchaseOrderItemCategoryID IN (1, 4)
AND ReceiveOrderPoDetailIsActive = 'Y'
)
ORDER BY ReceiveOrderPoID DESC";
$sqltotal = "SELECT COUNT(*) as total FROM ($sql) as x"; $sqltotal = "SELECT COUNT(*) as total FROM ($sql) as x";
$quetotal = $this->db->query($sqltotal, [$search, $search, $startdate, $enddate, $regID, $brnCD]); $quetotal = $this->db->query($sqltotal, [$search, $search, $startdate, $enddate, $regID, $brnCD]);
@@ -542,12 +593,13 @@ 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
ReceiveOrderPoDocumentDate, ReceiveOrderPoDocumentID,
ReceiveOrderPoDocumentFile ReceiveOrderPoDocumentDate,
ReceiveOrderPoDocumentFile
FROM receive_order_po_document FROM receive_order_po_document
WHERE ReceiveOrderPoDocumentIsActive = 'Y' WHERE ReceiveOrderPoDocumentIsActive = 'Y'
AND ReceiveOrderPoDocumentReceiveOrderPoID = ?"; AND ReceiveOrderPoDocumentReceiveOrderPoID = ?";
$qry = $this->db->query($sql, [$value['ReceiveOrderPoID']]); $qry = $this->db->query($sql, [$value['ReceiveOrderPoID']]);
if (!$qry) { if (!$qry) {
$this->sys_error_db("[Error] get document RO"); $this->sys_error_db("[Error] get document RO");
@@ -632,24 +684,19 @@ class ReceiveItemPoInventaris extends MY_Controller
if ($param['isSerahTerima'] == 'Y') { if ($param['isSerahTerima'] == 'Y') {
$sql = "SELECT DISTINCT $sql = "SELECT DISTINCT
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 ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID
JOIN purchase_order_detail pod AND pod.PurchaseOrderDetailIsActive = 'Y'
ON pod.PurchaseOrderDetailID = rod.ReceiveOrderPoDetailPurchaseOrderDetailID JOIN purchase_request pr ON pr.PurchaseRequestID = pod.PurchaseOrderDetailPurchaseRequestID
AND pod.PurchaseOrderDetailIsActive = 'Y' AND pr.PurchaseRequestIsActive = 'Y'
JOIN purchase_request pr JOIN m_user u ON u.M_UserID = pr.PurchaseRequestRequestedBy
ON pr.PurchaseRequestID = pod.PurchaseOrderDetailPurchaseRequestID AND u.M_UserIsActive = 'Y'
AND pr.PurchaseRequestIsActive = 'Y' WHERE ro.ReceiveOrderPoID = ?
JOIN m_user u AND ro.ReceiveOrderPoIsActive = 'Y'";
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']]); $que = $this->db->query($sql, [$param['ROID']]);
} else { } else {
$sql = "SELECT $sql = "SELECT
@@ -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 (
@@ -1098,9 +1108,9 @@ class ReceiveItemPoInventaris extends MY_Controller
# CHECK IF DETAIL ALREADY IN TABLE RECEIVE # # CHECK IF DETAIL ALREADY IN TABLE RECEIVE #
$sql_check_ro = "SELECT ReceiveOrderPoDetailID, ReceiveOrderPoDetailPoItemReceiveID $sql_check_ro = "SELECT ReceiveOrderPoDetailID, ReceiveOrderPoDetailPoItemReceiveID
FROM receive_order_po_detail FROM receive_order_po_detail
WHERE ReceiveOrderPoDetailReceiveOrderPoID = ? WHERE ReceiveOrderPoDetailReceiveOrderPoID = ?
AND ReceiveOrderPoDetailIsActive = 'Y'"; AND ReceiveOrderPoDetailIsActive = 'Y'";
$que_check_ro = $this->db->query($sql_check_ro, [$param['ReceiveOrderID']]); $que_check_ro = $this->db->query($sql_check_ro, [$param['ReceiveOrderID']]);
if (!$que_check_ro) { if (!$que_check_ro) {
$this->db->trans_rollback(); $this->db->trans_rollback();
@@ -1156,12 +1166,12 @@ class ReceiveItemPoInventaris extends MY_Controller
# UPDATE po item receive # # UPDATE po item receive #
$sql_up_po_receive = "UPDATE po_item_receive $sql_up_po_receive = "UPDATE po_item_receive
JOIN receive_order_po_detail ON ReceiveOrderPoDetailPoItemReceiveID = PoItemReceiveID JOIN receive_order_po_detail ON ReceiveOrderPoDetailPoItemReceiveID = PoItemReceiveID
AND ReceiveOrderPoDetailID = ? AND ReceiveOrderPoDetailID = ?
SET SET
PoItemReceiveQtyReceived = (PoItemReceiveQtyReceived - ReceiveOrderPoDetailQty) + ?, PoItemReceiveQtyReceived = (PoItemReceiveQtyReceived - ReceiveOrderPoDetailQty) + ?,
PoItemReceiveUpdatedUserID = ? PoItemReceiveUpdatedUserID = ?
WHERE PoItemReceiveID = ?"; WHERE PoItemReceiveID = ?";
$que_up_po_receive = $this->db->query($sql_up_po_receive, [ $que_up_po_receive = $this->db->query($sql_up_po_receive, [
$obj['ReceiveOrderPoDetailID'], $obj['ReceiveOrderPoDetailID'],
$obj['qty'], $obj['qty'],
@@ -1191,20 +1201,20 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
$sql_update_detail = "UPDATE receive_order_po_detail SET $sql_update_detail = "UPDATE receive_order_po_detail SET
ReceiveOrderPoDetailReceiveOrderPoID = ?, ReceiveOrderPoDetailReceiveOrderPoID = ?,
ReceiveOrderPoDetailPurchaseOrderID = ?, ReceiveOrderPoDetailPurchaseOrderID = ?,
ReceiveOrderPoDetailPurchaseOrderSummaryID = ?, ReceiveOrderPoDetailPurchaseOrderSummaryID = ?,
ReceiveOrderPoDetailPurchaseOrderDetailID = ?, ReceiveOrderPoDetailPurchaseOrderDetailID = ?,
ReceiveOrderPoDetailPoItemReceiveID = ?, ReceiveOrderPoDetailPoItemReceiveID = ?,
ReceiveOrderPoDetailQty = ?, ReceiveOrderPoDetailQty = ?,
ReceiveOrderPoDetailPrice = ?, ReceiveOrderPoDetailPrice = ?,
ReceiveOrderPoDetailTotal = ?, ReceiveOrderPoDetailTotal = ?,
ReceiveOrderPoItemID = ?, ReceiveOrderPoItemID = ?,
ReceiveOrderPoItemUnitID = ?, ReceiveOrderPoItemUnitID = ?,
ReceiveOrderPoDetailBatchNo = ?, ReceiveOrderPoDetailBatchNo = ?,
ReceiveOrderPoDetailEd = ?, ReceiveOrderPoDetailEd = ?,
ReceiveOrderPoDetailBatchList = ? ReceiveOrderPoDetailBatchList = ?
WHERE ReceiveOrderPoDetailID = ?"; WHERE ReceiveOrderPoDetailID = ?";
$que_update_detail = $this->db->query($sql_update_detail, [ $que_update_detail = $this->db->query($sql_update_detail, [
$param['ReceiveOrderID'], $param['ReceiveOrderID'],
$obj['PoItemReceivePurchaseOrderID'], $obj['PoItemReceivePurchaseOrderID'],
@@ -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,10 +2664,9 @@ 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']]);
if (!$que_get_prid) { if (!$que_get_prid) {
$this->db->trans_rollback(); $this->db->trans_rollback();
@@ -2748,86 +2675,152 @@ class ReceiveItemPoInventaris extends MY_Controller
} }
$data_prid = $que_get_prid->row_array(); $data_prid = $que_get_prid->row_array();
# insert handover # foreach ($param['item'] as $key => $item) {
$sql_insert_handover = "INSERT INTO asset_handover( # insert handover #
AssetHandoverPurchaseRequestID, $sql_insert_handover = "INSERT INTO asset_handover(
AssetHandoverReceiveOrderPoID, AssetHandoverPurchaseRequestID,
AssetHandoverDate, AssetHandoverReceiveOrderPoID,
AssetHandoverM_RuanganID, AssetHandoverDate,
AssetHandoverToUserID, AssetHandoverM_RuanganID,
AssetHandoverIsActive, AssetHandoverToUserID,
AssetHandoverCreated, AssetHandoverIsActive,
AssetHandoverUserID) VALUES(?,?,NOW(),?,?,'Y',NOW(),?)"; AssetHandoverCreated,
$qry_insert_handover = $this->db->query($sql_insert_handover, [ AssetHandoverUserID
$data_prid['PurchaseRequestID'], ) VALUES(?,?,NOW(),?,?,'Y',NOW(),?)";
$param['receiveOrderPoID'], $qry_insert_handover = $this->db->query($sql_insert_handover, [
$param['ruanganID'], $item['PurchaseRequestID'],
$param['staffID'], $param['receiveOrderPoID'],
$user['M_UserID'] $param['ruanganID'],
]); $param['staffID'],
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'],
$user['M_UserID'] $user['M_UserID']
]); ]);
if (!$que_insert_handover_detail) { if (!$qry_insert_handover) {
$this->db->trans_rollback(); $this->db->trans_rollback();
$this->sys_error_db("[Error] insert asset handover detail"); $this->sys_error_db("[Error] insert asset handover");
exit; 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 # # update status handover di receive order po #
$sql_update_ro = "UPDATE receive_order_po SET if ($isAllHanded) {
ReceiveOrderPoIsHandover = 'Y', $sql_update_ro = "UPDATE receive_order_po SET
ReceiveOrderPoLastUpdated = NOW(), ReceiveOrderPoIsHandover = 'Y',
ReceiveOrderPoLastUpdatedUserID = ? ReceiveOrderPoLastUpdated = NOW(),
WHERE ReceiveOrderPoID = ?"; ReceiveOrderPoLastUpdatedUserID = ?
$que_update_ro = $this->db->query($sql_update_ro, [ WHERE ReceiveOrderPoID = ?";
$user['M_UserID'], $que_update_ro = $this->db->query($sql_update_ro, [
$param['receiveOrderPoID'] $user['M_UserID'],
]); $param['receiveOrderPoID']
if (!$que_update_ro) { ]);
$this->db->trans_rollback(); if (!$que_update_ro) {
$this->sys_error_db("[Error] update status handover di RO"); $this->db->trans_rollback();
exit; $this->sys_error_db("[Error] update status handover di RO");
exit;
}
} }
$this->db->trans_commit(); $this->db->trans_commit();
@@ -2928,18 +2921,18 @@ class ReceiveItemPoInventaris extends MY_Controller
$user = $this->sys_user; $user = $this->sys_user;
$sql = "SELECT $sql = "SELECT
T_BarcodeBarangID as id, T_BarcodeBarangID as id,
T_BarcodeBarangNumber, T_BarcodeBarangNumber,
M_ItemDesc, M_ItemDesc,
M_BranchName, M_BranchName,
M_RuanganName, M_RuanganName,
'N' as chex 'N' as chex
FROM t_barcode_barang FROM t_barcode_barang
JOIN m_item ON M_ItemID = T_BarcodeBarangM_ItemID JOIN m_item ON M_ItemID = T_BarcodeBarangM_ItemID
JOIN m_branch ON M_BranchID = T_BarcodeBarangM_BranchID JOIN m_branch ON M_BranchID = T_BarcodeBarangM_BranchID
LEFT JOIN m_ruangan ON M_RuanganID = T_BarcodeBarangM_RuanganID LEFT JOIN m_ruangan ON M_RuanganID = T_BarcodeBarangM_RuanganID
WHERE T_BarcodeBarangReceiveOrderPoID = ? WHERE T_BarcodeBarangReceiveOrderPoID = ?
AND T_BarcodeBarangIsActive = 'Y' AND T_BarcodeBarangIsActive = 'Y'
ORDER BY T_BarcodeBarangID"; ORDER BY T_BarcodeBarangID";
$que = $this->db->query($sql, [$param['ROID']]); $que = $this->db->query($sql, [$param['ROID']]);
if (!$que) { if (!$que) {