328 lines
12 KiB
PHP
328 lines
12 KiB
PHP
<?php
|
|
|
|
class Box extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "REF RECEIVE SAMPLE API";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
$this->load->library("Kapus");
|
|
}
|
|
|
|
function selected_box1()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$id = $prm['id'];
|
|
$barcode = $prm['barcode'];
|
|
$sql = "SELECT
|
|
ROUND(sysFaktur08SumTargetPct,0) as kapus
|
|
from sys_faktur_08_sum WHERE sysFaktur08SumID = $id ";
|
|
// echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if ($query) {
|
|
$rows = $query->result_array();
|
|
} else {
|
|
$this->sys_error_db( $this->db_onedev->last_query() );
|
|
exit;
|
|
}
|
|
$result = array ("total" => count($rows), "records" => $rows);
|
|
$this->sys_ok($result);
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function selected_box2()
|
|
{
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$id = $prm['id'];
|
|
$barcode = $prm['barcode'];
|
|
$sql = "SELECT *,
|
|
FORMAT(IFNULL(sysFaktur08SumAmount,0),0) as kapus,
|
|
FORMAT(sysFKapusSumTotal,0) as kascabang,
|
|
ROUND(sysFKapusSumTargetPct,0) as target,
|
|
sysFKapusSumActualPct as actual,
|
|
DATE_FORMAT(sysFKapusSumDate,'%d-%m-%Y') as tanggal,
|
|
IFNULL(sysFaktur08SumIsPosted,'N') as sysFaktur08SumIsPosted
|
|
from sys_f_kapus_sum
|
|
LEFT JOIN sys_faktur_08_sum ON sysFaktur08SumDate = sysFKapusSumDate
|
|
WHERE sysFKapusSumID = $id";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if ($query) {
|
|
$rows = $query->result_array();
|
|
} else {
|
|
$this->sys_error_db( $this->db_onedev->last_query() );
|
|
exit;
|
|
}
|
|
$result = array ("total" => count($rows), "records" => $rows);
|
|
$this->sys_ok($result);
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function updategenerate(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$id = $prm["id"];
|
|
$tanggal = $prm["tanggal"];
|
|
$sysKaPusPct = $prm["sysKaPusPct"];
|
|
$sumid = 0;
|
|
$sqlsumid = "SELECT sysFaktur08SumID as id FROM sys_faktur_08_sum WHERE sysFaktur08SumDate = '{$tanggal}'";
|
|
$sumid = $this->db_onedev->query($sqlsumid)->row()->id;
|
|
if($sumid == 0){
|
|
$sql = "INSERT INTO sys_faktur_08_sum(
|
|
sysFaktur08SumDate,
|
|
sysFaktur08SumUserID)
|
|
VALUES(
|
|
'{$tanggal}',
|
|
$userid)";
|
|
$qry = $this->db_onedev->query($sql);
|
|
$last_id = $this->db_onedev->insert_id();
|
|
}else{
|
|
$last_id = $sumid;
|
|
}
|
|
$sql = "UPDATE sys_faktur_08 SET sysFaktur08IsActive = 'N' WHERE sysFaktur08sysFaktur08SumID = $last_id";
|
|
$qry = $this->db_onedev->query($sql);
|
|
|
|
$rst = $this->add_efaktur($last_id,$tanggal,$sysKaPusPct);
|
|
if ($rst["status"] != "OK" ) {
|
|
$this->sys_error($rst["message"]);
|
|
exit;
|
|
}
|
|
|
|
$this->clean_mysqli_connection($this->db_onedev->conn_id);
|
|
|
|
$sqlkapus = "SELECT
|
|
sys_faktur_08_sum.*,
|
|
sysFKapusSumIsPosted,
|
|
sysFKapusSumDate,
|
|
sysFKapusSumID as id,
|
|
sysFKapusSumID,
|
|
FORMAT(sysFaktur08SumAmountAfterRounding,0) as kapus,
|
|
FORMAT(sysFaktur08SumTotalAfterRounding,0) as kascabang,
|
|
FORMAT(sysFaktur08SumTotalAfterRounding - sysFaktur08SumAmountAfterRounding,0) as kascabang_only,
|
|
ROUND(sysFaktur08SumTargetPct,0) as target,
|
|
sysFaktur08SumActualPct as actual,
|
|
DATE_FORMAT(sysFKapusSumDate,'%d-%m-%Y') as tanggal,
|
|
IFNULL(sysFaktur08SumIsPosted,'N') as sysFaktur08SumIsPosted
|
|
from sys_f_kapus_sum
|
|
LEFT JOIN sys_faktur_08_sum ON sysFaktur08SumDate = sysFKapusSumDate
|
|
where
|
|
sysFKapusSumID = $id";
|
|
$querykapus = $this->db_onedev->query($sqlkapus);
|
|
$rows = $querykapus->result_array();
|
|
$result = array ("total" => count($rows), "records" => $rows, "message" =>$rst["message"]);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function add_efaktur($hid,$date,$percent)
|
|
{
|
|
// get total query
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$total_order = 0;
|
|
$total_efaktur = 0; // $percent * $total faktur
|
|
$sqltotal = "SELECT $percent/100*SUM(T_OrderHeaderTotal) as total
|
|
FROM t_orderheader
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND M_PatientM_IdTypeID = 1 AND M_PatientIDNumber NOT LIKE '00%'
|
|
WHERE T_OrderHeaderM_CompanyID IN(1222,1235)
|
|
AND date(T_OrderHeaderDate) = '{$date}'
|
|
AND T_OrderHeaderID NOT IN
|
|
(
|
|
SELECT sysFKapusT_OrderHeaderID
|
|
FROM sys_f_kapus
|
|
WHERE sysFKapusDate = '{$date}'
|
|
)";
|
|
$total_efaktur = $this->db_onedev->query($sqltotal)->row()->total;
|
|
|
|
$sqltotalorder = "SELECT SUM(T_OrderHeaderTotal) as total
|
|
FROM t_orderheader
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND M_PatientM_IdTypeID = 1 AND M_PatientIDNumber NOT LIKE '00%'
|
|
WHERE T_OrderHeaderM_CompanyID IN(1222,1235)
|
|
AND date(T_OrderHeaderDate) = '{$date}'
|
|
AND T_OrderHeaderID NOT IN
|
|
(
|
|
SELECT sysFKapusT_OrderHeaderID
|
|
FROM sys_f_kapus
|
|
WHERE sysFKapusDate = '{$date}'
|
|
)";
|
|
$total_order = $this->db_onedev->query($sqltotalorder)->row()->total;
|
|
//echo $this->db_onedev->last_query();
|
|
|
|
// get listing t_orderheaderid
|
|
$sql = "SELECT T_OrderHeaderID,T_OrderHeaderTotal
|
|
FROM t_orderheader
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND M_PatientM_IdTypeID = 1 AND M_PatientIDNumber NOT LIKE '00%'
|
|
WHERE T_OrderHeaderM_CompanyID IN(1222,1235)
|
|
AND date(T_OrderHeaderDate) ='{$date}'
|
|
AND T_OrderHeaderID NOT IN
|
|
(
|
|
SELECT sysFKapusT_OrderHeaderID
|
|
FROM sys_f_kapus
|
|
WHERE sysFKapusDate = '{$date}'
|
|
|
|
)
|
|
ORDER BY T_OrderHeaderID ASC";
|
|
|
|
$qry = $this->db_onedev->query($sql);
|
|
//echo $this->db_onedev->last_query();
|
|
if (!$qry) {
|
|
// ada error query
|
|
return [false, $this->db_onedev->error()["message"]];
|
|
}
|
|
$rows = $qry->result_array();
|
|
$running_total = 0;
|
|
$daftar_order_id = [];
|
|
foreach ($rows as $r) {
|
|
$daftar_order_id[] = $r["T_OrderHeaderID"];
|
|
$running_total += $r["T_OrderHeaderTotal"];
|
|
if ($running_total >= $total_efaktur) {
|
|
break;
|
|
}
|
|
}
|
|
// insert kan ke efaktur dari $daftar_order_id
|
|
if (count($daftar_order_id) > 0) {
|
|
$s_ids = implode(",", $daftar_order_id);
|
|
$sql = "INSERT INTO sys_faktur_08(sysFaktur08sysFaktur08SumID,
|
|
sysFaktur08T_OrderHeaderID,
|
|
sysFaktur08Amount,
|
|
sysFaktur08AmountAfterRounding,
|
|
sysFaktur08M_UserID,
|
|
sysFaktur08Date,
|
|
sysFaktur08Pct,
|
|
sysFaktur08Created)
|
|
SELECT $hid as sysFaktur08sysFaktur08SumID,
|
|
T_OrderHeaderID as sysFaktur08T_OrderHeaderID,
|
|
T_OrderHeaderTotal as sysFaktur08Amount,
|
|
(T_OrderHeaderTotal - T_OrderHeaderTotal mod 500) as sysFaktur08AmountAfterRounding,
|
|
$userid as sysFaktur08M_UserID,
|
|
'{$date}' as sysFaktur08Date,
|
|
$percent as sysFaktur08Pct,
|
|
now() as sysFaktur08Created
|
|
FROM t_orderheader
|
|
WHERE T_OrderHeaderID in ($s_ids)";
|
|
$qry = $this->db_onedev->query($sql);
|
|
// echo $this->db_onedev->last_query();
|
|
}
|
|
if (! $qry ) {
|
|
return array("status" => "ERR" , "message" => "Error INSERT sys_faktur_08");
|
|
}
|
|
$sql = "UPDATE sys_faktur_08_sum SET sysFaktur08SumTotal = $total_order,
|
|
sysFaktur08SumTotalAfterRounding = $total_order - $total_order mod 500,
|
|
sysFaktur08SumAmountAfterRounding = $running_total - $running_total mod 500,
|
|
sysFaktur08SumAmount = $running_total,
|
|
sysFaktur08SumTargetPct = $percent,
|
|
sysFaktur08SumActualPct = $running_total / $total_order * 100,
|
|
sysFaktur08SumUserID = $userid,
|
|
sysFaktur08SumLastUpdated = now()
|
|
WHERE sysFaktur08SumID = $hid";
|
|
$qry = $this->db_onedev->query($sql);
|
|
return array("status" => "OK" , "message" => "");
|
|
}
|
|
function konfirmasi(){
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$id = $prm['id'];
|
|
$year = $prm['year'];
|
|
$month = $prm['month'];
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$tanggal = $prm["tanggal"];
|
|
|
|
$sqlfaktur = "select COUNT(sysFaktur08ID) as totalfaktur
|
|
FROM sys_faktur_08
|
|
WHERE sysFaktur08sysFaktur08SumID = $id AND sysFaktur08IsActive = 'Y'";
|
|
$totalfaktur = $this->db_onedev->query($sqlfaktur)->row()->totalfaktur;
|
|
|
|
$sqlnomor = "select COUNT(sysFaktur08NomorID) as totalnomor
|
|
FROM sys_faktur_08_nomor
|
|
WHERE sysFaktur08NomorIsActive = 'Y' AND sysFaktur08NomorIsUsed = 'N'
|
|
AND sysFaktur08NomorDate >= '{$tanggal}'";
|
|
$totalnomor = $this->db_onedev->query($sqlnomor)->row()->totalnomor;
|
|
|
|
if($totalnomor < $totalfaktur){
|
|
$this->sys_error("Nomor E-Faktur Tidak Cukup");
|
|
exit;
|
|
}else{
|
|
|
|
|
|
|
|
|
|
// get listing t_orderheaderid
|
|
$sql = "SELECT sysFaktur08ID FROM sys_faktur_08 WHERE sysFaktur08sysFaktur08SumID = $id AND sysFaktur08IsActive = 'Y'";
|
|
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (!$qry) {
|
|
// ada error query
|
|
return [false, $this->db_onedev->error()["message"]];
|
|
}
|
|
$rows = $qry->result_array();
|
|
foreach ($rows as $r) {
|
|
$hid = $r['sysFaktur08ID'];
|
|
$sql = "UPDATE sys_faktur_08 SET
|
|
sysFaktur08NoEfaktur = `fn_faktur_08_get_nomor`('{$tanggal}'),
|
|
sysFaktur08LastUpdated = now()
|
|
WHERE sysFaktur08ID = $hid";
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (! $qry ) {
|
|
return array("status" => "ERR" , "message" => "Error INSERT sys_faktur_08");
|
|
}
|
|
}
|
|
$sql = "update sys_faktur_08_sum set sysFaktur08SumIsPosted = 'Y',sysFaktur08SumUserID = '{$userid}' where sysFaktur08SumID = ?";
|
|
$query = $this->db_onedev->query($sql, array($id));
|
|
if ($query) {
|
|
$sqlkapus = "SELECT *,
|
|
sysFKapusSumID as id,
|
|
FORMAT(sysFKapusSumAmount,0) as kapus,
|
|
FORMAT(sysFKapusSumTotal,0) as kascabang,
|
|
ROUND(sysFKapusSumTargetPct,0) as target,
|
|
sysFKapusSumActualPct as actual,
|
|
DATE_FORMAT(sysFKapusSumDate,'%d-%m-%Y') as tanggal
|
|
from sys_f_kapus_sum
|
|
WHERE sysFKapusSumID = $id";
|
|
$querykapus = $this->db_onedev->query($sqlkapus);
|
|
$rows = $querykapus->result_array();
|
|
} else {
|
|
$this->sys_error_db( $this->db_onedev->last_query() );
|
|
exit;
|
|
}
|
|
|
|
$result = array ("total" => count($rows), "records" => $rows);
|
|
$this->sys_ok($result);
|
|
}
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
}
|