From 77fc97e9647101efef85cc706b19279cea0c31fc Mon Sep 17 00:00:00 2001 From: bintanghr Date: Thu, 9 Jul 2026 10:16:03 +0700 Subject: [PATCH] add: getDataKontrakPoAset api --- .../mockup/purchase/order/PurchaseOrder.http | 10 + .../purchase/order/PurchaseOrderAset.php | 181 ++++++++++++++++++ 2 files changed, 191 insertions(+) diff --git a/application/controllers/mockup/purchase/order/PurchaseOrder.http b/application/controllers/mockup/purchase/order/PurchaseOrder.http index c410aca..40f7898 100644 --- a/application/controllers/mockup/purchase/order/PurchaseOrder.http +++ b/application/controllers/mockup/purchase/order/PurchaseOrder.http @@ -186,6 +186,16 @@ Content-Type: application/json "status": "All" } +### +// get data kontrak po asset +POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/getDataKontrakPoAset/ +Content-Type: application/json + +{ + "token": {{token}}, + "poID": 1 +} + ### // create po asset POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/createPoAsset/ diff --git a/application/controllers/mockup/purchase/order/PurchaseOrderAset.php b/application/controllers/mockup/purchase/order/PurchaseOrderAset.php index 3ca10fe..b9bd935 100644 --- a/application/controllers/mockup/purchase/order/PurchaseOrderAset.php +++ b/application/controllers/mockup/purchase/order/PurchaseOrderAset.php @@ -245,6 +245,187 @@ class PurchaseOrderAset extends MY_Controller { } } + public function getDataKontrakPoAset() { + try { + if (!$this->isLogin) { + $this->sys_error("invalid token"); + exit; + } + + $para = $this->sys_input; + + # get data from purchase order detail # + $sql_detail = "SELECT + PurchaseOrderID, + PurchaseRequestID, + PurchaseRequestNumber, + PurchaseOrderDetailPurchaseSummaryID AS PurchaseOrderSummaryID, + PurchaseOrderDetailPurchaseRequestDetailID AS PurchaseRequestDetailID, + PurchaseOrderDetailPurchaseRequestFlagID AS PurchaseRequestFlagID, + PurchaseOrderDetailRequestQty AS OriginalQty, + PurchaseOrderDetailQty AS RequestQty, + PurchaseOrderDetailPrice AS SupplierPrice, + PurchaseOrderDetailTotal, + PurchaseOrderDetailItemID AS M_ItemID, + M_ItemCode, + M_ItemDesc, + PurchaseOrderDetailItemUnitID AS ItemUnitID, + ItemUnitName + FROM purchase_order + JOIN purchase_order_detail ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID + AND PurchaseOrderDetailIsActive = 'Y' + JOIN purchase_request ON PurchaseRequestID = PurchaseOrderDetailPurchaseRequestID + JOIN m_item ON M_ItemID = PurchaseOrderDetailItemID + JOIN itemunit ON ItemUnitID = PurchaseOrderDetailItemUnitID + WHERE PurchaseOrderDetailIsActive = 'Y' + AND PurchaseOrderID = ?"; + $que_detail = $this->db->query($sql_detail, [$para['poID']]); + if (!$que_detail) { + $this->sys_error_db("[Error] failed get data po detail asset"); + exit; + } + $detail_asset = $que_detail->result_array(); + + # get data from purchase order summary # + $sql_sumry = "SELECT + PurchaseOrderID, + PurchaseOrderSummaryID, + PurchaseOrderSummaryQty AS RequestQty, + PurchaseOrderSummaryPrice AS SupplierPrice, + PurchaseOrderSummaryDiscountRupiah AS DiskonRupiah, + PurchaseOrderSummaryDiscountPercent AS DiskonPercent, + PurchaseOrderSummaryDiscountAmount AS DiskonAmount, + PurchaseOrderSummaryDiscountType AS DiskonType, + (PurchaseOrderSummaryPrice - PurchaseOrderSummaryDiscountAmount) AS EndPrice, + PurchaseOrderSummaryTotal AS TempTotal, + PurchaseOrderSummaryItemID AS M_ItemID, + M_ItemCode, + M_ItemDesc, + PurchaseOrderSummaryItemUnitID AS ItemUnitID, + ItemUnitName + FROM purchase_order + JOIN purchase_order_summary ON PurchaseOrderSummaryPurchaseOrderID = PurchaseOrderID + JOIN m_item ON M_ItemID = PurchaseOrderSummaryItemID + JOIN itemunit ON ItemUnitID = PurchaseOrderSummaryItemUnitID + WHERE PurchaseOrderSummaryIsActive = 'Y' + AND PurchaseOrderID = ?"; + $que_sumry = $this->db->query($sql_sumry, [$para['poID']]); + if (!$que_sumry) { + $this->sys_error_db("[Error] failed get data po summary asset"); + exit; + } + $data_sumry = $que_sumry->result_array(); + + # get data from purchase order # + $sql_poasset = "SELECT + PurchaseOrderID, + PurchaseOrderDate AS podate, + PurchaseOrderNote AS catatan, + PurchaseOrderNumber, + PurchaseOrderStatus, + PurchaseOrderRefNumber AS reference, + PurchaseOrderGrandTotal AS grandtotal, + CASE + WHEN PurchaseOrderTaxPpnType = 'P' THEN 'percent' + ELSE 'absolute' + END AS typepajak, + CASE + WHEN PurchaseOrderTaxPpnType = 'P' THEN PurchaseOrderTaxPercentPpn + ELSE PurchaseOrderTaxAmountPpn + END AS valuepajak, + CASE + WHEN PurchaseOrderDiscountPercent > 0.00 THEN 'percent' + ELSE 'absolute' + END AS typediskon, + CASE + WHEN PurchaseOrderDiscountPercent > 0.00 THEN PurchaseOrderDiscountPercent + ELSE PurchaseOrderDiscountAmount + END AS valuediskon, + PurchaseOrderSubTotal AS subtotal, + PurchaseOrderGrandTotal AS grandtotal, + SupplierID AS supplierID, + SupplierName, + PurchaseOrderAssetContractID, + PurchaseOrderAssetContractTAssetAttachmentID AS assetAttachmentID, + PurchaseOrderAssetContractName AS contractName, + PurchaseOrderAssetContractDate AS contractDate, + PurchaseOrderAssetContractStartDate AS contractStart, + PurchaseOrderAssetContractEndDate AS contractEnd, + PurchaseOrderAssetContractDuration AS contractDuration, + PurchaseOrderAssetContractInstallmentNumber AS installmentNumber, + PurchaseOrderAssetContractInstallmentDate AS installmentDate, + PurchaseOrderAssetContractInstallmentPayAmount AS installmentPayAmount, + PurchaseOrderAssetContractInstallmentDownPaymentType AS installmentDownPaymentType, + PurchaseOrderAssetContractInstallmentDownPayment AS installmentDownPayment, + PurchaseOrderApprovedManagerUserID AS verifiedby + FROM purchase_order + JOIN supplier ON SupplierID = PurchaseOrderSupplierID + JOIN purchase_order_asset_contract + ON PurchaseOrderAssetContractPurchaseOrderID = PurchaseOrderID + WHERE PurchaseOrderIsActive = 'Y' + AND PurchaseOrderID = ?"; + $que_poasset = $this->db->query($sql_poasset, [$para['poID']]); + if (!$que_poasset) { + $this->sys_error_db("[Error] failed get data from purchase order"); + exit; + } + $datapo = $que_poasset->row_array(); + + # process data output # + /* map detail po to summary */ + $grouped_detailpo = array(); + foreach ($detail_asset as $obj) { + $idz = $obj['PurchaseOrderSummaryID']; + if (!isset($grouped_detailpo[$idz])) { + $grouped_detailpo[$idz] = array(); + } + + $grouped_detailpo[$idz][] = $obj; + } + + foreach ($data_sumry as $key => $summary) { + $ids = $summary['PurchaseOrderSummaryID']; + + if (isset($grouped_detailpo[$ids])) { + $data_sumry[$key]['detail'] = $grouped_detailpo[$ids]; + } else { + $data_sumry[$key]['detail'] = array(); + } + } + + $subtotal = floatval($datapo['subtotal']); + $grandtotal = floatval($datapo['grandtotal']); + + $valuediskon = floatval($datapo['valuediskon']); + if ($datapo['typediskon'] == 'percent') { + $valuediskon = round(floatval($datapo['valuediskon']) * $subtotal / 100, 2); + } + + $valuepajak = floatval($datapo['valuepajak']); + if ($datapo['typepajak'] == 'percent') { + $price = ($subtotal - $valuediskon); + $valuepajak = round(floatval($datapo['valuepajak']) * $price / 100, 2); + } + + $outsummary = [ + "subtotal" => $subtotal, + "diskon" => $valuediskon, + "pajak" => $valuepajak, + "total" => $grandtotal + ]; + /* map summary to purchase order */ + $datapo['valuepajak'] = floatval($datapo['valuepajak']); + $datapo['valuediskon'] = floatval($datapo['valuediskon']); + $datapo['detail'] = $data_sumry; + $datapo['summary'] = $outsummary; + + $this->sys_ok($datapo); + } catch (Exception $exc) { + $msg = $exc->getMessage(); + $this->sys_error($msg); + } + } + ## MUTATIONS ## public function createPoAsset() { try {