diff --git a/application/controllers/mockup/masterdata/accounting/Journalcashv2.php b/application/controllers/mockup/masterdata/accounting/Journalcashv2.php index 13792a4..5d10fb3 100644 --- a/application/controllers/mockup/masterdata/accounting/Journalcashv2.php +++ b/application/controllers/mockup/masterdata/accounting/Journalcashv2.php @@ -139,9 +139,7 @@ class Journalcashv2 extends MY_Controller LEFT JOIN m_branch ON jurnalM_BranchCode = M_BranchCode AND M_BranchIsActive = 'Y' WHERE $where_sql GROUP BY jurnalID - ORDER BY jurnalID DESC - "; - + ORDER BY jurnalID DESC"; // Ambil total count $sql_total = "SELECT COUNT(*) AS total FROM ($sql) AS x"; $qry_total = $this->db->query($sql_total, $params); @@ -165,7 +163,6 @@ class Journalcashv2 extends MY_Controller // Tambahkan LIMIT OFFSET $sql_paginated = $sql . " LIMIT ? OFFSET ?"; $params_paginated = array_merge($params, [$number_limit, $number_offset]); - $qry = $this->db->query($sql_paginated, $params_paginated); if ($qry) { @@ -276,12 +273,12 @@ class Journalcashv2 extends MY_Controller $regionalId = $prm["regionalId"] ?? null; $sql = "SELECT S_RegionalID, S_RegionalName - FROM s_regional - WHERE S_RegionalIsActive = 'Y' - AND S_RegionalID = ? - ORDER BY S_RegionalName ASC"; + FROM s_regional + WHERE S_RegionalIsActive = 'Y' + AND (S_RegionalID = ? OR 0 = ?) + ORDER BY S_RegionalID ASC"; - $qry = $this->db->query($sql, [$regionalId]); + $qry = $this->db->query($sql, [$regionalId, $regionalId]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("select regional", $this->db); @@ -364,6 +361,7 @@ class Journalcashv2 extends MY_Controller $this->sys_error($message); } } + function getUserApproveLevel() { try { diff --git a/application/controllers/mockup/masterdata/accounting/Journalgoodreceive.php b/application/controllers/mockup/masterdata/accounting/Journalgoodreceive.php index 5033c84..751f345 100644 --- a/application/controllers/mockup/masterdata/accounting/Journalgoodreceive.php +++ b/application/controllers/mockup/masterdata/accounting/Journalgoodreceive.php @@ -41,7 +41,9 @@ class Journalgoodreceive extends MY_Controller periodeMonth, CONCAT(periodeYear, ' - ',periodeMonth) as yearandmonth, periodeName, - CONCAT(DATE_FORMAT(periodeStartDate, '%d %M %Y'), ' - ', DATE_FORMAT(periodeEndDate, '%d %M %Y')) as periode + CONCAT(DATE_FORMAT(periodeStartDate, '%d %M %Y'), ' - ', DATE_FORMAT(periodeEndDate, '%d %M %Y')) as periode, + periodeEndDate AS periode_end, + periodeStartDate AS periode_start FROM periode WHERE periodeIsActive = 'Y' AND periodeIsClosed = 'N' @@ -70,9 +72,9 @@ class Journalgoodreceive extends MY_Controller $prm = $this->sys_input; $user = $this->sys_user; - $regionalId = $prm["regionalId"] ?? $user["S_RegionalID"]; - $branchCode = $prm["branchCode"] == "" ? $user["M_BranchCode"] : $prm["branchCode"]; - $periodeid = $prm["periodeid"] ?? null; + $regionalId = $prm["regionalId"]; + $branchCode = $prm["branchCode"]; + $periodeid = $prm["periodeid"] ?? 0; $xdate = $prm["xdate"] ?? null; $search = $prm["search"] ?? ""; $search = "%" . trim($search) . "%"; @@ -87,17 +89,33 @@ class Journalgoodreceive extends MY_Controller $params = [$periodeid, $xdate, $search]; // Filter login level - if ($loginLevel == "branch") { - $where_conditions[] = "jurnalM_BranchCode = ?"; - $params[] = $branchCode; - } elseif ($loginLevel == "regional") { - $where_conditions[] = "jurnalS_RegionalID = ?"; - $params[] = $regionalId; + switch ($loginLevel) { + case 'pusat': + $where_conditions[] = "(jurnalS_RegionalID = ? OR 0 = ?)"; + $params[] = $regionalId; + $params[] = $regionalId; - if (!empty($branchCode)) { + if (!empty($branchCode)) { + $where_conditions[] = "jurnalM_BranchCode = ?"; + $params[] = $branchCode; + } + break; + case 'regional': + $where_conditions[] = "jurnalS_RegionalID = ?"; + $params[] = $regionalId; + + if (!empty($branchCode)) { + $where_conditions[] = "jurnalM_BranchCode = ?"; + $params[] = $branchCode; + } + break; + case 'branch': $where_conditions[] = "jurnalM_BranchCode = ?"; $params[] = $branchCode; - } + break; + default: + $this->sys_error_db("user login level not found", $this->db); + exit; } // Gabungkan WHERE SQL @@ -131,16 +149,18 @@ class Journalgoodreceive extends MY_Controller '' as ErrMsg, '' as detailtx FROM jurnal - JOIN m_branch_company ON jurnalM_BranchCompanyID = M_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + JOIN m_branch_company ON jurnalM_BranchCompanyID = M_BranchCompanyID + AND M_BranchCompanyIsActive = 'Y' JOIN periode ON jurnalperiodeID = periodeID AND periodeIsActive = 'Y' - JOIN jurnal_type ON jurnalJurnalTypeID = JurnalTypeID AND JurnalTypeIsActive = 'Y' AND JurnalTypeIsAuto = 'Y' + JOIN jurnal_type ON jurnalJurnalTypeID = JurnalTypeID + AND JurnalTypeIsActive = 'Y' + AND JurnalTypeIsAuto = 'Y' AND JurnalTypeCode = 'AUTOGOODRECEIVE' JOIN s_regional ON JurnalS_RegionalID = S_RegionalID AND S_RegionalIsActive = 'Y' LEFT JOIN m_branch ON jurnalM_BranchCode = M_BranchCode AND M_BranchIsActive = 'Y' WHERE $where_sql GROUP BY jurnalID - ORDER BY jurnalID DESC - "; + ORDER BY jurnalID DESC"; // Ambil total count $sql_total = "SELECT COUNT(*) AS total FROM ($sql) AS x"; @@ -157,7 +177,6 @@ class Journalgoodreceive extends MY_Controller $totalCount = $qry_total->row()->total ?? 0; $totalPage = ceil($totalCount / $number_limit); } else { - $this->db->trans_rollback(); $this->sys_error_db("select jurnal count error", $this->db); exit(); } @@ -171,20 +190,18 @@ class Journalgoodreceive extends MY_Controller if ($qry) { $rows = $qry->result_array(); } else { - $this->db->trans_rollback(); $this->sys_error_db("select jurnal error", $this->db); exit(); } foreach ($rows as $key => $value) { $sql_err = "SELECT JurnalErr_ID, - JurnalErr_Msg - FROM jurnal_errors - WHERE JurnalErr_IsActive = 'Y' - AND JurnalErr_JurnalID = ?"; + JurnalErr_Msg + FROM jurnal_errors + WHERE JurnalErr_IsActive = 'Y' + AND JurnalErr_JurnalID = ?"; $qry_err = $this->db->query($sql_err, [$value["jurnalID"]]); if (!$qry_err) { - $this->db->trans_rollback(); $this->sys_error_db("select jurnal msg error", $this->db); exit(); } @@ -204,48 +221,43 @@ class Journalgoodreceive extends MY_Controller } $sql_detail = "SELECT - jurnalTxID, - jurnalTxJurnalID, - jurnalTxCoaID, - jurnalTxDescription, - jurnalTxDebit, - jurnalTxCredit, - coaID, - coaAccountNo, - coaDescription, - coaSubDescription, - coaAccountType, - coaIsInput, - coaReportSchedule, - coaCurrencyCode, - coaCashFlowCategory, - GROUP_CONCAT(jurnalAddOnCode SEPARATOR ', ') AS jurnalAddOnCode, - GROUP_CONCAT(jurnalAddOnValue SEPARATOR ' | ') AS jurnalAddOnValue, - GROUP_CONCAT(M_ItemDesc SEPARATOR ', ') AS jurnalAddOnItem - FROM jurnal_tx - JOIN coa ON jurnalTxCoaID = coaID AND coaIsActive = 'Y' - LEFT JOIN jurnal_addon ON jurnalTxID = jurnalAddOnJurnalTxID AND jurnalAddOnIsActive = 'Y' - -- AND (jurnalAddOnCode = 'RONUMB') - LEFT JOIN m_item ON M_ItemID = jurnalAddOnM_ItemID - WHERE jurnalTxIsActive = 'Y' - AND jurnalTxJurnalID = ? - GROUP BY jurnalTxID - ORDER BY - CASE - WHEN jurnalTxDebit > 0 THEN 0 - ELSE 1 - END, - jurnalTxID ASC"; + jurnalTxID, + jurnalTxJurnalID, + jurnalTxCoaID, + jurnalTxDescription, + jurnalTxDebit, + jurnalTxCredit, + coaID, + coaAccountNo, + coaDescription, + coaSubDescription, + coaAccountType, + coaIsInput, + coaReportSchedule, + coaCurrencyCode, + coaCashFlowCategory, + GROUP_CONCAT(jurnalAddOnCode SEPARATOR ', ') AS jurnalAddOnCode, + GROUP_CONCAT(jurnalAddOnValue SEPARATOR ' | ') AS jurnalAddOnValue, + GROUP_CONCAT(M_ItemDesc SEPARATOR ', ') AS jurnalAddOnItem + FROM jurnal_tx + JOIN coa ON jurnalTxCoaID = coaID AND coaIsActive = 'Y' + LEFT JOIN jurnal_addon ON jurnalTxID = jurnalAddOnJurnalTxID AND jurnalAddOnIsActive = 'Y' + LEFT JOIN m_item ON M_ItemID = jurnalAddOnM_ItemID + WHERE jurnalTxIsActive = 'Y' + AND jurnalTxJurnalID = ? + GROUP BY jurnalTxID + ORDER BY + CASE + WHEN jurnalTxDebit > 0 THEN 0 + ELSE 1 + END, + jurnalTxID ASC"; $qry_detail = $this->db->query($sql_detail, [$value["jurnalID"]]); if (!$qry_detail) { - $this->db->trans_rollback(); $this->sys_error_db("select jurnal tx error", $this->db); exit(); } - // echo $this->db->last_query(); - // exit; - $rows_detail = $qry_detail->result_array(); if (count($rows_detail) > 0) { $rows[$key]["detailtx"] = $rows_detail; @@ -276,15 +288,15 @@ class Journalgoodreceive extends MY_Controller $this->sys_error("Invalid Token"); } $prm = $this->sys_input; - $regionalId = $prm["regionalId"] ?? null; + $regionalId = $prm["regionalId"] ?? 0; $sql = "SELECT S_RegionalID, S_RegionalName - FROM s_regional - WHERE S_RegionalIsActive = 'Y' - AND S_RegionalID = ? - ORDER BY S_RegionalName ASC"; + FROM s_regional + WHERE S_RegionalIsActive = 'Y' + AND (S_RegionalID = ? OR 0 = ?) + ORDER BY S_RegionalName ASC"; - $qry = $this->db->query($sql, [$regionalId]); + $qry = $this->db->query($sql, [$regionalId, $regionalId]); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("select regional", $this->db); diff --git a/application/controllers/mockup/masterdata/accounting/Mditem.php b/application/controllers/mockup/masterdata/accounting/Mditem.php index bcd6d20..f557bc4 100644 --- a/application/controllers/mockup/masterdata/accounting/Mditem.php +++ b/application/controllers/mockup/masterdata/accounting/Mditem.php @@ -48,7 +48,7 @@ class Mditem extends MY_Controller $number_offset = ($prm['current_page'] - 1) * $number_limit; } - $sql = "SELECT + $sql = "SELECT M_ItemID, M_ItemCode, M_ItemDesc, @@ -67,18 +67,18 @@ class Mditem extends MY_Controller Fa_ClassID, Fa_ClassName, Fa_ClassFlagType, - Fa_InventarisGolID, - Fa_InventarisGolName, + M_InventarisGolID, + M_InventarisGolName, ItemUnitID, ItemUnitCode, GROUP_CONCAT(ItemUnitName) as ItemUnitName, '' as satuan FROM m_item LEFT JOIN item_category ON M_ItemItem_CategoryID = itemCategoryID - LEFT JOIN nat_group ON M_ItemNat_GroupID = Nat_GroupID + LEFT JOIN nat_group ON M_ItemNat_GroupID = Nat_GroupID LEFT JOIN nat_subgroup ON M_ItemNat_SubGroupID = Nat_SubGroupID LEFT JOIN fa_class ON M_ItemFa_ClassID = Fa_ClassID - LEFT JOIN fa_inventaris_gol ON M_ItemM_InventarisGolID = Fa_InventarisGolID + LEFT JOIN m_inventaris_gol ON M_ItemM_InventarisGolID = M_InventarisGolID LEFT JOIN itemunitmap ON M_ItemID = ItemUnitMapM_ItemID AND ItemUnitMapIsActive = 'Y' LEFT JOIN itemunit ON ItemUnitMapItemUnitID = ItemUnitID @@ -107,7 +107,7 @@ class Mditem extends MY_Controller ItemUnitMapIsPurchase, ItemUnitMapIsReport, ItemUnitMapIsBase, - CASE + CASE WHEN ItemUnitMapIsPurchase = 'Y' THEN 'purchase' WHEN ItemUnitMapIsReport = 'Y' THEN 'report' WHEN ItemUnitMapIsBase = 'Y' THEN 'base' @@ -121,7 +121,7 @@ class Mditem extends MY_Controller JOIN itemunit ON ItemUnitMapItemUnitID = ItemUnitID AND ItemUnitIsActive = 'Y' - Where + Where ItemUnitMapIsActive = 'Y' AND ItemUnitMapM_ItemID = ?"; $qry = $this->db->query($sql, array($value['M_ItemID'])); @@ -137,10 +137,10 @@ class Mditem extends MY_Controller SELECT M_ItemID FROM m_item LEFT JOIN item_category ON M_ItemItem_CategoryID = itemCategoryID - LEFT JOIN nat_group ON M_ItemNat_GroupID = Nat_GroupID + LEFT JOIN nat_group ON M_ItemNat_GroupID = Nat_GroupID LEFT JOIN nat_subgroup ON M_ItemNat_SubGroupID = Nat_SubGroupID LEFT JOIN fa_class ON M_ItemFa_ClassID = Fa_ClassID - LEFT JOIN fa_inventaris_gol ON M_ItemM_InventarisGolID = Fa_InventarisGolID + LEFT JOIN m_inventaris_gol ON M_ItemM_InventarisGolID = M_InventarisGolID LEFT JOIN itemunitmap ON M_ItemID = ItemUnitMapM_ItemID AND ItemUnitMapIsActive = 'Y' LEFT JOIN itemunit ON ItemUnitMapItemUnitID = ItemUnitID @@ -187,7 +187,7 @@ class Mditem extends MY_Controller $where .= " AND itemCategoryName LIKE '%$search%'"; } - $sql = "SELECT + $sql = "SELECT itemCategoryID, itemCategoryName FROM item_category @@ -229,7 +229,7 @@ class Mditem extends MY_Controller // $where .= " AND Nat_GroupName LIKE '%$search%'"; // } - $sql = "SELECT + $sql = "SELECT Nat_GroupID, Nat_GroupName FROM nat_group @@ -275,7 +275,7 @@ class Mditem extends MY_Controller $where .= " AND Nat_GroupName LIKE '%$search%'"; } - $sql = "SELECT + $sql = "SELECT Nat_GroupID, Nat_GroupCode, Nat_GroupName @@ -315,7 +315,7 @@ class Mditem extends MY_Controller $search = isset($prm["search"]) ? $prm["search"] : ""; $groupId = $prm["group_id"]; - $sql = "SELECT + $sql = "SELECT Nat_SubGroupID, Nat_SubGroupNat_GroupID, Nat_SubGroupCode, @@ -323,9 +323,9 @@ class Mditem extends MY_Controller Nat_SubGroupLangName, Nat_SubGroupIsResult, Nat_SubGroupReportTitle - FROM nat_subgroup - WHERE Nat_SubGroupIsActive = 'Y' - AND Nat_SubGroupName LIKE '%$search%' + FROM nat_subgroup + WHERE Nat_SubGroupIsActive = 'Y' + AND Nat_SubGroupName LIKE '%$search%' AND Nat_SubGroupNat_GroupID = $groupId ORDER BY Nat_SubGroupID DESC"; @@ -362,7 +362,7 @@ class Mditem extends MY_Controller $search = isset($prm["search"]) ? $prm["search"] : ""; $flag_type = isset($prm["flag_type"]) ? $prm["flag_type"] : ""; - $sql = "SELECT + $sql = "SELECT Fa_ClassID, Fa_ClassName, Fa_ClassFlagType, @@ -379,7 +379,7 @@ class Mditem extends MY_Controller Fa_ClassAccumLastUpdated, Fa_ClassIsActive, Fa_ClassM_UserID - FROM fa_class + FROM fa_class WHERE Fa_ClassIsActive = 'Y' AND Fa_ClassFlagType = '{$flag_type}' AND Fa_ClassName LIKE '%$search%' @@ -408,7 +408,7 @@ class Mditem extends MY_Controller } } - function get_fa_inventaris_gol() + function get_inventaris_gol() { try { if (!$this->isLogin) { @@ -419,22 +419,21 @@ class Mditem extends MY_Controller $prm = $this->sys_input; $search = isset($prm["search"]) ? $prm["search"] : ""; - $sql = "SELECT - Fa_InventarisGolID, - Fa_InventarisGolName, - Fa_InventarisGolCreated, - Fa_InventarisGolLastUpdated, - Fa_InventarisGolIsActive, - Fa_InventarisGolUserID - FROM fa_inventaris_gol - WHERE Fa_InventarisGolIsActive = 'Y' - - ORDER BY Fa_InventarisGolID DESC"; + $sql = "SELECT + M_InventarisGolID, + M_InventarisGolName, + M_InventarisGolCreated, + M_InventarisGolLastUpdated, + M_InventarisGolIsActive, + M_InventarisGolUserID + FROM m_inventaris_gol + WHERE M_InventarisGolIsActive = 'Y' + ORDER BY M_InventarisGolID DESC"; $query = $this->db->query($sql); if (!$query) { - $this->sys_error_db("fa inventaris gol list", $this->db); + $this->sys_error_db("m inventaris gol list", $this->db); exit; } @@ -463,7 +462,7 @@ class Mditem extends MY_Controller $prm = $this->sys_input; $search = isset($prm["search"]) ? $prm["search"] : ""; - $sql = "SELECT + $sql = "SELECT ItemUnitID, ItemUnitCode, ItemUnitName, @@ -471,7 +470,7 @@ class Mditem extends MY_Controller ItemUnitLastUpdated, ItemUnitIsActive, ItemUnitUserID - FROM itemunit + FROM itemunit WHERE ItemUnitIsActive = 'Y' AND ItemUnitName LIKE '%$search%' ORDER BY ItemUnitID DESC"; @@ -561,7 +560,7 @@ class Mditem extends MY_Controller M_ItemItem_CategoryID, M_ItemInventoryCode, M_ItemNat_GroupID, - M_ItemNat_SubGroupID, + M_ItemNat_SubGroupID, M_ItemFa_ClassID, M_ItemM_InventarisGolID, M_ItemIsActive, @@ -622,7 +621,7 @@ class Mditem extends MY_Controller $sql = "INSERT INTO itemunitmap( ItemUnitMapM_ItemID, - ItemUnitMapItemUnitID, + ItemUnitMapItemUnitID, ItemUnitMapIsPurchase, ItemUnitMapIsReport, ItemUnitMapIsBase, @@ -736,7 +735,7 @@ class Mditem extends MY_Controller M_ItemItem_CategoryID = ?, M_ItemInventoryCode = ?, M_ItemNat_GroupID = ?, - M_ItemNat_SubGroupID = ?, + M_ItemNat_SubGroupID = ?, M_ItemFa_ClassID = ?, M_ItemM_InventarisGolID = ?, M_ItemIsActive = 'Y', @@ -825,7 +824,7 @@ class Mditem extends MY_Controller // insert $sql = "INSERT INTO itemunitmap( ItemUnitMapM_ItemID, - ItemUnitMapItemUnitID, + ItemUnitMapItemUnitID, ItemUnitMapIsPurchase, ItemUnitMapIsReport, ItemUnitMapIsBase, @@ -902,7 +901,7 @@ class Mditem extends MY_Controller $sql_delete = "UPDATE m_item SET M_ItemIsActive = 'N', M_ItemLastUpdated = NOW(), - M_ItemM_UserID = ? + M_ItemM_UserID = ? WHERE M_ItemID = ?"; $query_delete = $this->db->query($sql_delete, [ diff --git a/application/controllers/mockup/purchase/faktur/Fakturv4.php b/application/controllers/mockup/purchase/faktur/Fakturv4.php index 8159714..83712ee 100644 --- a/application/controllers/mockup/purchase/faktur/Fakturv4.php +++ b/application/controllers/mockup/purchase/faktur/Fakturv4.php @@ -28,7 +28,7 @@ class Fakturv4 extends MY_Controller } $branchid = $this->sys_user['M_BranchID']; - $sql = "SELECT + $sql = "SELECT M_StaffID, M_StaffName, M_StaffCode @@ -76,7 +76,7 @@ class Fakturv4 extends MY_Controller SupplierName, IFNULL(SupplierTermOfPayment, 0) AS SupplierTermOfPayment FROM supplier - WHERE SupplierName LIKE ? + WHERE SupplierName LIKE ? AND SupplierIsActive = 'Y'"; $qry = $this->db->query($sql, [$name]); if (!$qry) { @@ -115,10 +115,10 @@ class Fakturv4 extends MY_Controller PurchaseOrderNumber, PurchaseOrderDetailID FROM purchase_order - JOIN purchase_order_detail + JOIN purchase_order_detail ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID AND PurchaseOrderDetailIsActive = 'Y' - JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID + JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID AND WarehouseIsActive = 'Y' JOIN receive_order_po_detail ON ReceiveOrderPoDetailPurchaseOrderDetailID = PurchaseOrderDetailID @@ -172,10 +172,10 @@ class Fakturv4 extends MY_Controller PurchaseOrderNumber, PurchaseOrderDetailID FROM purchase_order - JOIN purchase_order_detail + JOIN purchase_order_detail ON PurchaseOrderDetailPurchaseOrderID = PurchaseOrderID AND PurchaseOrderDetailIsActive = 'Y' - JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID + JOIN warehouse ON WarehouseID = PurchaseOrderDetailWarehouseID AND WarehouseIsActive = 'Y' JOIN receive_order_po_detail ON ReceiveOrderPoDetailPurchaseOrderDetailID = PurchaseOrderDetailID @@ -232,10 +232,10 @@ class Fakturv4 extends MY_Controller PurchaseOrderTaxPercentPpn, PurchaseOrderGrandTotal, PurchaseOrderShippingCost, - PurchaseOrderDiscountAmount, + PurchaseOrderDiscountAmount, PurchaseOrderDiscountPercent, - IF (PurchaseOrderDiscountAmount > 0, - 'R', + IF (PurchaseOrderDiscountAmount > 0, + 'R', 'P' ) AS DiscountType FROM purchase_order @@ -263,7 +263,7 @@ class Fakturv4 extends MY_Controller { try { if (!$this->isLogin) { - $this->sys_error(); + $this->sys_error("invalid token"); exit; } @@ -324,7 +324,7 @@ class Fakturv4 extends MY_Controller $page = ($para['currpage'] - 1) * $limit; } - $sql = "SELECT + $sql = "SELECT ReceiveOrderPoDetailPurchaseOrderID, ReceiveOrderPoDetailPurchaseOrderSummaryID, ReceiveOrderPoDetailReceiveOrderPoID, @@ -336,12 +336,12 @@ class Fakturv4 extends MY_Controller unitreceive.ItemUnitName as ReceiveOrderPoItemUnitName, ReceiveOrderPoDetailQty, ReceiveOrderPoDetailPrice, - IF (PurchaseOrderSummaryDiscountType = 'R', - PurchaseOrderSummaryDiscountRupiah, + IF (PurchaseOrderSummaryDiscountType = 'R', + PurchaseOrderSummaryDiscountRupiah, PurchaseOrderSummaryDiscountPercent ) as Discount, - PurchaseOrderSummaryDiscountType, - ReceiveOrderPoDetailDiskonPoProrata + PurchaseOrderSummaryDiscountType, + ReceiveOrderPoDetailDiskonPoProrata FROM receive_order_po_detail JOIN receive_order_po ON ReceiveOrderPoDetailReceiveOrderPoID = ReceiveOrderPoID AND ReceiveOrderPoIsActive = 'Y' @@ -356,8 +356,8 @@ class Fakturv4 extends MY_Controller AND ReceiveOrderPoID = ? AND M_ItemDesc LIKE ? AND NOT EXISTS ( - SELECT 1 - FROM supplier_invoice_detail + SELECT 1 + FROM supplier_invoice_detail WHERE SupplierInvoiceDetailReceiveOrderPoDetailID = ReceiveOrderPoDetailID AND SupplierInvoiceDetailIsActive = 'Y' ) @@ -383,8 +383,8 @@ class Fakturv4 extends MY_Controller AND ReceiveOrderPoID = ? AND M_ItemDesc LIKE ? AND NOT EXISTS ( - SELECT 1 - FROM supplier_invoice_detail + SELECT 1 + FROM supplier_invoice_detail WHERE SupplierInvoiceDetailReceiveOrderPoDetailID = ReceiveOrderPoDetailID AND SupplierInvoiceDetailIsActive = 'Y' )"; @@ -438,31 +438,39 @@ class Fakturv4 extends MY_Controller } $sqltal = "SELECT COUNT(*) as total - FROM supplier_invoice - JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID - JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID - JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID - LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID - AND WarehouseM_BranchID = ? - JOIN supplier ON SupplierID = SupplierInvoiceSupplierID - AND SupplierIsActive = 'Y' - LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID - LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID - WHERE SupplierInvoiceIsActive = 'Y' - AND ( - SupplierInvoiceNumber LIKE ? OR - SupplierInvoiceDeliveryOrderNumber LIKE ? OR - SupplierInvoiceSupplierInvoiceNumber LIKE ? - ) - AND SupplierInvoiceDate >= DATE(?) - AND SupplierInvoiceDate <= DATE(?) - AND (? = 'All' OR SupplierInvoiceStatus = ?) - AND (? = '0' OR SupplierInvoiceSupplierID = ?) - GROUP BY SupplierInvoiceID - ORDER BY SUpplierInvoiceID DESC"; + FROM supplier_invoice + JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID + JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID + JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID + LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID + AND WarehouseM_BranchID = ? + JOIN supplier ON SupplierID = SupplierInvoiceSupplierID + AND SupplierIsActive = 'Y' + LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID + LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID + WHERE SupplierInvoiceIsActive = 'Y' + AND ( + SupplierInvoiceNumber LIKE ? OR + SupplierInvoiceRefNumber LIKE ? OR + SupplierInvoiceSupplierInvoiceNumber LIKE ? + ) + AND SupplierInvoiceDate >= DATE(?) + AND SupplierInvoiceDate <= DATE(?) + AND (? = 'All' OR SupplierInvoiceStatus = ?) + AND (? = '0' OR SupplierInvoiceSupplierID = ?) + GROUP BY SupplierInvoiceID + ORDER BY SUpplierInvoiceID DESC"; $quetal = $this->db->query($sqltal, [ - $branchID, $nomo, $nomo, $nomo, $date, $enddate, - $status, $status, $supplier, $supplier + $branchID, + $nomo, + $nomo, + $nomo, + $date, + $enddate, + $status, + $status, + $supplier, + $supplier ]); if (!$quetal) { $this->sys_error_db("[Error] get total data faktur"); @@ -470,52 +478,61 @@ class Fakturv4 extends MY_Controller } $total = $quetal->result_array()[0]['total']; - $sqlfak = "SELECT - SupplierInvoiceID, - SupplierInvoiceNumber, - SupplierInvoiceDate, - SupplierInvoiceDueDate, - SupplierInvoiceDraftPaymentDate, - SupplierInvoiceSupplierID, - SupplierName, - SupplierInvoiceStatus, - SupplierInvoiceNote, - SupplierInvoiceGrandTotal, - SupplierInvoiceSupplierInvoiceNumber, - CASE - WHEN WarehouseType = 'B' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName) - WHEN WarehouseType = 'R' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName) - ELSE '' - END as WarehouseName, - ReceiveOrderPoID, - PurchaseOrderItemCategoryID - FROM supplier_invoice - JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID - JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID - JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID - LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID - AND WarehouseM_BranchID = ? - JOIN supplier ON SupplierID = SupplierInvoiceSupplierID - AND SupplierIsActive = 'Y' - LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID - LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID - WHERE SupplierInvoiceIsActive = 'Y' - AND ( - SupplierInvoiceNumber LIKE ? OR - SupplierInvoiceDeliveryOrderNumber LIKE ? OR - SupplierInvoiceSupplierInvoiceNumber LIKE ? - ) - AND SupplierInvoiceDate >= DATE(?) - AND SupplierInvoiceDate <= DATE(?) - AND (? = 'All' OR SupplierInvoiceStatus = ?) - AND (? = '0' OR SupplierInvoiceSupplierID = ?) - GROUP BY SupplierInvoiceID - ORDER BY SUpplierInvoiceID DESC - LIMIT ? OFFSET ?"; + $sqlfak = "SELECT + SupplierInvoiceID, + SupplierInvoiceNumber, + SupplierInvoiceDate, + SupplierInvoiceDueDate, + SupplierInvoiceDraftPaymentDate, + SupplierInvoiceSupplierID, + SupplierName, + SupplierInvoiceStatus, + SupplierInvoiceNote, + SupplierInvoiceGrandTotal, + SupplierInvoiceSupplierInvoiceNumber, + CASE + WHEN WarehouseType = 'B' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', M_BranchName) + WHEN WarehouseType = 'R' THEN CONCAT(WarehouseCode,' ', WarehouseName, ' - ', S_RegionalName) + ELSE '' + END as WarehouseName, + ReceiveOrderPoID, + PurchaseOrderItemCategoryID + FROM supplier_invoice + JOIN supplier_invoice_detail ON SupplierInvoiceID = SupplierInvoiceDetailSupplierInvoiceID + JOIN receive_order_po ON SupplierInvoiceDetailReceiveOrderPoID = ReceiveOrderPoID + JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID + LEFT JOIN warehouse ON ReceiveOrderPoWarehouseID = WarehouseID + AND WarehouseM_BranchID = ? + JOIN supplier ON SupplierID = SupplierInvoiceSupplierID + AND SupplierIsActive = 'Y' + LEFT JOIN m_branch ON M_BranchID = WarehouseM_BranchID + LEFT JOIN s_regional ON S_RegionalID = WarehouseS_RegionalID + WHERE SupplierInvoiceIsActive = 'Y' + AND ( + SupplierInvoiceNumber LIKE ? OR + SupplierInvoiceRefNumber LIKE ? OR + SupplierInvoiceSupplierInvoiceNumber LIKE ? + ) + AND SupplierInvoiceDate >= DATE(?) + AND SupplierInvoiceDate <= DATE(?) + AND (? = 'All' OR SupplierInvoiceStatus = ?) + AND (? = '0' OR SupplierInvoiceSupplierID = ?) + GROUP BY SupplierInvoiceID + ORDER BY SUpplierInvoiceID DESC + LIMIT ? OFFSET ?"; $quefak = $this->db->query($sqlfak, [ - $branchID, $nomo, $nomo, $nomo, $date, $enddate, - $status, $status, $supplier, $supplier, - $limit, $hal + $branchID, + $nomo, + $nomo, + $nomo, + $date, + $enddate, + $status, + $status, + $supplier, + $supplier, + $limit, + $hal ]); if (!$quefak) { $this->sys_error_db("[Error] get list data faktur"); @@ -543,7 +560,7 @@ class Fakturv4 extends MY_Controller $para = $this->sys_input; - $sql = "SELECT + $sql = "SELECT SupplierInvoiceID, SupplierInvoiceDate, SupplierInvoiceDueDate, @@ -566,14 +583,14 @@ class Fakturv4 extends MY_Controller SupplierInvoiceAdjustmentAmount, SupplierInvoiceAdjustmentNote, SupplierInvoiceNote, - IF (SupplierInvoiceDiscountAmount > 0, - 'R', + IF (SupplierInvoiceDiscountAmount > 0, + 'R', 'P' ) AS DiscountType, SupplierInvoiceReceiveOrderPoID, ReceiveOrderPoNumber FROM supplier_invoice - JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN supplier ON SupplierInvoiceSupplierID = SupplierID JOIN receive_order_po ON ReceiveOrderPoID = SupplierInvoiceReceiveOrderPoID -- JOIN purchase_order ON SupplierInvoicePurchaseOrderID = PurchaseOrderID -- AND PurchaseOrderIsActive = 'Y' @@ -585,7 +602,7 @@ class Fakturv4 extends MY_Controller exit; } - $sqldet = "SELECT + $sqldet = "SELECT SupplierInvoiceDetailID, SupplierInvoiceDetailSupplierInvoiceID, SupplierInvoiceDetailPurchaseOrderID, @@ -611,7 +628,7 @@ class Fakturv4 extends MY_Controller AND M_ItemIsActive = 'Y' JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID AND PurchaseOrderIsActive = 'Y' - WHERE SupplierInvoiceDetailIsActive = 'Y' + WHERE SupplierInvoiceDetailIsActive = 'Y' AND SupplierInvoiceDetailSupplierInvoiceID = ?"; $quedet = $this->db->query($sqldet, [$para['SInvoiceID']]); if (!$quedet) { @@ -630,7 +647,8 @@ class Fakturv4 extends MY_Controller } } - public function LookupAttachment() { + public function LookupAttachment() + { try { if (!$this->isLogin) { $this->sys_error("invalid token"); @@ -640,14 +658,14 @@ class Fakturv4 extends MY_Controller $para = $this->sys_input; $data = []; - $sql = "SELECT - ReceiveOrderPoDocumentID AS attach_id, + $sql = "SELECT + ReceiveOrderPoDocumentID AS attach_id, ReceiveOrderPoDocumentFile AS img_url, ReceiveOrderPoDocumentCreated AS created - FROM receive_order_po_document + FROM receive_order_po_document WHERE ReceiveOrderPoDocumentReceiveOrderPoID = ? AND ReceiveOrderPoDocumentIsActive = 'Y'"; - $que = $this->db->query($sql, [ $para['roID'] ]); + $que = $this->db->query($sql, [$para['roID']]); if (!$que) { $this->sys_error_db("[Error] failed get data attachment inventaris"); exit; @@ -657,7 +675,10 @@ class Fakturv4 extends MY_Controller foreach ($rows as $key => $value) { $rows[$key]['category'] = $para['category']; } - $data[] = $rows; + + if (count($rows) > 0) { + $data = $rows; + } $this->sys_ok($data); } catch (Exception $exc) { @@ -672,7 +693,7 @@ class Fakturv4 extends MY_Controller { try { if (!$this->isLogin) { - $this->sys_error(); + $this->sys_error("invalid token"); exit; } @@ -697,7 +718,7 @@ class Fakturv4 extends MY_Controller $areatype = 'R'; } - $sqlusrdivisi = "SELECT M_UserDivisionDivisionID FROM m_userdivision + $sqlusrdivisi = "SELECT M_UserDivisionDivisionID FROM m_userdivision WHERE M_UserDivisionM_UserID = ? AND M_UserDivisionIsActive = 'Y'"; $queusrdivisi = $this->db->query($sqlusrdivisi, [$user['M_UserID']]); if (!$queusrdivisi) { @@ -717,10 +738,10 @@ class Fakturv4 extends MY_Controller $numpd = $quenum->row_array()['numpd']; /* - *== Validasi untuk mencegah double click simpan faktur + *== Validasi untuk mencegah double click simpan faktur */ - $sqlcheck = "SELECT SupplierInvoiceID FROM supplier_invoice - WHERE SupplierInvoiceSupplierInvoiceNumber = ? + $sqlcheck = "SELECT SupplierInvoiceID FROM supplier_invoice + WHERE SupplierInvoiceSupplierInvoiceNumber = ? AND SupplierInvoiceRefNumber = ? AND SupplierInvoicePurchaseOrderID = ? AND SupplierInvoiceGrandTotal = ? @@ -847,7 +868,7 @@ class Fakturv4 extends MY_Controller { try { if (!$this->isLogin) { - $this->sys_error(); + $this->sys_error("invalid token"); exit; } $para = $this->sys_input; @@ -857,7 +878,7 @@ class Fakturv4 extends MY_Controller $this->db->trans_begin(); $sqlupdate = "UPDATE supplier_invoice - SET + SET SupplierInvoicePurchaseOrderID = ?, SupplierInvoiceDate = ?, SupplierInvoiceDueDate = ?, @@ -883,7 +904,7 @@ class Fakturv4 extends MY_Controller SupplierInvoiceDraftPaymentDate = ?, SupplierInvoiceLastUpdated = NOW(), SupplierInvoiceLastUpdatedUserID = ? - WHERE + WHERE SupplierInvoiceID = ?"; $qryupdate = $this->db->query($sqlupdate, [ $para['SIPoID'], @@ -918,8 +939,8 @@ class Fakturv4 extends MY_Controller exit; } - $sqldel = "UPDATE supplier_invoice_detail - SET SupplierInvoiceDetailIsActive = 'N' + $sqldel = "UPDATE supplier_invoice_detail + SET SupplierInvoiceDetailIsActive = 'N' WHERE SupplierInvoiceDetailIsActive = 'Y' AND SupplierInvoiceDetailSupplierInvoiceID = ?"; $qrydel = $this->db->query($sqldel, [$fakturID]); @@ -1080,9 +1101,9 @@ class Fakturv4 extends MY_Controller $userID = $this->sys_user["M_UserID"]; $this->db->trans_begin(); - $sqldel = "UPDATE supplier_invoice - SET SupplierInvoiceIsActive = 'N' - WHERE SupplierInvoiceIsActive = 'Y' + $sqldel = "UPDATE supplier_invoice + SET SupplierInvoiceIsActive = 'N' + WHERE SupplierInvoiceIsActive = 'Y' AND SupplierInvoiceID = ?"; $qrydel = $this->db->query($sqldel, [$para['SInvoiceID']]); if (!$qrydel) { @@ -1092,8 +1113,8 @@ class Fakturv4 extends MY_Controller } - $sqldel2 = "UPDATE supplier_invoice_detail - SET SupplierInvoiceDetailIsActive = 'N' + $sqldel2 = "UPDATE supplier_invoice_detail + SET SupplierInvoiceDetailIsActive = 'N' WHERE SupplierInvoiceDetailIsActive = 'Y' AND SupplierInvoiceDetailSupplierInvoiceID = ?"; $qrydel2 = $this->db->query($sqldel2, [$para['SInvoiceID']]); @@ -1147,7 +1168,7 @@ class Fakturv4 extends MY_Controller $this->db->trans_begin(); // update status faktur ke approved - $sqlupd = "UPDATE supplier_invoice SET + $sqlupd = "UPDATE supplier_invoice SET SupplierInvoiceStatus = 'Verified', SupplierInvoiceVerifiedDate = NOW(), SupplierInvoiceVerifiedUserID = ?, @@ -1166,7 +1187,7 @@ class Fakturv4 extends MY_Controller SupplierInvoiceDetailIsVerified = 'Y', SupplierInvoiceDetailLastUpdated = NOW(), SupplierInvoiceDetailLastUpdatedUserID = ? - WHERE SupplierInvoiceDetailSupplierInvoiceID = ? + WHERE SupplierInvoiceDetailSupplierInvoiceID = ? AND SupplierInvoiceDetailIsActive = 'Y'"; $quedet = $this->db->query($sqldet, [$user['M_UserID'], $fakturID]); if (!$quedet) { @@ -1198,7 +1219,7 @@ class Fakturv4 extends MY_Controller $this->db->trans_begin(); - $sqlupd = "UPDATE supplier_invoice SET + $sqlupd = "UPDATE supplier_invoice SET SupplierInvoiceStatus = 'Reject', SupplierInvoiceLastUpdated = NOW(), SupplierInvoiceLastUpdatedUserID = ? @@ -1218,7 +1239,7 @@ class Fakturv4 extends MY_Controller SupplierInvoiceDetailIsActive = 'N', SupplierInvoiceDetailLastUpdated = NOW(), SupplierInvoiceDetailLastUpdatedUserID = ? - WHERE SupplierInvoiceDetailSupplierInvoiceID = ? + WHERE SupplierInvoiceDetailSupplierInvoiceID = ? AND SupplierInvoiceDetailIsActive = 'Y' "; $quedet = $this->db->query($sqldet, [$user['M_UserID'], $fakturID]); if (!$quedet) { @@ -1250,7 +1271,7 @@ class Fakturv4 extends MY_Controller $this->db->trans_begin(); // update status faktur ke approved - $sqlupd = "UPDATE supplier_invoice SET + $sqlupd = "UPDATE supplier_invoice SET SupplierInvoiceStatus = 'Approved', SupplierInvoiceApprovedDate = NOW(), SupplierInvoiceApprovedUserID = ?, @@ -1267,8 +1288,8 @@ class Fakturv4 extends MY_Controller // get periode untuk jurnal // ---------------------------------------------------------------------------------------- - $sqlprd = "SELECT periodeID FROM periode - WHERE DATE(NOW()) BETWEEN DATE(periodeStartDate) AND DATE(periodeEndDate) + $sqlprd = "SELECT periodeID FROM periode + WHERE DATE(NOW()) BETWEEN DATE(periodeStartDate) AND DATE(periodeEndDate) AND periodeIsActive = 'Y' AND periodeIsClosed = 'N'"; $queprd = $this->db->query($sqlprd, []); @@ -1291,7 +1312,7 @@ class Fakturv4 extends MY_Controller // get data faktur // ---------------------------------------------------------------------------------------- - $sqlinv = "SELECT + $sqlinv = "SELECT supplier_invoice.* , supplier_invoice_detail.*, ReceiveOrderPoNumber, @@ -1494,12 +1515,12 @@ class Fakturv4 extends MY_Controller } if ($item['M_ItemItem_CategoryID'] == '1' && !empty($item['M_ItemNat_SubGroupID'])) { - $sqlsgp = "SELECT map_nat_group.* + $sqlsgp = "SELECT map_nat_group.* FROM map_nat_group JOIN map_nat_subgroup ON MapNatSub_NatGroupID = MapNatGroup_NatGroupID AND MapNatSub_IsActive = 'Y' - WHERE MapNatGroup_NatGroupID = ? - AND MapNatSub_NatSubGroupID = ? + WHERE MapNatGroup_NatGroupID = ? + AND MapNatSub_NatSubGroupID = ? AND MapNatGroup_IsActive = 'Y'"; $quesgp = $this->db->query($sqlsgp, [$item['M_ItemNat_GroupID'], $item['M_ItemNat_SubGroupID']]); if (!$quesgp) { @@ -1538,38 +1559,29 @@ class Fakturv4 extends MY_Controller exit; } } else if ($item['M_ItemItem_CategoryID'] == '2') { - // Mapping JurnalTx sama dengan Persediaan hanya beda CoA - // TODO: Update dengan CoA yang Benar - - // Jika ItemNatsubGroup belum termapping return error - if (empty($item['M_ItemNat_SubGroupID'])) { + if (empty($item['M_ItemM_InventarisGolID'])) { $this->db->trans_rollback(); - $this->sys_error_db("[Error] Item {$item['M_ItemDesc']} tidak memiliki Nat_SubGroupID"); - exit; - }; - - $sqlsgp = "SELECT map_nat_group.* - FROM map_nat_group - JOIN map_nat_subgroup ON MapNatSub_NatGroupID = MapNatGroup_NatGroupID - AND MapNatSub_IsActive = 'Y' - WHERE MapNatGroup_NatGroupID = ? - AND MapNatSub_NatSubGroupID = ? - AND MapNatGroup_IsActive = 'Y'"; - $quesgp = $this->db->query($sqlsgp, [$item['M_ItemNat_GroupID'], $item['M_ItemNat_SubGroupID']]); - if (!$quesgp) { - $this->db->trans_rollback(); - $this->sys_error_db("[Error] get map_nat_subgroup"); + $this->sys_error_db("[Error] item golongan inventaris belum ditentukan"); exit; } - $itemGroup = $quesgp->row_array(); - if ( - empty($itemGroup['MapNatGroup_Debt_coaID']) || - empty($itemGroup['MapNatGroup_Debt_coaAccNo']) || - empty($itemGroup['MapNatGroup_Debt_coaDesc']) - ) { + $sql_coainv = "SELECT + CoaMapInventarisHutangCoaID, + CoaMapInventarisHutangCoaNo, + CoaMapInventarisHutangCoaDesc + FROM coa_map_inventaris + WHERE CoaMapInventarisM_InventarisGolID = ? + AND CoaMapInventarisIsActive = 'Y'"; + $que_coainv = $this->db->query($sql_coainv, [$item['M_ItemM_InventarisGolID']]); + if (!$que_coainv) { $this->db->trans_rollback(); - $this->sys_error_db("[Error] coa item tidak ditemukan / belum dimapping"); + $this->sys_error_db("[Error] failed to get coa inventaris gol"); + exit; + } + $item_coainv = $que_coainv->row_array(); + if (empty($item_coainv)) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] item inventaris coa not found"); exit; } @@ -1581,8 +1593,8 @@ class Fakturv4 extends MY_Controller $status = $this->InsertJurnalTx( $jurnalID, - $itemGroup['MapNatGroup_Debt_coaID'], - $itemGroup['MapNatGroup_Debt_coaDesc'], + $item_coainv['CoaMapInventarisHutangCoaID'], + $item_coainv['CoaMapInventarisHutangCoaDesc'], $user['M_UserID'], 0, $kredit @@ -1626,57 +1638,7 @@ class Fakturv4 extends MY_Controller exit; } } else if ($item['M_ItemItem_CategoryID'] == '4') { - // if (empty($item['M_ItemNat_SubGroupID'])) { - // $this->db->trans_rollback(); - // $this->sys_error_db("[Error] Item {$item['M_ItemDesc']} tidak memiliki Nat_SubGroupID"); - // exit; - // }; - $this->InsertJurnalTxJasa($jurnalID, $item['M_ItemID'], $inv, $user['M_UserID']); - - // $sqlsgp = "SELECT map_nat_group.* - // FROM map_nat_group - // JOIN map_nat_subgroup ON MapNatSub_NatGroupID = MapNatGroup_NatGroupID - // AND MapNatSub_IsActive = 'Y' - // WHERE MapNatGroup_NatGroupID = ? - // AND MapNatSub_NatSubGroupID = ? - // AND MapNatGroup_IsActive = 'Y'"; - // $quesgp = $this->db->query($sqlsgp, [$item['M_ItemNat_GroupID'], $item['M_ItemNat_SubGroupID']]); - // if (!$quesgp) { - // $this->db->trans_rollback(); - // $this->sys_error_db("[Error] get map_nat_subgroup"); - // exit; - // } - // $itemGroup = $quesgp->row_array(); - - // if ( - // empty($itemGroup['MapNatGroup_Debt_coaID']) || - // empty($itemGroup['MapNatGroup_Debt_coaAccNo']) || - // empty($itemGroup['MapNatGroup_Debt_coaDesc']) - // ) { - // $this->db->trans_rollback(); - // $this->sys_error_db("[Error] coa item tidak ditemukan / belum dimapping"); - // exit; - // } - - // $price = (doubleval($inv['SupplierInvoiceDetailTotal']) - doubleval($inv['SupplierInvoiceDetailDiscountPoProrata'])); - // // $taxPPH = doubleval($inv['SupplierInvoiceTaxPercentPph']) * $price / 100; - // $taxPPN = doubleval($inv['SupplierInvoiceTaxPercentPpn']) * $price / 100; - - // $kredit = round($price + $taxPPN, 2); - - // $status = $this->InsertJurnalTx( - // $jurnalID, - // $itemGroup['MapNatGroup_Debt_coaID'], - // $itemGroup['MapNatGroup_Debt_coaDesc'], - // $user['M_UserID'], - // 0, - // $kredit - // ); - // if (!$status) { - // $this->sys_error_db($status['msg']); - // exit; - // } } } @@ -1709,13 +1671,14 @@ class Fakturv4 extends MY_Controller } } - private function InsertJurnalTxJasa($jurnalID, $itemid, $invoice, $userid) { + private function InsertJurnalTxJasa($jurnalID, $itemid, $invoice, $userid) + { $sql_coa = "SELECT JasaCoaMapHutangCoaID, JasaCoaMapHutangCoaNo, JasaCoaMapHutangCoaDesc - FROM jasa_coa_map - JOIN coa ON coaID = JasaCoaMapHutangCoaID + FROM jasa_coa_map + JOIN coa ON coaID = JasaCoaMapHutangCoaID AND coaIsActive = 'Y' WHERE JasaCoaMapM_ItemID = ?"; $que_coa = $this->db->query($sql_coa, [$itemid]); @@ -1734,15 +1697,18 @@ class Fakturv4 extends MY_Controller $invtotal = doubleval($invoice['SupplierInvoiceDetailTotal']); $disprorata = doubleval($invoice['SupplierInvoiceDetailDiscountPoProrata']); - + $price = $invtotal - $disprorata; $taxPPN = doubleval($invoice['SupplierInvoiceTaxPercentPpn']) * $price / 100; $kredit = round($price + $taxPPN, 2); $insert = $this->InsertJurnalTx( - $jurnalID, $coajasa['JasaCoaMapHutangCoaID'], - $coajasa['JasaCoaMapHutangCoaDesc'], - $userid, 0, $kredit + $jurnalID, + $coajasa['JasaCoaMapHutangCoaID'], + $coajasa['JasaCoaMapHutangCoaDesc'], + $userid, + 0, + $kredit ); if (!$insert) { $this->db->trans_rollback(); diff --git a/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php b/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php index 6e43e93..62cb756 100644 --- a/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php +++ b/application/controllers/mockup/purchase/requester/PurchaseRequestNonPersediaan.php @@ -74,11 +74,11 @@ class PurchaseRequestNonPersediaan extends MY_Controller $sql = "SELECT COUNT(*) as total FROM purchase_request JOIN s_regional ON S_RegionalID = PurchaseRequestS_RegionalID - WHERE - PurchaseRequestIsActive = 'Y' AND + WHERE + PurchaseRequestIsActive = 'Y' AND PurchaseRequestItemCategoryID <> '1' AND - ( PurchaseRequestDate BETWEEN ? AND ? ) AND - ( PurchaseRequestStatus = ? OR ? = '' ) AND + ( PurchaseRequestDate BETWEEN ? AND ? ) AND + ( PurchaseRequestStatus = ? OR ? = '' ) AND ( PurchaseRequestNumber LIKE ?) $filterBranch $filterRegional"; @@ -96,11 +96,11 @@ class PurchaseRequestNonPersediaan extends MY_Controller $params[] = $offset; $params[] = $pageSize; - $sql = "SELECT DISTINCT PurchaseRequestID as prId, - PurchaseRequestNumber as prNumber, - PurchaseRequestDate as prDate, - PurchaseRequestStatus as prStatus, - requestedBy.M_UserUsername as prRequestedBy, + $sql = "SELECT DISTINCT PurchaseRequestID as prId, + PurchaseRequestNumber as prNumber, + PurchaseRequestDate as prDate, + PurchaseRequestStatus as prStatus, + requestedBy.M_UserUsername as prRequestedBy, IF(PurchaseRequestApprovedBy IS NULL, '', approvedBy.M_UserUsername) as prApprovedBy, PurchaseRequestS_RegionalID as prRegionalId, S_RegionalName as prRegionalName, @@ -108,7 +108,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller M_BranchName as prBranchName, PurchaseRequestNote as prNote, PurchaseRequestStatus as prStatus, - IFNULL(S_RegionalID, '') as S_RegionalID, + IFNULL(S_RegionalID, '') as S_RegionalID, IFNULL(S_RegionalName, '') as S_RegionalName, IFNULL(M_BranchCode, '') as M_BranchCode, IFNULL(M_BranchName, '') as M_BranchName, @@ -128,12 +128,12 @@ class PurchaseRequestNonPersediaan extends MY_Controller LEFT JOIN asset_handover ah ON ah.AssetHandoverPurchaseRequestID = PurchaseRequestID AND ah.AssetHandoverIsActive = 'Y' - WHERE - PurchaseRequestIsActive = 'Y' AND + WHERE + PurchaseRequestIsActive = 'Y' AND PurchaseRequestItemCategoryID <> '1' AND - ( PurchaseRequestDate BETWEEN ? AND ? ) AND - ( PurchaseRequestStatus = ? OR ? = '' ) AND - ( PurchaseRequestNumber LIKE ? ) + ( PurchaseRequestDate BETWEEN ? AND ? ) AND + ( PurchaseRequestStatus = ? OR ? = '' ) AND + ( PurchaseRequestNumber LIKE ? ) $filterBranch $filterRegional ORDER BY PurchaseRequestID DESC @@ -176,7 +176,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller // Menggunakan parameter query $queryCount = "SELECT count(*) as total FROM purchase_request_direct_detail - WHERE PurchaseRequestDirectDetailIsActive = 'Y' + WHERE PurchaseRequestDirectDetailIsActive = 'Y' AND PurchaseRequestDirectDetailPurchaseRequestDirectID = ?"; $exec = $this->db->query($queryCount, [$payload['PRID']]); @@ -191,13 +191,13 @@ class PurchaseRequestNonPersediaan extends MY_Controller } // Menggunakan parameter query - $query = "SELECT *, + $query = "SELECT *, ROW_NUMBER() OVER(ORDER BY PurchaseRequestDirectDetailID) RowNumber , 'N' as isEditingPrice - FROM purchase_request_direct_detail - WHERE PurchaseRequestDirectDetailIsActive = 'Y' + FROM purchase_request_direct_detail + WHERE PurchaseRequestDirectDetailIsActive = 'Y' AND PurchaseRequestDirectDetailPurchaseRequestDirectID = ? - ORDER BY PurchaseRequestDirectDetailStatus ASC, + ORDER BY PurchaseRequestDirectDetailStatus ASC, PurchaseRequestDirectDetailID ASC"; $exec = $this->db->query($query, [$payload['PRID']]); @@ -288,13 +288,13 @@ class PurchaseRequestNonPersediaan extends MY_Controller - $query = "SELECT + $query = "SELECT IFNULL(M_BranchID, 0) as M_BranchID, IFNULL(M_BranchCode, '') as M_BranchCode, IFNULL(M_BranchName, '') as M_BranchName - FROM m_userlocation + FROM m_userlocation LEFT JOIN m_branch ON M_UserLocationM_BranchID = M_BranchID - WHERE M_UserLocationM_UserID = ? AND + WHERE M_UserLocationM_UserID = ? AND M_UserLocationIsActive = 'Y' LIMIT 1"; $exec = $this->db->query($query, [$userId]); @@ -324,7 +324,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller M_BranchName FROM m_branch JOIN m_userlocation ON M_BranchS_RegionalID = M_UserLocationS_RegionalID AND M_UserLocationM_UserID = ? AND M_UserLocationIsActive = 'Y' - WHERE M_BranchIsActive = 'Y' + WHERE M_BranchIsActive = 'Y' ORDER BY M_BranchName ASC"; $exec = $this->db->query($query, [$userId]); if ($exec) { @@ -374,8 +374,8 @@ class PurchaseRequestNonPersediaan extends MY_Controller $datas_log['header'] = $header; - $sql = "SELECT * - FROM purchase_request_detail + $sql = "SELECT * + FROM purchase_request_detail JOIN m_item ON M_ItemID = PurchaseRequestDetailM_ItemID AND M_ItemIsActive = 'Y' JOIN itemunit ON ItemUnitID = PurchaseRequestDetailItemUnitID AND ItemUnitIsActive = 'Y' WHERE PurchaseRequestDetailPurchaseRequestID = ? AND PurchaseRequestDetailIsActive = 'Y'"; @@ -403,12 +403,12 @@ class PurchaseRequestNonPersediaan extends MY_Controller exit; } - $sql = "UPDATE purchase_request_detail - SET - PurchaseRequestDetailIsActive = 'N', - PurchaseRequestDetailDeleted = NOW(), - PurchaseRequestDetailDeletedUserID = ? - WHERE PurchaseRequestDetailPurchaseRequestID = ? AND + $sql = "UPDATE purchase_request_detail + SET + PurchaseRequestDetailIsActive = 'N', + PurchaseRequestDetailDeleted = NOW(), + PurchaseRequestDetailDeletedUserID = ? + WHERE PurchaseRequestDetailPurchaseRequestID = ? AND PurchaseRequestDetailIsActive = 'Y'"; $deleteParams = [$userId, $prId]; $exec = $this->db->query($sql, $deleteParams); @@ -444,10 +444,10 @@ class PurchaseRequestNonPersediaan extends MY_Controller $PRDTotalPrice = intval($payload['PRDAmountRequest']) * intval($payload['PRDEstimationPrice']); // Gunakan parameter untuk query existensi - $query = "SELECT COUNT(*) as exist - FROM purchase_request_direct_detail - WHERE PurchaseRequestDirectDetailIsActive = 'Y' - AND PurchaseRequestDirectDescription = ? + $query = "SELECT COUNT(*) as exist + FROM purchase_request_direct_detail + WHERE PurchaseRequestDirectDetailIsActive = 'Y' + AND PurchaseRequestDirectDescription = ? AND PurchaseRequestDirectDetailPurchaseRequestDirectID = ?"; $existParams = [$payload['PRDDescriptionDetail'], $payload['PRID']]; $exist = $this->db->query($query, $existParams); @@ -729,10 +729,10 @@ class PurchaseRequestNonPersediaan extends MY_Controller $this->db->trans_commit(); // Gunakan parameter untuk query select - $sql = "SELECT *, - ROW_NUMBER() OVER(ORDER BY PurchaseRequestDirectNumber) RowNumber - FROM purchase_request_direct - WHERE PurchaseRequestDirectIsActive = 'Y' + $sql = "SELECT *, + ROW_NUMBER() OVER(ORDER BY PurchaseRequestDirectNumber) RowNumber + FROM purchase_request_direct + WHERE PurchaseRequestDirectIsActive = 'Y' AND PurchaseRequestCreatedUserID = ? AND PurchaseRequestDirectID = ?"; $selectParams = [$userId, $payload["PRID"]]; @@ -784,7 +784,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller DivisionID, DivisionCode, DivisionName - FROM division + FROM division JOIN m_userdivision ON M_UserDivisionDivisionID = DivisionID AND M_UserDivisionM_UserID = ? WHERE DivisionIsActive = 'Y' ORDER BY M_UserDivisionID DESC @@ -929,6 +929,11 @@ class PurchaseRequestNonPersediaan extends MY_Controller $params[] = $itemSubGroup; } + $filterCoaInventaris = ""; + if ($itemCategory == "2") { + $filterCoaInventaris = "JOIN coa_map_inventaris ON CoaMapInventarisM_InventarisGolID = M_ItemM_InventarisGolID AND CoaMapInventarisIsActive = 'Y'"; + } + $params[] = $itemCategory; $params[] = $itemCategory; $params[] = '%' . $search . '%'; @@ -938,22 +943,23 @@ class PurchaseRequestNonPersediaan extends MY_Controller $sql = "SELECT COUNT(*) as total FROM ( - SELECT - DISTINCT M_ItemID - FROM m_item - JOIN itemunitmap ON ItemUnitMapM_ItemID = M_ItemID AND - ((ItemUnitMapIsPurchase = 'Y' AND ? = 'purchase') OR - (ItemUnitMapIsBase = 'Y' AND ? = 'base')) AND - ItemUnitMapIsActive = 'Y' - JOIN itemunit ON ItemUnitID = ItemUnitMapItemUnitID AND - ItemUnitIsActive = 'Y' - $filterDivision - $filterItemGroup - $filterItemSubGroup - WHERE M_ItemIsActive = 'Y' AND - ( M_ItemItem_CategoryID = ? OR ? = '' ) - AND M_ItemDesc LIKE ? - ) as item"; + SELECT + DISTINCT M_ItemID + FROM m_item + JOIN itemunitmap ON ItemUnitMapM_ItemID = M_ItemID AND + ((ItemUnitMapIsPurchase = 'Y' AND ? = 'purchase') OR + (ItemUnitMapIsBase = 'Y' AND ? = 'base')) AND + ItemUnitMapIsActive = 'Y' + JOIN itemunit ON ItemUnitID = ItemUnitMapItemUnitID AND + ItemUnitIsActive = 'Y' + $filterDivision + $filterItemGroup + $filterItemSubGroup + $filterCoaInventaris + WHERE M_ItemIsActive = 'Y' AND + ( M_ItemItem_CategoryID = ? OR ? = '' ) + AND M_ItemDesc LIKE ? + ) as item"; $query = $this->db->query($sql, $params); if (!$query) { @@ -981,20 +987,21 @@ class PurchaseRequestNonPersediaan extends MY_Controller 'N' as isEditingPrice, 0 as remaining_stock FROM m_item - JOIN itemunitmap ON ItemUnitMapM_ItemID = M_ItemID AND - ((ItemUnitMapIsPurchase = 'Y' AND ? = 'purchase') OR - (ItemUnitMapIsBase = 'Y' AND ? = 'base')) AND - ItemUnitMapIsActive = 'Y' - JOIN itemunit ON ItemUnitID = ItemUnitMapItemUnitID AND - ItemUnitIsActive = 'Y' + JOIN itemunitmap ON ItemUnitMapM_ItemID = M_ItemID + AND ((ItemUnitMapIsPurchase = 'Y' AND ? = 'purchase') OR + (ItemUnitMapIsBase = 'Y' AND ? = 'base')) + AND ItemUnitMapIsActive = 'Y' + JOIN itemunit ON ItemUnitID = ItemUnitMapItemUnitID + AND ItemUnitIsActive = 'Y' $filterDivision $filterItemGroup $filterItemSubGroup - WHERE M_ItemIsActive = 'Y' AND - ( M_ItemItem_CategoryID = ? OR ? = '' ) + $filterCoaInventaris + WHERE M_ItemIsActive = 'Y' + AND ( M_ItemItem_CategoryID = ? OR ? = '' ) AND M_ItemDesc LIKE ? - ORDER BY M_ItemDesc ASC - LIMIT ? OFFSET ?"; + ORDER BY M_ItemDesc ASC + LIMIT ? OFFSET ?"; // Parameter akhir yang digunakan untuk query $searchParam = $params; @@ -1067,7 +1074,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller $search = isset($prm["search"]) ? $prm["search"] : ""; // Menggunakan parameter query untuk pencarian unit - $sql = "SELECT + $sql = "SELECT ItemUnitID, ItemUnitCode, ItemUnitName, @@ -1075,7 +1082,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller ItemUnitLastUpdated, ItemUnitIsActive, ItemUnitUserID - FROM itemunit + FROM itemunit WHERE ItemUnitIsActive = 'Y' AND ItemUnitName LIKE ? ORDER BY ItemUnitName ASC"; @@ -1129,10 +1136,10 @@ class PurchaseRequestNonPersediaan extends MY_Controller PurchaseRequestDetailQty as qty, PurchaseRequestDetailStatus as status, PurchaseRequestDetailNote as note - FROM purchase_request_detail + FROM purchase_request_detail JOIN m_item ON M_ItemID = PurchaseRequestDetailM_ItemID AND M_ItemIsActive = 'Y' JOIN itemunit ON ItemUnitID = PurchaseRequestDetailItemUnitID AND ItemUnitIsActive = 'Y' - WHERE + WHERE PurchaseRequestDetailPurchaseRequestID = ? AND PurchaseRequestDetailIsActive = 'Y'"; $query = $this->db->query($sql, [$prId]); @@ -1171,11 +1178,11 @@ class PurchaseRequestNonPersediaan extends MY_Controller exit; } - $sql = "SELECT + $sql = "SELECT DISTINCT ItemUnitID as unitId, ItemUnitCode as unitCode, ItemUnitName as unitName - FROM itemunitmap + FROM itemunitmap JOIN itemunit ON ItemUnitID = ItemUnitMapItemUnitID AND ItemUnitIsActive = 'Y' WHERE ItemUnitMapM_ItemID = ? AND ItemUnitMapIsActive = 'Y'"; @@ -1261,17 +1268,17 @@ class PurchaseRequestNonPersediaan extends MY_Controller $numpd = $quenum->row_array()['numpd']; - $sql = "INSERT INTO purchase_request ( + $sql = "INSERT INTO purchase_request ( PurchaseRequestNumber, - PurchaseRequestDate, - PurchaseRequestS_RegionalID, - PurchaseRequestM_BranchCode, - PurchaseRequestNote, - PurchaseRequestItemCategoryID, - PurchaseRequestCreated, - PurchaseRequestUserID, - PurchaseRequestCreatedUserID, - PurchaseRequestRequestedBy) + PurchaseRequestDate, + PurchaseRequestS_RegionalID, + PurchaseRequestM_BranchCode, + PurchaseRequestNote, + PurchaseRequestItemCategoryID, + PurchaseRequestCreated, + PurchaseRequestUserID, + PurchaseRequestCreatedUserID, + PurchaseRequestRequestedBy) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; // VALUES (fn_numbering('PR'), ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $query = $this->db->query($sql, [ @@ -1298,15 +1305,15 @@ class PurchaseRequestNonPersediaan extends MY_Controller foreach ($items as $key => $item) { $item["total"] = floatval($item["price"]) * floatval($item["qty"]); $sql = "INSERT INTO purchase_request_detail ( - PurchaseRequestDetailPurchaseRequestID, - PurchaseRequestDetailM_ItemID, - PurchaseRequestDetailItemUnitID, - PurchaseRequestDetailQty, + PurchaseRequestDetailPurchaseRequestID, + PurchaseRequestDetailM_ItemID, + PurchaseRequestDetailItemUnitID, + PurchaseRequestDetailQty, PurchaseRequestDetailPrice, PurchaseRequestDetailTotal, - PurchaseRequestDetailCreated, - PurchaseRequestDetailCreatedUserID, - PurchaseRequestDetailUserID) + PurchaseRequestDetailCreated, + PurchaseRequestDetailCreatedUserID, + PurchaseRequestDetailUserID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; $query = $this->db->query($sql, [ $prId, @@ -1326,7 +1333,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller } } - $sql = "SELECT * + $sql = "SELECT * FROM purchase_request JOIN m_user ON M_UserID = PurchaseRequestCreatedUserID WHERE PurchaseRequestID = ?"; @@ -1421,18 +1428,18 @@ class PurchaseRequestNonPersediaan extends MY_Controller } $numpd = $quenum->row_array()['numpd']; - $sql = "INSERT INTO purchase_request ( + $sql = "INSERT INTO purchase_request ( PurchaseRequestNumber, - PurchaseRequestDate, - PurchaseRequestS_RegionalID, - PurchaseRequestM_BranchCode, - PurchaseRequestNote, - PurchaseRequestItemCategoryID, + PurchaseRequestDate, + PurchaseRequestS_RegionalID, + PurchaseRequestM_BranchCode, + PurchaseRequestNote, + PurchaseRequestItemCategoryID, PurchaseRequestStatus, - PurchaseRequestCreated, - PurchaseRequestUserID, - PurchaseRequestCreatedUserID, - PurchaseRequestRequestedBy) + PurchaseRequestCreated, + PurchaseRequestUserID, + PurchaseRequestCreatedUserID, + PurchaseRequestRequestedBy) VALUES (?, ?, ?, ?, ?, ?, 'Pending', ?, ?, ?, ?)"; // VALUES (fn_numbering('PR'), ?, ?, ?, ?, ?, 'Pending', ?, ?, ?, ?)"; $query = $this->db->query($sql, [ @@ -1459,16 +1466,16 @@ class PurchaseRequestNonPersediaan extends MY_Controller foreach ($items as $key => $item) { $item["total"] = floatval($item["price"]) * floatval($item["qty"]); $sql = "INSERT INTO purchase_request_detail ( - PurchaseRequestDetailPurchaseRequestID, - PurchaseRequestDetailM_ItemID, - PurchaseRequestDetailItemUnitID, - PurchaseRequestDetailQty, + PurchaseRequestDetailPurchaseRequestID, + PurchaseRequestDetailM_ItemID, + PurchaseRequestDetailItemUnitID, + PurchaseRequestDetailQty, PurchaseRequestDetailPrice, PurchaseRequestDetailTotal, PurchaseRequestDetailStatus, - PurchaseRequestDetailCreated, - PurchaseRequestDetailCreatedUserID, - PurchaseRequestDetailUserID) + PurchaseRequestDetailCreated, + PurchaseRequestDetailCreatedUserID, + PurchaseRequestDetailUserID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $query = $this->db->query($sql, [ $prId, @@ -1489,7 +1496,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller } } - $sql = "SELECT * + $sql = "SELECT * FROM purchase_request JOIN m_user ON M_UserID = PurchaseRequestCreatedUserID WHERE PurchaseRequestID = ?"; @@ -1561,7 +1568,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller UserActivityRefID, UserActivityData, UserActivityUserID, - UserActivityCreated) + UserActivityCreated) VALUES (?,?,?,?,?,?,?)"; $query = $this->db->query($sql, [$code, $status, $description, $refId, $data, $userId, date("Y-m-d H:i:s")]); if (!$query) { @@ -1886,7 +1893,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller $sql = "SELECT *, changeitemcategory.ItemCategoryName as changeitemcategoryname, olditemcategory.ItemCategoryName as olditemcategoryname - FROM purchase_request + FROM purchase_request JOIN item_category changeitemcategory ON changeitemcategory.ItemCategoryID = PurchaseRequestItemCategoryID AND changeitemcategory.ItemCategoryIsActive = 'Y' JOIN item_category olditemcategory ON olditemcategory.ItemCategoryID = ? AND olditemcategory.ItemCategoryIsActive = 'Y' @@ -1918,13 +1925,13 @@ class PurchaseRequestNonPersediaan extends MY_Controller } - $sql = "UPDATE purchase_request SET - PurchaseRequestDate = ?, - PurchaseRequestS_RegionalID = ?, - PurchaseRequestM_BranchCode = ?, - PurchaseRequestNote = ?, - PurchaseRequestItemCategoryID = ?, - PurchaseRequestLastUpdated = ?, + $sql = "UPDATE purchase_request SET + PurchaseRequestDate = ?, + PurchaseRequestS_RegionalID = ?, + PurchaseRequestM_BranchCode = ?, + PurchaseRequestNote = ?, + PurchaseRequestItemCategoryID = ?, + PurchaseRequestLastUpdated = ?, PurchaseRequestLastUpdatedUserID = ? $status WHERE PurchaseRequestID = ?"; @@ -1990,16 +1997,16 @@ class PurchaseRequestNonPersediaan extends MY_Controller $datas_log['new_details'][] = $this->convertNumericValuesToStrings($item); } else { - $sql = "SELECT * , - newitem.M_ItemCode as newitemcode, - olditem.M_ItemCode as olditemcode, - newitem.M_ItemDesc as newitemdesc, + $sql = "SELECT * , + newitem.M_ItemCode as newitemcode, + olditem.M_ItemCode as olditemcode, + newitem.M_ItemDesc as newitemdesc, olditem.M_ItemDesc as olditemdesc, newitemunit.ItemUnitCode as newitemunitcode, olditemunit.ItemUnitCode as olditemunitcode, newitemunit.ItemUnitName as newitemunitname, olditemunit.ItemUnitName as olditemunitname - FROM purchase_request_detail + FROM purchase_request_detail JOIN m_item newitem ON newitem.M_ItemID = PurchaseRequestDetailM_ItemID AND newitem.M_ItemIsActive = 'Y' JOIN itemunit newitemunit ON newitemunit.ItemUnitID = ? AND newitemunit.ItemUnitIsActive = 'Y' JOIN m_item olditem ON olditem.M_ItemID = ? AND olditem.M_ItemIsActive = 'Y' @@ -2026,8 +2033,8 @@ class PurchaseRequestNonPersediaan extends MY_Controller $messages_log[] = "Perubahan harga : " . $row["PurchaseRequestDetailPrice"] . " menjadi " . $item["price"] . " pada item : (" . $row["newitemcode"] . ") " . $row["newitemdesc"]; } - $sql = "UPDATE purchase_request_detail - SET + $sql = "UPDATE purchase_request_detail + SET PurchaseRequestDetailM_ItemID = ?, PurchaseRequestDetailItemUnitID = ?, PurchaseRequestDetailQty = ?, @@ -2058,16 +2065,16 @@ class PurchaseRequestNonPersediaan extends MY_Controller } } - $sql = "SELECT * - FROM purchase_request_detail - WHERE PurchaseRequestDetailPurchaseRequestID = ? AND - PurchaseRequestDetailIsActive = 'Y' AND + $sql = "SELECT * + FROM purchase_request_detail + WHERE PurchaseRequestDetailPurchaseRequestID = ? AND + PurchaseRequestDetailIsActive = 'Y' AND PurchaseRequestDetailID NOT IN (" . implode(",", $detail_ids) . ")"; $query = $this->db->query($sql, [$prId]); $deleted_rows = $query->result_array(); foreach ($deleted_rows as $row) { - $sql = "UPDATE purchase_request_detail - SET + $sql = "UPDATE purchase_request_detail + SET PurchaseRequestDetailIsActive = 'N', PurchaseRequestDetailDeleted = ?, PurchaseRequestDetailDeletedUserID = ? @@ -2100,9 +2107,9 @@ class PurchaseRequestNonPersediaan extends MY_Controller $this->saveNotification($userId, $prDateUse, $number, $prId, $branchId, $regionalId); } - $sql = "SELECT * - FROM purchase_request_detail - WHERE PurchaseRequestDetailPurchaseRequestID = ? AND + $sql = "SELECT * + FROM purchase_request_detail + WHERE PurchaseRequestDetailPurchaseRequestID = ? AND PurchaseRequestDetailIsActive = 'Y'"; $query = $this->db->query($sql, [$prId]); $rows = $query->result_array(); @@ -2177,7 +2184,7 @@ class PurchaseRequestNonPersediaan extends MY_Controller // exit; // } - // $sql = "SELECT * + // $sql = "SELECT * // FROM purchase_request // JOIN m_user ON M_UserID = PurchaseRequestCreatedUserID // WHERE PurchaseRequestID = ?"; diff --git a/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php b/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php index 1a1a21e..88a3ffd 100644 --- a/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php +++ b/application/controllers/mockup/receive-item-po/ReceiveItemPoInventaris.php @@ -62,13 +62,13 @@ class ReceiveItemPoInventaris extends MY_Controller $search = $payload['search'] . '%'; $sql = "SELECT M_RuanganID, - M_RuanganM_BranchID, - M_RuanganName, - M_RuanganCode + M_RuanganM_BranchID, + M_RuanganName, + M_RuanganCode FROM m_ruangan WHERE M_RuanganIsActive = 'Y' - AND M_RuanganM_BranchID = ? - AND M_RuanganName LIKE ? + AND M_RuanganM_BranchID = ? + AND M_RuanganName LIKE ? ORDER BY M_RuanganName ASC"; $qry = $this->db->query($sql, [$user['M_BranchID'], $search]); @@ -630,37 +630,39 @@ class ReceiveItemPoInventaris extends MY_Controller $user = $this->sys_user; $param = $this->sys_input; - // $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'"; - // $que = $this->db->query($sql, [$param['ROID']]); - // + 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'"; + $que = $this->db->query($sql, [$param['ROID']]); + } else { + $sql = "SELECT + M_UserID, + M_UserUsername + FROM m_user + WHERE M_UserM_BranchID = ? + AND M_UserS_RegionalID = ? + AND M_UserIsActive = 'Y' + ORDER BY M_UserUsername"; + $que = $this->db->query($sql, [$user['M_BranchID'], $user['S_RegionalID']]); + } - $sql = "SELECT - M_UserID, - M_UserUsername - FROM m_user - WHERE M_UserM_BranchID = ? - AND M_UserS_RegionalID = ? - AND M_UserIsActive = 'Y' - ORDER BY M_UserUsername"; - $que = $this->db->query($sql, [$user['M_BranchID'], $user['S_RegionalID']]); if (!$que) { $this->sys_error_db("[Error] get staff"); exit; @@ -926,42 +928,42 @@ 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']); + // 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 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']; @@ -1770,34 +1772,31 @@ class ReceiveItemPoInventaris extends MY_Controller # INSERT JURNAL TX # if (intval($item_cek['M_ItemItem_CategoryID']) == 2) { - if (empty($item_cek['M_ItemNat_SubGroupID'])) { + if (empty($item_cek['M_ItemM_InventarisGolID'])) { $this->db->trans_rollback(); - $this->sys_error_db("[Error] subgroup item {$item_cek['M_ItemDesc']} tidak ditemukan pada PO + $this->sys_error_db("[Error] golongan inventaris item {$item_cek['M_ItemDesc']} tidak ditemukan pada PO {$detail['PurchaseOrderNumber']}"); exit; } - $sql_item_group = "SELECT * FROM map_nat_subgroup - WHERE MapNatSub_NatGroupID = ? - AND MapNatSub_NatSubGroupID = ? - AND MapNatSub_IsActive = 'Y'"; - $que_item_group = $this->db->query($sql_item_group, [ - $item_cek['M_ItemNat_GroupID'], - $item_cek['M_ItemNat_SubGroupID'] - ]); - if (!$que_item_group) { + $sql_coa_inv = "SELECT + CoaMapInventarisCoaID, + CoaMapInventarisCoaNo, + CoaMapInventarisCoaDesc + FROM coa_map_inventaris + WHERE CoaMapInventarisM_InventarisGolID = ? + AND CoaMapInventarisIsActive = 'Y'"; + $que_coa_inv = $this->db->query($sql_coa_inv, [$item_cek['M_ItemM_InventarisGolID']]); + if (!$que_coa_inv) { $this->db->trans_rollback(); - $this->sys_error_db("[Error] get item group/subgroup"); + $this->sys_error_db("[Error] failed to get coa biaya item inventaris"); exit; } - $item_group = $que_item_group->row_array(); - if ( - empty($item_group['MapNatSub_BiayaCoaID']) || - empty($item_group['MapNatSub_BiayaCoaAccountNo']) || - empty($item_group['MapNatSub_BiayaCoaDescription']) - ) { + $iteminv_coa = $que_coa_inv->row_array(); + + if (empty($iteminv_coa['CoaMapInventarisCoaID'])) { $this->db->trans_rollback(); - $this->sys_error_db("[Error] Account inventory item {$item_cek['M_ItemDesc']} tidak ditemukan"); + $this->sys_error_db("[Error] coa gol inventaris not found"); exit; } @@ -1815,8 +1814,8 @@ class ReceiveItemPoInventaris extends MY_Controller ) VALUES (?,?,?,?,?,?)"; $que_tx_jurnal = $this->db->query($sql_tx_jurnal, [ $jurnal_ID, - $item_group['MapNatSub_BiayaCoaID'], - $item_group['MapNatSub_BiayaCoaDescription'], + $iteminv_coa['CoaMapInventarisCoaID'], + $iteminv_coa['CoaMapInventarisCoaDesc'], $debet, 0, $user['M_UserID'] @@ -1829,7 +1828,7 @@ class ReceiveItemPoInventaris extends MY_Controller } $juranl_tx_ID = $this->db->insert_id(); $each_desc[] = "- Add detail Jurnal debet {$item_cek['M_ItemDesc']} - {$item_group['MapNatSub_BiayaCoaDescription']} sejumlah {$this->formatRupiah($debet)}"; + {$iteminv_coa['CoaMapInventarisCoaDesc']} sejumlah {$this->formatRupiah($debet)}"; # INSERT JURNAL ADDON # $sql_addon_jurnal = "INSERT INTO jurnal_addon ( diff --git a/application/controllers/mockup/supplierpaymentcashierv5/Bill.php b/application/controllers/mockup/supplierpaymentcashierv5/Bill.php new file mode 100644 index 0000000..c0b2ad2 --- /dev/null +++ b/application/controllers/mockup/supplierpaymentcashierv5/Bill.php @@ -0,0 +1,255 @@ +db_onedev = $this->load->database("onedev", true); + } + + public function add_notes($orderid){ + $sql = " SELECT SupplierPaymentSupplierInvoiceID as note_order_id, + SupplierPaymentID as note_id, + SupplierPaymentDetailSupplierInvoiceDetailID as detail_id, + SupplierPaymentDate as note_date, + SupplierPaymentNumber as note_number, + GROUP_CONCAT(DISTINCT coaDescription separator ' , ') as paymenttypes_name, + SUM(SupplierPaymentDetailAmount) as note_amount, + n.M_UserUsername as note_user, + SupplierPaymentDetailIsActive as note_active, + 'xxx' as tests, + 'N' as show_detail, + SupplierPaymentNote as keterangan, + SupplierPaymentCoaID, + coaID, + coaDescription, + SupplierPaymentIsConfirm, + CONCAT('Confirmed by : ',c.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentConfirmDate,'%d-%m-%Y %H:%i')) as d_confirm, + SupplierPaymentIsApproved, + CONCAT('Approved by : ',a.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentApprovedDate,'%d-%m-%Y %H:%i')) as d_approved, + CONCAT('Verified by : ',b.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentVerifDate,'%d-%m-%Y %H:%i')) as d_verif + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + LEFT JOIN coa ON SupplierPaymentCoaID = coaID + LEFT JOIN m_user n ON SupplierPaymentUserID = n.M_UserID + LEFT JOIN m_user c ON SupplierPaymentConfirmUserID = c.M_UserID + LEFT JOIN m_user a ON SupplierPaymentApprovedUserID = a.M_UserID + LEFT JOIN m_user b ON SupplierPaymentVerifUserID = b.M_UserID + WHERE + SupplierPaymentSupplierInvoiceID = {$orderid} + AND + SupplierPaymentIsActive = 'Y' + GROUP BY SupplierPaymentID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + if($rows){ + foreach($rows as $k => $v){ + $rows[$k]['tests'] = $this->add_tests($v['note_id']); + } + } + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } + } + public function add_tagihans($orderid){ + $sql = "SELECT SupplierInvoiceID as tagihan_id, + PurchaseOrderNumber as tagihan_number, + jurnalTxDescription as pasien, + jurnalTxCredit as tagihan_total, + IF(SupplierPaymentDetailID IS NULL , jurnalTxCredit, jurnalTxCredit - SUM(SupplierPaymentDetailAmount)) as tagihan_tagihan, + 0 as tagihan_bayar, + DATE_FORMAT(SupplierInvoiceDueDate,'%d-%m-%Y') as tagihan_duedate, + SupplierInvoiceIsActive as tagihan_active, + 'N' as show_detail, + jurnalTxID SupplierInvoiceDetailID, + PurchaseOrderID SupplierInvoiceDetailPurchaseOrderID + FROM supplier_invoice + JOIN purchase_order ON SupplierInvoicePurchaseOrderID = PurchaseOrderID + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + LEFT JOIN supplier_payment ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID AND SupplierInvoiceIsActive = 'Y' + LEFT JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailSupplierInvoiceDetailID = jurnalTxID AND SupplierPaymentDetailIsActive = 'Y' + WHERE SupplierInvoiceID = ? + GROUP BY jurnalTxID"; + $query = $this->db_onedev->query($sql, [$orderid]); + if ($query) { + $rows = $query->result_array(); + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } +} + public function add_tests($orderid){ + $sql = " SELECT SupplierPaymentSupplierInvoiceID as note_order_id, + SupplierPaymentID as note_id, + SupplierPaymentDate as note_date, + SupplierPaymentNumber as note_number, + GROUP_CONCAT(coaDescription separator ' , ') as paymenttypes_name, + SUM(SupplierPaymentDetailAmount) as note_amount, + M_UserUsername as note_user, + SupplierPaymentDetailIsActive as note_active, + PurchaseOrderNumber, + SupplierInvoiceDetailTotal, + SupplierPaymentDetailAmount + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID + LEFT JOIN supplier_invoice_detail ON SupplierPaymentDetailSupplierInvoiceDetailID = SupplierInvoiceDetailID + LEFT JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID + JOIN coa ON SupplierPaymentCoaID = coaID + LEFT JOIN m_user ON SupplierPaymentDetailUserID = M_UserID + WHERE + SupplierPaymentID = {$orderid} + GROUP BY SupplierPaymentDetailID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + if($rows){ + } + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } +} + public function search() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + $supplier = $prm["supplier"]; + $search = $prm["search"]; + $status = $prm["status"]; + $startdate = $prm["startdate"]; + $enddate = $prm["enddate"]; + $regionalid = $this->sys_user['S_RegionalID']; + + $number_limit = 10; + $number_offset = ($prm['current_page'] - 1) * $number_limit ; + + $where = "SupplierInvoiceIsActive = 'Y' + AND SupplierPaymentIsApproved = 'Y' + AND SupplierPaymentIsVerif = 'Y' + AND SupplierPaymentIsConfirm = '{$status}' + AND (SupplierInvoiceNumber LIKE '%{$search}%' OR SupplierInvoiceSupplierInvoiceNumber LIKE '%{$search}%') + AND SupplierName LIKE '%{$supplier}%' + AND ReceiveOrderPoS_RegionalID = {$regionalid} + AND SupplierInvoiceDraftPaymentDate BETWEEN '{$startdate}' AND '{$enddate}'"; + + + + + $sql = " SELECT count(*) as total + FROM supplier_invoice + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + LEFT JOIN supplier_payment ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID AND SupplierPaymentIsActive = 'Y' + LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN receive_order_po ON SupplierInvoiceReceiveOrderPoID = ReceiveOrderPoID + WHERE + $where + "; + // echo $sql; + $query = $this->db_onedev->query($sql, $sql_param); + + + $tot_count = 0; + $tot_page = 0; + if ($query) { + $tot_count = $query->result_array()[0]["total"]; + $tot_page = ceil($tot_count/$number_limit); + } else { + $this->sys_error_db("supplier_invoice count", $this->db_onedev); + exit; + } + + + $sql = "SELECT supplier_invoice.*, + SupplierName, + '' M_MouName, + 0 as totalbill, + 0 as paid, + 0 as unpaid, + SupplierInvoiceIsLunas as flaglunas, + '' as SupplierPaymentNumber, + 0 as SupplierPaymentAmount, + '' as SupplierPaymentDate, + '' as SupplierInvoiceIssueRefNumber, + '' as notes, + '' as tagihans, + 'N' as isbillterpusat, + DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d-%m-%Y') as tanggalbayar, + DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d%m%Y') as tanggalbayartext, + IF(SupplierPaymentID IS NULL,'N','Y') as status_invoice, + SupplierPaymentID, + SupplierPaymentIsConfirm, + DATE_FORMAT(IFNULL(SupplierInvoiceSupplierInvoiceDate,''),'%d-%m-%Y') as tanggalinvoice, + 0 xrounding, + '' chex, + IFNULL(SupplierPaymentCashierNumber,'') SupplierPaymentCashierNumber + + + FROM supplier_invoice + LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN receive_order_po ON SupplierInvoiceReceiveOrderPoID = ReceiveOrderPoID + LEFT JOIN supplier_payment ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID AND SupplierPaymentIsActive = 'Y' + WHERE + $where + GROUP BY SupplierInvoiceID + ORDER BY SupplierInvoiceID ASC + limit $number_limit offset $number_offset"; + //echo $sql; + $query = $this->db_onedev->query($sql, $sql_param); + $rows = $query->result_array(); + if($rows){ + foreach($rows as $k => $v){ + $rows[$k]['chex'] = false; + $s_payment = $this->db_onedev->query("SELECT GROUP_CONCAT(SupplierPaymentNumber SEPARATOR ', ') as SupplierPaymentNumber, + SUM(IFNULL(SupplierPaymentAmount,0)) as SupplierPaymentAmount, + GROUP_CONCAT(DATE_FORMAT(SupplierPaymentDate,'%d-%m-%Y') SEPARATOR ', ') as SupplierPaymentDate + FROM supplier_payment + WHERE SupplierPaymentIsActive = 'Y' AND SupplierPaymentSupplierInvoiceID = {$v['SupplierInvoiceID']}")->row(); + + $s_jurnal = $this->db_onedev->query("SELECT SUM(jurnalTxCredit) totalbill + FROM supplier_invoice + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + WHERE SupplierInvoiceID = {$v['SupplierInvoiceID']} + GROUP BY SupplierInvoiceID")->row(); + $amount = $s_payment->SupplierPaymentAmount ? $s_payment->SupplierPaymentAmount : "0.00"; + $unpaid = (float)$s_jurnal->totalbill - (float)$amount; + $rows[$k]['SupplierPaymentNumber'] = $s_payment->SupplierPaymentNumber; + $rows[$k]['SupplierPaymentAmount'] = $amount; + $rows[$k]['SupplierPaymentDate'] = $s_payment->SupplierPaymentDate; + $rows[$k]['paid'] = $amount; + $rows[$k]['totalbill'] = $s_jurnal->totalbill ? $s_jurnal->totalbill : "0.00"; + $rows[$k]['unpaid'] = number_format($unpaid, 2, '.', ''); + + $rows[$k]['notes'] = $this->add_notes($v['SupplierInvoiceID']); + $rows[$k]['tagihans'] = $this->add_tagihans($v['SupplierInvoiceID']); + + } + } + + + $result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query()); + $this->sys_ok($result); + exit; + } + + +} diff --git a/application/controllers/mockup/supplierpaymentcashierv5/Bill.php --11072025 b/application/controllers/mockup/supplierpaymentcashierv5/Bill.php --11072025 new file mode 100644 index 0000000..edc373d --- /dev/null +++ b/application/controllers/mockup/supplierpaymentcashierv5/Bill.php --11072025 @@ -0,0 +1,205 @@ +db_onedev = $this->load->database("onedev", true); + } + + public function add_notes($orderid){ + $sql = " SELECT SupplierPaymentSupplierInvoiceID as note_order_id, + SupplierPaymentID as note_id, + SupplierPaymentDetailSupplierInvoiceDetailID as detail_id, + SupplierPaymentDate as note_date, + SupplierPaymentNumber as note_number, + GROUP_CONCAT(DISTINCT coaDescription separator ' , ') as paymenttypes_name, + SUM(SupplierPaymentDetailAmount) as note_amount, + M_UserUsername as note_user, + SupplierPaymentDetailIsActive as note_active, + 'xxx' as tests, + 'N' as show_detail, + SupplierPaymentNote as keterangan, + SupplierPaymentCoaID, + coaID, + coaDescription, + SupplierPaymentIsConfirm + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID + JOIN coa ON SupplierPaymentCoaID = coaID + LEFT JOIN m_user ON SupplierPaymentUserID = M_UserID + WHERE + SupplierPaymentSupplierInvoiceID = {$orderid} + AND + SupplierPaymentIsActive = 'Y' + GROUP BY SupplierPaymentID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + if($rows){ + foreach($rows as $k => $v){ + $rows[$k]['tests'] = $this->add_tests($v['note_id']); + } + } + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } + } + public function add_tagihans($orderid){ + $sql = " SELECT SupplierInvoiceID as tagihan_id, + PurchaseOrderNumber as tagihan_number, + '' as pasien, + CAST(IFNULL(SupplierInvoiceGrandTotal,0) AS UNSIGNED) as tagihan_total, + CAST(IFNULL(SupplierInvoiceUnpaid,0) AS UNSIGNED) as tagihan_tagihan, + 0 as tagihan_bayar, + DATE_FORMAT(SupplierInvoiceDueDate,'%d-%m-%Y') as tagihan_duedate, + SupplierInvoiceIsActive as tagihan_active, + 'N' as show_detail, + SupplierInvoiceDetailID, + SupplierInvoiceDetailPurchaseOrderID + FROM supplier_invoice + JOIN supplier_invoice_detail ON SupplierInvoiceDetailSupplierInvoiceID = SupplierInvoiceID AND SupplierInvoiceDetailIsActive = 'Y' + JOIN purchase_order ON SupplierInvoicePurchaseOrderID = PurchaseOrderID + WHERE + SupplierInvoiceID = {$orderid} + GROUP BY SupplierInvoiceID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } +} + public function add_tests($orderid){ + $sql = " SELECT SupplierPaymentSupplierInvoiceID as note_order_id, + SupplierPaymentID as note_id, + SupplierPaymentDate as note_date, + SupplierPaymentNumber as note_number, + GROUP_CONCAT(coaDescription separator ' , ') as paymenttypes_name, + SUM(SupplierPaymentDetailAmount) as note_amount, + M_UserUsername as note_user, + SupplierPaymentDetailIsActive as note_active, + PurchaseOrderNumber, + SupplierInvoiceDetailTotal, + SupplierPaymentDetailAmount + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID + LEFT JOIN supplier_invoice_detail ON SupplierPaymentDetailSupplierInvoiceDetailID = SupplierInvoiceDetailID + LEFT JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID + JOIN coa ON SupplierPaymentCoaID = coaID + LEFT JOIN m_user ON SupplierPaymentDetailUserID = M_UserID + WHERE + SupplierPaymentID = {$orderid} + GROUP BY SupplierPaymentDetailID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + if($rows){ + } + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } +} + public function search() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + $supplier = $prm["supplier"]; + $search = $prm["search"]; + $status = $prm["status"]; + $regionalid = $this->sys_user['S_RegionalID']; + + $number_limit = 10; + $number_offset = ($prm['current_page'] - 1) * $number_limit ; + + $where = "(SupplierInvoiceIsActive = 'Y' + AND SupplierInvoiceGrandTotal > 0 + AND SupplierInvoiceIsLunas = '{$status}' + AND (SupplierInvoiceNumber LIKE '%{$search}%' OR SupplierPaymentNumber LIKE '%{$search}%') AND SupplierName LIKE '%{$supplier}%') + AND PurchaseOrderS_RegionalID = {$regionalid}"; + + + + + $sql = " SELECT count(*) as total + FROM supplier_invoice + LEFT JOIN supplier_payment ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID AND SupplierPaymentIsActive = 'Y' + LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN purchase_order ON PurchaseOrderID = SupplierInvoicePurchaseOrderID + WHERE + $where + "; + // echo $sql; + $query = $this->db_onedev->query($sql, $sql_param); + + + $tot_count = 0; + $tot_page = 0; + if ($query) { + $tot_count = $query->result_array()[0]["total"]; + $tot_page = ceil($tot_count/$number_limit); + } else { + $this->sys_error_db("supplier_invoice count", $this->db_onedev); + exit; + } + + + $sql = "SELECT supplier_invoice.*, supplier_payment.*, + SupplierName, + '' M_MouName, + CAST(IFNULL(SupplierInvoiceGrandTotal,0) AS UNSIGNED) as totalbill, + CAST(IFNULL(SupplierInvoiceGrandTotal,0) AS UNSIGNED) - CAST(IFNULL(SupplierInvoiceUnpaid,0) AS UNSIGNED) as paid, + CAST(IFNULL(SupplierInvoiceUnpaid,0) AS UNSIGNED) as unpaid, + SupplierInvoiceIsLunas as flaglunas, + GROUP_CONCAT(SupplierPaymentNumber SEPARATOR ', ') as SupplierPaymentNumber, + SUM(CAST(IFNULL(SupplierPaymentAmount,0) AS UNSIGNED)) as SupplierPaymentAmount, + DATE_FORMAT(SupplierPaymentDate,'%d-%m-%Y') as SupplierPaymentDate, + '' as SupplierInvoiceIssueRefNumber, + '' as notes, + '' as tagihans, + 'N' as isbillterpusat + FROM supplier_invoice + LEFT JOIN supplier_payment ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID AND SupplierPaymentIsActive = 'Y' + LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN purchase_order ON PurchaseOrderID = SupplierInvoicePurchaseOrderID + WHERE + $where + GROUP BY SupplierInvoiceID + ORDER BY SupplierInvoiceID ASC + limit $number_limit offset $number_offset"; + //echo $sql; + $query = $this->db_onedev->query($sql, $sql_param); + $rows = $query->result_array(); + if($rows){ + foreach($rows as $k => $v){ + $rows[$k]['notes'] = $this->add_notes($v['SupplierInvoiceID']); + $rows[$k]['tagihans'] = $this->add_tagihans($v['SupplierInvoiceID']); + } + } + + + $result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query()); + $this->sys_ok($result); + exit; + } + + +} diff --git a/application/controllers/mockup/supplierpaymentcashierv5/Bill.php--13072025 b/application/controllers/mockup/supplierpaymentcashierv5/Bill.php--13072025 new file mode 100644 index 0000000..89d24ad --- /dev/null +++ b/application/controllers/mockup/supplierpaymentcashierv5/Bill.php--13072025 @@ -0,0 +1,214 @@ +db_onedev = $this->load->database("onedev", true); + } + + public function add_notes($orderid){ + $sql = " SELECT SupplierPaymentSupplierInvoiceID as note_order_id, + SupplierPaymentID as note_id, + SupplierPaymentDetailSupplierInvoiceDetailID as detail_id, + SupplierPaymentDate as note_date, + SupplierPaymentNumber as note_number, + GROUP_CONCAT(DISTINCT coaDescription separator ' , ') as paymenttypes_name, + SUM(SupplierPaymentDetailAmount) as note_amount, + M_UserUsername as note_user, + SupplierPaymentDetailIsActive as note_active, + 'xxx' as tests, + 'N' as show_detail, + SupplierPaymentNote as keterangan, + SupplierPaymentCoaID, + coaID, + coaDescription, + SupplierPaymentIsConfirm + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN coa ON SupplierPaymentCoaID = coaID + LEFT JOIN m_user ON SupplierPaymentUserID = M_UserID + WHERE + SupplierPaymentSupplierInvoiceID = {$orderid} + AND + SupplierPaymentIsActive = 'Y' + GROUP BY SupplierPaymentID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + if($rows){ + foreach($rows as $k => $v){ + $rows[$k]['tests'] = $this->add_tests($v['note_id']); + } + } + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } + } + public function add_tagihans($orderid){ + $sql = "SELECT SupplierInvoiceID as tagihan_id, + PurchaseOrderNumber as tagihan_number, + jurnalTxDescription as pasien, + jurnalTxCredit as tagihan_total, + IF(SupplierPaymentDetailID IS NULL , jurnalTxCredit, jurnalTxCredit - SUM(SupplierPaymentDetailAmount)) as tagihan_tagihan, + 0 as tagihan_bayar, + DATE_FORMAT(SupplierInvoiceDueDate,'%d-%m-%Y') as tagihan_duedate, + SupplierInvoiceIsActive as tagihan_active, + 'N' as show_detail, + jurnalTxID SupplierInvoiceDetailID, + PurchaseOrderID SupplierInvoiceDetailPurchaseOrderID + + FROM supplier_invoice + JOIN purchase_order ON SupplierInvoicePurchaseOrderID = PurchaseOrderID + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + LEFT JOIN supplier_payment ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID AND SupplierInvoiceIsActive = 'Y' + LEFT JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailSupplierInvoiceDetailID = jurnalTxID AND SupplierPaymentDetailIsActive = 'Y' + WHERE + SupplierInvoiceID = {$orderid} + GROUP BY jurnalTxID + "; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } +} + public function add_tests($orderid){ + $sql = " SELECT SupplierPaymentSupplierInvoiceID as note_order_id, + SupplierPaymentID as note_id, + SupplierPaymentDate as note_date, + SupplierPaymentNumber as note_number, + GROUP_CONCAT(coaDescription separator ' , ') as paymenttypes_name, + SUM(SupplierPaymentDetailAmount) as note_amount, + M_UserUsername as note_user, + SupplierPaymentDetailIsActive as note_active, + PurchaseOrderNumber, + SupplierInvoiceDetailTotal, + SupplierPaymentDetailAmount + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID + LEFT JOIN supplier_invoice_detail ON SupplierPaymentDetailSupplierInvoiceDetailID = SupplierInvoiceDetailID + LEFT JOIN purchase_order ON SupplierInvoiceDetailPurchaseOrderID = PurchaseOrderID + JOIN coa ON SupplierPaymentCoaID = coaID + LEFT JOIN m_user ON SupplierPaymentDetailUserID = M_UserID + WHERE + SupplierPaymentID = {$orderid} + GROUP BY SupplierPaymentDetailID"; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows = $query->result_array(); + if($rows){ + } + return $rows; + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } +} + public function search() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + $supplier = $prm["supplier"]; + $search = $prm["search"]; + $status = $prm["status"]; + $regionalid = $this->sys_user['S_RegionalID']; + + $number_limit = 10; + $number_offset = ($prm['current_page'] - 1) * $number_limit ; + + $where = "(SupplierInvoiceIsActive = 'Y' + AND SupplierInvoiceGrandTotal > 0 + AND SupplierInvoiceIsLunas = '{$status}' + AND (SupplierInvoiceNumber LIKE '%{$search}%' OR SupplierPaymentNumber LIKE '%{$search}%') AND SupplierName LIKE '%{$supplier}%') + AND PurchaseOrderS_RegionalID = {$regionalid}"; + + + + + $sql = " SELECT count(*) as total + FROM supplier_invoice + LEFT JOIN supplier_payment ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID AND SupplierPaymentIsActive = 'Y' + LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN purchase_order ON PurchaseOrderID = SupplierInvoicePurchaseOrderID + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + WHERE + $where + "; + // echo $sql; + $query = $this->db_onedev->query($sql, $sql_param); + + + $tot_count = 0; + $tot_page = 0; + if ($query) { + $tot_count = $query->result_array()[0]["total"]; + $tot_page = ceil($tot_count/$number_limit); + } else { + $this->sys_error_db("supplier_invoice count", $this->db_onedev); + exit; + } + + + $sql = "SELECT supplier_invoice.*, + SupplierName, + '' M_MouName, + SUM(jurnalTxCredit) as totalbill, + SUM(IFNULL(SupplierPaymentAmount,0)) as paid, + SUM(jurnalTxCredit) - SUM(IFNULL(SupplierPaymentAmount,0)) as unpaid, + SupplierInvoiceIsLunas as flaglunas, + GROUP_CONCAT(SupplierPaymentNumber SEPARATOR ', ') as SupplierPaymentNumber, + SUM(IFNULL(SupplierPaymentAmount,0)) as SupplierPaymentAmount, + DATE_FORMAT(SupplierPaymentDate,'%d-%m-%Y') as SupplierPaymentDate, + '' as SupplierInvoiceIssueRefNumber, + '' as notes, + '' as tagihans, + 'N' as isbillterpusat + FROM supplier_invoice + LEFT JOIN supplier_payment ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID AND SupplierPaymentIsActive = 'Y' + LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID + JOIN purchase_order ON PurchaseOrderID = SupplierInvoicePurchaseOrderID + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + WHERE + $where + GROUP BY SupplierInvoiceID + ORDER BY SupplierInvoiceID ASC + limit $number_limit offset $number_offset"; + //echo $sql; + $query = $this->db_onedev->query($sql, $sql_param); + $rows = $query->result_array(); + if($rows){ + foreach($rows as $k => $v){ + $rows[$k]['notes'] = $this->add_notes($v['SupplierInvoiceID']); + $rows[$k]['tagihans'] = $this->add_tagihans($v['SupplierInvoiceID']); + } + } + + + $result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query()); + $this->sys_ok($result); + exit; + } + + +} diff --git a/application/controllers/mockup/supplierpaymentcashierv5/Payment.php b/application/controllers/mockup/supplierpaymentcashierv5/Payment.php new file mode 100644 index 0000000..84495d9 --- /dev/null +++ b/application/controllers/mockup/supplierpaymentcashierv5/Payment.php @@ -0,0 +1,1582 @@ +db_onedev = $this->load->database("onedev", true); + } + + function lookup_type() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $query = "SELECT coaID as id, + coaCode as code, + 'N' as chex, + coaDescription as chexlabel, + 'Jumlah' as leftlabel, + '' as selected_card, + '' as selected_edc, + '' as selected_account, + CASE + WHEN coaCode = 'CASH' THEN 'Kembali' + WHEN coaCode = 'DEBIT' THEN 'Nomor Kartu' + WHEN coaCode = 'CREDIT' THEN 'Nomor Kartu' + WHEN coaCode = 'TRANSFER' THEN 'No. Rekening' + ELSE 'Nomor Voucher' + END as rightlabel, + 0 as leftvalue, + 0 as rightvalue + FROM m_paymenttype WHERE coaIsActive = 'Y'"; + $rows = $this->db_onedev->query($query)->result_array(); + foreach($rows as $k => $v){ + $rows[$k]['selected_card'] = array('id'=>0,'name'=>''); + $rows[$k]['selected_edc'] = array('id'=>0,'name'=>''); + $rows[$k]['selected_account'] = array('id'=>0,'name'=>''); + if($v['chex'] == 'N') + $rows[$k]['chex'] = false; + else + $rows[$k]['chex'] = true; + } + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + exit; + } + function selectpaymenttypeold(){ + + try { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $rows = []; + $query ="SELECT * FROM m_paymenttype + WHERE + coaIsActive = 'Y'"; + //echo $query; + $rows['paymenttypes'] = $this->db_onedev->query($query)->result_array(); + + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + + + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + + } + function selectpaymenttype(){ + + try { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $rows = []; + $regionalid = $this->sys_user['S_RegionalID']; + $prm = $this->sys_input; + $search = $prm["search"]; + $query ="SELECT coaID, + coaAccountNo, + coaDescription, + coaSubDescription + FROM coa + JOIN s_regional ON S_RegionalID = $regionalid + JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + JOIN map_bank_coa ON MapBank_CoaID = coaID AND MapBank_BranchCode = M_BranchCode + WHERE + coaIsActive = 'Y' AND + coaIsInput = 'Y' AND + coaAccountNo LIKE '111%' AND + coaAccountNo LIKE '11102%' AND + coaDescription LIKE '%{$search}%' + + UNION + SELECT coaID, + coaAccountNo, + coaDescription, + coaSubDescription + FROM coa + WHERE + coaIsActive = 'Y' AND + coaIsInput = 'Y' AND + coaAccountNo LIKE '111%' AND + coaAccountNo NOT LIKE '11102%' AND + coaDescription LIKE '%{$search}%' + ORDER BY coaAccountNo ASC"; + //echo $query; + $rows['paymenttypes'] = $this->db_onedev->query($query)->result_array(); + + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + + + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + + } + public function selecttagihan(){ + $prm = $this->sys_input; + $id = $prm["id"]; + $sql = "SELECT SupplierInvoiceID as tagihan_id, + SupplierPaymentNumber as tagihan_number, + SupplierInvoiceReffNumber, + '' as pasien, + SupplierPaymentAmount as tagihan_total, + SupplierPaymentAmount as tagihan_tagihan, + 0 as tagihan_bayar, + DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d-%m-%Y') as tagihan_duedate, + SupplierInvoiceIsActive as tagihan_active, + 'N' as show_detail, + '' SupplierInvoiceDetailID, + '' SupplierInvoiceDetailPurchaseOrderID + + FROM supplier_invoice + JOIN supplier_payment ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID AND SupplierInvoiceIsActive = 'Y' + WHERE + SupplierInvoiceSupplierID = {$id} AND SupplierPaymentIsApproved = 'Y' AND SupplierPaymentIsConfirm = 'N' AND SupplierPaymentIsActive = 'Y' + GROUP BY SupplierPaymentID + "; + $query = $this->db_onedev->query($sql); + if ($query) { + $rows['tagihans'] = $query->result_array(); + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + + } else { + $this->sys_error_db("get notes", $this->db_onedev); + exit; + } + } + function selectsupplier(){ + try { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $rows = []; + $regionalid = $this->sys_user['S_RegionalID']; + $prm = $this->sys_input; + $search = $prm["search"]; + + $query ="SELECT * + FROM supplier + WHERE + SupplierIsActive = 'Y' AND + (SupplierName LIKE '%{$search}%' OR SupplierCode LIKE '%{$search}%') + ORDER BY SupplierName ASC"; + //echo $query; + $que = $this->db_onedev->query($query, []); + if (!$que) { + $this->sys_error_db("[Error] select supplier"); + exit; + } + $rows['suppliers'] = $que->result_array(); + + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + function selectbank(){ + try { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $rows = []; + $query ="SELECT * + FROM nat_bank + WHERE + Nat_BankIsActive = 'Y' + ORDER BY Nat_BankCode DESC"; + //echo $query; + $que = $this->db_onedev->query($query, []); + if (!$que) { + $this->sys_error_db("[Error] get data bankk"); + exit; + } + $rows['banks'] = $que->result_array(); + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + + + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + + } + function selectaccount(){ + try { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $rows = []; + $query ="SELECT M_BankAccountID as M_BankAccountID, CONCAT(Nat_BankCode,' (',M_BankAccountNo,')') as M_BankAccountName + FROM m_bank_account + JOIN nat_bank ON M_BankAccountNat_BankID = Nat_BankID + WHERE + M_BankAccountIsActive = 'Y' + ORDER BY Nat_BankCode DESC"; + //echo $query; + $que = $this->db_onedev->query($query, []); + if (!$que) { + $this->sys_error_db("[Err] select account"); + exit; + } + $rows['accounts'] = $que->result_array(); + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + function lookup_banks() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $query = "SELECT Nat_BankID as id, Nat_BankCode as name + FROM nat_bank + WHERE + Nat_BankIsActive = 'Y' + ORDER BY Nat_BankCode DESC"; + $rows = $this->db_onedev->query($query)->result_array(); + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + exit; + } + + function lookup_accounts() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $query = "SELECT M_BankAccountID as id, CONCAT(Nat_BankCode,' (',M_BankAccountNo,')') as name + FROM m_bank_account + JOIN nat_bank ON M_BankAccountNat_BankID = Nat_BankID + WHERE + M_BankAccountIsActive = 'Y' + ORDER BY Nat_BankCode DESC"; + $rows = $this->db_onedev->query($query)->result_array(); + + $result = array( + "total" => count($rows) , + "records" => $rows, + ); + $this->sys_ok($result); + exit; + } + + + + function searchcard(){ + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + + $max_rst = 12; + $tot_count =0; + + $q = [ + 'search' => '%' + ]; + + if ($prm['search'] != '') + { + $q['search'] = "%{$prm['search']}%"; + } + + // QUERY TOTAL + if($prm['search'] != ''){ + $sql = " + SELECT count(*) as total + FROM nat_bank + WHERE + Nat_BankName like ? + AND Nat_BankIsActive = 'Y' + ORDER BY Nat_BankName DESC + "; + } + else{ + $sql = " + SELECT count(*) as total + FROM nat_bank + WHERE + Nat_BankIsActive = 'Y' + ORDER BY Nat_BankName DESC + "; + } + $query = $this->db_onedev->query($sql,$q['search']); + //echo $query; + if ($query) { + $tot_count = $query->result_array()[0]["total"]; + } + else { + $this->sys_error_db("m_city count",$this->db_onedev); + exit; + } + if($prm['search'] != ''){ + $sql = " + SELECT Nat_BankID as id, Nat_BankName as name + FROM nat_bank + WHERE + Nat_BankName like ? + AND Nat_BankIsActive = 'Y' + ORDER BY Nat_BankName DESC + "; + } + else{ + $sql = " + SELECT Nat_BankID as id, Nat_BankName as name + FROM nat_bank + WHERE + Nat_BankIsActive = 'Y' + ORDER BY Nat_BankName DESC + "; + } + + $query = $this->db_onedev->query($sql, array($q['search'])); + + if ($query) { + $rows = $query->result_array(); + //echo $this->db_onedev->last_query(); + $result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows)); + $this->sys_ok($result); + } + else { + $this->sys_error_db("m_city rows",$this->db_onedev); + exit; + } + } + + public function pay() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + //# ambil parameter input + $xuserid = $this->sys_user['M_UserID']; + $prm = $this->sys_input; + $orderid = $prm['orderid']; + $payments = $prm['payments']; + //$xnumber = $this->db_onedev->query("SELECT `fn_numbering`('PAY') as numberx")->row()->numberx; + $sql = "INSERT INTO supplier_payment + (SupplierPaymentSupplierInvoiceID,SupplierPaymentDate,SupplierPaymentCreated,SupplierPaymentUserID) + VALUES (?,CURDATE(),NOW(),?)"; + $query = $this->db_onedev->query($sql,[$orderid, $xuserid]); + + if (!$query) { + $this->sys_error_db("supplier_payment insert"); + exit; + } + $headerid = $this->db_onedev->insert_id(); + //echo $headerid; + + foreach($payments as $k => $v){ + if($v['chex']){ + $actual = 0; + $change = 0; + $amount = $v['leftvalue']; + if($v['code'] == 'CASH'){ + $actual = $v['leftvalue']; + $change = $v['rightvalue']; + if($actual > 0){ + $amount = intval($v['leftvalue']) - intval($v['rightvalue']); + } + else{ + $amount = $actual; + } + + $sql = "CALL `sp_bill_payment_add_cash`(".$orderid.",".$amount.",".$amount.",".$headerid.",".$v['id'].",".$xuserid.")"; + $query = $this->db_onedev->query($sql); + + if (!$query) { + $this->sys_error_db("supplier_payment_detail cash insert"); + exit; + } + + } + else{ + if(intval($v['leftvalue']) > 0){ + $actual = 0; + $change = 0; + $amount = $v['leftvalue']; + $selected_card = 0; + $selected_edc = 0; + $selected_account = 0; + if($v['code'] == 'DEBIT' || $v['code'] == 'CREDIT' || $v['code'] == 'TRANSFER'){ + $selected_card = $v['selected_card']['id']; + $selected_edc = $v['selected_edc']['id']; + $selected_account = $v['selected_account']['id']; + } + $sql = "CALL `sp_bill_payment_add_noncash`(".$orderid.",".$amount.",".$amount.",".$headerid.",".$v['id'].",".$xuserid.",".$selected_card.",".$selected_edc.",".$selected_account.")"; + //echo $sql; + + $query = $this->db_onedev->query($sql); + //echo $this->db_onedev->last_query(); + if (!$query) { + $this->sys_error_db("supplier_payment_detail non cash insert"); + exit; + } + } + } + } + } + + $query = "SELECT coaID as id, + coaCode as code, + IF(coaCode = 'CASH','Y','N') as chex, + coaDescription as chexlabel, + 'Jumlah' as leftlabel, + CASE + WHEN coaCode = 'CASH' THEN 'Kembali' + WHEN coaCode = 'DEBIT' THEN 'Nomor Kartu' + WHEN coaCode = 'CREDIT' THEN 'Nomor Kartu' + WHEN coaCode = 'TRANSFER' THEN 'Nomor Rekening' + ELSE 'Nomor Voucher' + END as rightlabel, + 0 as leftvalue, + 0 as rightvalue + FROM m_paymenttype WHERE coaIsActive = 'Y'"; + $rows = $this->db_onedev->query($query)->result_array(); + + foreach($rows as $k => $v){ + if($v['chex'] == 'N') + $rows[$k]['chex'] = false; + else + $rows[$k]['chex'] = true; + } + $xdata = $this->db_onedev->query("SELECT SupplierPaymentID as idx, SupplierPaymentNumber as numberx FROM supplier_payment WHERE SupplierPaymentID = {$headerid}")->row(); + $result = array( + "total" => count($rows) , + "records" => array('types'=>$rows,'data'=>$xdata) + ); + $this->sys_ok($result); + exit; + } + + function paymanualold() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + //# ambil parameter input + $xuserid = $this->sys_user['M_UserID']; + $prm = $this->sys_input; + $orderid = $prm['orderid']; + $amount = $prm['amount']; + $paymenttype = $prm['paymenttype']; + $tanggalbayar = date('Y-m-d', strtotime($prm['tanggalbayar'])); + + $totalbill = $prm['totalbill']; + $paid = $prm['paid']; + + $keterangan = $prm['keterangan']; + $bills = $prm['bills']; + $xnumber = $this->db_onedev->query("SELECT `fn_numbering`('PINV') as numberx")->row()->numberx; + $sql = "INSERT INTO supplier_payment + (SupplierPaymentSupplierInvoiceID, + SupplierPaymentNumber, + SupplierPaymentDate, + SupplierPaymentAmount, + SupplierPaymentCoaID, + SupplierPaymentNote, + SupplierPaymentCreated, + SupplierPaymentUserID) + VALUES (?, + ?, + CURDATE(), + ?, + ?, + ?, + NOW(), + ?)"; + $query = $this->db_onedev->query($sql, + array( + $orderid, + $xnumber, + $amount, + $paymenttype, + $keterangan, + $xuserid + ) + ); + $headerid = $this->db_onedev->insert_id(); + if (!$query) { + $this->sys_error_db("supplier_payment insert"); + exit; + } else{ + $sqlbill = "UPDATE supplier_invoice SET + SupplierInvoiceDraftPaymentDate = '{$tanggalbayar}' + WHERE SupplierInvoiceID = $orderid"; + $querybill = $this->db_onedev->query($sqlbill); + + //echo $this->db_onedev->last_query(); + + } + + //echo $headerid; + + foreach($bills as $k => $v){ + if($v['tagihan_bayar'] > 0){ + $SupplierInvoiceDetailID = $v['SupplierInvoiceDetailID']; + $tagihan_bayar = $v['tagihan_bayar']; + $SupplierInvoiceDetailPurchaseOrderID = $v['SupplierInvoiceDetailPurchaseOrderID']; + $sql = "INSERT INTO supplier_payment_detail( + SupplierPaymentDetailSupplierPaymentID, + SupplierPaymentDetailSupplierInvoiceDetailID, + SupplierPaymentDetailAmount, + SupplierPaymentDetailUserID, + SupplierPaymentDetailCreated, + SupplierPaymentDetailLastUpdated) + VALUES( + $headerid, + $SupplierInvoiceDetailID, + $tagihan_bayar, + $xuserid, + now(), + now())"; + $query = $this->db_onedev->query($sql); + $billpaymentdetailid = $this->db_onedev->insert_id(); + if (!$query) { + $this->sys_error_db("supplier_payment_detail cash insert"); + exit; + }else{ + $sqlbilldetail = "UPDATE supplier_invoice_detail SET + SupplierInvoiceDetailUnpaid = SupplierInvoiceDetailUnpaid - $tagihan_bayar + WHERE SupplierInvoiceDetailID = $SupplierInvoiceDetailID"; + $querybilldetail = $this->db_onedev->query($sqlbilldetail); + + /* $sqlpayment = "INSERT INTO f_payment + (F_PaymentPurchaseOrderID, + F_PaymentDate, + F_PaymentTotal, + F_PaymentCreated, + F_PaymentLastUpdated, + F_PaymentM_UserID) + VALUES( + $SupplierInvoiceDetailPurchaseOrderID, + now(), + $tagihan_bayar, + now(), + now(), + $xuserid)"; + $querypayment = $this->db_onedev->query($sqlpayment); + $paymentid = $this->db_onedev->insert_id(); + $sqlpaymentdetail = "INSERT INTO f_paymentdetail + (F_PaymentDetailF_PaymentID, + F_PaymentDetailcoaID, + F_PaymentDetailAmount, + F_PaymentDetailActual, + F_PaymentDetailChange, + F_PaymentDetailEDCNat_BankID, + F_PaymentDetailCardNat_BankID, + F_PaymentDetailM_BankAccountID, + F_PaymentDetailCreated, + F_PaymentDetailLastUpdated, + F_PaymentDetailUserID) + VALUES( + $paymentid, + $paymenttype, + $tagihan_bayar, + $tagihan_bayar, + 0, + $edc, + $card, + $account, + now(), + now(), + $xuserid)"; + //echo $sqlpaymentdetail; + $querypaymentdetail = $this->db_onedev->query($sqlpaymentdetail); + + $sqleditbillpaymentdetail = "UPDATE supplier_payment_detail SET + SupplierPaymentDetailF_PaymentID = $paymentid + WHERE SupplierPaymentDetailID = $billpaymentdetailid"; + $queryeditbillpaymentdetail = $this->db_onedev->query($sqleditbillpaymentdetail); + + */ + } + + + } + } + $sql = "SELECT * FROM supplier_payment + JOIN m_user ON M_UserID = SupplierPaymentUserID + WHERE SupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $row = $query->row_array(); + + $sql = "SELECT * FROM supplier_payment_detail + WHERE SupplierPaymentDetailSupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $rows = $query->row_array(); + + $data = array("header" => $row, + "details" => $rows); + $message = "Nomor Pembayaran Faktur: " . $row["SupplierPaymentNumber"] ." berhasil dibuat oleh " . $row["M_UserUsername"]; + $this->insert_act_log("PF", "NEW", $message, $headerid, $this->safeJsonEncode($data), $xuserid); + + $xdata = $this->db_onedev->query("SELECT SupplierPaymentID as idx, SupplierPaymentNumber as numberx FROM supplier_payment WHERE SupplierPaymentID = {$headerid}")->row(); + $result = array( + "total" => count($rows) , + "records" => array('data'=>$xdata) + ); + $this->sys_ok($result); + exit; + } + + public function paymulti() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + //# ambil parameter input + $xuserid = $this->sys_user['M_UserID']; + $regionalid = $this->sys_user['S_RegionalID']; + $prm = $this->sys_input; + + $xnumber = $this->db_onedev->query("SELECT `fn_numbering`('PC') as numberx")->row()->numberx; + $xpaynumber = $this->db_onedev->query("SELECT `fn_numbering`('PN') as numberx")->row()->numberx; + + $rounding = 0; + if (doubleval($prm['xrounding']) > 0) { + $rounding = round(doubleval($prm['xrounding']), 2) - round(doubleval($prm['total']), 2); + } + $lastindex = count($prm['details']); + $isLastIndex = 0; + + foreach($prm['details'] as $k => $v){ + $headerid = $v['SupplierPaymentID']; + $orderid = $v['SupplierInvoiceID']; + + $xrounding = 0.00; + if ($isLastIndex == $lastindex) { + $xrounding = $rounding; + } + $isLastIndex = $isLastIndex + 1; + + $sql = "UPDATE supplier_payment + SET SupplierPaymentIsConfirm = 'Y', + SupplierPaymentConfirmUserID = {$xuserid}, + SupplierPaymentGroupNumber = '{$xnumber}', + SupplierPaymentCashierNumber = '{$xpaynumber}', + SupplierPaymentRounding = ?, + SupplierPaymentConfirmDate = now(), + SupplierPaymentNote = '{$prm['keterangan']}', + SupplierPaymentCoaID = {$prm['paymenttype']} + WHERE SupplierPaymentID = {$headerid}"; + // echo $sql; + $query = $this->db_onedev->query($sql, [$xrounding]); + if (!$query) { + $this->sys_error_db("supplier_payment delete"); + exit; + } + + //echo $this->db_onedev->last_query(); + $sql = "SELECT * FROM supplier_payment + JOIN m_user ON M_UserID = SupplierPaymentUserID + WHERE SupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $row = $query->row_array(); + + $s_payment = $this->db_onedev->query("SELECT SUM(IFNULL(SupplierPaymentAmount,0)) as SupplierPaymentAmount + FROM supplier_payment + WHERE SupplierPaymentIsActive = 'Y' AND SupplierPaymentSupplierInvoiceID = {$v['SupplierInvoiceID']}")->row(); + + $s_jurnal = $this->db_onedev->query("SELECT SUM(jurnalTxCredit) totalbill + FROM supplier_invoice + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + WHERE SupplierInvoiceID = {$v['SupplierInvoiceID']} + GROUP BY SupplierInvoiceID")->row(); + + $totalbill = $s_jurnal->totalbill; + $amount = $s_payment->SupplierPaymentAmount ?: "0.00"; + + $x_total = $totalbill - $amount; + if($x_total == 0){ + $sqlbill = "UPDATE supplier_invoice SET + SupplierInvoiceIsLunas = 'Y' + WHERE SupplierInvoiceID = $orderid"; + $querybill = $this->db_onedev->query($sqlbill); + if (!$querybill) { + $this->sys_error_db("[Err] update status supllier invoice to lunas"); + exit; + } + } + + $sql = "SELECT * FROM supplier_payment_detail + WHERE SupplierPaymentDetailSupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $rows = $query->row_array(); + + $data = [ + "header" => $row, + "details" => $rows + ]; + $message = "Nomor Pembayaran Faktur: " . $row["SupplierPaymentNumber"] ." telah dikonfirmasi oleh " . $row["M_UserUsername"]; + $this->insert_act_log("PF", "CONFIRM", $message, $headerid, $this->safeJsonEncode($data), $xuserid); + + $sqlData = "SELECT SupplierPaymentDetailID as id, + SupplierPaymentID, + SupplierPaymentNumber, + 0 M_BranchID, + '' M_BranchCode, + '' M_BranchName, + M_BranchS_RegionalID, + M_BranchCompanyID, + M_BranchCompanyName, + CONCAT('Jurnal Payment Invoice Nomor : ', SupplierPaymentNumber, DATE_FORMAT(now(), ', Tanggal %d-%m-%Y ')) xdescription, + IFNULL(periodeID,0) periodeid, + CONCAT('Jurnal Payment Invoice Nomor : ', SupplierPaymentNumber, DATE_FORMAT(now(), ', Tanggal %d-%m-%Y '), 'Regional ',S_RegionalName) title, + 22 typeid, + '' detailjurnal, + coaID, + coaAccountNo, + coaDescription, + 0 debit, + SupplierPaymentDetailAmount credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + JOIN coa ON coaID = SupplierPaymentCoaID + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN jurnal_tx ON jurnalTxID = SupplierPaymentDetailSupplierInvoiceDetailID + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + GROUP BY SupplierPaymentID"; + $newData = $this->db_onedev->query($sqlData)->result_array(); + if ($newData) { + foreach ($newData as $key => $value) { + $branchid = $value["M_BranchID"]; + $periodeid = $value["periodeid"]; + $branchcompanyid = $value["M_BranchCompanyID"]; + $date = date('Y-m-d'); + $description = $value["xdescription"]; + $regionalid = $value["M_BranchS_RegionalID"]; + $title = $value["title"]; + $typeid = $value["typeid"]; + $pvno = $value["SupplierPaymentNumber"]; + + $detailjurnal = $this->db_onedev->query("SELECT SupplierPaymentDetailID as id, + coaID coaid, + coaDescription xdescription, + 0 debit, + SupplierPaymentDetailAmount credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN jurnal_tx ON jurnalTxID = SupplierPaymentDetailSupplierInvoiceDetailID + JOIN coa ON coaID = IF(jurnalTxCoaID = 1176,jurnalTxCoaID,SupplierPaymentCoaID) + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + UNION + + SELECT jurnalTxID as id, + jurnalTxCoaID coaid, + jurnalTxDescription xdescription, + SupplierPaymentDetailAmount debit, + 0 credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN jurnal_tx ON jurnalTxID = SupplierPaymentDetailSupplierInvoiceDetailID + JOIN coa ON coaID = jurnalTxCoaID + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + UNION + SELECT 0 as id, + coaID coaid, + coaDescription xdescription, + 0 debit, + SupplierPaymentRounding credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN coa ON coaAccountNo = '1141100002' + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + UNION + + SELECT 0 as id, + coaID coaid, + coaDescription xdescription, + SupplierPaymentRounding debit, + 0 credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN coa ON coaAccountNo = '1141100002' + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + GROUP BY id")->result_array(); + + //echo $this->db->last_query(); + $rows[$k]['detailjurnal'] = $detailjurnal; + $this->savejurnal($branchid, $date, $description, $periodeid, $regionalid, $title, $typeid, $detailjurnal, $pvno, $branchcompanyid); + } + } + + $result = [ + "total" => 1 , + "records" => array('prm'=>$prm) + ]; + + } + $this->sys_ok($result); + exit; + } + + public function paymanual() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + //# ambil parameter input + $xuserid = $this->sys_user['M_UserID']; + $regionalid = $this->sys_user['S_RegionalID']; + $prm = $this->sys_input; + $headerid = $prm['orderid']; + + $xnumber = $this->db_onedev->query("SELECT `fn_numbering`('PC') as numberx")->row()->numberx; + $xpaynumber = $this->db_onedev->query("SELECT `fn_numbering`('PN') as numberx")->row()->numberx; + + $rounding = 0; + if (doubleval($prm['xrounding']) > 0) { + $rounding = round(doubleval($prm['xrounding']), 2) - round(doubleval($prm['amount']), 2); + } + + $sql = "UPDATE supplier_payment + SET SupplierPaymentIsConfirm = 'Y', + SupplierPaymentConfirmUserID = {$xuserid}, + SupplierPaymentGroupNumber = '{$xnumber}', + SupplierPaymentCashierNumber = '{$xpaynumber}', + SupplierPaymentRounding = {$rounding}, + SupplierPaymentConfirmDate = now(), + SupplierPaymentNote = '{$prm['keterangan']}', + SupplierPaymentCoaID = {$prm['paymenttype']} + WHERE SupplierPaymentID = {$headerid}"; + + // echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_payment delete"); + exit; + } + + //echo $this->db_onedev->last_query(); + + $sql = "SELECT * FROM supplier_payment + JOIN m_user ON M_UserID = SupplierPaymentUserID + WHERE SupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $row = $query->row_array(); + + $s_payment = $this->db_onedev->query("SELECT SUM(IFNULL(SupplierPaymentAmount,0)) as SupplierPaymentAmount + FROM supplier_payment + WHERE SupplierPaymentIsActive = 'Y' AND SupplierPaymentSupplierInvoiceID = {$prm['SupplierInvoiceID']}")->row(); + + + $s_jurnal = $this->db_onedev->query("SELECT SUM(jurnalTxCredit) totalbill + FROM supplier_invoice + JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber + JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 + WHERE SupplierInvoiceID = {$prm['SupplierInvoiceID']} + GROUP BY SupplierInvoiceID")->row(); + + + + $totalbill = $s_jurnal->totalbill; + $amount = $s_payment->SupplierPaymentAmount ? $s_payment->SupplierPaymentAmount : "0.00"; + + $x_total = $totalbill - $amount; + if($x_total == 0){ + $sqlbill = "UPDATE supplier_invoice SET + SupplierInvoiceIsLunas = 'Y' + WHERE SupplierInvoiceID = $orderid"; + $querybill = $this->db_onedev->query($sqlbill); + } + + $sql = "SELECT * FROM supplier_payment_detail + WHERE SupplierPaymentDetailSupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $rows = $query->row_array(); + + $data = array("header" => $row, + "details" => $rows); + $message = "Nomor Pembayaran Faktur: " . $row["SupplierPaymentNumber"] ." telah dikonfirmasi oleh " . $row["M_UserUsername"]; + $this->insert_act_log("PF", "CONFIRM", $message, $headerid, $this->safeJsonEncode($data), $xuserid); + + $sqlData = "SELECT SupplierPaymentDetailID as id, + SupplierPaymentID, + SupplierPaymentNumber, + 0 M_BranchID, + '' M_BranchCode, + '' M_BranchName, + M_BranchS_RegionalID, + M_BranchCompanyID, + M_BranchCompanyName, + CONCAT('Jurnal Payment Invoice Nomor : ', SupplierPaymentNumber, DATE_FORMAT(now(), ', Tanggal %d-%m-%Y ')) xdescription, + IFNULL(periodeID,0) periodeid, + CONCAT('Jurnal Payment Invoice Nomor : ', SupplierPaymentNumber, DATE_FORMAT(now(), ', Tanggal %d-%m-%Y '), 'Regional ',S_RegionalName) title, + 22 typeid, + '' detailjurnal, + coaID, + coaAccountNo, + coaDescription, + 0 debit, + SupplierPaymentDetailAmount credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + JOIN coa ON coaID = SupplierPaymentCoaID + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN jurnal_tx ON jurnalTxID = SupplierPaymentDetailSupplierInvoiceDetailID + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + GROUP BY SupplierPaymentID"; + $newData = $this->db_onedev->query($sqlData)->result_array(); + // echo $this->db_onedev->last_query(); + if ($newData) { + foreach ($newData as $k => $v) { + $branchid = $v["M_BranchID"]; + $periodeid = $v["periodeid"]; + $branchcompanyid = $v["M_BranchCompanyID"]; + $date = date('Y-m-d'); + $description = $v["xdescription"]; + $regionalid = $v["M_BranchS_RegionalID"]; + $title = $v["title"]; + $typeid = $v["typeid"]; + $pvno = $v["SupplierPaymentNumber"]; + $detailjurnal = $this->db_onedev->query("SELECT SupplierPaymentDetailID as id, + coaID coaid, + coaDescription xdescription, + 0 debit, + SupplierPaymentDetailAmount credit + + + + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN jurnal_tx ON jurnalTxID = SupplierPaymentDetailSupplierInvoiceDetailID + JOIN coa ON coaID = IF(jurnalTxCoaID = 1176,jurnalTxCoaID,SupplierPaymentCoaID) + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + UNION SELECT jurnalTxID as id, + jurnalTxCoaID coaid, + jurnalTxDescription xdescription, + SupplierPaymentDetailAmount debit, + 0 credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN jurnal_tx ON jurnalTxID = SupplierPaymentDetailSupplierInvoiceDetailID + JOIN coa ON coaID = jurnalTxCoaID + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + UNION SELECT 0 as id, + coaID coaid, + coaDescription xdescription, + 0 debit, + SupplierPaymentRounding credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN coa ON coaAccountNo = '1141100002' + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + UNION SELECT 0 as id, + coaID coaid, + coaDescription xdescription, + SupplierPaymentRounding debit, + 0 credit + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' + JOIN s_regional ON S_RegionalID = $regionalid + LEFT JOIN m_branch ON M_BranchS_RegionalID = S_RegionalID + LEFT JOIN m_branch_companydetail ON M_BranchCompanyDetailM_BranchCode = M_BranchCode AND M_BranchCompanyDetailIsActive = 'Y' + LEFT JOIN m_branch_company ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID AND M_BranchCompanyIsActive = 'Y' + LEFT JOIN periode ON date(now()) BETWEEN periodeStartDate AND periodeEndDate AND periodeIsActive = 'Y' + JOIN coa ON coaAccountNo = '1141100002' + WHERE SupplierPaymentID = {$headerid} AND SupplierPaymentIsActive = 'Y' + + GROUP BY id")->result_array(); + //echo $this->db->last_query(); + $rows[$k]['detailjurnal'] = $detailjurnal; + + $this->savejurnal($branchid, $date, $description, $periodeid, $regionalid, $title, $typeid, $detailjurnal, $pvno, $branchcompanyid); + } + + } + + $result = array( + "total" => 1 , + "records" => array('prm'=>$prm) + ); + $this->sys_ok($result); + exit; + } + + function savejurnal($branchid, $date, $description, $periodeid, $regionalid, $title, $typeid, $detailjurnal, $pvno, $branchcompanyid) + { + try { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + $this->db_onedev->trans_begin(); + $userid = $this->sys_user['M_UserID']; + + $sql_branch = "SELECT + M_BranchID, + M_BranchCode, + M_BranchName + FROM m_branch + WHERE M_BranchIsActive = 'Y' + AND M_BranchID = ?"; + $qry_branch = $this->db_onedev->query($sql_branch, array($branchid)); + if ($qry_branch) { + $branchcodex = $qry_branch->row()->M_BranchCode; + } else { + $this->db_onedev->trans_rollback(); + $this->sys_error_db("select branch error", $this->db); + exit; + } + + $sql = "INSERT INTO jurnal( + jurnalM_BranchCompanyID, + JurnalS_RegionalID, + jurnalM_BranchCode, + jurnalperiodeID, + jurnalNo, + jurnalTitle, + jurnalDescription, + jurnalDate, + jurnalJurnalTypeID, + jurnalIsActive, + jurnalCreated, + jurnalM_UserID + ) VALUES(?,?,?,?,`fn_numbering`('J'),?,?,?,?,'Y',NOW(),?)"; + $qry = $this->db_onedev->query($sql, array( + $branchcompanyid, + $regionalid, + $branchcodex, + $periodeid, + $title, + $description, + $date, + $typeid, + $userid + )); + $last_qry = $this->db_onedev->last_query(); + if (!$qry) { + $this->db_onedev->trans_rollback(); + $error = array( + "message" => $this->db_onedev->error()["message"], + "sql" => $last_qry + ); + $this->sys_error_db($error, $this->db); + exit; + } + + $last_id = $this->db_onedev->insert_id(); + + foreach ($detailjurnal as $key => $value) { + $sql_detail = "INSERT INTO jurnal_tx( + jurnalTxJurnalID, + jurnalTxCoaID, + jurnalTxDescription, + jurnalTxDebit, + jurnalTxCredit, + jurnalTxIsActive, + jurnalTxCreated, + jurnalTxM_UserID) VALUES(?,?,?,?,?,'Y',NOW(),?)"; + $qry_detail = $this->db_onedev->query($sql_detail, array( + $last_id, + $value["coaid"], + $value["xdescription"], + $value["debit"], + $value["credit"], + $userid + )); + $last_qry = $this->db_onedev->last_query(); + if (!$qry_detail) { + $this->db_onedev->trans_rollback(); + $error = array( + "message" => $this->db_onedev->error()["message"], + "sql" => $last_qry + ); + $this->sys_error_db($error, $this->db); + exit; + } + + $tx_id = $this->db_onedev->insert_id(); + + $sql = "INSERT INTO jurnal_addon + (jurnalAddOnJurnalID, + jurnalAddOnJurnalTxID, + jurnalAddOnCode, + jurnalAddOnValue, + jurnalAddOnCreated, + jurnalAddOnCreatedUserID, + jurnalAddOnLastUpdatedUserID, + jurnalAddOnLastUpdated) + VALUES + (?, + ?, + 'JFA', + ?, + now(), + ?, + ?, + now())"; + $qry = $this->db_onedev->query($sql, array( + $last_id, + $tx_id, + $pvno, + $userid, + $userid + )); + $last_qry = $this->db_onedev->last_query(); + if (!$qry) { + $this->db_onedev->trans_rollback(); + $error = array( + "message" => $this->db_onedev->error()["message"], + "sql" => $last_qry + ); + $this->sys_error_db($error, $this->db); + exit; + } + } + + + $this->db_onedev->trans_commit(); + // $result = array("total" => 1); + // $this->sys_ok($result); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + function delete_note() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + //# ambil parameter input + $xuserid = $this->sys_user['M_UserID']; + $prm = $this->sys_input; + $prmnota = $prm['nota']; + + $headerid = $prmnota['note_id']; + $sql = "SELECT * FROM supplier_payment + JOIN m_user ON M_UserID = SupplierPaymentUserID + WHERE SupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $row = $query->row_array(); + + $sql = "SELECT * FROM supplier_payment_detail + WHERE SupplierPaymentDetailSupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$headerid]); + $rows = $query->row_array(); + + $data = array("header" => $row, + "details" => $rows); + + $sql = "UPDATE supplier_payment + SET SupplierPaymentIsActive = 'N' + WHERE SupplierPaymentID = {$prmnota['note_id']}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_payment delete"); + exit; + } + + $sql = "UPDATE supplier_payment_detail + SET SupplierPaymentDetailIsActive = 'N' + WHERE SupplierPaymentDetailSupplierPaymentID = {$prmnota['note_id']}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_payment_detail delete"); + exit; + } + + $sql = "UPDATE supplier_invoice + SET SupplierInvoiceUnpaid = SupplierInvoiceUnpaid + CAST({$prmnota['note_amount']} AS UNSIGNED) + WHERE SupplierInvoiceID = {$prmnota['note_order_id']}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_invoice delete"); + exit; + } + + $sql = "UPDATE supplier_invoice_detail + SET SupplierInvoiceDetailUnpaid = SupplierInvoiceDetailUnpaid + CAST({$prmnota['note_amount']} AS UNSIGNED) + WHERE SupplierInvoiceDetailID = {$prmnota['detail_id']}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_invoice_detail delete"); + exit; + } + + $message = "Nomor Pembayaran Faktur: " . $row["SupplierPaymentNumber"] ." telah dihapus oleh " . $row["M_UserUsername"]; + $this->insert_act_log("PF", "DELETE", $message, $headerid, $this->safeJsonEncode($data), $xuserid); + $result = array( + "total" => 1 , + "records" => array('prm'=>$prm) + ); + $this->sys_ok($result); + exit; + } + + function edit_note() + { + //# cek token valid + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + //# ambil parameter input + $xuserid = $this->sys_user['M_UserID']; + $prm = $this->sys_input; + $id = $prm['id']; + $inv_id = $prm['inv_id']; + $detail_id = $prm['detail_id']; + $paymenttype = $prm['paymenttype']; + $amount_old = $prm['amount_old']; + $amount_new = $prm['amount_new']; + $keterangan = $prm['keterangan']; + + $datas_log = []; + $messages_log = []; + + $sql = "SELECT * + FROM supplier_payment + WHERE SupplierPaymentID = ?"; + $query = $this->db_onedev->query($sql, [$id]); + if (!$query) { + $this->db_onedev->trans_rollback(); + $this->sys_error_db("supplier payment", $this->db_onedev); + exit; + } + $row = $query->row_array(); + + if($row["SupplierPaymentAmount"]!= $amount_new) { + $messages_log[] = "Perubahan pembayaran : " . $row["SupplierPaymentAmount"] . " menjadi " . $amount_new; + } + if($row["SupplierPaymentNote"]!= $keterangan) { + $messages_log[] = "Perubahan keterangan : " . $row["SupplierPaymentNote"] . " menjadi " . $keterangan; + } + if($row["SupplierPaymentCoaID"]!= $paymenttype) { + $messages_log[] = "Perubahan tipe pembayaran id : " . $row["SupplierPaymentCoaID"] . " menjadi " . $paymenttype; + } + + $datas_log['header'] = $row; + + $sql = "UPDATE supplier_payment SET + SupplierPaymentAmount = {$amount_new}, + SupplierPaymentNote = '{$keterangan}', + SupplierPaymentCoaID = {$paymenttype}, + SupplierPaymentUserID = {$xuserid} + WHERE SupplierPaymentID = {$id}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_payment edit"); + exit; + } + + $sql = "UPDATE supplier_payment_detail + SET SupplierPaymentDetailAmount = {$amount_new}, + SupplierPaymentDetailUserID = {$xuserid} + WHERE SupplierPaymentDetailSupplierPaymentID = {$id}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_payment_detail edit"); + exit; + } + + $sql = "UPDATE supplier_invoice + SET SupplierInvoiceUnpaid = (SupplierInvoiceUnpaid + $amount_old) - {$amount_new} + WHERE SupplierInvoiceID = {$inv_id}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_invoice edit"); + exit; + } + + $sql = "UPDATE supplier_invoice_detail + SET SupplierInvoiceDetailUnpaid = (SupplierInvoiceDetailUnpaid + $amount_old) - {$amount_new} + WHERE SupplierInvoiceDetailID = {$detail_id}"; + //echo $sql; + $query = $this->db_onedev->query($sql); + if (!$query) { + $this->sys_error_db("supplier_invoice_detail edit"); + exit; + } + if(count($messages_log) > 0) { + $message = "Perubahan Pembayaran Faktur: " . $row["SupplierPaymentNumber"] . "\n"; + $message .= implode("\n", $messages_log); + }else{ + $message = "Pembayaran Faktur: " . $row["SupplierPaymentNumber"] . " tanpa perubahan"; + } + + $datas_log = $this->convertNumericValuesToStrings($datas_log); + $this->insert_act_log("PF", "EDIT", $message, $id, $this->safeJsonEncode($datas_log), $xuserid); + $result = array( + "total" => 1 , + "records" => array('prm'=>$prm) + ); + $this->sys_ok($result); + exit; + } + + function insert_act_log($code, $status, $description, $refId, $data, $userId) + { + $sql = "INSERT INTO user_activity( + UserActivityCode, + UserActivityStatus, + UserActivityDescription, + UserActivityRefID, + UserActivityData, + UserActivityUserID, + UserActivityCreated) + VALUES (?,?,?,?,?,?,?)"; + $query = $this->db_onedev->query($sql, [$code, $status, $description, $refId, $data, $userId, date("Y-m-d H:i:s")]); + if (!$query) { + $this->sys_error_db("user activity", $this->db_onedev); + exit; + } + } + private function safeJsonEncode($data) { + // Coba encode data ke JSON + $jsonData = json_encode($data); + + // Cek apakah terjadi error saat encode + if (json_last_error() !== JSON_ERROR_NONE) { + $errorMsg = json_last_error_msg(); + error_log("JSON encode error: " . $errorMsg); + + // Lakukan sanitasi dan perbaikan data + $fixedData = $this->fixJsonEncodeIssues($data, $errorMsg); + + // Coba encode lagi setelah diperbaiki + $jsonData = json_encode($fixedData); + + // Jika masih error, log dan kembalikan objek kosong + if (json_last_error() !== JSON_ERROR_NONE) { + error_log("Failed to fix JSON encode issues: " . json_last_error_msg()); + // Kembalikan objek kosong jika masih gagal + return '{}'; + } + } + + return $jsonData; + } + + // Fungsi untuk memperbaiki masalah encoding JSON + private function fixJsonEncodeIssues($data, $errorMsg) { + // Buat salinan data untuk dimodifikasi + $fixedData = $data; + + // Tangani berbagai jenis error + if (strpos($errorMsg, 'Malformed UTF-8') !== false) { + // Perbaiki masalah karakter UTF-8 + $fixedData = $this->fixUTF8Issues($fixedData); + } else if (strpos($errorMsg, 'Inf and NaN cannot be JSON encoded') !== false) { + // Perbaiki masalah nilai Infinity atau NaN + $fixedData = $this->fixInfNanIssues($fixedData); + } else { + // Konversi semua nilai numerik menjadi string untuk menghindari masalah presisi + $fixedData = $this->convertNumericValuesToStrings($fixedData); + + // Perbaiki masalah referensi recursif + $fixedData = $this->fixRecursiveReferences($fixedData); + } + + return $fixedData; + } + + // Perbaiki masalah karakter UTF-8 + private function fixUTF8Issues($data) { + if (is_string($data)) { + return mb_convert_encoding($data, 'UTF-8', 'UTF-8'); + } else if (is_array($data)) { + foreach ($data as $key => $value) { + $data[$key] = $this->fixUTF8Issues($value); + } + } + return $data; + } + + // Perbaiki masalah nilai Infinity atau NaN + private function fixInfNanIssues($data) { + if (is_array($data)) { + foreach ($data as $key => $value) { + if (is_float($value) && (is_nan($value) || is_infinite($value))) { + $data[$key] = (string)$value; // Konversi ke string + } else if (is_array($value)) { + $data[$key] = $this->fixInfNanIssues($value); + } + } + } + return $data; + } + + // Perbaiki masalah referensi recursif + private function fixRecursiveReferences($data, $depth = 0) { + // Batasi kedalaman rekursi untuk menghindari infinite loop + if ($depth > 50) { + return "[MAX_DEPTH_REACHED]"; + } + + if (is_array($data)) { + $result = []; + foreach ($data as $key => $value) { + if (is_array($value)) { + $result[$key] = $this->fixRecursiveReferences($value, $depth + 1); + } else { + $result[$key] = $value; + } + } + return $result; + } + + return $data; + } + + // Cari dan konversi numerik ke string secara rekursif + private function convertNumericValuesToStrings($data) { + if (is_array($data)) { + foreach ($data as $key => $value) { + if (is_array($value)) { + $data[$key] = $this->convertNumericValuesToStrings($value); + } else if (is_numeric($value)) { + $data[$key] = (string)$value; + } else if (is_bool($value)) { + $data[$key] = $value ? "true" : "false"; + } + } + } + return $data; + } +} diff --git a/application/controllers/mockup/supplierpaymentcashierv5/PaymentV2.php b/application/controllers/mockup/supplierpaymentcashierv5/PaymentV2.php new file mode 100644 index 0000000..bc55a10 --- /dev/null +++ b/application/controllers/mockup/supplierpaymentcashierv5/PaymentV2.php @@ -0,0 +1,660 @@ +isLogin) { + $this->sys_error("invalid token"); + exit; + } + + $this->db->trans_begin(); + + $param = $this->sys_input; + $users = $this->sys_user; + + # Generate number supplier payment # + $sql_gennumber = "SELECT `fn_numbering`(?) as numberx"; + $paygroupnum = $this->db->query($sql_gennumber, ['PC'])->row()->numberx; + $paynumber = $this->db->query($sql_gennumber, ['PN'])->row()->numberx; + + if ($paygroupnum == '' || $paynumber == '') { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] generate number supplier payment"); + exit; + } + + $rounding = 0; + if (doubleval($param['xrounding'] > 0)) { + $sisa = doubleval($param['xrounding']) - doubleval($param['amount']); + $rounding = round($sisa, 2); + } + + # UPDATE header supplier payment # + $sql_updateheader = "UPDATE supplier_payment SET + SupplierPaymentIsConfirm = 'Y', + SupplierPaymentConfirmUserID = ?, + SupplierPaymentGroupNumber = ?, + SupplierPaymentCashierNumber = ?, + SupplierPaymentRounding = ?, + SupplierPaymentConfirmDate = now(), + SupplierPaymentNote = ?, + SupplierPaymentCoaID = ? + WHERE SupplierPaymentID = ?"; + $que_updateheader = $this->db->query($sql_updateheader, [ + $users['M_UserID'], + $paygroupnum, + $paynumber, + $rounding, + $param['keterangan'], + $param['paymenttype'], + $param['orderid'] + ]); + if (!$que_updateheader) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] update supplier payment header"); + exit; + } + + # UPDATE status lunas supplier invoice # + $sql_suppinvoice = "UPDATE supplier_invoice + SET SupplierInvoiceIsLunas = 'Y' + WHERE SupplierInvoiceID = ?"; + $que_suppinvoice = $this->db->query($sql_suppinvoice, [$param['SupplierInvoiceID']]); + if (!$que_suppinvoice) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] update status lunas invoice"); + exit; + } + + # GET Latest data supplier payment # + $sql_suppayment = "SELECT * FROM supplier_payment WHERE SupplierPaymentID = ?"; + $que_suppayment = $this->db->query($sql_suppayment, [$param['orderid']]); + if (!$que_suppayment) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data latest supplier payment"); + exit; + } + $suppayment_header = $que_suppayment->row_array(); + + $sql_suppaymentdetail = "SELECT * FROM supplier_payment_detail + WHERE SupplierPaymentDetailSupplierPaymentID = ?"; + $que_suppaymentdetail = $this->db->query($sql_suppaymentdetail, [$param['orderid']]); + if (!$que_suppaymentdetail) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data latest supplier payment detail"); + exit; + } + $suppayment_detail = $que_suppaymentdetail->result_array(); + + $data_log = [ + "header" => $suppayment_header, + "detail" => $suppayment_detail + ]; + + # LOG activity confirm payment # + $messg = "Pembayaran Faktur No: {$suppayment_header['SupplierPaymentNumber']}"; + $messg .= " telah dikonfirmasi oleh {$users['M_UserUsername']} dengan nomor"; + $messg .= " pembayaran kasir: {$suppayment_header['SupplierPaymentCashierNumber']}"; + $this->insert_activity_log( + "PF", + "CONFIRM", + $messg, + $param['orderid'], + $data_log, + $users['M_UserID'] + ); + + # INSERT JURNAL # + $detail_transac = []; + + # GET data hutang # + $sql_datahutang = "SELECT + SupplierPaymentNumber AS addonvalue, + SupplierPaymentDetailID, + jurnalTxCoaID AS coaID, + jurnalTxDescription AS coaDescription, + SupplierPaymentDetailAmount, + SupplierInvoiceDetailItemID + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID + JOIN supplier_invoice_detail ON SupplierInvoiceDetailSupplierInvoiceID = SupplierPaymentSupplierInvoiceID + AND SupplierInvoiceDetailIsActive = 'Y' + JOIN jurnal_tx ON SupplierPaymentDetailSupplierInvoiceDetailID = jurnalTxID + WHERE SupplierPaymentID = ? + AND SupplierPaymentDetailIsActive = 'Y'"; + $que_datahutang = $this->db->query($sql_datahutang, [$param['orderid']]); + if (!$que_datahutang) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data hutang item"); + exit; + } + $data_hutang = $que_datahutang->result_array(); + foreach ($data_hutang as $key => $debt) { + $detail_transac[] = [ + "coaID" => $debt['coaID'], + "coaDescription" => $debt['coaDescription'], + "debit" => $debt['SupplierPaymentDetailAmount'], + "credit" => 0, + "addoncode" => "JFA", + "addonvalue" => $debt['addonvalue'], + "addonitemid" => $debt['SupplierInvoiceDetailItemID'] + ]; + } + + # GET data bayar # + $sql_databayar = "SELECT + CONCAT('Jurnal Payment Invoice Nomor : ', + SupplierPaymentNumber, DATE_FORMAT(now(), + ', Tanggal : %d-%m-%Y ') + ) AS jurnaltitle, + CONCAT('Nomor pembayaran kasir : ', + SupplierPaymentCashierNumber, + ' dan Nomor grup pembayaran : ', + SupplierPaymentGroupNumber + ) AS jurnaldesc, + SupplierPaymentNumber AS no_payinv, + SupplierPaymentCashierNumber AS addonvalue, + SupplierPaymentCoaID AS coaID, + coaDescription, + SupplierPaymentAmount AS amount, + SupplierPaymentRounding AS rounding, + (SupplierPaymentAmount + SupplierPaymentRounding) AS bayar + FROM supplier_payment + JOIN coa ON coaID = SupplierPaymentCoaID + WHERE SupplierPaymentID = ?"; + $que_databayar = $this->db->query($sql_databayar, [$param['orderid']]); + if (!$que_databayar) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data bayar"); + exit; + } + $data_bayar = $que_databayar->row_array(); + $detail_transac[] = [ + "coaID" => $data_bayar['coaID'], + "coaDescription" => $data_bayar['coaDescription'], + "debit" => 0, + "credit" => abs($data_bayar['bayar']), + "addoncode" => "PAYINVSG", + "addonvalue" => $data_bayar['addonvalue'], + "addonitemid" => 0 + ]; + + # rugi / untung dari rounding # + $sql_lossprofit = "SELECT coaID, coaDescription + FROM coa WHERE coaAccountNo = ? AND coaIsActive = 'Y'"; + $data_round = doubleval($data_bayar['rounding']); + if ($data_round > 0) { + # loss # + $que_lossprofit = $this->db->query($sql_lossprofit, ['6120402001']); + if (!$que_lossprofit) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data coa loss sisa kas"); + exit; + } + $loss_coa = $que_lossprofit->row_array(); + + $detail_transac[] = [ + "coaID" => $loss_coa['coaID'], + "coaDescription" => $loss_coa['coaDescription'], + "debit" => abs($data_round), + "credit" => 0, + "addoncode" => "PAYINVSG", + "addonvalue" => $data_bayar['addonvalue'], + "addonitemid" => 0 + ]; + } elseif ($data_round < 0) { + # profit # + $que_lossprofit = $this->db->query($sql_lossprofit, ['6110500001']); + if (!$que_lossprofit) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data coa profit sisa kas"); + exit; + } + $profit_coa = $que_lossprofit->row_array(); + + $detail_transac[] = [ + "coaID" => $profit_coa['coaID'], + "coaDescription" => $profit_coa['coaDescription'], + "debit" => 0, + "credit" => abs($data_round), + "addoncode" => "PAYINVSG", + "addonvalue" => $data_bayar['addonvalue'], + "addonitemid" => 0 + ]; + } + + $this->insertJurnal($users, $data_bayar, $detail_transac); + + $this->db->trans_commit(); + $this->sys_ok("success update v2 test"); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + public function payinvoicemulti() + { + try { + if (!$this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + + $this->db->trans_begin(); + $param = $this->sys_input; + $users = $this->sys_user; + + # Generate number supplier payment # + $sql_gennumber = "SELECT `fn_numbering`(?) as numberx"; + $paygroupnum = $this->db->query($sql_gennumber, ['PC'])->row()->numberx; + + if ($paygroupnum == '') { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] generate number group supplier payment"); + exit; + } + + $rounding = 0; + if (doubleval($param['xrounding'] > 0)) { + $sisa = doubleval($param['xrounding']) - doubleval($param['total']); + $rounding = round($sisa, 2); + } + + + $lastIndex = count($param['details']) - 1; + # LOOP details invoice payment # + foreach ($param['details'] as $idx => $obj) { + $paynumber = $this->db->query($sql_gennumber, ['PN'])->row()->numberx; + if ($paynumber == '') { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] generate number kasir supplier payment"); + exit; + } + + $SupplierPaymentID = $obj['SupplierPaymentID']; + $SupplierInvoiceID = $obj['SupplierInvoiceID']; + + # CEK index invoice terakhir # + $roundvalue = 0; + if ($idx == $lastIndex) { + $roundvalue = $rounding; + } + + # UPDATE header supplier payment # + $sql_updateheader = "UPDATE supplier_payment SET + SupplierPaymentIsConfirm = 'Y', + SupplierPaymentConfirmUserID = ?, + SupplierPaymentGroupNumber = ?, + SupplierPaymentCashierNumber = ?, + SupplierPaymentRounding = ?, + SupplierPaymentConfirmDate = now(), + SupplierPaymentNote = ?, + SupplierPaymentCoaID = ? + WHERE SupplierPaymentID = ?"; + $que_updateheader = $this->db->query($sql_updateheader, [ + $users['M_UserID'], + $paygroupnum, + $paynumber, + $roundvalue, + $param['keterangan'], + $param['paymenttype'], + $SupplierPaymentID + ]); + if (!$que_updateheader) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] update supplier payment header"); + exit; + } + + # UPDATE status lunas supplier invoice # + $sql_suppinvoice = "UPDATE supplier_invoice + SET SupplierInvoiceIsLunas = 'Y' + WHERE SupplierInvoiceID = ?"; + $que_suppinvoice = $this->db->query($sql_suppinvoice, [$SupplierInvoiceID]); + if (!$que_suppinvoice) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] update status lunas invoice"); + exit; + } + + # GET Latest data supplier payment # + $sql_suppayment = "SELECT * FROM supplier_payment WHERE SupplierPaymentID = ?"; + $que_suppayment = $this->db->query($sql_suppayment, [$SupplierPaymentID]); + if (!$que_suppayment) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data latest supplier payment"); + exit; + } + $suppayment_header = $que_suppayment->row_array(); + + $sql_suppaymentdetail = "SELECT * FROM supplier_payment_detail + WHERE SupplierPaymentDetailSupplierPaymentID = ?"; + $que_suppaymentdetail = $this->db->query($sql_suppaymentdetail, [$SupplierPaymentID]); + if (!$que_suppaymentdetail) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data latest supplier payment detail"); + exit; + } + $suppayment_detail = $que_suppaymentdetail->result_array(); + + $data_log = [ + "header" => $suppayment_header, + "detail" => $suppayment_detail + ]; + + # LOG activity confirm payment # + $messg = "Pembayaran Faktur No: {$suppayment_header['SupplierPaymentNumber']}"; + $messg .= " telah dikonfirmasi oleh {$users['M_UserUsername']} dengan nomor"; + $messg .= " pembayaran kasir: {$suppayment_header['SupplierPaymentCashierNumber']}"; + $this->insert_activity_log( + "PF", + "CONFIRM", + $messg, + $SupplierPaymentID, + $data_log, + $users['M_UserID'] + ); + + ## INSERT jurnal ## + $detail_transac = []; + + # GET data hutang # + $sql_datahutang = "SELECT + SupplierPaymentNumber AS addonvalue, + SupplierPaymentDetailID, + jurnalTxCoaID AS coaID, + jurnalTxDescription AS coaDescription, + SupplierPaymentDetailAmount, + SupplierInvoiceDetailItemID + FROM supplier_payment + JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID + JOIN supplier_invoice_detail ON SupplierInvoiceDetailSupplierInvoiceID = SupplierPaymentSupplierInvoiceID + AND SupplierInvoiceDetailIsActive = 'Y' + JOIN jurnal_tx ON SupplierPaymentDetailSupplierInvoiceDetailID = jurnalTxID + WHERE SupplierPaymentID = ? + AND SupplierPaymentDetailIsActive = 'Y'"; + $que_datahutang = $this->db->query($sql_datahutang, [$SupplierPaymentID]); + if (!$que_datahutang) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data hutang item"); + exit; + } + $data_hutang = $que_datahutang->result_array(); + foreach ($data_hutang as $key => $debt) { + $detail_transac[] = [ + "coaID" => $debt['coaID'], + "coaDescription" => $debt['coaDescription'], + "debit" => $debt['SupplierPaymentDetailAmount'], + "credit" => 0, + "addoncode" => "JFA", + "addonvalue" => $debt['addonvalue'], + "addonitemid" => $debt['SupplierInvoiceDetailItemID'] + ]; + } + + # GET data bayar # + $sql_databayar = "SELECT + CONCAT('Jurnal Payment Invoice Nomor : ', + SupplierPaymentNumber, DATE_FORMAT(now(), + ', Tanggal : %d-%m-%Y ') + ) AS jurnaltitle, + CONCAT('Nomor pembayaran kasir : ', + SupplierPaymentCashierNumber, + ' dan Nomor grup pembayaran : ', + SupplierPaymentGroupNumber + ) AS jurnaldesc, + SupplierPaymentNumber AS no_payinv, + SupplierPaymentGroupNumber AS addonvalue, + SupplierPaymentCoaID AS coaID, + coaDescription, + SupplierPaymentAmount AS amount, + SupplierPaymentRounding AS rounding, + (SupplierPaymentAmount + SupplierPaymentRounding) AS bayar + FROM supplier_payment + JOIN coa ON coaID = SupplierPaymentCoaID + WHERE SupplierPaymentID = ?"; + $que_databayar = $this->db->query($sql_databayar, [$SupplierPaymentID]); + if (!$que_databayar) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data bayar"); + exit; + } + $data_bayar = $que_databayar->row_array(); + $detail_transac[] = [ + "coaID" => $data_bayar['coaID'], + "coaDescription" => $data_bayar['coaDescription'], + "debit" => 0, + "credit" => abs($data_bayar['bayar']), + "addoncode" => "PAYINVGR", + "addonvalue" => $data_bayar['addonvalue'], + "addonitemid" => 0 + ]; + + # rugi / untung dari rounding # + $sql_lossprofit = "SELECT coaID, coaDescription + FROM coa WHERE coaAccountNo = ? AND coaIsActive = 'Y'"; + $data_round = doubleval($data_bayar['rounding']); + if ($data_round > 0) { + # loss # + $que_lossprofit = $this->db->query($sql_lossprofit, ['6120402001']); + if (!$que_lossprofit) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data coa loss sisa kas"); + exit; + } + $loss_coa = $que_lossprofit->row_array(); + + $detail_transac[] = [ + "coaID" => $loss_coa['coaID'], + "coaDescription" => $loss_coa['coaDescription'], + "debit" => abs($data_round), + "credit" => 0, + "addoncode" => "PAYINVGR", + "addonvalue" => $data_bayar['addonvalue'], + "addonitemid" => 0 + ]; + } elseif ($data_round < 0) { + # profit # + $que_lossprofit = $this->db->query($sql_lossprofit, ['6110500001']); + if (!$que_lossprofit) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get data coa profit sisa kas"); + exit; + } + $profit_coa = $que_lossprofit->row_array(); + + $detail_transac[] = [ + "coaID" => $profit_coa['coaID'], + "coaDescription" => $profit_coa['coaDescription'], + "debit" => 0, + "credit" => abs($data_round), + "addoncode" => "PAYINVGR", + "addonvalue" => $data_bayar['addonvalue'], + "addonitemid" => 0 + ]; + } + + $this->insertJurnal($users, $data_bayar, $detail_transac); + } + + $this->db->trans_commit(); + $this->sys_ok("[Success] success multi payment invoice"); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + private function insertJurnal($users, $databayar, $detailtrx) + { + # GET periode jurnal # + $sql_periode = "SELECT periodeID FROM periode + WHERE DATE(NOW()) BETWEEN periodeStartDate AND periodeEndDate + AND periodeIsActive = 'Y' AND periodeIsClosed = 'N'"; + $que_periode = $this->db->query($sql_periode, []); + if (!$que_periode) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] find periode id"); + exit; + } + + if ($que_periode->num_rows() === 0) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] Waktu periode tidak ditemukan"); + exit; + } + $JurnalPeriode = $que_periode->row_array()['periodeID']; + + # GENERATE nomor jurnal # + $sql_jurnalno = "SELECT `fn_numbering`('J') AS jnumber"; + $que_jurnalno = $this->db->query($sql_jurnalno, []); + if (!$que_jurnalno) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] generate jurnal number"); + exit; + } + $JurnalNumber = $que_jurnalno->row_array()['jnumber']; + $JurnalTitle = $databayar['jurnaltitle']; + $JurnalDescp = $databayar['jurnaldesc']; + + # GET jurnal type # + $sql_jurnaltype = "SELECT JurnalTypeID FROM jurnal_type + WHERE JurnalTypeCode = 'PAYMENTINV' AND JurnalTypeIsActive = 'Y'"; + $que_jurnaltype = $this->db->query($sql_jurnaltype, []); + if (!$que_jurnaltype) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] get jurnal type"); + exit; + } + $JurnalType = $que_jurnaltype->row_array()['JurnalTypeID']; + + # INSERT jurnal header # + $sql_insheader = "INSERT INTO jurnal ( + jurnalM_BranchCompanyID, + JurnalS_RegionalID, + jurnalM_BranchCode, + jurnalperiodeID, + jurnalNo, + jurnalTitle, + jurnalDescription, + jurnalDate, + jurnalJurnalTypeID, + jurnalM_UserID + ) VALUES (?,?,?,?,?,?,?,NOW(),?,?)"; + $que_inserjurnal = $this->db->query($sql_insheader, [ + $users['M_BranchCompanyID'], + $users['S_RegionalID'], + $users['M_BranchCode'], + $JurnalPeriode, + $JurnalNumber, + $JurnalTitle, + $JurnalDescp, + $JurnalType, + $users['M_UserID'] + ]); + if (!$que_inserjurnal) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] insert jurnal header"); + exit; + } + $JurnalID = $this->db->insert_id(); + + # INSERT jurnal tx # + foreach ($detailtrx as $key => $trax) { + $sql_trax = "INSERT INTO jurnal_tx ( + jurnalTxJurnalID, + jurnalTxCoaID, + jurnalTxDescription, + jurnalTxDebit, + jurnalTxCredit, + jurnalTxM_UserID + ) VALUES (?,?,?,?,?,?)"; + $que_trax = $this->db->query($sql_trax, [ + $JurnalID, + $trax['coaID'], + $trax['coaDescription'], + $trax['debit'], + $trax['credit'], + $users['M_UserID'] + ]); + if (!$que_trax) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] insert jurnal tx"); + exit; + } + $JurnalTxID = $this->db->insert_id(); + + # INSERT jurnal addon # + $sql_addon = "INSERT INTO jurnal_addon ( + jurnalAddOnJurnalID, + jurnalAddOnJurnalTxID, + jurnalAddOnCode, + jurnalAddOnValue, + jurnalAddOnM_ItemID, + jurnalAddOnCreated, + jurnalAddOnCreatedUserID + ) VALUES (?,?,?,?,?,NOW(),?)"; + $que_addon = $this->db->query($sql_addon, [ + $JurnalID, + $JurnalTxID, + $trax['addoncode'], + $trax['addonvalue'], + $trax['addonitemid'], + $users['M_UserID'] + ]); + if (!$que_addon) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] insert jurnal addon"); + exit; + } + } + } + + private function insert_activity_log($actcode, $status, $desc, $refID, $data, $userID) + { + $json = json_encode($data); + if (json_last_error() !== JSON_ERROR_NONE) { + $this->db->trans_rollback(); + $this->sys_error("[Error] encode data into json for log activity"); + exit; + } + + $sql = "INSERT INTO user_activity( + UserActivityCode, + UserActivityStatus, + UserActivityDescription, + UserActivityRefID, + UserActivityData, + UserActivityUserID, + UserActivityCreated + ) VALUES (?,?,?,?,?,?,NOW())"; + $que = $this->db->query($sql, [ + $actcode, + $status, + $desc, + $refID, + $json, + $userID + ]); + if (!$que) { + $this->db->trans_rollback(); + $this->sys_error_db("[Error] insert into table log activity"); + exit; + } + } +} diff --git a/application/controllers/v1/system/Auth.php b/application/controllers/v1/system/Auth.php new file mode 100644 index 0000000..8f6dfc7 --- /dev/null +++ b/application/controllers/v1/system/Auth.php @@ -0,0 +1,152 @@ +sys_debug(); + try { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + + } +*/ + +class Auth extends MY_Controller { + var $db_onedev; + public function index() + { + echo "AUTH API"; + } + public function __construct() + { + parent::__construct(); + $this->db_onedev = $this->load->database("onedev", true); + } + function isLogin() { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + } else { + $prm = $this->sys_input; + $data = array( + "user" => $this->sys_user + ); + $this->sys_ok($data); + } + } + function login() { + + $prm = $this->sys_input; + try { + //existing password enc + $sm_password = md5($this->one_salt . $prm["password"] . $this->one_salt); + $query = $this->db_onedev->query("select M_UserID,M_UserUsername, M_UserGroupDashboard, M_UserDefaultT_SampleStationID, + M_StaffName, 'N' as is_courier, + IFNULL(S_SystemsAutoLogoutTime,0) as time_autologout + from m_user + join m_usergroup ON M_UserM_UserGroupID = M_UserGroupID + left join m_staff on M_UserM_StaffID = M_StaffID + left join conf_systems ON S_SystemsIsActive = 'Y' + where M_UserUsername=? and M_UserPassword=? + and M_UserIsActive = 'Y' + ",array($prm["username"], $sm_password)); + //echo $query; + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + // echo $this->db_onedev->last_query(); + $rows = $query->result_array(); + if (count($rows) > 0 ) { + $user = $rows[0]; + $user['ip'] = $_SERVER['REMOTE_ADDR']; + $user['agent'] = $_SERVER['HTTP_USER_AGENT']; + //v2 + $user['version'] = 'v2'; + $user['last-login'] = date('Y-m-d H:i:s'); + if (isset($prm['M_SatelliteID'])) { + $user['M_SatelliteID'] = $prm['M_SatelliteID']; + } else { + $user['M_SatelliteID'] = 0; + } + $token = JWT::encode($user,$this->SECRET_KEY); + $data = array( + "user" => $user, + "token" => $token + ); + + $query = $this->db_onedev->query("update m_user SET M_UserIsLoggedIn = 'Y', M_UserLastAccess = now(), M_UserActiveToken = '{$token}' WHERE M_UserID = ? + ",array($user['M_UserID'])); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $query = $this->db_onedev->query("INSERT INTO acc_one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ",array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'],'LOGIN','SUCCESS',$prm["username"])); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->sys_ok($data); + exit; + } + $query = $this->db_onedev->query("INSERT INTO acc_one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ",array(date('Y-m-d H:i:s'),$this->input->ip_address(),'LOGIN','FAILED',$prm["username"])); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + $this->sys_error_db("Invalid UserName / Password"); + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + function logout() + { + $prm = $this->sys_input; + try + { + + $query = $this->db_onedev->query(" + UPDATE m_user + SET M_UserIsLoggedIn = 'N', M_UserActiveToken = null + WHERE M_UserID = ?", + array($this->sys_user['M_UserID'])); + + if (!$query) + { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->db_onedev->query("INSERT INTO one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ",array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], 'LOGOUT', 'SUCCESS', $this->sys_user['M_UserUsername'])); + $this->sys_ok("OK"); + + } + catch(Exception $exc) + { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } +} +?> diff --git a/application/controllers/v1/system/Authv2.php b/application/controllers/v1/system/Authv2.php new file mode 100644 index 0000000..bfd24a6 --- /dev/null +++ b/application/controllers/v1/system/Authv2.php @@ -0,0 +1,171 @@ +sys_debug(); + try { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + + } +*/ + +class Authv2 extends MY_Controller { + var $db_onedev; + public function index() + { + echo "AUTH API"; + } + public function __construct() + { + parent::__construct(); + $this->db_onedev = $this->load->database("onedev", true); + } + function isLogin() { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + } else { + $prm = $this->sys_input; + $data = array( + "user" => $this->sys_user + ); + $this->sys_ok($data); + } + } + function getsatellite(){ + $sql = $this->db_onedev->query("SELECT M_BranchHaveSatellite FROM m_branch + WHERE M_BranchIsDefault = 'Y' AND M_BranchIsActive = 'Y'")->row(); + $hassatellite = $sql->M_BranchHaveSatellite; + $rows = []; + $query =" SELECT 0 as M_SatelliteID, M_BranchName as M_SatelliteName + FROM m_branch + WHERE M_BranchIsActive = 'Y' AND M_BranchIsDefault = 'Y' + + UNION SELECT M_SatelliteID, M_SatelliteName + FROM m_satellite + WHERE + M_SatelliteIsActive = 'Y'"; + //echo $query; + $rows['satellites'] = $this->db_onedev->query($query)->result_array(); + + $result = array( + "total" => count($rows) , + "records" => $rows, + "hassatellite" => $hassatellite + ); + $this->sys_ok($result); + exit; + } + function login() { + $prm = $this->sys_input; + try { + //existing password enc + $sm_password = md5($this->one_salt . $prm["password"] . $this->one_salt); + $query = $this->db_onedev->query("select M_UserID,M_UserUsername, M_UserGroupDashboard, M_UserDefaultT_SampleStationID, + M_StaffName, IF(M_CourierID = NULL, 'N','Y') as is_courier + from m_user + join m_usergroup ON M_UserM_UserGroupID = M_UserGroupID + left join m_staff on M_UserM_StaffID = M_StaffID + left join m_courier ON M_CourierM_StaffID = M_StaffID AND M_CourierIsActive = 'Y' + where M_UserUsername=? and M_UserPassword=? + and M_UserIsActive = 'Y' + ",array($prm["username"], $sm_password)); + //echo $query; + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + $rows = $query->result_array(); + if (count($rows) > 0 ) { + $user = $rows[0]; + $user['ip'] = $_SERVER['REMOTE_ADDR']; + $user['agent'] = $_SERVER['HTTP_USER_AGENT']; + if (isset($prm['M_SatelliteID'])) { + $user['M_SatelliteID'] = $prm['M_SatelliteID']; + } else { + $user['M_SatelliteID'] = 0; + } + $token = JWT::encode($user,$this->SECRET_KEY); + $data = array( + "user" => $user, + "token" => $token + ); + + $query = $this->db_onedev->query("update m_user SET M_UserIsLoggedIn = 'Y', M_UserLastAccess = now(), M_UserActiveToken = '{$token}' WHERE M_UserID = ? + ",array($user['M_UserID'])); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $query = $this->db_onedev->query("INSERT INTO one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ",array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'],'LOGIN','SUCCESS',$prm["username"])); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->sys_ok($data); + exit; + } + $query = $this->db_onedev->query("INSERT INTO one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ",array(date('Y-m-d H:i:s'),$this->input->ip_address(),'LOGIN','FAILED',$prm["username"])); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->sys_error_db("Invalid UserName / Password"); + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + function logout() + { + $prm = $this->sys_input; + try + { + + $query = $this->db_onedev->query(" + UPDATE m_user + SET M_UserIsLoggedIn = 'N', M_UserActiveToken = null + WHERE M_UserID = ?", + array($this->sys_user['M_UserID'])); + + if (!$query) + { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->db_onedev->query("INSERT INTO one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ",array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], 'LOGOUT', 'SUCCESS', $this->sys_user['M_UserUsername'])); + $this->sys_ok("OK"); + + } + catch(Exception $exc) + { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } +} +?> diff --git a/application/controllers/v1/system/Authv3.php b/application/controllers/v1/system/Authv3.php new file mode 100644 index 0000000..5127ec5 --- /dev/null +++ b/application/controllers/v1/system/Authv3.php @@ -0,0 +1,377 @@ +sys_debug(); + try { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + + } catch(Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + + } +*/ + +class Authv3 extends MY_Controller +{ + var $db_onedev; + public function index() + { + echo "AUTH API"; + } + public function __construct() + { + parent::__construct(); + $this->db_onedev = $this->load->database("onedev", true); + } + function isLogin() + { + if (! $this->isLogin) { + $this->sys_error("Invalid Token"); + } else { + $prm = $this->sys_input; + $data = array( + "user" => $this->sys_user + ); + $this->sys_ok($data); + } + } + function login() + { + $prm = $this->sys_input; + try { + //existing password enc + $sm_password = md5($this->one_salt . $prm["password"] . $this->one_salt); + $query = $this->db_onedev->query( + "SELECT + M_UserID,M_UserUsername, M_UserGroupDashboard, M_UserDefaultT_SampleStationID, + M_StaffName, 'N' as is_courier, M_UserM_ApproveLevelID, + IFNULL(S_SystemsAutoLogoutTime,0) as time_autologout + FROM m_user + JOIN m_usergroup ON M_UserM_UserGroupID = M_UserGroupID + LEFT JOIN m_staff ON M_UserM_StaffID = M_StaffID + LEFT JOIN conf_systems ON S_SystemsIsActive = 'Y' + WHERE M_UserUsername = ? AND M_UserPassword = ? + AND M_UserIsActive = 'Y'", + array($prm["username"], $sm_password) + ); + //echo $query; + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + // echo $this->db_onedev->last_query(); + $rows = $query->result_array(); + if (count($rows) > 0) { + $user = $rows[0]; + + $sql = "SELECT + M_UserLocationID, + M_UserLocationM_UserID, + M_UserLocationFlag, + M_UserLocationS_RegionalID, + M_UserLocationM_BranchID, + IFNULL(S_RegionalName, '') S_RegionalName, + IFNULL(S_RegionalID, '') S_RegionalID, + IFNULL(M_BranchName, '') M_BranchName, + IFNULL(M_BranchID, '0') M_BranchID, + IFNULL(M_BranchCode, '') M_BranchCode + FROM m_userlocation + LEFT JOIN s_regional ON M_UserLocationS_RegionalID = S_RegionalID + AND S_RegionalIsActive = 'Y' + LEFT JOIN m_branch ON M_UserLocationM_BranchID = M_BranchID + AND M_BranchIsActive = 'Y' + WHERE M_UserLocationM_UserID = ? + AND M_UserLocationIsActive = 'Y'"; + $qry = $this->db_onedev->query($sql, array($user['M_UserID'])); + if (!$qry) { + $this->sys_error_db("Error get regional"); + exit; + } + $userLocation = $qry->result_array(); + + if (count($userLocation) == 0) { + $this->sys_error('User belum disetting'); + exit; + } + + $location = $userLocation[0]; + $user['M_UserLocationID'] = $location['M_UserLocationID']; + $user['M_UserLocationFlag'] = $location['M_UserLocationFlag']; + $user['S_RegionalName'] = $location['S_RegionalName']; + $user['S_RegionalID'] = $location['S_RegionalID']; + $user['M_BranchName'] = $location['M_BranchName']; + $user['M_BranchCode'] = $location['M_BranchCode']; + $user['M_BranchID'] = $location['M_BranchID']; + + switch ($location['M_UserLocationFlag']) { + case 'P': + $user['S_RegionalName'] = ''; + $user['S_RegionalID'] = 0; + $user['M_BranchName'] = ''; + $user['M_BranchCode'] = ''; + $user['M_BranchID'] = 0; + $user['loginLevel'] = 'pusat'; + break; + case 'R': + if ($prm['branch'] != '0') { + $sql = "SELECT + M_BranchID as branchID, + M_BranchS_RegionalID as branchRegionalID, + M_BranchCode as branchCode , + M_BranchName as branchName, + M_BranchCompanyDetailM_BranchCompanyID branchCompanyID + FROM m_branch JOIN m_branch_companydetail ON M_BranchCode = M_BranchCompanyDetailM_BranchCode + WHERE M_BranchS_RegionalID = ? + AND M_BranchCompanyDetailIsActive = 'Y' + AND M_BranchCompanyDetailM_BranchCompanyID = ? + AND M_BranchID = ? + AND M_BranchIsActive = 'Y'"; + $qry = $this->db_onedev->query($sql, array($prm['regional'], $prm['company'], $prm['branch'])); + + if (!$qry) { + $this->sys_error_db("Error get branch"); + exit; + } + $result = $qry->result_array(); + if (count($result) == 0) { + $this->sys_error('User regional tidak memiliki akses cabang yang dipilih'); + exit; + } + $user['M_BranchName'] = $result[0]['branchName']; + $user['M_BranchCode'] = $result[0]['branchCode']; + $user['M_BranchID'] = $result[0]['branchID']; + } + $user['M_UserLocationFlag'] = 'R'; + $user['loginLevel'] = 'regional'; + break; + case 'B': + $user['loginLevel'] = 'branch'; + if ($location['M_UserLocationM_BranchID'] != $prm['branch']) { + $this->sys_error('User tidak memiliki akses cabang yang dipilih'); + exit; + } + break; + default: + $this->sys_error('User belum disetting'); + exit; + } + + $filterBranch = ""; + if ($location['M_UserLocationFlag'] == 'B') { + $filterBranch = " AND M_BranchID = {$prm['branch']} "; + } + + $sql = "SELECT + M_BranchCompanyID, + M_BranchCompanyName, + M_BranchCompanyDetailM_BranchCode, + M_branchName + FROM m_branch_company + JOIN m_branch_companydetail ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID + AND M_BranchCompanyDetailIsActive = 'Y' + JOIN m_branch ON M_BranchCompanyDetailM_BranchCode = M_BranchCode + AND M_BranchIsActive = 'Y' + AND M_BranchS_RegionalID = ? + $filterBranch + WHERE M_BranchCompanyID = ? + AND M_BranchCompanyDetailIsActive = 'Y'"; + $qry = $this->db_onedev->query($sql, array($prm['regional'], $prm['company'])); + if (!$qry) { + $this->sys_error_db("Error get company access"); + exit; + } + $branchCompany = $qry->result_array(); + if (count($branchCompany) == 0) { + $this->sys_error_db("Company tidak memiliki akses ke cabang yang dipilih"); + exit; + } + $company = $branchCompany[0]; + $user['M_BranchCompanyID'] = $company['M_BranchCompanyID']; + $user['M_BranchCompanyName'] = $company['M_BranchCompanyName']; + $user['ip'] = $_SERVER['REMOTE_ADDR']; + $user['agent'] = $_SERVER['HTTP_USER_AGENT']; + + //v2 + $user['version'] = 'v2'; + $user['last-login'] = date('Y-m-d H:i:s'); + if (isset($prm['M_SatelliteID'])) { + $user['M_SatelliteID'] = $prm['M_SatelliteID']; + } else { + $user['M_SatelliteID'] = 0; + } + $token = JWT::encode($user, $this->SECRET_KEY); + $data = array( + "user" => $user, + "token" => $token + ); + + $query = $this->db_onedev->query("UPDATE m_user SET + M_UserIsLoggedIn = 'Y', + M_UserLastAccess = now(), + M_UserActiveToken = '{$token}' + WHERE M_UserID = ?", + array($user['M_UserID']) + ); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $query = $this->db_onedev->query("INSERT INTO acc_one_log.log_login( + Log_LoginDateTime, + Log_LoginIP, + Log_LoginType, + Log_LoginStatus, + Log_LoginLogin + ) VALUES (?,?,?,?,?)", + array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], 'LOGIN', 'SUCCESS', $prm["username"]) + ); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->sys_ok($data); + exit; + } + + $query = $this->db_onedev->query("INSERT INTO acc_one_log.log_login( + Log_LoginDateTime, + Log_LoginIP, + Log_LoginType, + Log_LoginStatus, + Log_LoginLogin + ) VALUES (?,?,?,?,?)", + array(date('Y-m-d H:i:s'), $this->input->ip_address(), 'LOGIN', 'FAILED', $prm["username"]) + ); + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + $this->sys_error_db("Invalid UserName / Password"); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + function logout() + { + $prm = $this->sys_input; + try { + + $query = $this->db_onedev->query( + " + UPDATE m_user + SET M_UserIsLoggedIn = 'N', M_UserActiveToken = null + WHERE M_UserID = ?", + array($this->sys_user['M_UserID']) + ); + + if (!$query) { + $message = $this->db_onedev->error(); + $this->sys_error($message); + exit; + } + + $this->db_onedev->query("INSERT INTO one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?) + ", array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], 'LOGOUT', 'SUCCESS', $this->sys_user['M_UserUsername'])); + $this->sys_ok("OK"); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + + function getRegional() + { + $prm = $this->sys_input; + try { + $sql = "SELECT + S_RegionalID regionalID, + S_RegionalName regionalName + FROM s_regional + WHERE S_RegionalIsActive = 'Y'"; + $qry = $this->db_onedev->query($sql, array()); + + if (!$qry) { + // $this->db->trans_rollback(); + $this->sys_error_db("Error get regional"); + exit; + } + $result = $qry->result_array(); + $this->sys_ok($result); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + function getBranch($regionalID, $companyID) + { + $prm = $this->sys_input; + try { + $sql = "SELECT + M_BranchID as branchID, + M_BranchS_RegionalID as branchRegionalID, + M_BranchCode as branchCode , + M_BranchName as branchName, + M_BranchCompanyDetailM_BranchCompanyID branchCompanyID + FROM m_branch + JOIN m_branch_companydetail + ON M_BranchCode = M_BranchCompanyDetailM_BranchCode + WHERE M_BranchS_RegionalID = ? + AND M_BranchCompanyDetailIsActive = 'Y' + AND M_BranchCompanyDetailM_BranchCompanyID = ? + AND M_BranchIsActive = 'Y'"; + $qry = $this->db_onedev->query($sql, array($regionalID, $companyID)); + + if (!$qry) { + // $this->db->trans_rollback(); + $this->sys_error_db("Error get branch"); + exit; + } + $result = $qry->result_array(); + $this->sys_ok($result); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } + function getCompany() + { + $prm = $this->sys_input; + try { + $sql = "SELECT + M_BranchCompanyID branchCompanyID, + M_BranchCompanyName branchCompanyName + FROM m_branch_company + WHERE M_BranchCompanyIsActive ='Y'"; + $qry = $this->db_onedev->query($sql, array()); + + if (!$qry) { + // $this->db->trans_rollback(); + $this->sys_error_db("Error get branch"); + exit; + } + $result = $qry->result_array(); + $this->sys_ok($result); + } catch (Exception $exc) { + $message = $exc->getMessage(); + $this->sys_error($message); + } + } +} diff --git a/application/controllers/v1/system/Genno.php b/application/controllers/v1/system/Genno.php new file mode 100644 index 0000000..a08628c --- /dev/null +++ b/application/controllers/v1/system/Genno.php @@ -0,0 +1,33 @@ +db_onedev->query($ql); + $sql = "insert into noreg_prefix(NoregPrefixYear, + NoregPrefixMonth, NoregPrefixCode ) + values(?,?,?)"; + $year = 2019; + $month = 12; + $xcode = 0; + for($i_y= $year ; $i_y < 2030 ; $i_y++ ) { + $s_month = 1; + if ($i_y == 2019 ) $s_month = 12; + for($i_x = $s_month; $i_x < 13; $i_x++) { + $scode = sprintf("%03d",$xcode); + $this->db_onedev->query($sql, array($i_y,$i_x, $scode)); + if ($scode == "999") break; + $xcode++; + } + } + } + public function __construct() + { + parent::__construct(); + $this->db_onedev = $this->load->database("onedev", true); + } + +} +?> diff --git a/application/controllers/v1/system/Verify.php b/application/controllers/v1/system/Verify.php new file mode 100644 index 0000000..c1a8210 --- /dev/null +++ b/application/controllers/v1/system/Verify.php @@ -0,0 +1,46 @@ +isLogin === false ) { + echo json_encode( + array( + "status" => "Error", + "message" => "Unauthorized User" + )); + exit; + } + $userID = $this->sys_user["M_UserID"]; + $sql = "select count(*) total from m_user where M_UserID = ? and M_UserIsActive = 'Y'"; + $qry = $this->db->query($sql,[$userID]); + if (!$qry) { + echo json_encode( + array( + "status" => "ERR", + "message" => "Error " . $this->db->error()['message'] + ) + ); + exit; + } + $rows = $qry->result_array(); + if(count($rows) == 0) { + echo json_encode( + array( + "status" => "ERR", + "message" => "Invalid User" + ) + ); + exit; + } + echo json_encode( + array( + "status" => "OK", + "message" => "Invalid User" + ) + ); + + } +} +?>