'datetime', ]; protected static function boot() { parent::boot(); static::creating(function ($model) { if (empty($model->doc_no)) { $today = date('Ymd'); $prefix = 'TRF-' . $today . '-'; $lastDoc = static::where('doc_no', 'like', $prefix . '%') ->orderBy('doc_no', 'desc') ->first(); if ($lastDoc) { $lastNumber = substr($lastDoc->doc_no, -2); $nextNumber = str_pad((int)$lastNumber + 1, 2, '0', STR_PAD_LEFT); } else { $nextNumber = '01'; } $model->doc_no = $prefix . $nextNumber; } }); } public function fromWarehouse(): BelongsTo { return $this->belongsTo(Warehouse::class, 'from_warehouse_id'); } public function toWarehouse(): BelongsTo { return $this->belongsTo(Warehouse::class, 'to_warehouse_id'); } public function items(): HasMany { return $this->hasMany(InventoryTransferItem::class, 'transfer_order_id'); } public function createdBy(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function postedBy(): BelongsTo { return $this->belongsTo(User::class, 'posted_by'); } }