Files
sam-api/app/Models/Quote/QuoteItem.php
권혁성 6d05ab815f feat:테넌트설정 API 및 다수 서비스 개선
- TenantSetting CRUD API 추가
- Calendar, Entertainment, VAT 서비스 개선
- 5130 BOM 계산 로직 수정
- quote_items에 item_type 컬럼 추가
- tenant_settings 테이블 마이그레이션
- Swagger 문서 업데이트
2026-01-26 20:29:22 +09:00

77 lines
1.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Models\Quote;
use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class QuoteItem extends Model
{
use BelongsToTenant, HasFactory;
protected $fillable = [
'quote_id',
'tenant_id',
// 품목 정보
'item_id',
'item_type',
'item_code',
'item_name',
'specification',
'unit',
// 수량/금액
'base_quantity',
'calculated_quantity',
'unit_price',
'total_price',
// 수식 정보
'formula',
'formula_result',
'formula_source',
'formula_category',
'data_source',
// 기타
'delivery_date',
'note',
'sort_order',
];
protected $casts = [
'base_quantity' => 'decimal:4',
'calculated_quantity' => 'decimal:4',
'unit_price' => 'decimal:2',
'total_price' => 'decimal:2',
'delivery_date' => 'date',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
/**
* 견적 마스터
*/
public function quote(): BelongsTo
{
return $this->belongsTo(Quote::class);
}
/**
* 금액 계산 (수량 × 단가)
*/
public function calculateTotalPrice(): float
{
return round($this->calculated_quantity * $this->unit_price, 2);
}
/**
* 금액 업데이트 후 저장
*/
public function updateTotalPrice(): self
{
$this->total_price = $this->calculateTotalPrice();
return $this;
}
}