Format Surat Formal
Contoh format nomor surat yang akan kita gunakan 001/JRD/IV/2018
001 : No urut surat
JRD : Kode Divisi/Lembaga/Bagian
IV : Bulan sekarang dalam angka romawi
2018 : Tahun sekarang
Database
Tabel yang kita butuhkan
CREATE TABLE `barang` ( `id` INT(11) NOT NULL, `no_urut_surat` INT(4) NOT NULL, `kode_surat` VARCHAR(100) DEFAULT NULL, `isi_surat` VARCHAR(100) NOT NULL, `user_id` VARCHAR(50) NOT NULL, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `barang` ADD PRIMARY KEY (`id`); ALTER TABLE `barang` MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT; COMMIT;
Buat Route Baru
Untuk mencoba script ini, kita akan membuat sebuah route baru di routes/web.php
<?php Route::get('otomatis', function () { $AWAL = 'JRD'; // karna array dimulai dari 0 maka kita tambah di awal data kosong // bisa juga mulai dari "1"=>"I" $bulanRomawi = array("", "I","II","III", "IV", "V","VI","VII","VIII","IX","X", "XI","XII"); $noUrutAkhir = \App\Barang::max('no_urut_surat'); $no = 1; if($noUrutAkhir) { echo "No urut surat di database : " . $noUrutAkhir; echo "<br>"; echo "Pake Format : " . sprintf("%03s", abs($noUrutAkhir + 1)). '/' . $AWAL .'/' . $bulanRomawi[date('n')] .'/' . date('Y'); } else { echo "No urut surat di database : 0" ; echo "<br>"; echo "Pake Format : " . sprintf("%03s", $no). '/' . $AWAL .'/' . $bulanRomawi[date('n')] .'/' . date('Y'); } });
Hasil Script
Bila di tabel barang belum ada data, script diatas dijalankan yang muncul adalah
No urut surat di database : 0 Pake Format : 001/JRD/IV/2018
Bila di tabel barang sudah ada 20 bila script dijalankan
No urut surat di database : 20 Pake Format : 021/JRD/IV/2018
Ini cuma di route nya aja om kalo di controller nya gmna ya mohon bantuan nya om?
Kalau misalkan pengen disimpen diinputan gimana ya gan ?
kalo untuk setiap awal bulan penomoran menjadi satu lagi gimana y gan?
Sepertinya sih pake where gan pada setelah max itu,