Files
cmasa/app/Utils/Invesa.php
T
2026-10-29 13:34:31 +07:00

173 lines
5.4 KiB
PHP

<?php
/*******************************************************************
PHP Class : /Utils/Invesa
Description : Class umum untuk Aplikasi Invesa
Created By : Siau Pheng ([email protected]).
Created Date : February 10th, 2012.
Last Modified : September 1st, 2026.
(c) 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
declare(strict_types=1);
namespace App\Utils;
use flight\Session;
final class Invesa {
public const ppn = [0=>"Tanpa PPN", 1=>"PPN", 3=>"Spesial 1", 4=>"Spesial 2", 5=>"Spesial 3"];
public function __construct() {
}
public static function PPN_Array(int $item = -1): mixed {
return ($item === -1) ? self::ppn : self::ppn[$item];
}
public static function Form_Info(string $pesan=""): string {
return '<button class="btn btn-outline-secondary shadow-none text-info" data-toggle="tooltip" title="'.$pesan.'"><i class="bi-lightbulb"></i></button>';
}
/************************* BARANG / PRODUK *************************/
public static function genEAN8(string $pref = '0', int $numb = 1): string {
$code = str_pad($pref, 5, '0', STR_PAD_LEFT) . str_pad((string) $numb, 2, '0', STR_PAD_LEFT);
$bflag = true;
$sum = 0;
for ($i = strlen($code) - 1; $i >= 0; $i--) {
$sum += (int) $code[$i] * ($bflag?3:1);
$bflag = !$bflag;
}
$code .= (string) (10 - ($sum % 10)) % 10;
return $code;
}
public static function genEAN13(string $pref = "98000", int $numb = 1): string {
$code = str_pad($pref, 5, '0', STR_PAD_LEFT) . str_pad((string) $numb, 7, '0', STR_PAD_LEFT);
$weightflag = true;
$sum = 0;
for ($i = strlen($code) - 1; $i >= 0; $i--) {
$sum += (int) $code[$i] * ($weightflag?3:1);
$weightflag = !$weightflag;
}
$code .= (string) (10 - ($sum % 10)) % 10;
return $code;
}
/************************* DEFAULT ARRAY TABLE *************************/
public static function A_Iklan(): array {
return [
'PromoID' => 0,
'CabID' => 0,
'Tanggal' => tgl_ymd(),
'Info' => "",
'Warna' => "#FFFFFF",
'Font' => 40,
'Aktif' => 1,
];
}
public static function A_Member_Member(): array {
return [
'MemberID' => 0,
'Grup_MemberID' => 0,
'Kode_Member' => "",
'Nama_Member' => "",
'Alamat_Member' => "",
'Kota_Member' => "",
'Telp_Member' => "",
'KTP_Member' => "",
'Tgl_Lahir' => "0000-00-00",
'Tgl_Daftar' => tgl_ymd(),
'IM' => true,
'Aktif' => 1,
];
}
public static function A_Member_Grup(): array {
return [
'Grup_MemberID' => 0,
'Kode_Grup' => "",
'Nama_Grup' => "",
'Aktif' => 1,
];
}
public static function A_Promo(int $tipe_promo = 1): array {
return [
'PromoID' => 0,
'Nama_Promo' => "",
'InvID' => 0,
'SatuanID' => 0,
'CabID' => 0,
'Grup_MemberID' => 0,
'Pilih_Qty' => 1,
'Tipe_Promo' => $tipe_promo,
'Promo_InvID' => 0,
'Promo_SatuanID' => 0,
'Promo_Qty' => 0,
'Promo_Disc' => 0,
'Nama_Produk' => "",
'Promo_Produk' => "",
'Jual_Min' => 0,
'Jual_Grup' => "",
'Promo_Jual' => 0,
'Qty_Min' => 0,
'Qty_Kali' => 0,
'Jumlah_Promo' => 0,
'Tgl_Mulai' => tgl_ymd(),
'Tgl_Akhir' => tgl_sql2str(tgl_operasi(tgl_dmy(),0,1,0)),
'Aktif' => 1,
];
}
/************************* VOUCHER *************************/
public static function getVoucherBG(string $root_dir): array {
$voudir = $root_dir . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "assets" . DIRECTORY_SEPARATOR . "images" . DIRECTORY_SEPARATOR . "voucher";
$afile = [];
$iterator = new \FilesystemIterator($voudir, \FilesystemIterator::SKIP_DOTS);
foreach ($iterator as $_file) {
if ($_file->isFile() && str_contains($_file->getFilename(), "vou")) {
$afile[] = $_file->getFilename();
}
}
return $afile;
}
/************************* FORMAT TAMPILAN DATA *************************/
public static function Format_Stok(int|float $total=0, int $kali=1, string $sat_norm="", string $sat_stok=""): string {
if ($kali > 0) {
$norm = floor($total / $kali);
$sisa = $total - ($norm * $kali);
} else {
$norm = 0;
$sisa = $total;
}
$stok = rupiah($norm,0)." ".$sat_norm;
if ($sat_norm !== $sat_stok) $stok .= ", ".rupiah($sisa,0)." ".$sat_stok;
return $stok;
}
/************************* PRINTER THERMAL *************************/
public static function Printer_Thermal(Session $session, string $printer): bool {
$is_thermal = true;
foreach($session->get('APP_INV',['OLD_PRINTER'=>[]])['OLD_PRINTER'] as $old) {
if (str_contains($printer, $old)) {
$is_thermal = false;
break;
}
}
return $is_thermal;
}
}