add: getDataKontrakPoAset api
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user