67 lines
1.7 KiB
PHP
67 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
use App\Models\itemTransaksi;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
|
|
class Item extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $fillable = [
|
|
'id_produk',
|
|
'id_nampan',
|
|
'is_sold',
|
|
'kode_item', // ✅ ditambahkan agar bisa diisi otomatis
|
|
];
|
|
|
|
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
|
|
|
|
// ✅ Auto-generate kode_item setiap kali create
|
|
protected static function boot()
|
|
{
|
|
parent::boot();
|
|
|
|
static::creating(function ($item) {
|
|
$prefix = 'ITM';
|
|
$date = now()->format('Ymd');
|
|
|
|
// Cari item terakhir yg dibuat hari ini
|
|
$lastItem = self::whereDate('created_at', now()->toDateString())
|
|
->orderBy('id', 'desc')
|
|
->first();
|
|
|
|
$number = 1;
|
|
if ($lastItem && $lastItem->kode_item) {
|
|
// Ambil 4 digit terakhir dari kode_item
|
|
$lastNumber = intval(substr($lastItem->kode_item, -4));
|
|
$number = $lastNumber + 1;
|
|
}
|
|
|
|
// Format: ITM202509090001
|
|
$item->kode_item = $prefix . $date . str_pad($number, 4, '0', STR_PAD_LEFT);
|
|
});
|
|
}
|
|
|
|
public function produk()
|
|
{
|
|
return $this->belongsTo(Produk::class, 'id_produk');
|
|
}
|
|
|
|
public function scopeBelumTerjual($query)
|
|
{
|
|
return $query->where('is_sold', false);
|
|
}
|
|
|
|
public function nampan()
|
|
{
|
|
return $this->belongsTo(Nampan::class, 'id_nampan');
|
|
}
|
|
|
|
public function itemTransaksi()
|
|
{
|
|
return $this->hasOne(ItemTransaksi::class, 'id_item');
|
|
}
|
|
}
|