tenantId(); $userId = $this->apiUserId(); // 섹션 존재 확인 $section = ItemSection::where('tenant_id', $tenantId) ->where('id', $sectionId) ->first(); if (! $section) { throw new NotFoundHttpException(__('error.not_found')); } $bomItem = ItemBomItem::create([ 'tenant_id' => $tenantId, 'section_id' => $sectionId, 'item_code' => $data['item_code'] ?? null, 'item_name' => $data['item_name'], 'quantity' => $data['quantity'] ?? 1, 'unit' => $data['unit'] ?? null, 'unit_price' => $data['unit_price'] ?? null, 'total_price' => $data['total_price'] ?? null, 'spec' => $data['spec'] ?? null, 'note' => $data['note'] ?? null, 'created_by' => $userId, ]); return $bomItem; } /** * BOM 항목 수정 */ public function update(int $id, array $data): ItemBomItem { $tenantId = $this->tenantId(); $userId = $this->apiUserId(); $bomItem = ItemBomItem::where('tenant_id', $tenantId) ->where('id', $id) ->first(); if (! $bomItem) { throw new NotFoundHttpException(__('error.not_found')); } $bomItem->update([ 'item_code' => $data['item_code'] ?? $bomItem->item_code, 'item_name' => $data['item_name'] ?? $bomItem->item_name, 'quantity' => $data['quantity'] ?? $bomItem->quantity, 'unit' => $data['unit'] ?? $bomItem->unit, 'unit_price' => $data['unit_price'] ?? $bomItem->unit_price, 'total_price' => $data['total_price'] ?? $bomItem->total_price, 'spec' => $data['spec'] ?? $bomItem->spec, 'note' => $data['note'] ?? $bomItem->note, 'updated_by' => $userId, ]); return $bomItem->fresh(); } /** * BOM 항목 삭제 */ public function destroy(int $id): void { $tenantId = $this->tenantId(); $userId = $this->apiUserId(); $bomItem = ItemBomItem::where('tenant_id', $tenantId) ->where('id', $id) ->first(); if (! $bomItem) { throw new NotFoundHttpException(__('error.not_found')); } $bomItem->update(['deleted_by' => $userId]); $bomItem->delete(); } }