'boolean', 'is_overdue' => 'boolean', 'tax_agreement' => 'boolean', 'tax_amount' => 'decimal:2', 'outstanding_balance' => 'decimal:2', 'credit_limit' => 'decimal:2', 'tax_start_date' => 'date', 'tax_end_date' => 'date', ]; protected $hidden = [ 'account_password', ]; // ClientGroup 관계 public function clientGroup() { return $this->belongsTo(ClientGroup::class, 'client_group_id'); } // Orders 관계 public function orders() { return $this->hasMany(Order::class, 'client_id'); } // 악성채권 관계 public function badDebts(): HasMany { return $this->hasMany(BadDebt::class); } // 활성 악성채권 관계 (추심중, 법적조치) public function activeBadDebts(): HasMany { return $this->hasMany(BadDebt::class) ->whereIn('status', [BadDebt::STATUS_COLLECTING, BadDebt::STATUS_LEGAL_ACTION]) ->where('is_active', true); } // 스코프 public function scopeActive($query) { return $query->where('is_active', true); } public function scopeCode($query, string $code) { return $query->where('client_code', $code); } }