'date', 'amount' => 'decimal:2', ]; // 계정 유형 상수 public const TYPE_WELFARE = 'welfare'; public const TYPE_ENTERTAINMENT = 'entertainment'; public const TYPE_TRAVEL = 'travel'; public const TYPE_OFFICE = 'office'; // 세부 유형 상수 (복리후생) public const SUB_TYPE_MEAL = 'meal'; public const SUB_TYPE_HEALTH = 'health'; public const SUB_TYPE_EDUCATION = 'education'; // 결제 수단 상수 public const PAYMENT_CARD = 'card'; public const PAYMENT_CASH = 'cash'; public const PAYMENT_TRANSFER = 'transfer'; /** * 거래처 관계 */ public function vendor(): BelongsTo { return $this->belongsTo(Client::class, 'vendor_id'); } /** * 복리후생비 스코프 */ public function scopeWelfare($query) { return $query->where('account_type', self::TYPE_WELFARE); } /** * 접대비 스코프 */ public function scopeEntertainment($query) { return $query->where('account_type', self::TYPE_ENTERTAINMENT); } /** * 기간 필터 스코프 */ public function scopeInPeriod($query, string $startDate, string $endDate) { return $query->whereBetween('expense_date', [$startDate, $endDate]); } }