This post is also available in:
English
Kali ini kita akan membahas bagaimana membuat kode otomatis dengan menggunakan Laravel. Kode otomatis di sini memliliki format tertentu.
2019.11.27 | Tanggal pembuatan invoice dalam format Y.m.d |
INV | Kode perihal |
0001 | Urutan transaksi yang terjadi pada tanggal tersebut |
AutoNumber package
Untuk membuat kode otomatis menggunakan Laravel, pada tutorial kali ini kita akan menggunakan sebuah package yaitu AutoNumber.
Instalasi
Kita bisa menginstal package ini dengan perintah composer.
composer require alfa6661/laravel-autonumber
Setelah itu, daftarkan package service provider pada file config/app.php.
'providers' => [
// ...
Alfa6661\AutoNumber\AutoNumberServiceProvider::class,
],
Publish config dan migration yang ada pada package ini.
php artisan vendor:publish --provider="Alfa6661\AutoNumber\AutoNumberServiceProvider"
php artisan migrate
Penggunaan
Untuk konfigurasi AutoNumber ada beberapa langkah yang harus kita gunakan pada model yang akan kita gunakan. Model yang akan kita gunakan harus mengimport sebuah trait yang sudah disediakan pada package ini Alfa6661\AutoNumber\AutoNumberTrait
. Trait ini juga mengandung sebuah abstract method getAutoNumberOptions
untuk mendefinisikan pengaturan format kode dan kolom yang mana yang akan kita gunakan untuk menyimpan kode otomatis ini, sehingga kita harus mengimplementasikan method ini pada model yang kita gunakan secara manual.
use Alfa6661\AutoNumber\AutoNumberTrait;
class Order extends Model
{
use AutoNumberTrait;
/**
* Return the autonumber configuration array for this model.
*
* @return array
*/
public function getAutoNumberOptions()
{
return [
'code' => [
'format' => 'SO.?', // Format kode yang akan digunakan.
'length' => 5 // Jumlah digit yang akan digunakan sebagai nomor urut
]
];
}
}
code | Kolom pada database yang digunakan untuk menyimpan kode otomatis. |
format | Format kode yang akan digunakan ? akan di replace dengan nomor urut data. |
length | Jumlah digit yang akan digunakan sebagai nomor urut data. |
Format kode akan otomatis digenerate pada saat kita menyimpan data menggunakan eloquent model.
$order = Order::create([
'customer' => 'Alfa Adhitya',
]);
echo $order->code;
// SO.00001
Advanced Format
Terkadang kita diharuskan menggunakan format penomoran kode yang sedikit lebih rumit dibanding contoh diatas. Misalnya, SO/2019.11.27/BDG/00001
SO | Kode unik yang digunakan untuk menandakan penjualan. |
2019.11.27 | Tanggal saat transaksi dibuat dengan format Y.m.d |
BDG | Kode cabang dimana penjualan dilakukan |
00001 | Nomor urut penjualan yang terjadi pada tanggal tersebut |
Untuk memenuhi format diatas, kita bisa menggunakan Closure
pada value format.
public function getAutoNumberOptions()
{
return [
'code' => [
'format' => function () {
return 'SO/' . date('Y.m.d') . '/' . $this->branch . '/?';
}
'length' => 5,
]
];
}
Sama seperti contoh sebelumnya, kode penjualan akan otomatis digenerate pada saat data disimpan menggunakan eloquent model hanya saja dengan format yang berbeda.
Pada method getAutoNumberOptions
, kita menggunakan Closure
untuk konfigurasi format kode.
SO | Kode unik yang digunakan untuk menandakan penjualan. |
date(‘Y.m.d’) | Untuk mengambil tanggal hari ini |
$this->branch | Mengambil cabang dari penjualan. Didefinisikan pada saat penjualan dibuat. |
? | Nomor urut penjualan yang terjadi pada tanggal tersebut dan di cabang yang telah didefinisikan. |
$order = Order::create([
'customer' => 'Alfa Adhitya',
'branch' => 'BDG',
]);
echo $order->code;
// SO/2019.11.27/BDG/00001