fix(WEB): 수주 페이지 필드 매핑 및 제품-부품 트리 구조 개선

- ApiClient 인터페이스: representative → manager_name, contact_person 변경
- transformApiToFrontend: client.representative → client.manager_name 수정
- ApiOrderItem에 floor_code, symbol_code 필드 추가 (제품-부품 매핑)
- ApiOrder에 options 타입 정의 추가
- ApiQuote에 calculation_inputs 타입 정의 추가
- 수주 상세 페이지 제품-부품 트리 구조 UI 개선
This commit is contained in:
2026-01-16 21:59:06 +09:00
committed by hskwon
parent 0b94da0741
commit 7246ac003f
52 changed files with 1105 additions and 115 deletions

View File

@@ -5,6 +5,7 @@
use App\Models\Items\Item;
use App\Models\Production\WorkOrder;
use App\Models\Quote\Quote;
use App\Models\Tenants\Shipment;
use App\Traits\BelongsToTenant;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -27,10 +28,48 @@ class Order extends Model
public const STATUS_IN_PROGRESS = 'IN_PROGRESS';
public const STATUS_IN_PRODUCTION = 'IN_PRODUCTION'; // 생산중
public const STATUS_PRODUCED = 'PRODUCED'; // 생산완료
public const STATUS_SHIPPING = 'SHIPPING'; // 출하중
public const STATUS_SHIPPED = 'SHIPPED'; // 출하완료
public const STATUS_COMPLETED = 'COMPLETED';
public const STATUS_CANCELLED = 'CANCELLED';
/**
* 전체 상태 목록
*/
public const STATUSES = [
self::STATUS_DRAFT,
self::STATUS_CONFIRMED,
self::STATUS_IN_PROGRESS,
self::STATUS_IN_PRODUCTION,
self::STATUS_PRODUCED,
self::STATUS_SHIPPING,
self::STATUS_SHIPPED,
self::STATUS_COMPLETED,
self::STATUS_CANCELLED,
];
/**
* 상태 라벨
*/
public const STATUS_LABELS = [
self::STATUS_DRAFT => '임시저장',
self::STATUS_CONFIRMED => '확정',
self::STATUS_IN_PROGRESS => '진행중',
self::STATUS_IN_PRODUCTION => '생산중',
self::STATUS_PRODUCED => '생산완료',
self::STATUS_SHIPPING => '출하중',
self::STATUS_SHIPPED => '출하완료',
self::STATUS_COMPLETED => '완료',
self::STATUS_CANCELLED => '취소',
];
// 주문 유형
public const TYPE_ORDER = 'ORDER'; // 수주
@@ -127,6 +166,14 @@ public function client(): BelongsTo
return $this->belongsTo(Client::class);
}
/**
* 작성자 (담당자)
*/
public function writer(): BelongsTo
{
return $this->belongsTo(\App\Models\Members\User::class, 'writer_id');
}
/**
* 품목 (통합 items 테이블)
*/
@@ -143,6 +190,14 @@ public function workOrders(): HasMany
return $this->hasMany(WorkOrder::class, 'sales_order_id');
}
/**
* 출하 목록
*/
public function shipments(): HasMany
{
return $this->hasMany(Shipment::class, 'order_id');
}
/**
* 품목들로부터 금액 합계 재계산
*/