LedgerStatus::Pending, ]; protected $casts = [ 'ledger_status' => LedgerStatus::class, ]; protected $fillable = [ 'store_id', 'date', 'sales', 'expenditure', 'expected_commission', 'actual_commission', 'expected_income', 'actual_income', 'photos', 'ledger_status', ]; public function store(): BelongsTo { return $this->belongsTo(Store::class); } public function items(): HasMany { return $this->hasMany(LedgerItem::class); } protected function photos(): Attribute { return Attribute::make( get: function (mixed $value) { if (! is_array($photos = json_decode($value ?? '', true))) { $photos = []; } return $photos; }, set: fn (mixed $value) => json_encode(is_array($value) ? $value : []), ); } protected function ledgerStatusColor(): Attribute { return Attribute::make( get: fn (mixed $value) => $this->ledger_status->color(), ); } protected function ledgerStatusLabel(): Attribute { return Attribute::make( get: fn (mixed $value) => $this->ledger_status->label(), ); } }