add api file from used in s_menu fe accone
This commit is contained in:
769
application/controllers/mockup/supplierpaymentfailed/Bill.php
Normal file
769
application/controllers/mockup/supplierpaymentfailed/Bill.php
Normal file
@@ -0,0 +1,769 @@
|
||||
<?php
|
||||
class Bill extends MY_Controller
|
||||
{
|
||||
var $db_onedev;
|
||||
public function index()
|
||||
{
|
||||
echo "Bill API";
|
||||
}
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->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;
|
||||
}
|
||||
}
|
||||
function searchsupplier(){
|
||||
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
|
||||
$sql = "
|
||||
SELECT count(*) as total
|
||||
FROM supplier
|
||||
WHERE
|
||||
SupplierName like ?
|
||||
AND SupplierIsActive = 'Y'
|
||||
ORDER BY SupplierName 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;
|
||||
}
|
||||
$sql = "
|
||||
SELECT *
|
||||
FROM supplier
|
||||
WHERE
|
||||
SupplierName like ?
|
||||
AND SupplierIsActive = 'Y'
|
||||
ORDER BY SupplierName 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 searchinvpayment(){
|
||||
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
|
||||
$sql = "SELECT count(*) as total
|
||||
FROM supplier_payment
|
||||
JOIN supplier_invoice ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID
|
||||
AND SupplierInvoiceSupplierID = {$prm['companyid']}
|
||||
WHERE
|
||||
SupplierPaymentNumber like ?
|
||||
AND SupplierPaymentIsActive = 'Y'
|
||||
AND SupplierPaymentIsConfirm = 'Y'
|
||||
ORDER BY SupplierPaymentID ASC
|
||||
";
|
||||
|
||||
$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;
|
||||
}
|
||||
$sql = "
|
||||
SELECT *, CONCAT(SupplierPaymentNumber,' - ',coaDescription, ' Rp. ',SupplierPaymentAmount) PaymentName
|
||||
FROM supplier_payment
|
||||
JOIN supplier_invoice ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID
|
||||
AND SupplierInvoiceSupplierID = {$prm['companyid']}
|
||||
JOIN coa ON SupplierPaymentCoaID = coaID
|
||||
WHERE
|
||||
SupplierPaymentNumber like ?
|
||||
AND SupplierPaymentIsActive = 'Y'
|
||||
AND SupplierPaymentIsConfirm = 'Y'
|
||||
ORDER BY SupplierPaymentID ASC
|
||||
";
|
||||
|
||||
|
||||
$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 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 = "SupplierPaymentIsFailed = 'Y'
|
||||
AND (SupplierInvoiceNumber LIKE '%{$search}%' AND SupplierName LIKE '%{$supplier}%')
|
||||
AND PurchaseOrderS_RegionalID = {$regionalid}
|
||||
AND SupplierPaymentConfirmDate BETWEEN '{$startdate}' AND '{$enddate}'";
|
||||
|
||||
|
||||
|
||||
|
||||
$sql = " SELECT count(*) as total
|
||||
FROM supplier_payment
|
||||
JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y'
|
||||
JOIN supplier_invoice ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID
|
||||
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 SupplierInvoiceID,
|
||||
SupplierPaymentID,
|
||||
SupplierPaymentDetailSupplierInvoiceDetailID,
|
||||
DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d-%m-%Y') as tanggalbayar,
|
||||
DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d%m%Y') as tanggalbayartext,
|
||||
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,
|
||||
SupplierPaymentApprovedUserID,
|
||||
SupplierPaymentApprovedDate,
|
||||
SupplierInvoiceNumber,
|
||||
SupplierName,
|
||||
SupplierPaymentNumber,
|
||||
CONCAT('Created by : ',n.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentCreated,'%d-%m-%Y %H:%i')) as d_created,
|
||||
CONCAT('Confirmed by : ',c.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentConfirmDate,'%d-%m-%Y %H:%i')) as d_confirm,
|
||||
CONCAT('Approved by : ',a.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentApprovedDate,'%d-%m-%Y %H:%i')) as d_approved
|
||||
FROM supplier_payment
|
||||
JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y'
|
||||
JOIN supplier_invoice ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID
|
||||
LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID
|
||||
JOIN purchase_order ON PurchaseOrderID = SupplierInvoicePurchaseOrderID
|
||||
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
|
||||
WHERE
|
||||
$where
|
||||
GROUP BY SupplierPaymentID
|
||||
ORDER BY SupplierPaymentID DESC
|
||||
limit $number_limit offset $number_offset";
|
||||
//echo $sql;
|
||||
$query = $this->db_onedev->query($sql, $sql_param);
|
||||
$rows = $query->result_array();
|
||||
$result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query());
|
||||
$this->sys_ok($result);
|
||||
exit;
|
||||
}
|
||||
|
||||
function confirm_note()
|
||||
{
|
||||
//# 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'];
|
||||
$branchid = $this->sys_user['M_BranchID'];
|
||||
$prm = $this->sys_input;
|
||||
$prmnota = $prm['nota'];
|
||||
$note = $prm['note'];
|
||||
$sql = "UPDATE supplier_payment
|
||||
SET SupplierPaymentIsFailed = 'Y',
|
||||
SupplierPaymentFailedUserID = {$xuserid},
|
||||
SupplierPaymentFailedDate = now(),
|
||||
SupplierPaymentFailedNote = '{$note}'
|
||||
WHERE SupplierPaymentID = {$prmnota['SupplierPaymentID']}";
|
||||
//echo $sql;
|
||||
$query = $this->db_onedev->query($sql);
|
||||
if (!$query) {
|
||||
$this->sys_error_db("supplier_payment delete");
|
||||
exit;
|
||||
}
|
||||
$headerid = $prmnota['SupplierPaymentID'];
|
||||
$sql = "SELECT * FROM supplier_payment
|
||||
JOIN m_user ON M_UserID = SupplierPaymentFailedUserID
|
||||
WHERE SupplierPaymentID = ?";
|
||||
$query = $this->db_onedev->query($sql, [$headerid]);
|
||||
$row = $query->row_array();
|
||||
|
||||
|
||||
|
||||
$sqlbill = "UPDATE supplier_invoice SET
|
||||
SupplierInvoiceIsLunas = 'N'
|
||||
WHERE SupplierInvoiceID = {$prmnota['SupplierInvoiceID']}";
|
||||
$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 dibatalkan oleh " . $row["M_UserUsername"];
|
||||
$this->insert_act_log("PF", "CONFIRM", $message, $headerid, $this->safeJsonEncode($data), $xuserid);
|
||||
|
||||
$sqlData = "SELECT SupplierPaymentDetailID as id,
|
||||
SupplierPaymentID,
|
||||
SupplierPaymentNumber,
|
||||
$branchid M_BranchID,
|
||||
'' M_BranchCode,
|
||||
'' M_BranchName,
|
||||
M_BranchS_RegionalID,
|
||||
M_BranchCompanyID,
|
||||
M_BranchCompanyName,
|
||||
CONCAT('Jurnal Payment Invoice Failed Nomor : SupplierPaymentNumber', DATE_FORMAT(now(), '%d-%m-%Y')) xdescription,
|
||||
IFNULL(periodeID,0) periodeid,
|
||||
CONCAT('Jurnal Payment Invoice Failed Nomor : SupplierPaymentNumber', DATE_FORMAT(now(), '%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 AND M_BranchID = {$branchid}
|
||||
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) {
|
||||
$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,
|
||||
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 AND M_BranchID = $branchid
|
||||
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'
|
||||
|
||||
UNION SELECT jurnalTxID as id,
|
||||
jurnalTxCoaID coaid,
|
||||
jurnalTxDescription 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 AND M_BranchID = $branchid
|
||||
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'
|
||||
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 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user