Files
2026-04-27 10:31:17 +07:00

275 lines
7.9 KiB
PHP

<?php
class Reminder extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Reminder API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
public function first_reminder(){
$XEmailOutboxSubject = 'Reminder Pelunasan';
$sql = "SELECT f_bill.*,
DATE_FORMAT(F_BillDueDate,'%d-%m-%Y') jatuhtempo,
CONCAT('Rp. ',FORMAT(F_BillTotal,0),',00') nominal,
CorporateName
FROM f_bill
JOIN corporate ON CorporateID = F_BillCorporateID
WHERE
F_BillIsActive = 'Y'
and F_BillIsLunas = 'N'
and F_BillIsNotif = 'Y'
and ( F_BillDueDate - interval 7 DAY) = date(now())
group by F_BillID";
$qry = $this->db_onedev->query($sql);
if ($qry) {
$rows_bill = $qry->result_array();
foreach ($rows_bill as $r) {
$pid = $r["F_BillID"];
$recipients = $this->db_onedev->query("SELECT CorporateName as name, F_BillPICEmail as email
FROM f_bill JOIN corporate ON CorporateID = F_BillCorporateID WHERE F_BillID = '{$pid}'")->result_array();
$XEmailOutboxRecipients = json_encode($recipients);
$XEmailOutboxIsHtml = 'Y';
$pname = $r["F_BillPIC"];
$jatuhtempo = $r["jatuhtempo"];
$nominal = $r["nominal"];
$terbilang = $this->numberToWords($r["F_BillTotal"]) . ' rupiah';
$nomor = $r["F_BillNo"];
$XEmailOutboxBody = "<h4>Reminder Pelunasan</h4>
<p>Bapak/Ibu yang terhormat {$pname}</p>
<p>Dalam kesempatan ini kami ingin menyampaikan bahwa tagihan dengan data sebagai berikut :</p>
<table>
<tbody>
</tr>
<tr>
<td>
<p>Nominal</p>
</td>
<td>
<p>:</p>
</td>
<td>
<p>{$nominal}</p>
</td>
</tr>
<tr>
<td>
<p>Terbilang</p>
</td>
<td>
<p>:</p>
</td>
<td>
<p>{$terbilang}</p>
</td>
</tr>
<tr>
<td>
<p>Nomor Invoice</p>
</td>
<td>
<p>:</p>
</td>
<td>
<p>{$nomor}</p>
</td>
</tr>
</tbody>
</table>
<p>Akan jatuh tempo pada {$jatuhtempo}</p>
<p>Demikian pemberitahuan dari kami, mohon dapat melakukan pembayaran tepat pada waktunya. Terima kasih</p>
<p>&nbsp;</p>
<p>Hormat kami</p>
<p><br /><br /></p>
<table>
";
$XEmailOutboxType = 'KEU';
$sql = "insert into x_email_outbox(XEmailOutboxSubject,
XEmailOutboxRecipients,
XEmailOutboxIsHtml,
XEmailOutboxBody,
XEmailOutboxType) values(?,?,?,?,?)";
$this->db_onedev->query($sql,array($XEmailOutboxSubject,$XEmailOutboxRecipients,$XEmailOutboxIsHtml,$XEmailOutboxBody,$XEmailOutboxType));
// echo $query;
$rows = $this->db_onedev->query($query);
}
$result = array(
"total" => count($rows_bill) ,
"records" => $rows_bill
);
$this->sys_ok($result);
exit;
}
}
public function final_reminder(){
$XEmailOutboxSubject = 'Reminder Pelunasan';
$sql = "SELECT f_bill.*,
DATE_FORMAT(F_BillDueDate,'%d-%m-%Y') jatuhtempo,
CONCAT('Rp. ',FORMAT(F_BillTotal,0),',00') nominal,
CorporateName
FROM f_bill
JOIN corporate ON CorporateID = F_BillCorporateID
WHERE
F_BillIsActive = 'Y'
and F_BillIsLunas = 'N'
and F_BillIsNotif = 'Y'
and F_BillDueDate = date(now())
group by F_BillID";
$qry = $this->db_onedev->query($sql);
if ($qry) {
$rows_bill = $qry->result_array();
foreach ($rows_bill as $r) {
$pid = $r["F_BillID"];
$recipients = $this->db_onedev->query("SELECT CorporateName as name, F_BillPICEmail as email
FROM f_bill JOIN corporate ON CorporateID = F_BillCorporateID WHERE F_BillID = '{$pid}'")->result_array();
$XEmailOutboxRecipients = json_encode($recipients);
$XEmailOutboxIsHtml = 'Y';
$pname = $r["F_BillPIC"];
$jatuhtempo = $r["jatuhtempo"];
$nominal = $r["nominal"];
$terbilang = $this->numberToWords($r["F_BillTotal"]) . ' rupiah';
$nomor = $r["F_BillNo"];
$XEmailOutboxBody = "<h4>Reminder Pelunasan</h4>
<p>Bapak/Ibu yang terhormat {$pname}</p>
<p>Dalam kesempatan ini kami ingin menyampaikan bahwa tagihan telah jatuh tempo hari ini dengan data sebagai berikut :</p>
<table>
<tbody>
</tr>
<tr>
<td>
<p>Nominal</p>
</td>
<td>
<p>:</p>
</td>
<td>
<p>{$nominal}</p>
</td>
</tr>
<tr>
<td>
<p>Terbilang</p>
</td>
<td>
<p>:</p>
</td>
<td>
<p>{$terbilang}</p>
</td>
</tr>
<tr>
<td>
<p>Nomor Invoice</p>
</td>
<td>
<p>:</p>
</td>
<td>
<p>{$nomor}</p>
</td>
</tr>
</tbody>
</table>
<p>Kami masih belum menerima pembayaran di rekening kami sampai tanggal jatuh tempo tersebut, mohon dapat segera melakukan pembayaran.</p>
<p>Demikian pemberitahuan dari kami, terima kasih.</p>
<p>&nbsp;</p>
<p>Hormat kami</p>
<p><br /><br /></p>
<table>
";
$XEmailOutboxType = 'KEU';
$sql = "insert into x_email_outbox(XEmailOutboxSubject,
XEmailOutboxRecipients,
XEmailOutboxIsHtml,
XEmailOutboxBody,
XEmailOutboxType) values(?,?,?,?,?)";
$this->db_onedev->query($sql,array($XEmailOutboxSubject,$XEmailOutboxRecipients,$XEmailOutboxIsHtml,$XEmailOutboxBody,$XEmailOutboxType));
// echo $query;
$rows = $this->db_onedev->query($query);
}
$result = array(
"total" => count($rows_bill) ,
"records" => $rows_bill
);
$this->sys_ok($result);
exit;
}
}
function numberToWords($number) {
$words = array(
'0' => 'nol',
'1' => 'satu',
'2' => 'dua',
'3' => 'tiga',
'4' => 'empat',
'5' => 'lima',
'6' => 'enam',
'7' => 'tujuh',
'8' => 'delapan',
'9' => 'sembilan',
'10' => 'sepuluh',
'11' => 'sebelas',
'12' => 'dua belas',
'13' => 'tiga belas',
'14' => 'empat belas',
'15' => 'lima belas',
'16' => 'enam belas',
'17' => 'tujuh belas',
'18' => 'delapan belas',
'19' => 'sembilan belas',
'20' => 'dua puluh',
'30' => 'tiga puluh',
'40' => 'empat puluh',
'50' => 'lima puluh',
'60' => 'enam puluh',
'70' => 'tujuh puluh',
'80' => 'delapan puluh',
'90' => 'sembilan puluh',
'100' => 'seratus',
'1000' => 'seribu'
);
if ($number < 21) {
return $words[$number];
} elseif ($number < 100) {
return $words[10 * floor($number/10)] . (($number % 10 > 0) ? ' ' . $words[$number % 10] : '');
} elseif ($number < 200) {
return 'seratus' . (($number - 100 > 0) ? ' ' . $this->numberToWords($number - 100) : '');
} elseif ($number < 1000) {
return $words[floor($number / 100)] . ' ratus' . (($number % 100 > 0) ? ' ' . $this->numberToWords($number % 100) : '');
} elseif ($number < 2000) {
return 'seribu' . (($number - 1000 > 0) ? ' ' . $this->numberToWords($number - 1000) : '');
} elseif ($number < 1000000) {
return $this->numberToWords(floor($number / 1000)) . ' ribu' . (($number % 1000 > 0) ? ' ' . $this->numberToWords($number % 1000) : '');
} elseif ($number < 1000000000) {
return $this->numberToWords(floor($number / 1000000)) . ' juta' . (($number % 1000000 > 0) ? ' ' . $this->numberToWords($number % 1000000) : '');
} elseif ($number < 1000000000000) {
return $this->numberToWords(floor($number / 1000000000)) . ' miliar' . (($number % 1000000000 > 0) ? ' ' . $this->numberToWords($number % 1000000000) : '');
}
return $number;
}
}