'date', 'supply_amount' => 'decimal:2', 'tax_amount' => 'decimal:2', 'total_amount' => 'decimal:2', 'client_id' => 'integer', 'tax_invoice_id' => 'integer', 'deposit_id' => 'integer', ]; /** * 상태 목록 */ public const STATUSES = [ 'draft' => '임시저장', 'confirmed' => '확정', 'invoiced' => '세금계산서발행', ]; /** * 거래처 관계 */ public function client(): BelongsTo { return $this->belongsTo(\App\Models\Orders\Client::class); } /** * 입금 관계 */ public function deposit(): BelongsTo { return $this->belongsTo(Deposit::class); } /** * 생성자 관계 */ public function creator(): BelongsTo { return $this->belongsTo(\App\Models\Members\User::class, 'created_by'); } /** * 상태 라벨 */ public function getStatusLabelAttribute(): string { return self::STATUSES[$this->status] ?? $this->status; } /** * 확정 가능 여부 */ public function canConfirm(): bool { return $this->status === 'draft'; } /** * 수정 가능 여부 */ public function canEdit(): bool { return $this->status === 'draft'; } /** * 삭제 가능 여부 */ public function canDelete(): bool { return $this->status === 'draft'; } }