Initial import
This commit is contained in:
446
application/controllers/nat_report/Uploader.php
Normal file
446
application/controllers/nat_report/Uploader.php
Normal file
@@ -0,0 +1,446 @@
|
||||
<?php
|
||||
class Uploader extends MY_Controller
|
||||
{
|
||||
var $db;
|
||||
var $max_limit = 20;
|
||||
var $IP_ADDRESS = "192.168.250.73";
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
// db wilayah contoh surabaya
|
||||
// $this->db = $this->load->database("regional", true);
|
||||
|
||||
// string database
|
||||
// $this->db_str_doctor = 'one_doctor';
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "NAT REPORT API";
|
||||
}
|
||||
|
||||
function get($url, $timeout = 60, $c_timeout = 5)
|
||||
{
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $c_timeout);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$result = curl_exec($ch);
|
||||
$err_msg = curl_error($ch);
|
||||
if ($err_msg != "") {
|
||||
return json_encode(["status" => "ERR", "message" => $err_msg]);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
function reply_err($message)
|
||||
{
|
||||
echo json_encode(["status" => "ERR", "data" => $message]);
|
||||
exit();
|
||||
}
|
||||
|
||||
public 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_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||
"Content-Type: application/text",
|
||||
"Content-Length: " . strlen($data),
|
||||
]);
|
||||
$result = curl_exec($ch);
|
||||
if (curl_error($ch) != "") {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" => "Http Error : " . curl_error($ch),
|
||||
]);
|
||||
curl_close($ch);
|
||||
exit();
|
||||
}
|
||||
curl_close($ch);
|
||||
return $result;
|
||||
}
|
||||
|
||||
function log($msg)
|
||||
{
|
||||
// $dt = Date("Y-m-d H:i:s");
|
||||
// echo "$dt $msg \n";
|
||||
echo $msg;
|
||||
}
|
||||
|
||||
function get_param_z()
|
||||
{
|
||||
$body_z = file_get_contents("php://input");
|
||||
$body = gzuncompress($body_z);
|
||||
return json_decode($body, true);
|
||||
}
|
||||
|
||||
function reply($resp)
|
||||
{
|
||||
echo json_encode($resp);
|
||||
}
|
||||
|
||||
function reply_gz($resp)
|
||||
{
|
||||
//echo json_encode($resp);
|
||||
echo gzcompress(json_encode($resp));
|
||||
}
|
||||
|
||||
// nat_sales start
|
||||
function get_sales($T_OrderHeaderDate)
|
||||
{
|
||||
// print_r($T_OrderHeaderDate);
|
||||
$sql_sales = "with branch
|
||||
as (
|
||||
select M_BranchID, M_BranchCode
|
||||
from
|
||||
m_branch where M_BranchIsActive='Y' and M_BranchIsDefault ='Y'
|
||||
)
|
||||
|
||||
select
|
||||
M_BranchID,
|
||||
M_BranchCode,
|
||||
date(T_OrderHeaderDate) day,
|
||||
month(T_OrderHeaderDate) month,
|
||||
year(T_OrderHeaderDate) year,
|
||||
quarter(T_OrderHeaderDate) quarter,
|
||||
T_OrderHeaderM_CompanyID,
|
||||
Nat_TestNat_GroupID,
|
||||
Nat_TestNat_SubGroupID,
|
||||
sum(SsPiutangTestPrice) SalesPrice,
|
||||
sum(SsPiutangTestDiscTotal) SalesDiscount,
|
||||
sum(SsPiutangTestTotal) SalesTotal,
|
||||
sum(if(T_TestIsPrice='Y',1,0) ) CountPx
|
||||
from t_orderheader
|
||||
join ss_piutang on T_OrderHeaderID = SsPiutangT_OrderHeaderID
|
||||
and SsPiutangType in ( 'A1','A2','A3')
|
||||
and T_OrderHeaderIsActive = 'Y' and date(T_OrderHeaderDate) = ?
|
||||
join ss_piutang_test on SsPiutangID = SsPiutangTestSsPiutangID
|
||||
join t_test on SsPiutangTestT_TestID = T_TestID
|
||||
join nat_test on T_TestNat_TestID = Nat_TestID,
|
||||
branch
|
||||
group by Nat_TestID,
|
||||
Nat_TestNat_GroupID,
|
||||
Nat_TestNat_SubGroupID
|
||||
";
|
||||
|
||||
$qry_sales = $this->db->query($sql_sales, [
|
||||
$T_OrderHeaderDate
|
||||
]);
|
||||
|
||||
if (!$qry_sales) {
|
||||
$this->db->trans_rollback();
|
||||
$this->sys_error_db("error select sales ss_piutang", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$row_sales = $qry_sales->result_array();
|
||||
if (count($row_sales) == 0) {
|
||||
// $this->sys_error('sales Tidak Ada');
|
||||
return json_encode(
|
||||
array(
|
||||
'status' => 'OK',
|
||||
'message' => 'Data Tidak Ada',
|
||||
'data' => $row_sales,
|
||||
'total_recors' => count($row_sales)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return json_encode(
|
||||
array(
|
||||
'status' => 'OK',
|
||||
'data' => $row_sales,
|
||||
'total_recors' => count($row_sales)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function upload_nat_sales_nat_report_range($start_date = "", $end_date = "")
|
||||
{
|
||||
// $T_OrderHeaderDate = "";
|
||||
if ($start_date == "") {
|
||||
$start_date = date('Y-m-d');
|
||||
}
|
||||
|
||||
if ($end_date == "") {
|
||||
$end_date = date('Y-m-d');
|
||||
}
|
||||
|
||||
if ($end_date < $start_date) {
|
||||
$this->reply([
|
||||
"status" => "ERR",
|
||||
'message' => "Start date lebih besar dari end date"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// check max jarak start date dan end date adalah 10 hari but failed
|
||||
if (($end_date - $start_date) / 60 / 60 / 24 > 10) {
|
||||
$this->reply([
|
||||
"status" => "ERR",
|
||||
'message' => "Maksimal jarak start date dan end date adalah 10 hari"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
for ($date = $start_date; $date <= $end_date;) {
|
||||
// echo $date;
|
||||
$date = date("Y-m-d", strtotime("$date + 1 day"));
|
||||
// echo "\n";
|
||||
// echo $date;
|
||||
|
||||
$this->upload_nat_sales_nat_report_gzcompress($date);
|
||||
sleep(3);
|
||||
}
|
||||
}
|
||||
|
||||
function upload_nat_sales_nat_report_gzcompress($date = "")
|
||||
{
|
||||
// check format tanggal
|
||||
|
||||
$T_OrderHeaderDate = "";
|
||||
if ($date == "") {
|
||||
$T_OrderHeaderDate = date('Y-m-d');
|
||||
} else {
|
||||
$T_OrderHeaderDate = $date;
|
||||
}
|
||||
|
||||
|
||||
$this->db->trans_begin();
|
||||
$j_param = $this->get_sales($T_OrderHeaderDate);
|
||||
$result = json_decode($j_param, true);
|
||||
|
||||
if (count($result['data']) > 0) {
|
||||
$size = round(strlen($j_param) / 1024, 2);
|
||||
$z_param = gzcompress($j_param, 9);
|
||||
$size_z = round(strlen($z_param) / 1024, 2);
|
||||
|
||||
$url = "http://$this->IP_ADDRESS/one-api/one-dash/R_sales/r_sales_upload_log";
|
||||
//$this->log("Post to $url | size : $size k | comprezzed $size_z k");
|
||||
$resp = $this->post($url, $z_param);
|
||||
$j_resp = json_decode($resp, true);
|
||||
// $j_resp_x = $this->get_param_z();
|
||||
// print_r($j_resp);
|
||||
// print_r($resp);
|
||||
// print_r($j_resp_x);
|
||||
|
||||
if ($j_resp["status"] == "OK") {
|
||||
$this->db->trans_commit();
|
||||
// $this->db->trans_rollback();
|
||||
$this->reply(["status" => "OK", 'message' => "Proses upload sudah berhasil. $url, $size_z k"]);
|
||||
} else {
|
||||
$this->db->trans_rollback();
|
||||
// print_r($j_resp['status']);
|
||||
$this->reply([
|
||||
"status" => "ERR",
|
||||
'message' => "Gagal update",
|
||||
'debug' => print_r($resp, true)
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
$this->db->trans_rollback();
|
||||
// print_r($j_resp['status']);
|
||||
$this->reply([
|
||||
"status" => "OK",
|
||||
'message' => "Tidak Ada Data",
|
||||
'debug' => print_r($resp, true)
|
||||
]);
|
||||
}
|
||||
}
|
||||
// nat_sales end
|
||||
|
||||
// nat payment start
|
||||
function get_payment($T_OrderHeaderDate)
|
||||
{
|
||||
// print_r($T_OrderHeaderDate);
|
||||
$sql_payment = "with branch
|
||||
as (
|
||||
select M_BranchID, M_BranchCode
|
||||
from
|
||||
m_branch where M_BranchIsActive='Y' and M_BranchIsDefault ='Y'
|
||||
),
|
||||
payment
|
||||
as (
|
||||
select
|
||||
T_OrderHeaderID,
|
||||
T_OrderHeaderM_CompanyID,
|
||||
date(T_OrderHeaderDate) orderDay,
|
||||
month(T_OrderHeaderDate) orderMonth,
|
||||
quarter(T_OrderHeaderDate) orderQuarter,
|
||||
year(T_OrderHeaderDate) orderYear,
|
||||
ssPiutangDate,
|
||||
ssPiutangTotal piutangTotal,
|
||||
sum(ssPiutangPayment) as paymentTotal,
|
||||
max(ssPiutangIsLunas) isLunas
|
||||
from t_orderheader
|
||||
join ss_piutang on SsPiutangT_OrderHeaderID = T_OrderHeaderID
|
||||
and date(T_OrderHeaderDate) = ?
|
||||
and date(SsPiutangDate) >= ?
|
||||
and SsPiutangIsActive = 'Y'
|
||||
and SsPiutangPayment <> 0
|
||||
group by
|
||||
T_OrderHeaderID, SsPiutangDate
|
||||
)
|
||||
|
||||
select
|
||||
M_BranchID,
|
||||
M_BranchCode,
|
||||
T_OrderHeaderM_CompanyID,
|
||||
orderDay,
|
||||
orderMonth,
|
||||
orderQuarter,
|
||||
orderYear,
|
||||
ssPiutangDate paymentDay,
|
||||
month(ssPiutangDate) month,
|
||||
year(ssPiutangDate) year,
|
||||
quarter(ssPiutangDate) quarter,
|
||||
sum(piutangTotal) piutang,
|
||||
sum(paymentTotal) paymentTotal,
|
||||
sum(piutangTotal) - sum(paymentTotal) sisaPiutang
|
||||
from payment,branch
|
||||
group by
|
||||
T_OrderHeaderM_CompanyID,
|
||||
orderDay,
|
||||
orderMonth,
|
||||
orderQuarter,
|
||||
orderYear,
|
||||
paymentDay,
|
||||
month,
|
||||
year,
|
||||
quarter
|
||||
order by paymentDay";
|
||||
|
||||
$qry_payment = $this->db->query($sql_payment, [
|
||||
$T_OrderHeaderDate,
|
||||
$T_OrderHeaderDate,
|
||||
]);
|
||||
|
||||
if (!$qry_payment) {
|
||||
$this->db->trans_rollback();
|
||||
$this->sys_error_db("error select sales ss_piutang", $this->db);
|
||||
exit;
|
||||
}
|
||||
|
||||
$row_payment = $qry_payment->result_array();
|
||||
if (count($row_payment) == 0) {
|
||||
// $this->sys_error('sales Tidak Ada');
|
||||
return json_encode(
|
||||
array(
|
||||
'status' => 'OK',
|
||||
'message' => 'Data Tidak Ada',
|
||||
'data' => $row_payment,
|
||||
'total_recors' => count($row_payment)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return json_encode(
|
||||
array(
|
||||
'status' => 'OK',
|
||||
'total_recors' => count($row_payment),
|
||||
'data' => $row_payment,
|
||||
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function upload_nat_payment_nat_report_gzcompress($date = "")
|
||||
{
|
||||
// check format tanggal
|
||||
|
||||
$T_OrderHeaderDate = "";
|
||||
if ($date == "") {
|
||||
$T_OrderHeaderDate = date('Y-m-d');
|
||||
} else {
|
||||
$T_OrderHeaderDate = $date;
|
||||
}
|
||||
|
||||
|
||||
$this->db->trans_begin();
|
||||
$j_param = $this->get_payment($T_OrderHeaderDate);
|
||||
$result = json_decode($j_param, true);
|
||||
|
||||
if (count($result['data']) > 0) {
|
||||
$size = round(strlen($j_param) / 1024, 2);
|
||||
$z_param = gzcompress($j_param, 9);
|
||||
$size_z = round(strlen($z_param) / 1024, 2);
|
||||
|
||||
$url = "http://$this->IP_ADDRESS/one-api/one-dash/R_payment/r_payment_upload_log";
|
||||
// $this->log("Post to $url | size : $size k | comprezzed $size_z k");
|
||||
$resp = $this->post($url, $z_param);
|
||||
$j_resp = json_decode($resp, true);
|
||||
// $j_resp_x = $this->get_param_z();
|
||||
// print_r($j_resp);
|
||||
// print_r($resp);
|
||||
// print_r($j_resp_x);
|
||||
|
||||
if ($j_resp["status"] == "OK") {
|
||||
$this->db->trans_commit();
|
||||
// $this->db->trans_rollback();
|
||||
$this->reply(["status" => "OK", 'message' => "Proses upload sudah berhasil. $url | $size_z k"]);
|
||||
} else {
|
||||
$this->db->trans_rollback();
|
||||
// print_r($j_resp['status']);
|
||||
$this->reply([
|
||||
"status" => "ERR",
|
||||
'message' => "Gagal update",
|
||||
'debug' => print_r($resp, true)
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
$this->db->trans_rollback();
|
||||
// print_r($j_resp['status']);
|
||||
$this->reply([
|
||||
"status" => "OK",
|
||||
'message' => "Tidak Ada Data",
|
||||
'debug' => print_r($resp, true)
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
function upload_nat_payment_nat_report_range($start_date = "", $end_date = "")
|
||||
{
|
||||
// $T_OrderHeaderDate = "";
|
||||
if ($start_date == "") {
|
||||
$start_date = date('Y-m-d');
|
||||
}
|
||||
|
||||
if ($end_date == "") {
|
||||
$end_date = date('Y-m-d');
|
||||
}
|
||||
|
||||
if ($end_date < $start_date) {
|
||||
$this->reply([
|
||||
"status" => "ERR",
|
||||
'message' => "Start date lebih besar dari end date"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// check max jarak start date dan end date adalah 10 hari but failed
|
||||
if (($end_date - $start_date) / 60 / 60 / 24 > 10) {
|
||||
$this->reply([
|
||||
"status" => "ERR",
|
||||
'message' => "Maksimal jarak start date dan end date adalah 10 hari"
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
for ($date = $start_date; $date <= $end_date;) {
|
||||
// echo $date;
|
||||
$date = date("Y-m-d", strtotime("$date + 1 day"));
|
||||
// echo "\n";
|
||||
// echo $date;
|
||||
|
||||
$this->upload_nat_payment_nat_report_gzcompress($date);
|
||||
sleep(3);
|
||||
}
|
||||
}
|
||||
// nat payment end
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user