Files
sam-api/app/Models/Quote/QuoteItem.php

76 lines
1.6 KiB
PHP
Raw Normal View History

<?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_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;
}
}