fix(WEB): 방화유리 수량 폴백 제거 및 수주→작업지시 파이프라인 개선
- OrderService: glass_qty에서 quantity 폴백 제거 (투시창 선택 시에만 유효) - OrderService: createProductionOrder()에서 절곡 공정 bending_info 자동 생성 - OrderService: formula_source 없는 레거시 데이터의 sort_order 기반 개소 분배 - OrderService: note 파싱에서 '-' 단독값 무시 처리 - FormulaEvaluatorService: 철재 W1 계산 (W0+160 → W0+110) 레거시 일치 - WorkOrderService: store()에서 order_node_id null 품목용 rootNodes fallback 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -264,11 +264,23 @@ public function store(array $data)
|
||||
|
||||
// 품목 저장: 직접 전달된 품목이 없고 수주 ID가 있으면 수주에서 복사
|
||||
if (empty($items) && $salesOrderId) {
|
||||
$salesOrder = \App\Models\Orders\Order::with('items.node')->find($salesOrderId);
|
||||
$salesOrder = \App\Models\Orders\Order::with(['items.node', 'rootNodes'])->find($salesOrderId);
|
||||
if ($salesOrder && $salesOrder->items->isNotEmpty()) {
|
||||
// order_node_id가 null인 품목용 fallback: 수주의 root node를 인덱스로 매핑
|
||||
$rootNodes = $salesOrder->rootNodes;
|
||||
$rootNodeCount = $rootNodes->count();
|
||||
|
||||
foreach ($salesOrder->items as $index => $orderItem) {
|
||||
// 수주 품목 + 노드에서 options 조합
|
||||
// 1순위: 품목에 직접 연결된 node, 2순위: root node fallback
|
||||
$nodeOptions = $orderItem->node?->options ?? [];
|
||||
if (empty($nodeOptions) && $rootNodeCount > 0) {
|
||||
// root node가 1개면 모든 품목이 해당 node, 여러 개면 인덱스 기반 분배
|
||||
$fallbackNode = $rootNodeCount === 1
|
||||
? $rootNodes->first()
|
||||
: $rootNodes->values()->get($index % $rootNodeCount);
|
||||
$nodeOptions = $fallbackNode?->options ?? [];
|
||||
}
|
||||
$options = array_filter([
|
||||
'floor' => $orderItem->floor_code,
|
||||
'code' => $orderItem->symbol_code,
|
||||
|
||||
Reference in New Issue
Block a user