Cara generate kode otomatis di Laravel dengan format tertentu
Contoh: BR0001, BR0002, dst
public function generateKode()
{
$lastRecord = Barang::orderBy('id', 'desc')->first();
$lastKode = ($lastRecord) ? intval(substr($lastRecord->kode, 2)) : 0;
$nextNumber = $lastKode + 1;
$formattedNumber = str_pad($nextNumber, 4, '0', STR_PAD_LEFT);
$newKode = 'BR' . $formattedNumber;
return $newKode;
}
$lastRecordadalah data terakhir dari database barang-
$lastKodeuntuk mengambil kode terakhir, jika$lastRecordkosong, maka$lastKodenya di set ke 0 -
substr($lastRecord->kode, 2)untuk mengambil string mulai dari index ke-2, karena contohnya adalahBR0001dan diawal string ada 2 karakter yang non-numerik, maka menggunakan substr dengan index 2 -
Setelah di substr maka hasilnya adalah
0001jadi digunakanintvaluntuk mengkonversinya kedalam integer value -
str_pad($nextNumber, 4, '0', STR_PAD_LEFT)untuk menambahkan karakter0sampai sebanyak4karakter dan tambahkannya di bagian kiri, sehingga hasilnya0002,0011, dst -
Hasil dari
$formattedNumberlalu ditambahkan awalanBR - Kode baru tersebut yang akan di return
Contoh pemanggilannya
$kode = $this->generateKode();
Contoh lain untuk generate invoice dengan format berikut
No invoice: TRX/2024/Feb/0001, TRX/2024/Mar/0002, dst
public function generateKode()
{
$year = now()->year;
$month = now()->format('M');
$lastPenjualan = Penjualan::whereMonth('created_at', now()->month)
->orderBy('id', 'DESC')
->first();
$lastNumber = 1;
if ($lastPenjualan) {
$lastNumber = intval(substr($lastPenjualan->kode, -4)) + 1;
}
$lastKode = sprintf('%04d', $lastNumber);
$kode = "PJ/{$year}/{$month}/{$lastKode}";
return $kode;
}
-
sprintfuntuk padding string 4 karakter dengan isian angka 0 - Misal angka 1 -> 0001, 2 -> 0002, 14 -> 0014, dst
-
substr($lastPenjualan->kode, -4)digunakan untuk mengambil 4 digit dari paling belakang
Posting Komentar