db_onedev = $this->load->database("onedev", true); } public function request_hold($mouid, $billid) { // Kirim request hold ke regional // echo json_encode(["status" => "OK", "message" => "Request HOLD on : $mouid, $billid "]) . "\n"; // select data dari f_bill_issue // join f_bill, m_mou, m_company, m_branch (M_BranchIsActive = 'Y' & M_BranchIsDefault = 'Y') // pastikan M_MouIsActive = 'H' // Data yang dibutuhkan M_BranchID, M_BranchCode, M_BranchName,F_BillNo, M_MouID, M_MouName, M_MouNumber, M_CompanyID, M_CompanyNumber, M_MouLastUpdated (untuk info tanggal terholdnya) // BillID 1403 , MouID 2689 // BEGIN TRANSACTION $this->db->trans_begin(); $sql = " SELECT m_mou.M_MouID, m_mou.M_MouNumber, m_mou.M_MouName, m_mou.M_MouLastUpdated, f_bill.F_BillNo, f_bill.F_BillID, m_company.M_CompanyID, m_company.M_CompanyNumber, m_company.M_CompanyName, m_branch.M_BranchID, m_branch.M_BranchS_RegionalID, m_branch.M_BranchCode, m_branch.M_BranchName FROM f_bill_issue JOIN m_mou ON f_bill_issue.F_BillIssueM_MouID=m_mou.M_MouID AND m_mou.M_MouIsActive = 'H' AND m_mou.M_MouID= ? JOIN f_bill ON f_bill_issue.F_BillIssueF_BillID=f_bill.F_BillID AND f_bill.F_BillID= ? JOIN m_company ON f_bill_issue.F_BillIssueM_CompanyID=m_company.M_CompanyID JOIN m_branch ON m_branch.M_BranchIsDefault = 'Y' AND m_branch.M_BranchIsActive = 'Y' "; $qry = $this->db->query($sql, array($mouid, $billid)); $rows = $qry->result_array(); // cek query berjalan atau tidak $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } // echo json_encode(["status" => "OK", "\n" . "data" => $rows]); $rows = array(); if ($qry) { $rows = $qry->result_array(); $param = json_encode($rows); $user = $this->sys_user; $userID = $user["M_UserID"]; // insert data ke tabel log_aoh // insert into log_aoh () $sql_insert = // insert ignore untuk melewatkan inputan jika ada data yang sama "INSERT INTO log_aoh ( Log_AohM_MouID, Log_AohF_BillID, Log_AohJson, Log_AohType, Log_AohUserID) VALUE( ?, ?, ?, 'HOLD', ?) ON duplicate KEY UPDATE Log_AohM_MouID = Log_AohM_MouID"; // mengisi sql '?' berurutan, select $qry = $this->db->query($sql_insert, array($mouid, $billid, $param, $userID)); // cek query insert berfungsi atau tidak $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } // mengambil ip addres dari db $regional_ip_address = $this->get_region_ip(); $url = "http://$regional_ip_address/one-api/training/dataregional_mike/receive_request_hold"; // $url_dummy = "https://devone.aplikasi.web.id/one-api/training/Databranch_mike/receive_request_hold_dummy"; $result = $this->post($url, $param); #kirim data $param ke url echo "\n to $url \n response : $result\n"; $result = json_decode($result, true); if ($result["status"] == "OK") { // check yang lama( sudah ada ) isActive nya di ubah menjadi N $sql_update_status = "UPDATE log_aoh SET Log_AohIsActive = 'N' WHERE Log_AohM_MouID = ? AND Log_AohF_BillID = ? AND Log_AohStatus = 'S'"; $this->db->query($sql_update_status, array($mouid, $billid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } // Update log_aoh field Log_AohStatus menjadi S $sql_update_status = " UPDATE log_aoh SET Log_AohStatus = 'S' WHERE Log_AohM_MouID = ? AND Log_AohF_BillID = ? AND Log_AohType = 'HOLD' "; $this->db->query($sql_update_status, array($mouid, $billid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } } else { // update log_aoh field Log_AohStatus menjadi 'E' $sql_update = "UPDATE log_aoh SET Log_AohStatus = 'E' WHERE Log_AohM_MouID = ? AND Log_AohF_BillID = ? "; $qry = $this->db->query($sql_update, array($mouid, $billid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } print_r($result); } } else { print_r($this->db->error()); // akhir transaksi query dengna database } // COMMIT TRANSACTION $this->db->trans_commit(); } public function receive_execute_hold() { // Update data hold dari regional $prm = $this->sys_input; $mou_id = $prm['mou_id']; // print_r($prm); // exit; // parameter array mou_id // BEGIN TRANSACTION $this->db->trans_begin(); // Update data m_mou field M_MouIsActive menjadi H $sql = "UPDATE m_mou SET M_MouIsActive = 'H' WHERE M_MouId=?"; $qry = $this->db->query($sql, $mou_id); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } // COMMIT TRANSACTION $this->db->trans_commit(); // return array mou_id beserta statusnya print_r(json_encode(["status" => "OK", "message" => $mou_id, "Berhasil mengupdate data hold regional"])); exit; } public function request_unhold($mouid, $billid) { // Kirim request unhold ke regional $user = $this->sys_user; $userID = $user["M_UserID"]; // BEGIN TRANSACTION $this->db->trans_begin(); // select data dari f_bill_issue // jika F_BillIssueIsAllMou = 'Y' join f_bill_mou untuk mendapatkan mouid , jika F_BillIssueIsAllMou = 'N' langsung ambil dari F_BillIssueM_MouID // join f_bill, m_mou, m_company, m_branch (M_BranchIsActive = 'Y' & M_BranchIsDefault = 'Y') // Data yang dibutuhkan F_BillNo, M_MouID, M_MouName, M_MouNumber, M_CompanyID, M_CompanyNumber // pastikan F_BillIsLunas = 'Y' $sql = " SELECT f_bill.F_BillID, f_bill.F_BillNo, f_bill_mou.F_BillMouM_MouID AS M_MouID, m_mou.M_MouName, m_mou.M_MouNumber, m_company.M_CompanyID, m_company.M_CompanyNumber, m_branch.M_BranchID FROM f_bill_issue JOIN f_bill ON f_bill_issue.F_BillIssueF_BillID = f_bill.F_BillID AND f_bill.F_BillIsLunas = 'Y' AND f_bill.F_BillID = ? JOIN f_bill_mou ON f_bill.F_BillID = f_bill_mou.F_BillMouF_BillID JOIN m_mou ON f_bill_issue.F_BillIssueIsAllMou = 'Y' AND f_bill_mou.F_BillMouM_MouID= m_mou.M_MouID AND m_mou.M_MouID = ? JOIN m_branch ON m_branch.M_BranchIsActive = 'Y' AND m_branch.M_BranchIsDefault = 'Y' JOIN m_company ON m_mou.M_MouM_CompanyID= m_company.M_CompanyID UNION SELECT f_bill.F_BillID, f_bill.F_BillNo, f_bill_issue.F_BillIssueM_MouID AS M_MouID, m_mou.M_MouName, m_mou.M_MouNumber, m_company.M_CompanyID, m_company.M_CompanyNumber, m_branch.M_BranchID FROM f_bill_issue JOIN f_bill ON f_bill_issue.F_BillIssueF_BillID = f_bill.F_BillID AND f_bill.F_BillIsLunas = 'Y' AND f_bill.F_BillID = ? JOIN m_mou ON f_bill_issue.F_BillIssueIsAllMou = 'N' AND f_bill_issue.F_BillIssueM_MouID = m_mou.M_MouID AND m_mou.M_MouID = ? JOIN m_branch ON m_branch.M_BranchIsActive = 'Y' AND m_branch.M_BranchIsDefault = 'Y' JOIN m_company ON m_mou.M_MouM_CompanyID= m_company.M_CompanyID "; $qry = $this->db->query($sql, array($billid, $mouid, $billid, $mouid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } $rows = array(); if ($qry) { //CHECK rows count kosong / tidak jika return langusng tanpa insert $rows = $qry->result_array(); if (COUNT($rows) == 0) { return "Rows Not Found"; } $param = json_encode($rows); // insert data ke tabel log_aoh $sql_insert = "INSERT INTO log_aoh ( Log_AohM_MouID, Log_AohF_BillID, Log_AohJson, Log_AohType, Log_AohUserID) VALUES (?, ?, ?, 'UNHOLD', ?) ON duplicate KEY UPDATE Log_AohM_MouID = Log_AohM_MouID"; $qry = $this->db->query($sql_insert, array($mouid, $billid, $param, $userID)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } //get data dari tabel conf_systems S_SystemIPAddressRegional untuk mendapatkan ip regional $regional_ip_address = $this->get_region_ip(); // $url = "http://$regional_ip_address/one-api/aoh/receive_request_unhold"; $url = "http://$regional_ip_address/one-api/training/dataregional_mike/receive_request_unhold"; // $url_dummy = "https://devone.aplikasi.web.id/one-api/training/Databranch_stephen/receive_request_unhold_dummy"; // $result = $this->post($url_dummy, $param); // echo "to $url_dummy \nresponse : $result\n"; $result = $this->post($url, $param); echo "to $url \nresponse : $result\n"; $result = json_decode($result, true); if ($result["status"] == "OK") { // CHECK YANG LAMA, JIKA ADA STATUS Log_AohIsActive menjadi 'N' $sql_update = "UPDATE log_aoh SET Log_AohIsActive = 'N' WHERE Log_AohM_MouID = ? AND Log_AohF_BillID = ? AND Log_AohStatus = 'S'"; $qry = $this->db->query($sql_update, array($mouid, $billid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } // update log_aoh field Log_AohStatus menjadi S $sql_update = "UPDATE log_aoh SET Log_AohStatus = 'S' WHERE Log_AohM_MouID = ? AND Log_AohF_BillID = ? AND Log_AohStatus != 'E'"; $qry = $this->db->query($sql_update, array($mouid, $billid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } return true; } else { // update log_aoh field Log_AohStatus menjadi E $sql_update = "UPDATE log_aoh SET Log_AohStatus = 'E' WHERE Log_AohM_MouID = ? AND Log_AohF_BillID = ? AND Log_AohStatus = 'S'"; $qry = $this->db->query($sql_update, array($mouid, $billid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } print_r($result); } } else { print_r($this->db_onedev->error()); } // COMMIT TRANSACTION $this->db->trans_commit(); } public function receive_execute_unhold() { // Update data unhold dari regional $prm = $this->sys_input; $mou_id = $prm['mou_id']; // print_r($prm); // exit; // parameter array mou_id // BEGIN TRANSACTION $this->db->trans_begin(); // Update data m_mou field M_MouIsActive menjadi Y $sql = "UPDATE m_mou SET M_MouIsActive = 'Y' WHERE M_MouId=?"; $qry = $this->db->query($sql, $mou_id); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } // COMMIT TRANSACTION $this->db->trans_commit(); // return array mou_id beserta statusnya $message = "Berhasil mengupdate unhold regional"; echo (json_encode(["status" => "OK", "message" => $message])); } public function receive_check_agrement_status() { // mengambil mou id "$this" $param = $this->sys_input; $mouid = $param["M_MouID"]; // BEGIN TRANSACTION $this->db->trans_begin(); // select data dari f_bill_issue // jika F_BillIssueIsAllMou = 'Y' join f_bill_mou untuk mendapatkan mouid , jika F_BillIssueIsAllMou = 'N' langsung ambil dari F_BillIssueM_MouID // join f_bill, m_mou, m_company // cek apakah agreement tersebut masih ada tagihan jatuh tempo & belum lunas x // jika F_BillIssueExtendDay = 0 maka F_BillDueDate + 7 & F_BillIsLunas = 'N' // jika F_BillIssueExtendDay <> 0 maka F_BillDueDate + F_BillIssueExtendDay & F_BillIsLunas = 'N' //jika tidak ada status oke dan message tidak ada tagihan //jika ada status err dan message ada tagihan $sql = " SELECT DISTINCT F_BillNo, M_MouID, M_MouName, M_CompanyName, M_BranchName, F_BillIsLunas, F_BillCreated, CASE WHEN F_BillIssueExtendDay = 0 THEN DATE_ADD(f_bill.F_BillDueDate, INTERVAL 7 DAY) ELSE DATE_ADD(f_bill.F_BillDueDate, INTERVAL F_BillIssueExtendDay DAY) END AS F_BillDueDate FROM f_bill_issue JOIN f_bill ON f_bill_issue.F_BillIssueF_BillID = f_bill.F_BillID AND F_BillIsActive = 'Y' AND F_BillIsLunas = 'N' AND F_BillIssueIsActive ='Y' JOIN f_bill_mou ON f_bill.F_BillID = f_bill_mou.F_BillMouF_BillID AND F_BillMouIsActive = 'Y' JOIN m_mou ON f_bill_issue.F_BillIssueIsAllMou = 'Y' AND f_bill_mou.F_BillMouM_MouID= m_mou.M_MouID AND m_mou.M_MouID = ? JOIN m_branch ON m_branch.M_BranchIsActive = 'Y' AND m_branch.M_BranchIsDefault = 'Y' JOIN m_company ON m_mou.M_MouM_CompanyID= m_company.M_CompanyID UNION SELECT DISTINCT F_BillNo, M_MouID, M_MouName, M_CompanyName, M_BranchName, F_BillIsLunas, F_BillCreated, CASE WHEN F_BillIssueExtendDay = 0 THEN DATE_ADD(f_bill.F_BillDueDate, INTERVAL 7 DAY) ELSE DATE_ADD(f_bill.F_BillDueDate, INTERVAL F_BillIssueExtendDay DAY) END AS F_BillDueDate FROM f_bill_issue JOIN f_bill ON f_bill_issue.F_BillIssueF_BillID = f_bill.F_BillID AND F_BillIsActive = 'Y' AND F_BillIsLunas = 'N' AND F_BillIssueIsActive ='Y' JOIN m_mou ON f_bill_issue.F_BillIssueIsAllMou = 'N' AND f_bill_issue.F_BillIssueM_MouID = m_mou.M_MouID AND m_mou.M_MouID = ? JOIN m_branch ON m_branch.M_BranchIsActive = 'Y' AND m_branch.M_BranchIsDefault = 'Y' JOIN m_company ON m_mou.M_MouM_CompanyID= m_company.M_CompanyID ORDER BY F_BillCreated "; $qry = $this->db->query($sql, array($mouid, $mouid)); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } $rows = array(); $log_message = ""; $status = ""; if ($qry) { $rows = $qry->result_array(); $bill_created = $rows[0]["F_BillCreated"]; $due_date = $rows[0]["F_BillDueDate"]; if (count($rows) > 0) { // jika ada tagihan belum tuntas maka status Tidak OK / ERR $mou_name = $rows[0]['M_MouName']; $company_name = $rows[0]['M_CompanyName']; $first_bill_date = $rows[0]['F_BillDueDate']; $branch_name = $rows[0]['M_BranchName']; $bill_number = $rows[0]['F_BillNo']; // Mengubah format date menjadi d(tanggal 1-31) F(nama bulan Full letter) Y (tahun 4 digit angka) $hold_date = date("d F Y", strtotime($first_bill_date)); // diganti sesuai meesage grup $log_message = "Agreement $mou_name kelompok pelanggan $company_name telah terhold di cabang $branch_name dengan nomor tagihan $bill_number pada tanggal $hold_date ."; $status = "ERR"; } else { // jika tidak ada tagihan yang pending maka status OK $log_message = "Tagihan Sudah Dibayarkan Semua"; $status = "OK"; } } else { print_r($this->db->error()); } // COMMIT TRANSACTION $this->db->trans_commit(); echo json_encode(array("status" => $status, "message" => $log_message, "bill_created" => $bill_created, "due_date" => $due_date)); // print_r(json_encode(array("status" => $status, "message" => $log_message, "bill_created" => $bill_created, "due_date" => $due_date))); } public function get_region_ip() { // BEGIN TRANSACTION $this->db->trans_begin(); $sql = "Select S_SystemIPAddressRegional from conf_systems"; $qry = $this->db->query($sql, array()); $last_qry = $this->db->last_query(); if (!$qry) { $error = array( "status" => "ERR", "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error); // ROLLBACK TRANSACTION $this->db->trans_rollback(); exit; } $rows = $qry->result_array(); if (COUNT($rows) == 0) { return "Host Not Found"; } else { return $rows[0]["S_SystemIPAddressRegional"]; } // COMMIT TRANSACTION $this->db->trans_commit(); } function post($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data) ) ); $result = curl_exec($ch); //echo "RST : $result "; return $result; } }