Files
kaunter/app/Helper.php
2025-10-05 16:34:16 +08:00

84 lines
2.6 KiB
PHP

<?php
namespace App;
use DateTime;
class Helper
{
public static function formatNumber($amount)
{
return number_format($amount, 2, '.', ',');
}
public static function formatDate($date_string)
{
return (new DateTime($date_string))->format("d-m-Y");
}
public static function terbilangBm(int $number): string
{
$units = [
0 => 'kosong',
1 => 'satu',
2 => 'dua',
3 => 'tiga',
4 => 'empat',
5 => 'lima',
6 => 'enam',
7 => 'tujuh',
8 => 'lapan',
9 => 'sembilan',
10 => 'sepuluh',
11 => 'sebelas'
];
if ($number < 0) return 'negatif ' . self::terbilangBm(abs($number));
if ($number < 12) return $units[$number];
if ($number < 20) return self::terbilangBm($number - 10) . ' belas';
if ($number < 100) {
$tens = intdiv($number, 10);
$rest = $number % 10;
return self::terbilangBm($tens) . ' puluh' . ($rest ? ' ' . self::terbilangBm($rest) : '');
}
if ($number < 200) return 'seratus' . ($number > 100 ? ' ' . self::terbilangBm($number - 100) : '');
if ($number < 1000) {
$hundreds = intdiv($number, 100);
$rest = $number % 100;
return self::terbilangBm($hundreds) . ' ratus' . ($rest ? ' ' . self::terbilangBm($rest) : '');
}
if ($number < 2000) return 'seribu' . ($number > 1000 ? ' ' . self::terbilangBm($number - 1000) : '');
if ($number < 1000000) {
$thousands = intdiv($number, 1000);
$rest = $number % 1000;
return self::terbilangBm($thousands) . ' ribu' . ($rest ? ' ' . self::terbilangBm($rest) : '');
}
if ($number < 1000000000) {
$millions = intdiv($number, 1000000);
$rest = $number % 1000000;
return self::terbilangBm($millions) . ' juta' . ($rest ? ' ' . self::terbilangBm($rest) : '');
}
return 'terlalu besar';
}
public static function ringgitTerbilang($amount, bool $tambahSahaja = true): string
{
$formatted = number_format((float)$amount, 2, '.', '');
[$ringgitStr, $senStr] = explode('.', $formatted);
$ringgit = (int)$ringgitStr;
$sen = (int)$senStr;
$parts = [];
$parts[] = self::terbilangBm($ringgit) . ' ringgit';
if ($sen > 0) {
$parts[] = 'dan ' . self::terbilangBm($sen) . ' sen';
} elseif ($tambahSahaja) {
$parts[] = 'sahaja';
}
return trim(preg_replace('/\s+/', ' ', implode(' ', $parts)));
}
}