diff --git a/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php b/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php index 62cb756..84c0a49 100644 --- a/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php +++ b/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php @@ -39,14 +39,14 @@ class PurchaseRequestNonPersediaan extends MY_Controller $params[] = $status; $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_BranchName, '') as M_BranchName - FROM m_userlocation - LEFT JOIN m_branch ON M_BranchID = M_UserLocationM_BranchID - WHERE - M_UserLocationIsActive = 'Y' AND - M_UserLocationM_UserID = ?"; + FROM m_userlocation + LEFT JOIN m_branch ON M_BranchID = M_UserLocationM_BranchID + WHERE M_UserLocationIsActive = 'Y' + AND M_UserLocationM_UserID = ?"; $exec = $this->db->query($sql, [$userId]); if (!$exec) { $this->sys_error_db("select user location", $this->db); @@ -72,14 +72,13 @@ class PurchaseRequestNonPersediaan extends MY_Controller $totalPage = 1; $sql = "SELECT COUNT(*) as total - FROM purchase_request - JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID - WHERE - PurchaseRequestIsActive = 'Y' AND - PurchaseRequestItemCategoryID <> '1' AND - ( PurchaseRequestDate BETWEEN ? AND ? ) AND - ( PurchaseRequestStatus = ? OR ? = '' ) AND - ( PurchaseRequestNumber LIKE ?) + FROM purchase_request + JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID + WHERE PurchaseRequestIsActive = 'Y' + AND PurchaseRequestItemCategoryID <> '1' + AND ( PurchaseRequestDate BETWEEN ? AND ? ) + AND ( PurchaseRequestStatus = ? OR ? = '' ) + AND ( PurchaseRequestNumber LIKE ?) $filterBranch $filterRegional"; @@ -96,7 +95,8 @@ class PurchaseRequestNonPersediaan extends MY_Controller $params[] = $offset; $params[] = $pageSize; - $sql = "SELECT DISTINCT PurchaseRequestID as prId, + $sql = "SELECT DISTINCT + PurchaseRequestID as prId, PurchaseRequestNumber as prNumber, PurchaseRequestDate as prDate, PurchaseRequestStatus as prStatus, @@ -119,41 +119,37 @@ class PurchaseRequestNonPersediaan extends MY_Controller ah.AssetHandoverID AS handoverID, ah.AssetHandoverDate AS handoverDate, ah.AssetHandoverToUserID AS handoverToUserID - FROM purchase_request - JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID - JOIN item_category ON item_category.ItemCategoryID = PurchaseRequestItemCategoryID - JOIN m_user requestedBy ON requestedBy.M_UserID = PurchaseRequestRequestedBy - LEFT JOIN m_user approvedBy ON approvedBy.M_UserID = PurchaseRequestApprovedBy - LEFT JOIN m_branch ON M_BranchCode = PurchaseRequestM_BranchCode - LEFT JOIN asset_handover ah - ON ah.AssetHandoverPurchaseRequestID = PurchaseRequestID + FROM purchase_request + JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID + JOIN item_category ON item_category.ItemCategoryID = PurchaseRequestItemCategoryID + JOIN m_user requestedBy ON requestedBy.M_UserID = PurchaseRequestRequestedBy + LEFT JOIN m_user approvedBy ON approvedBy.M_UserID = PurchaseRequestApprovedBy + LEFT JOIN m_branch ON M_BranchCode = PurchaseRequestM_BranchCode + LEFT JOIN asset_handover ah ON ah.AssetHandoverPurchaseRequestID = PurchaseRequestID AND ah.AssetHandoverIsActive = 'Y' - WHERE - PurchaseRequestIsActive = 'Y' AND - PurchaseRequestItemCategoryID <> '1' AND - ( PurchaseRequestDate BETWEEN ? AND ? ) AND - ( PurchaseRequestStatus = ? OR ? = '' ) AND - ( PurchaseRequestNumber LIKE ? ) + WHERE PurchaseRequestIsActive = 'Y' + AND PurchaseRequestItemCategoryID <> '1' + AND ( PurchaseRequestDate BETWEEN ? AND ? ) + AND ( PurchaseRequestStatus = ? OR ? = '' ) + AND ( PurchaseRequestNumber LIKE ? ) $filterBranch $filterRegional - ORDER BY PurchaseRequestID DESC - LIMIT ?, ?"; + ORDER BY PurchaseRequestID DESC + LIMIT ?, ?"; $exec = $this->db->query($sql, $params); if (!$exec) { $this->sys_error_db("select purchase request", $this->db); exit; } - //echo $this->db->last_query(); - //exit; $rows = $exec->result_array(); - - + $query = $this->db->last_query(); $result = array( "total" => $totalPage, "totalFilter" => $totalCount, - "records" => $rows + "records" => $rows, + "db" => $query ); $this->sys_ok($result); diff --git a/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php b/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php index 88a3ffd..b9e1740 100644 --- a/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php +++ b/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php @@ -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) {