Kasir/app/Models/Item.php
2025-09-09 17:27:29 +07:00

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');
}
}