609 lines
17 KiB
PHP
609 lines
17 KiB
PHP
<?php
|
|
|
|
class Payment extends MY_Controller
|
|
{
|
|
var $db_smartone;
|
|
public function index()
|
|
{
|
|
echo "API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
}
|
|
|
|
function lookup_type()
|
|
{
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$query = "SELECT M_PaymentTypeID as id,
|
|
M_PaymentTypeCode as code,
|
|
'N' as chex,
|
|
M_PaymentTypeName as chexlabel,
|
|
'Jumlah' as leftlabel,
|
|
'' as selected_card,
|
|
'' as selected_edc,
|
|
'' as selected_account,
|
|
CASE
|
|
WHEN M_PaymentTypeCode = 'CASH' THEN 'Kembali'
|
|
WHEN M_PaymentTypeCode = 'DEBIT' THEN 'Nomor Kartu'
|
|
WHEN M_PaymentTypeCode = 'CREDIT' THEN 'Nomor Kartu'
|
|
WHEN M_PaymentTypeCode = 'TRANSFER' THEN 'No. Rekening'
|
|
ELSE 'Nomor Voucher'
|
|
END as rightlabel,
|
|
0 as leftvalue,
|
|
0 as rightvalue
|
|
FROM m_paymenttype WHERE M_PaymentTypeIsActive = '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 selectpaymenttype(){
|
|
|
|
try {
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$rows = [];
|
|
$query =" SELECT *
|
|
FROM m_paymenttype
|
|
WHERE
|
|
M_PaymentTypeIsActive = '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 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;
|
|
$rows['banks'] = $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 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;
|
|
$rows['accounts'] = $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 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;
|
|
}
|
|
}
|
|
|
|
|
|
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 f_bill_payment_pusat
|
|
(F_BillPaymentPusatF_BillIssuePusatID,F_BillPaymentPusatDate,F_BillPaymentPusatCreated,F_BillPaymentPusatUserID)
|
|
VALUES (?,CURDATE(),NOW(),?)";
|
|
$query = $this->db_onedev->query($sql,
|
|
array(
|
|
$orderid, $xuserid
|
|
)
|
|
);
|
|
|
|
if (!$query) {
|
|
$this->sys_error_db("f_bill_payment_pusat 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_pusat`(".$orderid.",".$amount.",".$amount.",".$headerid.",".$v['id'].",".$xuserid.")";
|
|
$query = $this->db_onedev->query($sql);
|
|
//echo $this->db_onedev->last_query();
|
|
if (!$query) {
|
|
$this->sys_error_db("f_bill_payment_pusat_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_pusat`(".$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("f_bill_payment_pusat_detail non cash insert");
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$query = "SELECT M_PaymentTypeID as id,
|
|
M_PaymentTypeCode as code,
|
|
IF(M_PaymentTypeCode = 'CASH','Y','N') as chex,
|
|
M_PaymentTypeName as chexlabel,
|
|
'Jumlah' as leftlabel,
|
|
CASE
|
|
WHEN M_PaymentTypeCode = 'CASH' THEN 'Kembali'
|
|
WHEN M_PaymentTypeCode = 'DEBIT' THEN 'Nomor Kartu'
|
|
WHEN M_PaymentTypeCode = 'CREDIT' THEN 'Nomor Kartu'
|
|
WHEN M_PaymentTypeCode = 'TRANSFER' THEN 'Nomor Rekening'
|
|
ELSE 'Nomor Voucher'
|
|
END as rightlabel,
|
|
0 as leftvalue,
|
|
0 as rightvalue
|
|
FROM m_paymenttype WHERE M_PaymentTypeIsActive = '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 F_BillPaymentPusatID as idx, F_BillPaymentPusatNumber as numberx FROM f_bill_payment_pusat WHERE F_BillPaymentPusatID = {$headerid}")->row();
|
|
$result = array(
|
|
"total" => count($rows) ,
|
|
"records" => array('types'=>$rows,'data'=>$xdata)
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function paymanual()
|
|
{
|
|
//# 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'];
|
|
if($prm['paymenttype'] == 1 || $prm['paymenttype'] == 5){
|
|
$card = 0;
|
|
$edc = 0;
|
|
$account = 0;
|
|
}elseif($prm['paymenttype'] == 4){
|
|
$card = 0;
|
|
$edc = 0;
|
|
$account = $prm['account'];
|
|
}else{
|
|
$card = $prm['card'];
|
|
$edc = $prm['edc'];
|
|
$account = 0;
|
|
}
|
|
$voucher = $prm['voucher'];
|
|
$bills = $prm['bills'];
|
|
//$xnumber = $this->db_onedev->query("SELECT `fn_numbering`('PAY') as numberx")->row()->numberx;
|
|
$sql = "INSERT INTO f_bill_payment_pusat
|
|
(F_BillPaymentPusatF_BillIssuePusatID,
|
|
F_BillPaymentPusatDate,
|
|
F_BillPaymentPusatAmount,
|
|
F_BillPaymentPusatM_PaymentTypeID,
|
|
F_BillPaymentPusatEDCNat_BankID,
|
|
F_BillPaymentPusatCardNat_BankID,
|
|
F_BillPaymentPusatM_BankAccountID,
|
|
F_BillPaymentPusatVoucherNumber,
|
|
F_BillPaymentPusatCreated,
|
|
F_BillPaymentPusatUserID)
|
|
VALUES (?,
|
|
CURDATE(),
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW(),
|
|
?)";
|
|
$query = $this->db_onedev->query($sql,
|
|
array(
|
|
$orderid,
|
|
$amount,
|
|
$paymenttype,
|
|
$edc,
|
|
$card,
|
|
$account,
|
|
$voucher,
|
|
$xuserid
|
|
)
|
|
);
|
|
$headerid = $this->db_onedev->insert_id();
|
|
if (!$query) {
|
|
$this->sys_error_db("f_bill_payment_pusat insert");
|
|
exit;
|
|
} else{
|
|
$sqlbill = "UPDATE f_bill_issue_pusat SET
|
|
F_BillIssuePusatUnpaid = F_BillIssuePusatUnpaid - $amount,
|
|
F_BillIssuePusatIsLunas = IF(F_BillIssuePusatUnpaid = 0,'Y','N')
|
|
WHERE F_BillIssuePusatID = $orderid";
|
|
$querybill = $this->db_onedev->query($sqlbill);
|
|
|
|
}
|
|
|
|
//echo $headerid;
|
|
|
|
foreach($bills as $k => $v){
|
|
if($v['tagihan_bayar'] > 0){
|
|
$F_BillIssuePusatDetailID = $v['F_BillIssuePusatDetailID'];
|
|
$tagihan_bayar = $v['tagihan_bayar'];
|
|
$F_BillIssuePusatDetailF_BillID = $v['F_BillIssuePusatDetailF_BillID'];
|
|
$F_BillIssuePusatDetailM_BranchID = $v['F_BillIssuePusatDetailM_BranchID'];
|
|
$sql = "INSERT INTO f_bill_payment_pusat_detail(
|
|
F_BillPaymentPusatDetailF_BillPaymentPusatID,
|
|
F_BillPaymentPusatDetailF_BillIssuePusatID,
|
|
F_BillPaymentPusatDetailF_BillIssuePusatDetailID,
|
|
F_BillPaymentPusatDetailAmount,
|
|
F_BillPaymentPusatDetailUserID,
|
|
F_BillPaymentPusatDetailCreated,
|
|
F_BillPaymentPusatDetailLastUpdated)
|
|
VALUES(
|
|
$headerid,
|
|
$orderid,
|
|
$F_BillIssuePusatDetailID,
|
|
$tagihan_bayar,
|
|
$xuserid,
|
|
now(),
|
|
now())";
|
|
$query = $this->db_onedev->query($sql);
|
|
//echo $this->db_onedev->last_query();
|
|
$billpaymentdetailid = $this->db_onedev->insert_id();
|
|
if (!$query) {
|
|
$this->sys_error_db("f_bill_payment_pusat_detail cash insert");
|
|
exit;
|
|
}else{
|
|
$sqlbilldetail = "UPDATE f_bill_issue_pusat_detail SET
|
|
F_BillIssuePusatDetailUnpaid = F_BillIssuePusatDetailUnpaid - $tagihan_bayar
|
|
WHERE F_BillIssuePusatDetailID = $F_BillIssuePusatDetailID";
|
|
$querybilldetail = $this->db_onedev->query($sqlbilldetail);
|
|
|
|
$sqlpayment = "INSERT INTO f_payment_pusat
|
|
(F_PaymentPusatF_BillID,
|
|
F_PaymentPusatM_BranchID,
|
|
F_PaymentPusatDate,
|
|
F_PaymentPusatTotal,
|
|
F_PaymentPusatCreated,
|
|
F_PaymentPusatLastUpdated,
|
|
F_PaymentPusatM_UserID)
|
|
VALUES(
|
|
$F_BillIssuePusatDetailF_BillID,
|
|
$F_BillIssuePusatDetailM_BranchID,
|
|
now(),
|
|
$tagihan_bayar,
|
|
now(),
|
|
now(),
|
|
$xuserid)";
|
|
$querypayment = $this->db_onedev->query($sqlpayment);
|
|
$paymentid = $this->db_onedev->insert_id();
|
|
$sqlpaymentdetail = "INSERT INTO f_payment_pusatdetail
|
|
(F_PaymentPusatDetailF_PaymentPusatID,
|
|
F_PaymentPusatDetailM_PaymentTypeID,
|
|
F_PaymentPusatDetailAmount,
|
|
F_PaymentPusatDetailActual,
|
|
F_PaymentPusatDetailChange,
|
|
F_PaymentPusatDetailEDCNat_BankID,
|
|
F_PaymentPusatDetailCardNat_BankID,
|
|
F_PaymentPusatDetailM_BankAccountID,
|
|
F_PaymentPusatDetailCreated,
|
|
F_PaymentPusatDetailLastUpdated,
|
|
F_PaymentPusatDetailUserID)
|
|
VALUES(
|
|
$paymentid,
|
|
$paymenttype,
|
|
$tagihan_bayar,
|
|
$tagihan_bayar,
|
|
0,
|
|
$edc,
|
|
$card,
|
|
$account,
|
|
now(),
|
|
now(),
|
|
$xuserid)";
|
|
//echo $sqlpaymentdetail;
|
|
$querypaymentdetail = $this->db_onedev->query($sqlpaymentdetail);
|
|
|
|
$sqleditbillpaymentdetail = "UPDATE f_bill_payment_pusat_detail SET
|
|
F_BillPaymentPusatDetailF_PaymentPusatID = $paymentid
|
|
WHERE F_BillPaymentPusatDetailID = $billpaymentdetailid";
|
|
$queryeditbillpaymentdetail = $this->db_onedev->query($sqleditbillpaymentdetail);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$xdata = $this->db_onedev->query("SELECT F_BillPaymentPusatID as idx, F_BillPaymentPusatNumber as numberx FROM f_bill_payment_pusat WHERE F_BillPaymentPusatID = {$headerid}")->row();
|
|
$result = array(
|
|
"total" => count($rows) ,
|
|
"records" => array('data'=>$xdata)
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
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'];
|
|
$catatan = $prm['catatan'];
|
|
$sql = "UPDATE f_bill_payment_pusat SET F_BillPaymentPusatIsActive = 'N', F_BillPaymentPusatNote = '{$catatan}' WHERE F_BillPaymentPusatID = {$prmnota['note_id']}";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("f_bill_payment_pusat delete");
|
|
exit;
|
|
}
|
|
|
|
$sql = "UPDATE f_bill_payment_pusat_detail SET F_BillPaymentPusatDetailIsActive = 'N' WHERE F_BillPaymentPusatDetailF_BillPaymentPusatID = {$prmnota['note_id']}";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("f_bill_payment_pusat_detail delete");
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total" => 1 ,
|
|
"records" => array('prm'=>$prm)
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
}
|