add: getDataKontrakPoAset api

This commit is contained in:
2026-07-09 10:16:03 +07:00
committed by sasadib
parent fc9947bce4
commit 5fd6db863a
2 changed files with 191 additions and 0 deletions

View File

@@ -186,6 +186,16 @@ Content-Type: application/json
"status": "All" "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 // create po asset
POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/createPoAsset/ POST https://{{host}}/mockup/purchase/order/PurchaseOrderAset/createPoAsset/

View File

@@ -268,6 +268,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 ## ## MUTATIONS ##
public function createPoAsset() { public function createPoAsset() {
try { try {