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, n.M_UserUsername as note_user, SupplierPaymentDetailIsActive as note_active, 'xxx' as tests, 'N' as show_detail, SupplierPaymentNote as keterangan, SupplierPaymentCoaID, coaID, coaDescription, SupplierPaymentIsConfirm, CONCAT('Confirmed by : ',c.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentConfirmDate,'%d-%m-%Y %H:%i')) as d_confirm, SupplierPaymentIsApproved, CONCAT('Approved by : ',a.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentApprovedDate,'%d-%m-%Y %H:%i')) as d_approved, CONCAT('Verified by : ',b.M_UserUsername, ' ',DATE_FORMAT(SupplierPaymentVerifDate,'%d-%m-%Y %H:%i')) as d_verif FROM supplier_payment JOIN supplier_payment_detail ON SupplierPaymentDetailSupplierPaymentID = SupplierPaymentID AND SupplierPaymentDetailIsActive = 'Y' LEFT 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 LEFT JOIN m_user b ON SupplierPaymentVerifUserID = b.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 receive_order_po ON ReceiveOrderPoID = SupplierInvoiceReceiveOrderPoID JOIN receive_order_po_detail ON ReceiveOrderPoDetailReceiveOrderPoID = ReceiveOrderPoID JOIN purchase_order ON ReceiveOrderPoDetailPurchaseOrderID = 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 LEFT 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; } } 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 = "SupplierInvoiceIsActive = 'Y' AND SupplierInvoiceStatus = 'Approved' AND SupplierInvoiceGrandTotal > 0 AND IF(SupplierPaymentID IS NULL,'N','Y') = '{$status}' AND (SupplierInvoiceNumber LIKE '%{$search}%' AND SupplierName LIKE '%{$supplier}%') AND ReceiveOrderPoS_RegionalID = {$regionalid} AND SupplierInvoiceDraftPaymentDate BETWEEN '{$startdate}' AND '{$enddate}'"; $sql = " SELECT count(*) as total FROM supplier_invoice JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber LEFT JOIN supplier_payment ON SupplierInvoiceID = SupplierPaymentSupplierInvoiceID AND SupplierPaymentIsActive = 'Y' LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID JOIN receive_order_po ON SupplierInvoiceReceiveOrderPoID = ReceiveOrderPoID 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 supplier_invoice.*, SupplierName, '' M_MouName, 0 as totalbill, 0 as paid, 0 as unpaid, SupplierInvoiceIsLunas as flaglunas, 0 as SupplierPaymentID, '' as SupplierPaymentNumber, 0 as SupplierPaymentAmount, '' as SupplierPaymentDate, '' as SupplierInvoiceIssueRefNumber, '' as notes, '' as tagihans, 'N' as isbillterpusat, DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d-%m-%Y') as tanggalbayar, DATE_FORMAT(SupplierInvoiceDraftPaymentDate,'%d%m%Y') as tanggalbayartext, IF(SupplierPaymentID IS NULL,'N','Y') as status_invoice, IFNULL(SupplierPaymentIsApproved,'N') as SupplierPaymentIsApproved, IFNULL(SupplierPaymentIsVerif,'N') as SupplierPaymentIsVerif, IFNULL(SupplierPaymentCashierNumber,'') SupplierPaymentCashierNumber FROM supplier_invoice LEFT JOIN supplier ON SupplierInvoiceSupplierID = SupplierID JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber JOIN receive_order_po ON SupplierInvoiceReceiveOrderPoID = ReceiveOrderPoID LEFT JOIN supplier_payment ON SupplierPaymentSupplierInvoiceID = SupplierInvoiceID AND SupplierPaymentIsActive = 'Y' WHERE $where GROUP BY SupplierInvoiceID ORDER BY SupplierInvoiceID ASC limit $number_limit offset $number_offset"; //echo $sql; $query = $this->db_onedev->query($sql, $sql_param); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ $s_payment = $this->db_onedev->query("SELECT GROUP_CONCAT(SupplierPaymentNumber SEPARATOR ', ') as SupplierPaymentNumber, SUM(IFNULL(SupplierPaymentAmount,0)) as SupplierPaymentAmount, IFNULL(SupplierPaymentID,0) SupplierPaymentID, GROUP_CONCAT(DATE_FORMAT(SupplierPaymentDate,'%d-%m-%Y') SEPARATOR ', ') as SupplierPaymentDate FROM supplier_payment WHERE SupplierPaymentIsActive = 'Y' AND SupplierPaymentSupplierInvoiceID = {$v['SupplierInvoiceID']}")->row(); $s_jurnal = $this->db_onedev->query("SELECT SUM(jurnalTxCredit) totalbill FROM supplier_invoice JOIN jurnal_addon ON jurnalAddOnValue = SupplierInvoiceNumber JOIN jurnal_tx ON jurnalTxJurnalID = jurnalAddOnJurnalID AND jurnalTxCredit <> 0 AND jurnalTxCoaID <> 563 WHERE SupplierInvoiceID = {$v['SupplierInvoiceID']} GROUP BY SupplierInvoiceID")->row(); $amount = $s_payment->SupplierPaymentAmount ? $s_payment->SupplierPaymentAmount : "0.00"; $unpaid = (float)$s_jurnal->totalbill - (float)$amount; $rows[$k]['SupplierPaymentID'] = $s_payment->SupplierPaymentID ? $s_payment->SupplierPaymentID : '0'; $rows[$k]['SupplierPaymentNumber'] = $s_payment->SupplierPaymentNumber ? $s_payment->SupplierPaymentNumber : ''; $rows[$k]['SupplierPaymentAmount'] = $amount; $rows[$k]['SupplierPaymentDate'] = $s_payment->SupplierPaymentDate; $rows[$k]['paid'] = $amount; $rows[$k]['totalbill'] = $s_jurnal->totalbill ? $s_jurnal->totalbill : "0.00"; $rows[$k]['unpaid'] = number_format($unpaid, 2, '.', ''); $rows[$k]['notes'] = $this->add_notes($v['SupplierInvoiceID']); $rows[$k]['tagihans'] = $this->add_tagihans($v['SupplierInvoiceID']); } } $result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } }