diff --git a/backend/app/routers/files.py b/backend/app/routers/files.py index f189499..f89002a 100644 --- a/backend/app/routers/files.py +++ b/backend/app/routers/files.py @@ -533,72 +533,67 @@ async def upload_file( }) materials_inserted += 1 - # 리비전 업로드인 경우 차이분 계산 - materials_diff = [] - original_materials_to_classify = materials_to_classify.copy() # 원본 보존 + # 리비전 업로드의 경우 변경사항 추적 + changed_materials_keys = set() + new_materials_keys = set() if parent_file_id is not None: - # 새 파일의 자재들을 수량별로 그룹화 - new_materials_grouped = {} - for material_data in original_materials_to_classify: - description = material_data["original_description"] - size_spec = material_data["size_spec"] - quantity = float(material_data.get("quantity", 0)) - - material_key = f"{description}|{size_spec or ''}" - if material_key in new_materials_grouped: - new_materials_grouped[material_key]["quantity"] += quantity - new_materials_grouped[material_key]["items"].append(material_data) + print(f"🔄 리비전 업로드: 전체 {len(materials_to_classify)}개 자재 저장 (변경사항 추적 포함)") + + # 이전 리비전의 자재 조회 (도면번호 기준) + prev_materials_query = text(""" + SELECT original_description, size_spec, material_grade, main_nom, + drawing_name, line_no, quantity + FROM materials + WHERE file_id = :parent_file_id + """) + prev_materials_result = db.execute(prev_materials_query, {"parent_file_id": parent_file_id}).fetchall() + + # 이전 자재를 딕셔너리로 변환 (도면번호 + 설명 + 크기 + 재질로 키 생성) + prev_materials_dict = {} + for prev_mat in prev_materials_result: + if prev_mat.drawing_name: + key = f"{prev_mat.drawing_name}|{prev_mat.original_description}|{prev_mat.size_spec or ''}|{prev_mat.material_grade or ''}" + elif prev_mat.line_no: + key = f"{prev_mat.line_no}|{prev_mat.original_description}|{prev_mat.size_spec or ''}|{prev_mat.material_grade or ''}" else: - new_materials_grouped[material_key] = { - "quantity": quantity, - "items": [material_data], - "description": description, - "size_spec": size_spec - } - - # 차이분 계산 - print(f"🔍 차이분 계산 시작: 신규 {len(new_materials_grouped)}개 vs 기존 {len(existing_materials_with_quantity)}개") - - for material_key, new_data in new_materials_grouped.items(): - existing_quantity = existing_materials_with_quantity.get(material_key, 0) - new_quantity = new_data["quantity"] + key = f"{prev_mat.original_description}|{prev_mat.size_spec or ''}|{prev_mat.material_grade or ''}" - # 디버깅: 첫 10개 키 매칭 상태 출력 - if len(materials_diff) < 10: - print(f"🔑 키 매칭: '{material_key}' → 기존:{existing_quantity}, 신규:{new_quantity}") + prev_materials_dict[key] = { + "quantity": float(prev_mat.quantity) if prev_mat.quantity else 0, + "description": prev_mat.original_description + } + + # 새 자재와 비교하여 변경사항 감지 + for material_data in materials_to_classify: + desc = material_data["original_description"] + size_spec = material_data.get("size_spec", "") + material_grade = material_data.get("material_grade", "") + dwg_name = material_data.get("dwg_name") + line_num = material_data.get("line_num") - if new_quantity > existing_quantity: - # 증가분이 있는 경우 - diff_quantity = new_quantity - existing_quantity - print(f"차이분 발견: {new_data['description'][:50]}... (증가: {diff_quantity})") + if dwg_name: + new_key = f"{dwg_name}|{desc}|{size_spec}|{material_grade}" + elif line_num: + new_key = f"{line_num}|{desc}|{size_spec}|{material_grade}" + else: + new_key = f"{desc}|{size_spec}|{material_grade}" + + if new_key in prev_materials_dict: + # 기존에 있던 자재 - 수량 변경 확인 + prev_qty = prev_materials_dict[new_key]["quantity"] + new_qty = float(material_data.get("quantity", 0)) - # 증가분만큼 자재 데이터 생성 - for item in new_data["items"]: - if diff_quantity <= 0: - break - - item_quantity = float(item.get("quantity", 0)) - if item_quantity <= diff_quantity: - # 이 아이템 전체를 포함 - materials_diff.append(item) - diff_quantity -= item_quantity - new_materials_count += 1 - else: - # 이 아이템의 일부만 포함 - item_copy = item.copy() - item_copy["quantity"] = diff_quantity - materials_diff.append(item_copy) - new_materials_count += 1 - break + if abs(prev_qty - new_qty) > 0.001: + # 수량이 변경됨 + changed_materials_keys.add(new_key) + print(f"🔄 변경 감지: {desc[:40]}... (수량: {prev_qty} → {new_qty})") else: - print(f"수량 감소/동일: {new_data['description'][:50]}... (기존:{existing_quantity} 새:{new_quantity})") + # 새로 추가된 자재 + new_materials_keys.add(new_key) + print(f"➕ 신규 감지: {desc[:40]}...") - # 차이분만 처리하도록 materials_to_classify 교체 - materials_to_classify = materials_diff - print(f"차이분 자재 개수: {len(materials_to_classify)}") - print(f"🔄 리비전 업로드: 차이분 {len(materials_diff)}개 라인 아이템 분류 처리") - print(f"📊 차이분 요약: {len(new_materials_grouped)}개 자재 그룹 → {len(materials_diff)}개 라인 아이템") + print(f"📊 변경사항 요약: 변경 {len(changed_materials_keys)}개, 신규 {len(new_materials_keys)}개") else: print(f"🆕 신규 업로드: 전체 {len(materials_to_classify)}개 분류 처리") @@ -728,6 +723,8 @@ async def upload_file( print(f" size_spec: '{material_data['size_spec']}'") print(f" original_description: {material_data['original_description']}") print(f" category: {classification_result.get('category', 'UNKNOWN')}") + print(f" drawing_name: {material_data.get('dwg_name')}") + print(f" line_no: {material_data.get('line_num')}") material_result = db.execute(material_insert_query, { "file_id": file_id, @@ -752,7 +749,37 @@ async def upload_file( material_id = material_result.fetchone()[0] materials_inserted += 1 - # 리비전 업로드인 경우 신규 자재 카운트는 이미 위에서 처리됨 + # 리비전 업로드인 경우 변경/신규 자재 표시 및 구매신청 정보 상속 + if parent_file_id is not None: + # 현재 자재의 키 생성 + dwg_name = material_data.get("dwg_name") + line_num = material_data.get("line_num") + + if dwg_name: + current_key = f"{dwg_name}|{description}|{size_spec}|{material_data.get('material_grade', '')}" + elif line_num: + current_key = f"{line_num}|{description}|{size_spec}|{material_data.get('material_grade', '')}" + else: + current_key = f"{description}|{size_spec}|{material_data.get('material_grade', '')}" + + # 변경 또는 신규 자재에 상태 표시 + if current_key in changed_materials_keys: + # 변경된 자재 + update_status_query = text(""" + UPDATE materials SET revision_status = 'changed' + WHERE id = :material_id + """) + db.execute(update_status_query, {"material_id": material_id}) + elif current_key in new_materials_keys: + # 신규 자재 (추가됨) + update_status_query = text(""" + UPDATE materials SET revision_status = 'active' + WHERE id = :material_id + """) + db.execute(update_status_query, {"material_id": material_id}) + + # 구매신청 정보 상속은 전체 자재 저장 후 일괄 처리하도록 변경 + # (개별 처리는 비효율적이고 수량 계산이 복잡함) # PIPE 분류 결과인 경우 상세 정보 저장 if classification_result.get("category") == "PIPE": @@ -1432,6 +1459,83 @@ async def upload_file( db.commit() print(f"자재 저장 완료: {materials_inserted}개") + # 리비전 업로드인 경우 구매신청 정보 수량 기반 상속 + if parent_file_id is not None: + try: + print(f"🔄 구매신청 정보 상속 처리 시작...") + + # 1. 이전 리비전에서 그룹별 구매신청 수량 집계 + prev_purchase_summary = text(""" + SELECT + m.original_description, + m.size_spec, + m.material_grade, + m.drawing_name, + COUNT(DISTINCT pri.material_id) as purchased_count, + SUM(pri.quantity) as total_purchased_qty, + MIN(pri.request_id) as request_id + FROM materials m + JOIN purchase_request_items pri ON m.id = pri.material_id + WHERE m.file_id = :parent_file_id + GROUP BY m.original_description, m.size_spec, m.material_grade, m.drawing_name + """) + + prev_purchases = db.execute(prev_purchase_summary, {"parent_file_id": parent_file_id}).fetchall() + + # 2. 새 리비전에서 같은 그룹의 자재에 수량만큼 구매신청 상속 + for prev_purchase in prev_purchases: + purchased_count = prev_purchase.purchased_count + + # 새 리비전에서 같은 그룹의 자재 조회 (순서대로) + new_group_materials = text(""" + SELECT id, quantity + FROM materials + WHERE file_id = :file_id + AND original_description = :description + AND COALESCE(size_spec, '') = :size_spec + AND COALESCE(material_grade, '') = :material_grade + AND COALESCE(drawing_name, '') = :drawing_name + ORDER BY id + LIMIT :limit + """) + + new_materials = db.execute(new_group_materials, { + "file_id": file_id, + "description": prev_purchase.original_description, + "size_spec": prev_purchase.size_spec or '', + "material_grade": prev_purchase.material_grade or '', + "drawing_name": prev_purchase.drawing_name or '', + "limit": purchased_count + }).fetchall() + + # 구매신청 수량만큼만 상속 + for new_mat in new_materials: + inherit_query = text(""" + INSERT INTO purchase_request_items ( + request_id, material_id, quantity, unit, user_requirement + ) VALUES ( + :request_id, :material_id, :quantity, 'EA', '' + ) + ON CONFLICT DO NOTHING + """) + db.execute(inherit_query, { + "request_id": prev_purchase.request_id, + "material_id": new_mat.id, + "quantity": new_mat.quantity + }) + + inherited_count = len(new_materials) + if inherited_count > 0: + print(f" ✅ {prev_purchase.original_description[:30]}... (도면: {prev_purchase.drawing_name or 'N/A'}) → {inherited_count}/{purchased_count}개 상속") + + db.commit() + print(f"✅ 구매신청 정보 상속 완료") + + except Exception as e: + print(f"❌ 구매신청 정보 상속 실패: {str(e)}") + db.rollback() + # 상속 실패는 업로드 성공에 영향 없음 + # 활동 로그 기록 try: activity_logger = ActivityLogger(db) @@ -1451,25 +1555,136 @@ async def upload_file( print(f"활동 로그 기록 실패: {str(e)}") # 로그 실패는 업로드 성공에 영향을 주지 않음 + # 리비전 업로드인 경우 누락된 도면 감지 및 구매신청 여부 확인 + missing_drawings_info = None + has_previous_purchase = False + + if parent_file_id is not None: + try: + # 이전 리비전의 구매신청 여부 확인 + purchase_check_query = text(""" + SELECT COUNT(*) as purchase_count + FROM purchase_request_items pri + JOIN materials m ON pri.material_id = m.id + WHERE m.file_id = :parent_file_id + """) + purchase_result = db.execute(purchase_check_query, {"parent_file_id": parent_file_id}).fetchone() + has_previous_purchase = purchase_result.purchase_count > 0 + + print(f"📦 이전 리비전 구매신청 여부: {has_previous_purchase} ({purchase_result.purchase_count}개 자재)") + print(f"📂 parent_file_id: {parent_file_id}, new file_id: {file_id}") + + # 이전 리비전의 도면 목록 조회 + prev_drawings_query = text(""" + SELECT DISTINCT drawing_name, line_no, COUNT(*) as material_count + FROM materials + WHERE file_id = :parent_file_id + AND (drawing_name IS NOT NULL OR line_no IS NOT NULL) + GROUP BY drawing_name, line_no + """) + prev_drawings_result = db.execute(prev_drawings_query, {"parent_file_id": parent_file_id}).fetchall() + print(f"📋 이전 리비전 도면 수: {len(prev_drawings_result)}") + + # 새 리비전의 도면 목록 조회 + new_drawings_query = text(""" + SELECT DISTINCT drawing_name, line_no + FROM materials + WHERE file_id = :file_id + AND (drawing_name IS NOT NULL OR line_no IS NOT NULL) + """) + new_drawings_result = db.execute(new_drawings_query, {"file_id": file_id}).fetchall() + print(f"📋 새 리비전 도면 수: {len(new_drawings_result)}") + + prev_drawings = set() + for row in prev_drawings_result: + if row.drawing_name: + prev_drawings.add(row.drawing_name) + elif row.line_no: + prev_drawings.add(row.line_no) + + new_drawings = set() + for row in new_drawings_result: + if row.drawing_name: + new_drawings.add(row.drawing_name) + elif row.line_no: + new_drawings.add(row.line_no) + + missing_drawings = prev_drawings - new_drawings + + print(f"📊 이전 도면: {list(prev_drawings)[:5]}") + print(f"📊 새 도면: {list(new_drawings)[:5]}") + print(f"❌ 누락 도면: {len(missing_drawings)}개") + + if missing_drawings: + # 누락된 도면의 자재 상세 정보 + missing_materials = [] + for row in prev_drawings_result: + drawing = row.drawing_name or row.line_no + if drawing in missing_drawings: + missing_materials.append({ + "drawing_name": drawing, + "material_count": row.material_count + }) + + missing_drawings_info = { + "drawings": list(missing_drawings), + "materials": missing_materials, + "count": len(missing_drawings), + "requires_confirmation": True, + "has_previous_purchase": has_previous_purchase, + "action": "mark_as_inventory" if has_previous_purchase else "hide_materials" + } + + # 누락된 도면의 자재 상태 업데이트 + if missing_drawings: + for drawing in missing_drawings: + status_to_set = 'inventory' if has_previous_purchase else 'deleted_not_purchased' + + update_status_query = text(""" + UPDATE materials + SET revision_status = :status + WHERE file_id = :parent_file_id + AND (drawing_name = :drawing OR line_no = :drawing) + """) + + db.execute(update_status_query, { + "status": status_to_set, + "parent_file_id": parent_file_id, + "drawing": drawing + }) + + db.commit() + print(f"✅ 누락 도면 자재 상태 업데이트: {len(missing_drawings)}개 도면 → {status_to_set}") + except Exception as e: + print(f"누락 도면 감지 실패: {str(e)}") + db.rollback() + # 감지 실패는 업로드 성공에 영향 없음 + # 리비전 업로드인 경우 메시지 다르게 표시 if parent_file_id is not None: message = f"리비전 업로드 성공! {new_materials_count}개의 신규 자재가 추가되었습니다." else: message = f"업로드 성공! {materials_inserted}개 자재가 분류되었습니다." - return { + response_data = { "success": True, "message": message, "original_filename": file.filename, "file_id": file_id, "materials_count": materials_inserted, "saved_materials_count": materials_inserted, - "new_materials_count": new_materials_count if parent_file_id is not None else None, # 신규 자재 수 - "revision": revision, # 생성된 리비전 정보 추가 - "uploaded_by": username, # 업로드한 사용자 정보 추가 + "new_materials_count": new_materials_count if parent_file_id is not None else None, + "revision": revision, + "uploaded_by": username, "parsed_count": parsed_count } + # 누락된 도면 정보 추가 + if missing_drawings_info: + response_data["missing_drawings"] = missing_drawings_info + + return response_data + except Exception as e: db.rollback() if os.path.exists(file_path): @@ -1612,7 +1827,7 @@ async def get_materials( query = """ SELECT m.id, m.file_id, m.original_description, m.quantity, m.unit, m.size_spec, m.main_nom, m.red_nom, m.material_grade, m.full_material_grade, m.line_number, m.row_number, - m.drawing_name, m.line_no, + m.drawing_name, m.line_no, m.revision_status, m.created_at, m.classified_category, m.classification_confidence, m.classification_details, m.is_verified, m.verified_by, m.verified_at, @@ -1821,6 +2036,7 @@ async def get_materials( "full_material_grade": m.full_material_grade, "drawing_name": m.drawing_name, "line_no": m.line_no, + "revision_status": m.revision_status or 'active', "line_number": m.line_number, "row_number": m.row_number, # 구매수량 계산에서 분류된 정보를 우선 사용 @@ -2358,7 +2574,8 @@ async def compare_revisions( # 기존 리비전 자재 조회 old_materials_query = text(""" SELECT m.original_description, m.quantity, m.unit, m.size_spec, - m.material_grade, m.classified_category, m.classification_confidence + m.material_grade, m.classified_category, m.classification_confidence, + m.main_nom, m.red_nom, m.drawing_name, m.line_no FROM materials m JOIN files f ON m.file_id = f.id WHERE f.job_no = :job_no @@ -2376,7 +2593,8 @@ async def compare_revisions( # 새 리비전 자재 조회 new_materials_query = text(""" SELECT m.original_description, m.quantity, m.unit, m.size_spec, - m.material_grade, m.classified_category, m.classification_confidence + m.material_grade, m.classified_category, m.classification_confidence, + m.main_nom, m.red_nom, m.drawing_name, m.line_no FROM materials m JOIN files f ON m.file_id = f.id WHERE f.job_no = :job_no @@ -2391,9 +2609,17 @@ async def compare_revisions( }) new_materials = new_result.fetchall() - # 자재 키 생성 함수 (전체 수량 기준) + # 자재 키 생성 함수 (도면번호 + 자재 정보) def create_material_key(material): - return f"{material.original_description}|{material.size_spec or ''}|{material.material_grade or ''}" + # 도면번호가 있으면 도면번호 + 자재 설명으로 고유 키 생성 + # (같은 도면에 여러 자재가 있을 수 있으므로) + if hasattr(material, 'drawing_name') and material.drawing_name: + return f"{material.drawing_name}|{material.original_description}|{material.size_spec or ''}|{material.material_grade or ''}" + elif hasattr(material, 'line_no') and material.line_no: + return f"{material.line_no}|{material.original_description}|{material.size_spec or ''}|{material.material_grade or ''}" + else: + # 도면번호 없으면 기존 방식 (설명 + 크기 + 재질) + return f"{material.original_description}|{material.size_spec or ''}|{material.material_grade or ''}" # 기존 자재를 딕셔너리로 변환 (수량 합산) old_materials_dict = {} @@ -2410,7 +2636,11 @@ async def compare_revisions( "size_spec": material.size_spec, "material_grade": material.material_grade, "classified_category": material.classified_category, - "classification_confidence": material.classification_confidence + "classification_confidence": material.classification_confidence, + "main_nom": material.main_nom, + "red_nom": material.red_nom, + "drawing_name": material.drawing_name, + "line_no": material.line_no } # 새 자재를 딕셔너리로 변환 (수량 합산) @@ -2428,7 +2658,11 @@ async def compare_revisions( "size_spec": material.size_spec, "material_grade": material.material_grade, "classified_category": material.classified_category, - "classification_confidence": material.classification_confidence + "classification_confidence": material.classification_confidence, + "main_nom": material.main_nom, + "red_nom": material.red_nom, + "drawing_name": material.drawing_name, + "line_no": material.line_no } # 변경 사항 분석 @@ -2457,22 +2691,68 @@ async def compare_revisions( "change_type": "added" }) elif old_item and new_item: - # 수량 변경 확인 (전체 수량 기준) + # 변경 사항 감지: 수량, 재질, 크기, 카테고리 등 + changes_detected = [] + old_qty = old_item["quantity"] new_qty = new_item["quantity"] qty_diff = new_qty - old_qty - # 수량 차이가 있으면 변경된 것으로 간주 (소수점 오차 고려) + # 1. 수량 변경 확인 if abs(qty_diff) > 0.001: - change_type = "quantity_increased" if qty_diff > 0 else "quantity_decreased" + changes_detected.append({ + "type": "quantity", + "old_value": old_qty, + "new_value": new_qty, + "diff": qty_diff + }) + + # 2. 재질 변경 확인 + if old_item.get("material_grade") != new_item.get("material_grade"): + changes_detected.append({ + "type": "material", + "old_value": old_item.get("material_grade", "-"), + "new_value": new_item.get("material_grade", "-") + }) + + # 3. 크기 변경 확인 + if old_item.get("main_nom") != new_item.get("main_nom") or old_item.get("size_spec") != new_item.get("size_spec"): + changes_detected.append({ + "type": "size", + "old_value": old_item.get("main_nom") or old_item.get("size_spec", "-"), + "new_value": new_item.get("main_nom") or new_item.get("size_spec", "-") + }) + + # 4. 카테고리 변경 확인 (자재 종류가 바뀜) + if old_item.get("classified_category") != new_item.get("classified_category"): + changes_detected.append({ + "type": "category", + "old_value": old_item.get("classified_category", "-"), + "new_value": new_item.get("classified_category", "-") + }) + + # 변경사항이 있으면 changed_items에 추가 + if changes_detected: + # 변경 유형 결정 + has_qty_change = any(c["type"] == "quantity" for c in changes_detected) + has_spec_change = any(c["type"] in ["material", "size", "category"] for c in changes_detected) + + if has_spec_change: + change_type = "specification_changed" # 자재 사양 변경 + elif has_qty_change: + change_type = "quantity_changed" # 수량만 변경 + else: + change_type = "modified" + changed_items.append({ "key": key, "old_item": old_item, "new_item": new_item, - "quantity_change": qty_diff, - "quantity_change_abs": abs(qty_diff), + "changes": changes_detected, "change_type": change_type, - "change_percentage": (qty_diff / old_qty * 100) if old_qty > 0 else 0 + "quantity_change": qty_diff if has_qty_change else 0, + "drawing_name": new_item.get("drawing_name") or old_item.get("drawing_name"), + "line_no": new_item.get("line_no") or old_item.get("line_no") }) # 분류별 통계 @@ -2490,6 +2770,40 @@ async def compare_revisions( removed_stats = calculate_category_stats(removed_items) changed_stats = calculate_category_stats(changed_items) + # 누락된 도면 감지 + old_drawings = set() + new_drawings = set() + + for material in old_materials: + if hasattr(material, 'drawing_name') and material.drawing_name: + old_drawings.add(material.drawing_name) + elif hasattr(material, 'line_no') and material.line_no: + old_drawings.add(material.line_no) + + for material in new_materials: + if hasattr(material, 'drawing_name') and material.drawing_name: + new_drawings.add(material.drawing_name) + elif hasattr(material, 'line_no') and material.line_no: + new_drawings.add(material.line_no) + + missing_drawings = old_drawings - new_drawings # 이전에는 있었는데 새 파일에 없는 도면 + new_only_drawings = new_drawings - old_drawings # 새로 추가된 도면 + + # 누락된 도면의 자재 목록 + missing_drawing_materials = [] + if missing_drawings: + for material in old_materials: + drawing = getattr(material, 'drawing_name', None) or getattr(material, 'line_no', None) + if drawing in missing_drawings: + missing_drawing_materials.append({ + "drawing_name": drawing, + "description": material.original_description, + "quantity": float(material.quantity) if material.quantity else 0, + "category": material.classified_category, + "size": material.main_nom or material.size_spec, + "material_grade": material.material_grade + }) + return { "success": True, "comparison": { @@ -2501,7 +2815,15 @@ async def compare_revisions( "added_count": len(added_items), "removed_count": len(removed_items), "changed_count": len(changed_items), - "total_changes": len(added_items) + len(removed_items) + len(changed_items) + "total_changes": len(added_items) + len(removed_items) + len(changed_items), + "missing_drawings_count": len(missing_drawings), + "new_drawings_count": len(new_only_drawings) + }, + "missing_drawings": { + "drawings": list(missing_drawings), + "materials": missing_drawing_materials, + "count": len(missing_drawings), + "requires_confirmation": len(missing_drawings) > 0 }, "changes": { "added": added_items, @@ -3291,4 +3613,91 @@ async def log_materials_view( except Exception as e: logger.error(f"조회 로그 기록 실패: {str(e)}") - return {"message": "조회 로그 기록 실패"} \ No newline at end of file + return {"message": "조회 로그 기록 실패"} + + +@router.post("/{file_id}/process-missing-drawings") +async def process_missing_drawings( + file_id: int, + action: str = "delete", + drawings: List[str] = [], + db: Session = Depends(get_db) +): + """ + 누락된 도면 처리 + - action='delete': 누락된 도면의 이전 리비전 자재 삭제 처리 + - action='keep': 누락된 도면의 이전 리비전 자재 유지 + """ + try: + # 현재 파일 정보 확인 + from pydantic import BaseModel + + class MissingDrawingsRequest(BaseModel): + action: str + drawings: List[str] + + # parent_file_id 조회는 files 테이블에 없을 수 있으므로 revision으로 판단 + file_query = text(""" + SELECT f.id, f.job_no, f.revision, f.original_filename + FROM files f + WHERE f.id = :file_id + """) + file_result = db.execute(file_query, {"file_id": file_id}).fetchone() + + if not file_result: + raise HTTPException(status_code=404, detail="파일을 찾을 수 없습니다") + + # 이전 리비전 파일 찾기 + prev_revision_query = text(""" + SELECT id FROM files + WHERE job_no = :job_no + AND original_filename = :filename + AND revision < :current_revision + ORDER BY revision DESC + LIMIT 1 + """) + prev_result = db.execute(prev_revision_query, { + "job_no": file_result.job_no, + "filename": file_result.original_filename, + "current_revision": file_result.revision + }).fetchone() + + if not prev_result: + raise HTTPException(status_code=400, detail="이전 리비전을 찾을 수 없습니다") + + parent_file_id = prev_result.id + + if action == "delete": + # 누락된 도면의 자재를 deleted_not_purchased 상태로 변경 + for drawing in drawings: + update_query = text(""" + UPDATE materials + SET revision_status = 'deleted_not_purchased' + WHERE file_id = :parent_file_id + AND (drawing_name = :drawing OR line_no = :drawing) + """) + db.execute(update_query, { + "parent_file_id": parent_file_id, + "drawing": drawing + }) + + db.commit() + + return { + "success": True, + "message": f"{len(drawings)}개 도면의 자재가 삭제 처리되었습니다", + "action": "deleted", + "drawings_count": len(drawings) + } + else: + # keep - 이미 처리됨 (inventory 또는 active 상태 유지) + return { + "success": True, + "message": "누락된 도면의 자재가 유지됩니다", + "action": "kept", + "drawings_count": len(drawings) + } + + except Exception as e: + db.rollback() + raise HTTPException(status_code=500, detail=f"도면 처리 실패: {str(e)}") \ No newline at end of file diff --git a/backend/app/routers/purchase_request.py b/backend/app/routers/purchase_request.py index ff07a16..9bec7a8 100644 --- a/backend/app/routers/purchase_request.py +++ b/backend/app/routers/purchase_request.py @@ -290,6 +290,13 @@ async def get_request_materials( materials = [] for row in results: + # quantity를 정수로 변환 (소수점 제거) + qty = row.requested_quantity or row.original_quantity + try: + qty_int = int(float(qty)) if qty else 0 + except (ValueError, TypeError): + qty_int = 0 + materials.append({ "item_id": row.item_id, "material_id": row.material_id, @@ -298,7 +305,7 @@ async def get_request_materials( "size": row.size_spec, "schedule": row.schedule, "material_grade": row.material_grade, - "quantity": row.requested_quantity or row.original_quantity, + "quantity": qty_int, # 정수로 변환 "unit": row.requested_unit or row.original_unit, "user_requirement": row.user_requirement, "is_ordered": row.is_ordered, diff --git a/backend/exports/PR-20251014-001.json b/backend/exports/PR-20251014-001.json index d83ee4e..5c08aef 100644 --- a/backend/exports/PR-20251014-001.json +++ b/backend/exports/PR-20251014-001.json @@ -1,392 +1,1835 @@ { "request_no": "PR-20251014-001", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T01:43:47.625634", + "job_no": "TK-MP-DEV-001", + "created_at": "2025-10-14T04:35:25.977081", "materials": [ { - "material_id": 88145, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 7078, + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 11, + "quantity": "3.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88153, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88157, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", + "material_id": 7080, + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", + "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 23, + "quantity": "3.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88167, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "material_id": 7220, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", + "category": "FITTING", "size": "1\"", "material_grade": "ASTM A106 B", - "quantity": 139, + "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "material_id": 88176, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88190, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 98, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88446, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "material_id": 7369, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A106 B", - "quantity": 82, + "quantity": "9.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88528, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 4, + "material_id": 7373, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": "9.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88532, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "12\"", - "material_grade": "ASTM A312 TP304", + "material_id": 7376, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": "9.000", + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7378, + "description": "NIPPLE, SMLS, SCH 160, ASTM A106 B", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", "quantity": 1, "unit": "EA", "user_requirement": "" }, { - "material_id": 88533, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 50, + "material_id": 7689, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, "unit": "EA", "user_requirement": "" }, { - "material_id": 88583, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 7690, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88592, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 25, "unit": "EA", "user_requirement": "" }, { - "material_id": 88600, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 7715, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7721, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88625, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88728, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 12, "unit": "EA", "user_requirement": "" }, { - "material_id": 88740, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "material_id": 7733, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7737, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7744, + "description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7745, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 13, + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7752, + "description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7754, + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7758, + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7759, + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7760, + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7761, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7764, + "description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7766, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7769, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "4\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7771, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7776, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7778, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7783, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "12\" x 10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7784, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7790, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7791, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7792, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7794, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7795, + "description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7796, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7797, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7974, + "description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7976, + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 7980, + "description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8058, + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8674, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8676, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 57, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8680, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8684, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8716, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8783, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8815, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 24, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8839, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8846, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 15, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8861, + "description": "TEE, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8862, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8864, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8869, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8871, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8877, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8884, + "description": "TEE RED, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8887, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8893, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8897, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8902, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8903, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8904, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8905, + "description": "CAP, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8906, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8908, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8909, + "description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8910, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8911, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 36, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8947, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8964, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8965, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8966, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8967, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8969, + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8970, + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8971, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8980, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8983, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8984, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "4\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8985, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 8987, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, "unit": "EA", "user_requirement": "" } ], "grouped_materials": [ { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1/2\"|undefined|ASTM A312 TP304", + "group_key": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT|1/2\"|undefined|ASTM A312 TP304", "material_ids": [ - 88145 + 7078, + 7080 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 11, - "unit": "m", - "total_length": 66000, + "quantity": "3.000", + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|3/4\"|undefined|ASTM A106 B", + "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT|1\"|undefined|ASTM A106 B", "material_ids": [ - 88153 + 7220 ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "m", - "total_length": 552000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88157 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A312 TP304", - "quantity": 23, - "unit": "m", - "total_length": 138000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1\"|undefined|ASTM A106 B", - "material_ids": [ - 88167 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", + "category": "FITTING", "size": "1\"", "material_grade": "ASTM A106 B", - "quantity": 139, - "unit": "m", - "total_length": 834000, + "quantity": 2, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1 1/2\"|undefined|ASTM A312 TP304", + "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT|1/2\"|undefined|ASTM A106 B", "material_ids": [ - 88176 + 7369, + 7373, + 7376 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "m", - "total_length": 84000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1 1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 88190 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 98, - "unit": "m", - "total_length": 588000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 88446 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A106 B", - "quantity": 82, - "unit": "m", - "total_length": 492000, + "quantity": "9.000", + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|10\"|undefined|ASTM A312 TP304", + "group_key": "NIPPLE, SMLS, SCH 160, ASTM A106 B|1/2\"|undefined|ASTM A106 B", "material_ids": [ - 88528 + 7378 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 4, - "unit": "m", - "total_length": 24000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|12\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88532 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "12\"", - "material_grade": "ASTM A312 TP304", + "description": "NIPPLE, SMLS, SCH 160, ASTM A106 B", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", "quantity": 1, - "unit": "m", - "total_length": 6000, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|2\"|undefined|ASTM A106 B", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|10\"|undefined|ASTM A403 WP304", "material_ids": [ - 88533 + 7689 ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7690 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 50, - "unit": "m", - "total_length": 300000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88583 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 9, - "unit": "m", - "total_length": 54000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|3\"|undefined|ASTM A106 B", - "material_ids": [ - 88592 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 25, - "unit": "m", - "total_length": 150000, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3\"|undefined|ASTM A312 TP304", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", "material_ids": [ - 88600 + 7715 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7721 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "m", - "total_length": 48000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3/4\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88625 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 15, - "unit": "m", - "total_length": 90000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|4\"|undefined|ASTM A106 B", - "material_ids": [ - 88728 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 12, - "unit": "m", - "total_length": 72000, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|6\"|undefined|ASTM A106 B", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", "material_ids": [ - 88740 + 7733 ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7737 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB|4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7744 + ], + "description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|6\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7745 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 13, - "unit": "m", - "total_length": 78000, + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "45 ELL, SMLS, SCH 40, ASTM A234 WPB|6\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7752 + ], + "description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7754 + ], + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7758 + ], + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7759 + ], + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7760 + ], + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7761 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|2\" x 1 1/2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7764 + ], + "description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|3\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7766 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|4\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7769 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "4\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1 1/2\" x 1\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7771 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1 1/2\" x 3/4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7776 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1\" x 3/4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7778 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|12\" x 10\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7783 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "12\" x 10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7784 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|2\" x 1 1/2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7790 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7791 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|3\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7792 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|3\" x 1\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7794 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB|3\" x 2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7795 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|3\" x 2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 7796 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|3/4\" x 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 7797 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1 1/2\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 7974 + ], + "description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 150LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 7976 + ], + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 600LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 7980 + ], + "description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 150LB, ASTM A105|1\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8058 + ], + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 8674 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 8676 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 57, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 8680 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8684 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 8716 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 8783 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 8815 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 24, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8839 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 8846 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 15, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 8861 + ], + "description": "TEE, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 8862 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 8864 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8869 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8871 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8877 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A182 F304|1\" x 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 8884 + ], + "description": "TEE RED, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8887 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|2\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 8893 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|3/4\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8897 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8902 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8903 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 8904 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 8905 + ], + "description": "CAP, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 8906 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 8908 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 8909 + ], + "description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 8910 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 8911 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 36, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 8947 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 1 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 8964 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 1\"|undefined|ASTM A182 F304", + "material_ids": [ + 8965 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 8966 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|2\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8967 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "ELL O LET, SW, 3000LB, ASTM A105|2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8969 + ], + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "ELL O LET, SW, 3000LB, ASTM A105|3\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8970 + ], + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|3\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8971 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|3\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 8980 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|3\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 8983 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|4\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8984 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "4\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|6\" x 1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 8985 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|6\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 8987 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", "user_requirement": "" } ] diff --git a/backend/exports/PR-20251014-001.xlsx b/backend/exports/PR-20251014-001.xlsx deleted file mode 100644 index d4b28c0..0000000 Binary files a/backend/exports/PR-20251014-001.xlsx and /dev/null differ diff --git a/backend/exports/PR-20251014-002.json b/backend/exports/PR-20251014-002.json index 0e04b04..84e7b3f 100644 --- a/backend/exports/PR-20251014-002.json +++ b/backend/exports/PR-20251014-002.json @@ -1,368 +1,1835 @@ { "request_no": "PR-20251014-002", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T01:43:58.851391", + "job_no": "TKG-25000P", + "created_at": "2025-10-14T04:43:14.916416", "materials": [ { - "material_id": 88146, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 28324, + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 10, + "quantity": "3.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88154, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 91, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88158, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", + "material_id": 28326, + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", + "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 22, + "quantity": "3.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88168, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "material_id": 28466, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", + "category": "FITTING", "size": "1\"", "material_grade": "ASTM A106 B", - "quantity": 138, + "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "material_id": 88177, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 13, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88191, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 97, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88447, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "material_id": 28615, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A106 B", - "quantity": 81, + "quantity": "9.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 88529, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 28619, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": "9.000", + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 28622, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": "9.000", + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 28624, + "description": "NIPPLE, SMLS, SCH 160, ASTM A106 B", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 28935, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 3, + "material_grade": "ASTM A403 WP304", + "quantity": 1, "unit": "EA", "user_requirement": "" }, { - "material_id": 88534, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "material_id": 28936, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 49, + "material_grade": "ASTM A234 WPB", + "quantity": 25, "unit": "EA", "user_requirement": "" }, { - "material_id": 88584, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 28961, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, + "material_grade": "ASTM A403 WP304", + "quantity": 6, "unit": "EA", "user_requirement": "" }, { - "material_id": 88593, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "material_id": 28967, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A106 B", - "quantity": 24, + "material_grade": "ASTM A234 WPB", + "quantity": 12, "unit": "EA", "user_requirement": "" }, { - "material_id": 88618, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 28979, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A312 TP304", + "material_grade": "ASTM A403 WP304", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 28983, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", "quantity": 7, "unit": "EA", "user_requirement": "" }, { - "material_id": 88626, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88729, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "material_id": 28990, + "description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "4\"", - "material_grade": "ASTM A106 B", - "quantity": 11, + "material_grade": "ASTM A234 WPB", + "quantity": 1, "unit": "EA", "user_requirement": "" }, { - "material_id": 88741, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "material_id": 28991, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 12, + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 28998, + "description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29000, + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29004, + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29005, + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29006, + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29007, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29010, + "description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29012, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29015, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "4\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29017, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29022, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29024, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29029, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "12\" x 10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29030, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29036, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29037, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29038, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29040, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29041, + "description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29042, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29043, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29220, + "description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29222, + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29226, + "description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29304, + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29920, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29922, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 57, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29926, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29930, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 29962, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30029, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30061, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 24, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30085, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30092, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 15, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30107, + "description": "TEE, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30108, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30110, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30115, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30117, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30123, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30130, + "description": "TEE RED, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30133, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30139, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30143, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30148, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30149, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30150, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30151, + "description": "CAP, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30152, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30154, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30155, + "description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30156, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30157, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 36, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30193, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30210, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30211, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30212, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30213, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30215, + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30216, + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30217, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30226, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30229, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30230, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "4\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30231, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 30233, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, "unit": "EA", "user_requirement": "" } ], "grouped_materials": [ { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1/2\"|undefined|ASTM A312 TP304", + "group_key": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT|1/2\"|undefined|ASTM A312 TP304", "material_ids": [ - 88146 + 28324, + 28326 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 10, - "unit": "m", - "total_length": 60000, + "quantity": "3.000", + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|3/4\"|undefined|ASTM A106 B", + "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT|1\"|undefined|ASTM A106 B", "material_ids": [ - 88154 + 28466 ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 91, - "unit": "m", - "total_length": 546000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88158 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A312 TP304", - "quantity": 22, - "unit": "m", - "total_length": 132000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1\"|undefined|ASTM A106 B", - "material_ids": [ - 88168 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", + "category": "FITTING", "size": "1\"", "material_grade": "ASTM A106 B", - "quantity": 138, - "unit": "m", - "total_length": 828000, + "quantity": 2, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1 1/2\"|undefined|ASTM A312 TP304", + "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT|1/2\"|undefined|ASTM A106 B", "material_ids": [ - 88177 + 28615, + 28619, + 28622 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 13, - "unit": "m", - "total_length": 78000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1 1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 88191 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 97, - "unit": "m", - "total_length": 582000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 88447 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A106 B", - "quantity": 81, - "unit": "m", - "total_length": 486000, + "quantity": "9.000", + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|10\"|undefined|ASTM A312 TP304", + "group_key": "NIPPLE, SMLS, SCH 160, ASTM A106 B|1/2\"|undefined|ASTM A106 B", "material_ids": [ - 88529 + 28624 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "NIPPLE, SMLS, SCH 160, ASTM A106 B", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|10\"|undefined|ASTM A403 WP304", + "material_ids": [ + 28935 + ], + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 3, - "unit": "m", - "total_length": 18000, + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|2\"|undefined|ASTM A106 B", + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", "material_ids": [ - 88534 + 28936 ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 49, - "unit": "m", - "total_length": 294000, + "material_grade": "ASTM A234 WPB", + "quantity": 25, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|2\"|undefined|ASTM A312 TP304", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", "material_ids": [ - 88584 + 28961 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "m", - "total_length": 48000, + "material_grade": "ASTM A403 WP304", + "quantity": 6, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|3\"|undefined|ASTM A106 B", + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", "material_ids": [ - 88593 + 28967 ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A106 B", - "quantity": 24, - "unit": "m", - "total_length": 144000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88618 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 7, - "unit": "m", - "total_length": 42000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3/4\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88626 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "m", - "total_length": 84000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|4\"|undefined|ASTM A106 B", - "material_ids": [ - 88729 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", - "quantity": 11, - "unit": "m", - "total_length": 66000, - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|6\"|undefined|ASTM A106 B", - "material_ids": [ - 88741 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "6\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 12, - "unit": "m", - "total_length": 72000, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", + "material_ids": [ + 28979 + ], + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 28983 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB|4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 28990 + ], + "description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|6\"|undefined|ASTM A234 WPB", + "material_ids": [ + 28991 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "45 ELL, SMLS, SCH 40, ASTM A234 WPB|6\"|undefined|ASTM A234 WPB", + "material_ids": [ + 28998 + ], + "description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29000 + ], + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29004 + ], + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29005 + ], + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29006 + ], + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29007 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|2\" x 1 1/2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29010 + ], + "description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|3\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29012 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|4\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29015 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "4\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1 1/2\" x 1\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29017 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1 1/2\" x 3/4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29022 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1\" x 3/4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29024 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|12\" x 10\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29029 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "12\" x 10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29030 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|2\" x 1 1/2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29036 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29037 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|3\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29038 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|3\" x 1\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29040 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB|3\" x 2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29041 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|3\" x 2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 29042 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|3/4\" x 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 29043 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1 1/2\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 29220 + ], + "description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 150LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 29222 + ], + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 600LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 29226 + ], + "description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 150LB, ASTM A105|1\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 29304 + ], + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 29920 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 29922 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 57, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 29926 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 29930 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 29962 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 30029 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 30061 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 24, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30085 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 30092 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 15, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 30107 + ], + "description": "TEE, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 30108 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 30110 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30115 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30117 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30123 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A182 F304|1\" x 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 30130 + ], + "description": "TEE RED, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30133 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|2\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 30139 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|3/4\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30143 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30148 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30149 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 30150 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 30151 + ], + "description": "CAP, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 30152 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 30154 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 30155 + ], + "description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 30156 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 30157 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 36, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 30193 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 1 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 30210 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 1\"|undefined|ASTM A182 F304", + "material_ids": [ + 30211 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 30212 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|2\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30213 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "ELL O LET, SW, 3000LB, ASTM A105|2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30215 + ], + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "ELL O LET, SW, 3000LB, ASTM A105|3\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30216 + ], + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|3\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30217 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|3\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 30226 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|3\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 30229 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|4\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30230 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "4\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|6\" x 1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 30231 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|6\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 30233 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", "user_requirement": "" } ] diff --git a/backend/exports/PR-20251014-002.xlsx b/backend/exports/PR-20251014-002.xlsx deleted file mode 100644 index 42255d9..0000000 Binary files a/backend/exports/PR-20251014-002.xlsx and /dev/null differ diff --git a/backend/exports/PR-20251014-003.json b/backend/exports/PR-20251014-003.json index 7f5dbd4..3418fe5 100644 --- a/backend/exports/PR-20251014-003.json +++ b/backend/exports/PR-20251014-003.json @@ -1,3404 +1,1835 @@ { "request_no": "PR-20251014-003", - "job_no": "J24-002", - "created_at": "2025-10-14T02:04:48.781382", + "job_no": "TK-MP-DEMO-001", + "created_at": "2025-10-14T05:10:01.140631", "materials": [ { - "material_id": 91684, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 35405, + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 11, + "quantity": "3.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 91692, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91696, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", + "material_id": 35407, + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", + "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 23, + "quantity": "3.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 91706, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "material_id": 35547, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", + "category": "FITTING", "size": "1\"", "material_grade": "ASTM A106 B", - "quantity": 139, + "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "material_id": 91715, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91729, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 98, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91985, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "material_id": 35696, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A106 B", - "quantity": 82, + "quantity": "9.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 92067, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 4, + "material_id": 35700, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": "9.000", "unit": "EA", "user_requirement": "" }, { - "material_id": 92071, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "12\"", - "material_grade": "ASTM A312 TP304", + "material_id": 35703, + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", + "quantity": "9.000", + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 35705, + "description": "NIPPLE, SMLS, SCH 160, ASTM A106 B", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", "quantity": 1, "unit": "EA", "user_requirement": "" }, { - "material_id": 92072, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 50, + "material_id": 36016, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, "unit": "EA", "user_requirement": "" }, { - "material_id": 92122, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 36017, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 92131, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 25, "unit": "EA", "user_requirement": "" }, { - "material_id": 92139, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "material_id": 36042, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36048, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 92164, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 92267, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 12, "unit": "EA", "user_requirement": "" }, { - "material_id": 92279, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "material_id": 36060, + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36064, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36071, + "description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36072, + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 13, + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36079, + "description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36081, + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36085, + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36086, + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36087, + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36088, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36091, + "description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36093, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36096, + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "4\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36098, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36103, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36105, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36110, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "12\" x 10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36111, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36117, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36118, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36119, + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36121, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36122, + "description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36123, + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36124, + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36301, + "description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36303, + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36307, + "description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 36385, + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37001, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37003, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 57, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37007, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37011, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37043, + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37110, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37142, + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 24, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37166, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37173, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 15, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37188, + "description": "TEE, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37189, + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37191, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37196, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37198, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37204, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37211, + "description": "TEE RED, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37214, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37220, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37224, + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37229, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37230, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37231, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37232, + "description": "CAP, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37233, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37235, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37236, + "description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37237, + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37238, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 36, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37274, + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37291, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37292, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37293, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37294, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37296, + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37297, + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37298, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37307, + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37310, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37311, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "4\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37312, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "material_id": 37314, + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, "unit": "EA", "user_requirement": "" } ], "grouped_materials": [ { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1/2\"|undefined|ASTM A312 TP304", + "group_key": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT|1/2\"|undefined|ASTM A312 TP304", "material_ids": [ - 91684 + 35405, + 35407 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A312 TP304", - "quantity": 11, - "unit": "m", - "total_length": 1395.1, - "pipe_lengths": [ - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 155, - "quantity": 1, - "totalLength": 155 - }, - { - "length": 155, - "quantity": 1, - "totalLength": 155 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 245.1, - "quantity": 1, - "totalLength": 245.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - } - ], + "quantity": "3.000", + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|3/4\"|undefined|ASTM A106 B", + "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT|1\"|undefined|ASTM A106 B", "material_ids": [ - 91692 + 35547 ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "m", - "total_length": 7920.2, - "pipe_lengths": [ - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 88.6, - "quantity": 1, - "totalLength": 88.6 - }, - { - "length": 88.6, - "quantity": 1, - "totalLength": 88.6 - }, - { - "length": 98.4, - "quantity": 1, - "totalLength": 98.4 - }, - { - "length": 98.4, - "quantity": 1, - "totalLength": 98.4 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 223.6, - "quantity": 1, - "totalLength": 223.6 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1\"|undefined|ASTM A312 TP304", - "material_ids": [ - 91696 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A312 TP304", - "quantity": 23, - "unit": "m", - "total_length": 7448.47, - "pipe_lengths": [ - { - "length": 82.1, - "quantity": 1, - "totalLength": 82.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 157.4, - "quantity": 1, - "totalLength": 157.4 - }, - { - "length": 283.4, - "quantity": 1, - "totalLength": 283.4 - }, - { - "length": 450.9, - "quantity": 1, - "totalLength": 450.9 - }, - { - "length": 800, - "quantity": 1, - "totalLength": 800 - }, - { - "length": 945.1, - "quantity": 1, - "totalLength": 945.1 - }, - { - "length": 1228.9, - "quantity": 1, - "totalLength": 1228.9 - }, - { - "length": 1321.87, - "quantity": 1, - "totalLength": 1321.87 - }, - { - "length": 200.8, - "quantity": 1, - "totalLength": 200.8 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 152.4, - "quantity": 1, - "totalLength": 152.4 - }, - { - "length": 156.4, - "quantity": 1, - "totalLength": 156.4 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1\"|undefined|ASTM A106 B", - "material_ids": [ - 91706 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", + "category": "FITTING", "size": "1\"", "material_grade": "ASTM A106 B", - "quantity": 139, - "unit": "m", - "total_length": 43978.780000000006, - "pipe_lengths": [ - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 1250, - "quantity": 1, - "totalLength": 1250 - }, - { - "length": 1500, - "quantity": 1, - "totalLength": 1500 - }, - { - "length": 1520, - "quantity": 1, - "totalLength": 1520 - }, - { - "length": 1523.15, - "quantity": 1, - "totalLength": 1523.15 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 96, - "quantity": 1, - "totalLength": 96 - }, - { - "length": 98, - "quantity": 1, - "totalLength": 98 - }, - { - "length": 98.16, - "quantity": 1, - "totalLength": 98.16 - }, - { - "length": 99.8, - "quantity": 1, - "totalLength": 99.8 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 104, - "quantity": 1, - "totalLength": 104 - }, - { - "length": 104.5, - "quantity": 1, - "totalLength": 104.5 - }, - { - "length": 112.16, - "quantity": 1, - "totalLength": 112.16 - }, - { - "length": 125, - "quantity": 1, - "totalLength": 125 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 154.61, - "quantity": 1, - "totalLength": 154.61 - }, - { - "length": 165, - "quantity": 1, - "totalLength": 165 - }, - { - "length": 165, - "quantity": 1, - "totalLength": 165 - }, - { - "length": 169.6, - "quantity": 1, - "totalLength": 169.6 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 182.4, - "quantity": 1, - "totalLength": 182.4 - }, - { - "length": 195.2, - "quantity": 1, - "totalLength": 195.2 - }, - { - "length": 199.2, - "quantity": 1, - "totalLength": 199.2 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 208, - "quantity": 1, - "totalLength": 208 - }, - { - "length": 211.75, - "quantity": 1, - "totalLength": 211.75 - }, - { - "length": 219, - "quantity": 1, - "totalLength": 219 - }, - { - "length": 224.7, - "quantity": 1, - "totalLength": 224.7 - }, - { - "length": 230, - "quantity": 1, - "totalLength": 230 - }, - { - "length": 249.23, - "quantity": 1, - "totalLength": 249.23 - }, - { - "length": 250.6, - "quantity": 1, - "totalLength": 250.6 - }, - { - "length": 259.91, - "quantity": 1, - "totalLength": 259.91 - }, - { - "length": 271.55, - "quantity": 1, - "totalLength": 271.55 - }, - { - "length": 292.4, - "quantity": 1, - "totalLength": 292.4 - }, - { - "length": 319.2, - "quantity": 1, - "totalLength": 319.2 - }, - { - "length": 330.23, - "quantity": 1, - "totalLength": 330.23 - }, - { - "length": 367.79, - "quantity": 1, - "totalLength": 367.79 - }, - { - "length": 396.1, - "quantity": 1, - "totalLength": 396.1 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 404, - "quantity": 1, - "totalLength": 404 - }, - { - "length": 408.68, - "quantity": 1, - "totalLength": 408.68 - }, - { - "length": 433.3, - "quantity": 1, - "totalLength": 433.3 - }, - { - "length": 450.26, - "quantity": 1, - "totalLength": 450.26 - }, - { - "length": 466.4, - "quantity": 1, - "totalLength": 466.4 - }, - { - "length": 485.3, - "quantity": 1, - "totalLength": 485.3 - }, - { - "length": 485.3, - "quantity": 1, - "totalLength": 485.3 - }, - { - "length": 500, - "quantity": 1, - "totalLength": 500 - }, - { - "length": 510.2, - "quantity": 1, - "totalLength": 510.2 - }, - { - "length": 510.2, - "quantity": 1, - "totalLength": 510.2 - }, - { - "length": 545, - "quantity": 1, - "totalLength": 545 - }, - { - "length": 549, - "quantity": 1, - "totalLength": 549 - }, - { - "length": 576.68, - "quantity": 1, - "totalLength": 576.68 - }, - { - "length": 579, - "quantity": 1, - "totalLength": 579 - }, - { - "length": 579.7, - "quantity": 1, - "totalLength": 579.7 - }, - { - "length": 579.7, - "quantity": 1, - "totalLength": 579.7 - }, - { - "length": 613.8, - "quantity": 1, - "totalLength": 613.8 - }, - { - "length": 687.6, - "quantity": 1, - "totalLength": 687.6 - }, - { - "length": 718, - "quantity": 1, - "totalLength": 718 - }, - { - "length": 750, - "quantity": 1, - "totalLength": 750 - }, - { - "length": 865.9, - "quantity": 1, - "totalLength": 865.9 - }, - { - "length": 1032.3, - "quantity": 1, - "totalLength": 1032.3 - }, - { - "length": 1107.83, - "quantity": 1, - "totalLength": 1107.83 - }, - { - "length": 1117.83, - "quantity": 1, - "totalLength": 1117.83 - }, - { - "length": 1164.5, - "quantity": 1, - "totalLength": 1164.5 - }, - { - "length": 1180.83, - "quantity": 1, - "totalLength": 1180.83 - }, - { - "length": 1180.83, - "quantity": 1, - "totalLength": 1180.83 - }, - { - "length": 1279.8, - "quantity": 1, - "totalLength": 1279.8 - }, - { - "length": 1387.4, - "quantity": 1, - "totalLength": 1387.4 - }, - { - "length": 3137.2, - "quantity": 1, - "totalLength": 3137.2 - } - ], + "quantity": 2, + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1 1/2\"|undefined|ASTM A312 TP304", + "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT|1/2\"|undefined|ASTM A106 B", "material_ids": [ - 91715 + 35696, + 35700, + 35703 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "m", - "total_length": 5372.6, - "pipe_lengths": [ - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 68.8, - "quantity": 1, - "totalLength": 68.8 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 153.2, - "quantity": 1, - "totalLength": 153.2 - }, - { - "length": 189.7, - "quantity": 1, - "totalLength": 189.7 - }, - { - "length": 189.7, - "quantity": 1, - "totalLength": 189.7 - }, - { - "length": 356.5, - "quantity": 1, - "totalLength": 356.5 - }, - { - "length": 650, - "quantity": 1, - "totalLength": 650 - }, - { - "length": 824.7, - "quantity": 1, - "totalLength": 824.7 - }, - { - "length": 1000, - "quantity": 1, - "totalLength": 1000 - }, - { - "length": 1120, - "quantity": 1, - "totalLength": 1120 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1 1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 91729 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 98, - "unit": "m", - "total_length": 33891.09, - "pipe_lengths": [ - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 90, - "quantity": 1, - "totalLength": 90 - }, - { - "length": 90, - "quantity": 1, - "totalLength": 90 - }, - { - "length": 95, - "quantity": 1, - "totalLength": 95 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 145, - "quantity": 1, - "totalLength": 145 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 562.3, - "quantity": 1, - "totalLength": 562.3 - }, - { - "length": 575.3, - "quantity": 1, - "totalLength": 575.3 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 76.6, - "quantity": 1, - "totalLength": 76.6 - }, - { - "length": 76.6, - "quantity": 1, - "totalLength": 76.6 - }, - { - "length": 85.8, - "quantity": 1, - "totalLength": 85.8 - }, - { - "length": 93.1, - "quantity": 1, - "totalLength": 93.1 - }, - { - "length": 93.1, - "quantity": 1, - "totalLength": 93.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 103.2, - "quantity": 1, - "totalLength": 103.2 - }, - { - "length": 116.6, - "quantity": 1, - "totalLength": 116.6 - }, - { - "length": 116.6, - "quantity": 1, - "totalLength": 116.6 - }, - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 133.2, - "quantity": 1, - "totalLength": 133.2 - }, - { - "length": 137.7, - "quantity": 1, - "totalLength": 137.7 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 161.4, - "quantity": 1, - "totalLength": 161.4 - }, - { - "length": 171.9, - "quantity": 1, - "totalLength": 171.9 - }, - { - "length": 172.58, - "quantity": 1, - "totalLength": 172.58 - }, - { - "length": 176.9, - "quantity": 1, - "totalLength": 176.9 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 183, - "quantity": 1, - "totalLength": 183 - }, - { - "length": 183.2, - "quantity": 1, - "totalLength": 183.2 - }, - { - "length": 191.2, - "quantity": 1, - "totalLength": 191.2 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 202.4, - "quantity": 1, - "totalLength": 202.4 - }, - { - "length": 202.4, - "quantity": 1, - "totalLength": 202.4 - }, - { - "length": 207.8, - "quantity": 1, - "totalLength": 207.8 - }, - { - "length": 210, - "quantity": 1, - "totalLength": 210 - }, - { - "length": 218.2, - "quantity": 1, - "totalLength": 218.2 - }, - { - "length": 218.2, - "quantity": 1, - "totalLength": 218.2 - }, - { - "length": 218.89, - "quantity": 1, - "totalLength": 218.89 - }, - { - "length": 220, - "quantity": 1, - "totalLength": 220 - }, - { - "length": 235.2, - "quantity": 1, - "totalLength": 235.2 - }, - { - "length": 250, - "quantity": 1, - "totalLength": 250 - }, - { - "length": 250, - "quantity": 1, - "totalLength": 250 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 320, - "quantity": 1, - "totalLength": 320 - }, - { - "length": 360.4, - "quantity": 1, - "totalLength": 360.4 - }, - { - "length": 376.2, - "quantity": 1, - "totalLength": 376.2 - }, - { - "length": 383.89, - "quantity": 1, - "totalLength": 383.89 - }, - { - "length": 450, - "quantity": 1, - "totalLength": 450 - }, - { - "length": 485.3, - "quantity": 1, - "totalLength": 485.3 - }, - { - "length": 544, - "quantity": 1, - "totalLength": 544 - }, - { - "length": 553.2, - "quantity": 1, - "totalLength": 553.2 - }, - { - "length": 584, - "quantity": 1, - "totalLength": 584 - }, - { - "length": 733.2, - "quantity": 1, - "totalLength": 733.2 - }, - { - "length": 751.1, - "quantity": 1, - "totalLength": 751.1 - }, - { - "length": 782.3, - "quantity": 1, - "totalLength": 782.3 - }, - { - "length": 796.91, - "quantity": 1, - "totalLength": 796.91 - }, - { - "length": 879.7, - "quantity": 1, - "totalLength": 879.7 - }, - { - "length": 930.1, - "quantity": 1, - "totalLength": 930.1 - }, - { - "length": 960, - "quantity": 1, - "totalLength": 960 - }, - { - "length": 981.8, - "quantity": 1, - "totalLength": 981.8 - }, - { - "length": 1039.9, - "quantity": 1, - "totalLength": 1039.9 - }, - { - "length": 1293.6, - "quantity": 1, - "totalLength": 1293.6 - }, - { - "length": 2133.72, - "quantity": 1, - "totalLength": 2133.72 - }, - { - "length": 3134.2, - "quantity": 1, - "totalLength": 3134.2 - }, - { - "length": 3134.2, - "quantity": 1, - "totalLength": 3134.2 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 91985 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", + "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", + "category": "FITTING", "size": "1/2\"", "material_grade": "ASTM A106 B", - "quantity": 82, - "unit": "m", - "total_length": 37225.89, - "pipe_lengths": [ - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 57.43, - "quantity": 1, - "totalLength": 57.43 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 62.53, - "quantity": 1, - "totalLength": 62.53 - }, - { - "length": 68.4, - "quantity": 1, - "totalLength": 68.4 - }, - { - "length": 68.4, - "quantity": 1, - "totalLength": 68.4 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 79.81, - "quantity": 1, - "totalLength": 79.81 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 96.88, - "quantity": 1, - "totalLength": 96.88 - }, - { - "length": 96.88, - "quantity": 1, - "totalLength": 96.88 - }, - { - "length": 99.08, - "quantity": 1, - "totalLength": 99.08 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 105.2, - "quantity": 1, - "totalLength": 105.2 - }, - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 140, - "quantity": 1, - "totalLength": 140 - }, - { - "length": 144.6, - "quantity": 1, - "totalLength": 144.6 - }, - { - "length": 148.4, - "quantity": 1, - "totalLength": 148.4 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 167.25, - "quantity": 1, - "totalLength": 167.25 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 182.35, - "quantity": 1, - "totalLength": 182.35 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 212.7, - "quantity": 1, - "totalLength": 212.7 - }, - { - "length": 215.08, - "quantity": 1, - "totalLength": 215.08 - }, - { - "length": 228.65, - "quantity": 1, - "totalLength": 228.65 - }, - { - "length": 230, - "quantity": 1, - "totalLength": 230 - }, - { - "length": 250, - "quantity": 1, - "totalLength": 250 - }, - { - "length": 324.5, - "quantity": 1, - "totalLength": 324.5 - }, - { - "length": 328.3, - "quantity": 1, - "totalLength": 328.3 - }, - { - "length": 330, - "quantity": 1, - "totalLength": 330 - }, - { - "length": 370.4, - "quantity": 1, - "totalLength": 370.4 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 457, - "quantity": 1, - "totalLength": 457 - }, - { - "length": 470.5, - "quantity": 1, - "totalLength": 470.5 - }, - { - "length": 482.33, - "quantity": 1, - "totalLength": 482.33 - }, - { - "length": 483.13, - "quantity": 1, - "totalLength": 483.13 - }, - { - "length": 483.13, - "quantity": 1, - "totalLength": 483.13 - }, - { - "length": 494.5, - "quantity": 1, - "totalLength": 494.5 - }, - { - "length": 494.5, - "quantity": 1, - "totalLength": 494.5 - }, - { - "length": 494.5, - "quantity": 1, - "totalLength": 494.5 - }, - { - "length": 500, - "quantity": 1, - "totalLength": 500 - }, - { - "length": 508.4, - "quantity": 1, - "totalLength": 508.4 - }, - { - "length": 520.21, - "quantity": 1, - "totalLength": 520.21 - }, - { - "length": 562.63, - "quantity": 1, - "totalLength": 562.63 - }, - { - "length": 569.38, - "quantity": 1, - "totalLength": 569.38 - }, - { - "length": 598.4, - "quantity": 1, - "totalLength": 598.4 - }, - { - "length": 625, - "quantity": 1, - "totalLength": 625 - }, - { - "length": 660, - "quantity": 1, - "totalLength": 660 - }, - { - "length": 683.13, - "quantity": 1, - "totalLength": 683.13 - }, - { - "length": 688.4, - "quantity": 1, - "totalLength": 688.4 - }, - { - "length": 720, - "quantity": 1, - "totalLength": 720 - }, - { - "length": 774.36, - "quantity": 1, - "totalLength": 774.36 - }, - { - "length": 800, - "quantity": 1, - "totalLength": 800 - }, - { - "length": 800, - "quantity": 1, - "totalLength": 800 - }, - { - "length": 859.5, - "quantity": 1, - "totalLength": 859.5 - }, - { - "length": 1059.36, - "quantity": 1, - "totalLength": 1059.36 - }, - { - "length": 1240.23, - "quantity": 1, - "totalLength": 1240.23 - }, - { - "length": 1250, - "quantity": 1, - "totalLength": 1250 - }, - { - "length": 1345.23, - "quantity": 1, - "totalLength": 1345.23 - }, - { - "length": 1348.4, - "quantity": 1, - "totalLength": 1348.4 - }, - { - "length": 1500, - "quantity": 1, - "totalLength": 1500 - }, - { - "length": 1550, - "quantity": 1, - "totalLength": 1550 - }, - { - "length": 1715.73, - "quantity": 1, - "totalLength": 1715.73 - }, - { - "length": 2176.6, - "quantity": 1, - "totalLength": 2176.6 - }, - { - "length": 2374.5, - "quantity": 1, - "totalLength": 2374.5 - } - ], + "quantity": "9.000", + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|10\"|undefined|ASTM A312 TP304", + "group_key": "NIPPLE, SMLS, SCH 160, ASTM A106 B|1/2\"|undefined|ASTM A106 B", "material_ids": [ - 92067 + 35705 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 4, - "unit": "m", - "total_length": 3635.8, - "pipe_lengths": [ - { - "length": 96.2, - "quantity": 1, - "totalLength": 96.2 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 1410.3, - "quantity": 1, - "totalLength": 1410.3 - }, - { - "length": 1829.3, - "quantity": 1, - "totalLength": 1829.3 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|12\"|undefined|ASTM A312 TP304", - "material_ids": [ - 92071 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "12\"", - "material_grade": "ASTM A312 TP304", + "description": "NIPPLE, SMLS, SCH 160, ASTM A106 B", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A106 B", "quantity": 1, - "unit": "m", - "total_length": 545.3, - "pipe_lengths": [ - { - "length": 545.3, - "quantity": 1, - "totalLength": 545.3 - } - ], + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|2\"|undefined|ASTM A106 B", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|10\"|undefined|ASTM A403 WP304", "material_ids": [ - 92072 + 36016 ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36017 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 50, - "unit": "m", - "total_length": 25269.879999999997, - "pipe_lengths": [ - { - "length": 36.5, - "quantity": 1, - "totalLength": 36.5 - }, - { - "length": 49.8, - "quantity": 1, - "totalLength": 49.8 - }, - { - "length": 66.54, - "quantity": 1, - "totalLength": 66.54 - }, - { - "length": 67.57, - "quantity": 1, - "totalLength": 67.57 - }, - { - "length": 67.57, - "quantity": 1, - "totalLength": 67.57 - }, - { - "length": 77.8, - "quantity": 1, - "totalLength": 77.8 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 87.3, - "quantity": 1, - "totalLength": 87.3 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 105.7, - "quantity": 1, - "totalLength": 105.7 - }, - { - "length": 124.59, - "quantity": 1, - "totalLength": 124.59 - }, - { - "length": 135.8, - "quantity": 1, - "totalLength": 135.8 - }, - { - "length": 144.4, - "quantity": 1, - "totalLength": 144.4 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 157.1, - "quantity": 1, - "totalLength": 157.1 - }, - { - "length": 168.5, - "quantity": 1, - "totalLength": 168.5 - }, - { - "length": 187.3, - "quantity": 1, - "totalLength": 187.3 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 211.2, - "quantity": 1, - "totalLength": 211.2 - }, - { - "length": 211.2, - "quantity": 1, - "totalLength": 211.2 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 301.5, - "quantity": 1, - "totalLength": 301.5 - }, - { - "length": 302.5, - "quantity": 1, - "totalLength": 302.5 - }, - { - "length": 308.3, - "quantity": 1, - "totalLength": 308.3 - }, - { - "length": 350.1, - "quantity": 1, - "totalLength": 350.1 - }, - { - "length": 374.4, - "quantity": 1, - "totalLength": 374.4 - }, - { - "length": 383.4, - "quantity": 1, - "totalLength": 383.4 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 440, - "quantity": 1, - "totalLength": 440 - }, - { - "length": 457.1, - "quantity": 1, - "totalLength": 457.1 - }, - { - "length": 722.9, - "quantity": 1, - "totalLength": 722.9 - }, - { - "length": 737.81, - "quantity": 1, - "totalLength": 737.81 - }, - { - "length": 820.2, - "quantity": 1, - "totalLength": 820.2 - }, - { - "length": 917.93, - "quantity": 1, - "totalLength": 917.93 - }, - { - "length": 1085.5, - "quantity": 1, - "totalLength": 1085.5 - }, - { - "length": 1214.4, - "quantity": 1, - "totalLength": 1214.4 - }, - { - "length": 1219.7, - "quantity": 1, - "totalLength": 1219.7 - }, - { - "length": 1268.41, - "quantity": 1, - "totalLength": 1268.41 - }, - { - "length": 1269.3, - "quantity": 1, - "totalLength": 1269.3 - }, - { - "length": 1285.93, - "quantity": 1, - "totalLength": 1285.93 - }, - { - "length": 1335.93, - "quantity": 1, - "totalLength": 1335.93 - }, - { - "length": 1382.1, - "quantity": 1, - "totalLength": 1382.1 - }, - { - "length": 1811.3, - "quantity": 1, - "totalLength": 1811.3 - }, - { - "length": 2665.3, - "quantity": 1, - "totalLength": 2665.3 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 650, - "quantity": 1, - "totalLength": 650 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 140, - "quantity": 1, - "totalLength": 140 - }, - { - "length": 167, - "quantity": 1, - "totalLength": 167 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 92122 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 9, - "unit": "m", - "total_length": 3063.6099999999997, - "pipe_lengths": [ - { - "length": 57.1, - "quantity": 1, - "totalLength": 57.1 - }, - { - "length": 99.8, - "quantity": 1, - "totalLength": 99.8 - }, - { - "length": 157.1, - "quantity": 1, - "totalLength": 157.1 - }, - { - "length": 157.41, - "quantity": 1, - "totalLength": 157.41 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 233.9, - "quantity": 1, - "totalLength": 233.9 - }, - { - "length": 1758.3, - "quantity": 1, - "totalLength": 1758.3 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|3\"|undefined|ASTM A106 B", - "material_ids": [ - 92131 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 25, - "unit": "m", - "total_length": 14786.890000000001, - "pipe_lengths": [ - { - "length": 87.2, - "quantity": 1, - "totalLength": 87.2 - }, - { - "length": 250.4, - "quantity": 1, - "totalLength": 250.4 - }, - { - "length": 337.5, - "quantity": 1, - "totalLength": 337.5 - }, - { - "length": 561.89, - "quantity": 1, - "totalLength": 561.89 - }, - { - "length": 690.4, - "quantity": 1, - "totalLength": 690.4 - }, - { - "length": 706.59, - "quantity": 1, - "totalLength": 706.59 - }, - { - "length": 1000, - "quantity": 1, - "totalLength": 1000 - }, - { - "length": 1687.4, - "quantity": 1, - "totalLength": 1687.4 - }, - { - "length": 88.8, - "quantity": 1, - "totalLength": 88.8 - }, - { - "length": 144.3, - "quantity": 1, - "totalLength": 144.3 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 227, - "quantity": 1, - "totalLength": 227 - }, - { - "length": 230, - "quantity": 1, - "totalLength": 230 - }, - { - "length": 269.9, - "quantity": 1, - "totalLength": 269.9 - }, - { - "length": 285.51, - "quantity": 1, - "totalLength": 285.51 - }, - { - "length": 298.5, - "quantity": 1, - "totalLength": 298.5 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 346.8, - "quantity": 1, - "totalLength": 346.8 - }, - { - "length": 508, - "quantity": 1, - "totalLength": 508 - }, - { - "length": 572.2, - "quantity": 1, - "totalLength": 572.2 - }, - { - "length": 702.5, - "quantity": 1, - "totalLength": 702.5 - }, - { - "length": 1133.2, - "quantity": 1, - "totalLength": 1133.2 - }, - { - "length": 1238, - "quantity": 1, - "totalLength": 1238 - }, - { - "length": 1476.5, - "quantity": 1, - "totalLength": 1476.5 - }, - { - "length": 1494.3, - "quantity": 1, - "totalLength": 1494.3 - } - ], + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3\"|undefined|ASTM A312 TP304", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", "material_ids": [ - 92139 + 36042 ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36048 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "m", - "total_length": 1773.3, - "pipe_lengths": [ - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 71.8, - "quantity": 1, - "totalLength": 71.8 - }, - { - "length": 71.8, - "quantity": 1, - "totalLength": 71.8 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 549.7, - "quantity": 1, - "totalLength": 549.7 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3/4\"|undefined|ASTM A312 TP304", - "material_ids": [ - 92164 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 15, - "unit": "m", - "total_length": 3193.44, - "pipe_lengths": [ - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 234.89, - "quantity": 1, - "totalLength": 234.89 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 339.15, - "quantity": 1, - "totalLength": 339.15 - }, - { - "length": 350, - "quantity": 1, - "totalLength": 350 - }, - { - "length": 549.4, - "quantity": 1, - "totalLength": 549.4 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|4\"|undefined|ASTM A106 B", - "material_ids": [ - 92267 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", + "material_grade": "ASTM A234 WPB", "quantity": 12, - "unit": "m", - "total_length": 6229.51, - "pipe_lengths": [ - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 311.24, - "quantity": 1, - "totalLength": 311.24 - }, - { - "length": 380, - "quantity": 1, - "totalLength": 380 - }, - { - "length": 381.69, - "quantity": 1, - "totalLength": 381.69 - }, - { - "length": 1015.7, - "quantity": 1, - "totalLength": 1015.7 - }, - { - "length": 1081.96, - "quantity": 1, - "totalLength": 1081.96 - }, - { - "length": 1454.2, - "quantity": 1, - "totalLength": 1454.2 - }, - { - "length": 90, - "quantity": 1, - "totalLength": 90 - }, - { - "length": 100.49, - "quantity": 1, - "totalLength": 100.49 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 350, - "quantity": 1, - "totalLength": 350 - }, - { - "length": 754.23, - "quantity": 1, - "totalLength": 754.23 - } - ], + "unit": "EA", "user_requirement": "" }, { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|6\"|undefined|ASTM A106 B", + "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", "material_ids": [ - 92279 + 36060 ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", + "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36064 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB|4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36071 + ], + "description": "90 SR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|6\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36072 + ], + "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 13, - "unit": "m", - "total_length": 5794.42, - "pipe_lengths": [ - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 368.2, - "quantity": 1, - "totalLength": 368.2 - }, - { - "length": 875.8, - "quantity": 1, - "totalLength": 875.8 - }, - { - "length": 1070.7, - "quantity": 1, - "totalLength": 1070.7 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 116.1, - "quantity": 1, - "totalLength": 116.1 - }, - { - "length": 198.7, - "quantity": 1, - "totalLength": 198.7 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 234.81, - "quantity": 1, - "totalLength": 234.81 - }, - { - "length": 274.8, - "quantity": 1, - "totalLength": 274.8 - }, - { - "length": 530, - "quantity": 1, - "totalLength": 530 - }, - { - "length": 1625.31, - "quantity": 1, - "totalLength": 1625.31 - } + "material_grade": "ASTM A234 WPB", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "45 ELL, SMLS, SCH 40, ASTM A234 WPB|6\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36079 ], + "description": "45 ELL, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "6\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36081 + ], + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36085 + ], + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36086 + ], + "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36087 + ], + "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36088 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|2\" x 1 1/2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36091 + ], + "description": "TEE RED, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|3\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36093 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|4\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36096 + ], + "description": "TEE RED, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "4\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1 1/2\" x 1\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36098 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1 1/2\" x 3/4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36103 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|1\" x 3/4\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36105 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A234 WPB", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|12\" x 10\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36110 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "12\" x 10\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36111 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|2\" x 1 1/2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36117 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "2\" x 1 1/2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|2\" x 1\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36118 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB|3\" x 1 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36119 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 1 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|3\" x 1\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36121 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB|3\" x 2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36122 + ], + "description": "RED CONC, SMLS, SCH 40 X SCH 40, ASTM A234 WPB", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304|3\" x 2\"|undefined|ASTM A403 WP304", + "material_ids": [ + 36123 + ], + "description": "RED CONC, SMLS, SCH 40S X SCH 40S, ASTM A403 WP304", + "category": "FITTING", + "size": "3\" x 2\"", + "material_grade": "ASTM A403 WP304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB|3/4\" x 1/2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 36124 + ], + "description": "RED CONC, SMLS, SCH 80 X SCH 80, ASTM A234 WPB", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1 1/2\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 36301 + ], + "description": "RED. FLG SWRF SCH 40S, 150LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 150LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 36303 + ], + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 600LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 36307 + ], + "description": "RED. FLG SWRF SCH 80, 600LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "RED. FLG SWRF SCH 80, 150LB, ASTM A105|1\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 36385 + ], + "description": "RED. FLG SWRF SCH 80, 150LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 37001 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 37003 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 57, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 37007 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37011 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A182 F304|1 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 37043 + ], + "description": "90 ELL, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 37110 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 32, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "90 ELL, SW, 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 37142 + ], + "description": "90 ELL, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 24, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37166 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 37173 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 15, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 37188 + ], + "description": "TEE, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE, SW, 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 37189 + ], + "description": "TEE, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 37191 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37196 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1 1/2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37198 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37204 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 7, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A182 F304|1\" x 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 37211 + ], + "description": "TEE RED, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\" x 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 6, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|1\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37214 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|2\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 37220 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 4, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "TEE RED, SW, 3000LB, ASTM A105|3/4\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37224 + ], + "description": "TEE RED, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 5, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37229 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37230 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|1\"|undefined|ASTM A105", + "material_ids": [ + 37231 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", + "material_ids": [ + 37232 + ], + "description": "CAP, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|1/2\"|undefined|ASTM A105", + "material_ids": [ + 37233 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 37235 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB|2\"|undefined|ASTM A234 WPB", + "material_ids": [ + 37236 + ], + "description": "CAP, SMLS, SCH 40, BW, ASTM A234 WPB", + "category": "FITTING", + "size": "2\"", + "material_grade": "ASTM A234 WPB", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "CAP, SW, 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 37237 + ], + "description": "CAP, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105|3/4\"|undefined|ASTM A105", + "material_ids": [ + 37238 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A105", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A105", + "quantity": 36, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 37274 + ], + "description": "SOLID HEX. PLUG, NPT(M), 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 1 1/2\"|undefined|ASTM A182 F304", + "material_ids": [ + 37291 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1 1/2\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 1\"|undefined|ASTM A182 F304", + "material_ids": [ + 37292 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 1\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|10\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 37293 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "10\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|2\" x 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37294 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "ELL O LET, SW, 3000LB, ASTM A105|2\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37296 + ], + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "2\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "ELL O LET, SW, 3000LB, ASTM A105|3\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37297 + ], + "description": "ELL O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|3\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37298 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 9, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A182 F304|3\" x 3/4\"|undefined|ASTM A182 F304", + "material_ids": [ + 37307 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A182 F304", + "category": "FITTING", + "size": "3\" x 3/4\"", + "material_grade": "ASTM A182 F304", + "quantity": 3, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|3\" x 1\"|undefined|ASTM A105", + "material_ids": [ + 37310 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "3\" x 1\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|4\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37311 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "4\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|6\" x 1 1/2\"|undefined|ASTM A105", + "material_ids": [ + 37312 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 1 1/2\"", + "material_grade": "ASTM A105", + "quantity": 2, + "unit": "EA", + "user_requirement": "" + }, + { + "group_key": "SOCK O LET, SW, 3000LB, ASTM A105|6\" x 3/4\"|undefined|ASTM A105", + "material_ids": [ + 37314 + ], + "description": "SOCK O LET, SW, 3000LB, ASTM A105", + "category": "FITTING", + "size": "6\" x 3/4\"", + "material_grade": "ASTM A105", + "quantity": 1, + "unit": "EA", "user_requirement": "" } ] diff --git a/backend/exports/PR-20251014-003.xlsx b/backend/exports/PR-20251014-003.xlsx deleted file mode 100644 index e2f52ee..0000000 Binary files a/backend/exports/PR-20251014-003.xlsx and /dev/null differ diff --git a/backend/exports/PR-20251014-004.json b/backend/exports/PR-20251014-004.json deleted file mode 100644 index ba68e47..0000000 --- a/backend/exports/PR-20251014-004.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "request_no": "PR-20251014-004", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T02:10:22.262092", - "materials": [ - { - "material_id": 77528, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 11, - "unit": "EA", - "user_requirement": "열처리?" - } - ], - "grouped_materials": [ - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1/2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 77528 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 11, - "unit": "m", - "total_length": 1395.1, - "pipe_lengths": [ - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 155, - "quantity": 1, - "totalLength": 155 - }, - { - "length": 155, - "quantity": 1, - "totalLength": 155 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 245.1, - "quantity": 1, - "totalLength": 245.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - } - ], - "user_requirement": "열처리?" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-005.json b/backend/exports/PR-20251014-005.json deleted file mode 100644 index daa9f1b..0000000 --- a/backend/exports/PR-20251014-005.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "request_no": "PR-20251014-005", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T02:14:05.318457", - "materials": [ - { - "material_id": 78247, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "10\"", - "material_grade": "ASTM A182 F304", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|10\"|undefined|ASTM A182 F304", - "material_ids": [ - 78247 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "10\"", - "material_grade": "ASTM A182 F304", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-006.json b/backend/exports/PR-20251014-006.json deleted file mode 100644 index 911f946..0000000 --- a/backend/exports/PR-20251014-006.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "request_no": "PR-20251014-006", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T02:17:13.397257", - "materials": [ - { - "material_id": 78599, - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 78599 - ], - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-007.json b/backend/exports/PR-20251014-007.json deleted file mode 100644 index c9443b1..0000000 --- a/backend/exports/PR-20251014-007.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "request_no": "PR-20251014-007", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T02:17:26.376309", - "materials": [ - { - "material_id": 78599, - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 78599 - ], - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-008.json b/backend/exports/PR-20251014-008.json deleted file mode 100644 index 52ed55a..0000000 --- a/backend/exports/PR-20251014-008.json +++ /dev/null @@ -1,495 +0,0 @@ -{ - "request_no": "PR-20251014-008", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T02:17:50.004262", - "materials": [ - { - "material_id": 77536, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|3/4\"|undefined|ASTM A106 B", - "material_ids": [ - 77536 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "m", - "total_length": 7920.2, - "pipe_lengths": [ - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 88.6, - "quantity": 1, - "totalLength": 88.6 - }, - { - "length": 88.6, - "quantity": 1, - "totalLength": 88.6 - }, - { - "length": 98.4, - "quantity": 1, - "totalLength": 98.4 - }, - { - "length": 98.4, - "quantity": 1, - "totalLength": 98.4 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 223.6, - "quantity": 1, - "totalLength": 223.6 - } - ], - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-009.json b/backend/exports/PR-20251014-009.json deleted file mode 100644 index 7607398..0000000 --- a/backend/exports/PR-20251014-009.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "request_no": "PR-20251014-009", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:24:08.046686", - "materials": [ - { - "material_id": 88864, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "10\"", - "material_grade": "ASTM A182 F304", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88869, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "12\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|10\"|undefined|ASTM A182 F304", - "material_ids": [ - 88864 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "10\"", - "material_grade": "ASTM A182 F304", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|12\"|undefined|ASTM A182 F304", - "material_ids": [ - 88869 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "12\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-010.json b/backend/exports/PR-20251014-010.json deleted file mode 100644 index 02062d5..0000000 --- a/backend/exports/PR-20251014-010.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "request_no": "PR-20251014-010", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:24:14.814790", - "materials": [ - { - "material_id": 90052, - "description": "ON/OFF VALVE, FLG, 600LB", - "category": "VALVE", - "size": "1\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 90053, - "description": "CHECK VALVE, LIFT, SW, 800LB", - "category": "VALVE", - "size": "1 1/2\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "ON/OFF VALVE, FLG, 600LB|1\"|undefined|-", - "material_ids": [ - 90052 - ], - "description": "ON/OFF VALVE, FLG, 600LB", - "category": "VALVE", - "size": "1\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "CHECK VALVE, LIFT, SW, 800LB|1 1/2\"|undefined|-", - "material_ids": [ - 90053 - ], - "description": "CHECK VALVE, LIFT, SW, 800LB", - "category": "VALVE", - "size": "1 1/2\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-011.json b/backend/exports/PR-20251014-011.json deleted file mode 100644 index aaf6848..0000000 --- a/backend/exports/PR-20251014-011.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "request_no": "PR-20251014-011", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:24:21.733349", - "materials": [ - { - "material_id": 89216, - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 89216 - ], - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-012.json b/backend/exports/PR-20251014-012.json deleted file mode 100644 index 39bae0e..0000000 --- a/backend/exports/PR-20251014-012.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "request_no": "PR-20251014-012", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:42:08.351432", - "materials": [ - { - "material_id": 89220, - "description": "(4) 0.5, 80 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 32, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "(4) 0.5, 80 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1 1/2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 89220 - ], - "description": "(4) 0.5, 80 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 32, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-013.json b/backend/exports/PR-20251014-013.json deleted file mode 100644 index 793cc61..0000000 --- a/backend/exports/PR-20251014-013.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "request_no": "PR-20251014-013", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:47:17.256790", - "materials": [ - { - "material_id": 89465, - "description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm", - "category": "GASKET", - "size": "1/2\"", - "material_grade": "SS304", - "quantity": 44, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm|1/2\"|undefined|SS304", - "material_ids": [ - 89465 - ], - "description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm", - "category": "GASKET", - "size": "1/2\"", - "material_grade": "SS304", - "quantity": 44, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-014.json b/backend/exports/PR-20251014-014.json deleted file mode 100644 index e1c9bfd..0000000 --- a/backend/exports/PR-20251014-014.json +++ /dev/null @@ -1,3405 +0,0 @@ -{ - "request_no": "PR-20251014-014", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:48:19.117324", - "materials": [ - { - "material_id": 88145, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 11, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88153, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88157, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A312 TP304", - "quantity": 23, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88167, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A106 B", - "quantity": 139, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88176, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88190, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 98, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88446, - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 82, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88528, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88532, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "12\"", - "material_grade": "ASTM A312 TP304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88533, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 50, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88583, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88592, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A106 B", - "quantity": 25, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88600, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88625, - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88728, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", - "quantity": 12, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88740, - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 13, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1/2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88145 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 11, - "unit": "m", - "total_length": 1395.1, - "pipe_lengths": [ - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 155, - "quantity": 1, - "totalLength": 155 - }, - { - "length": 155, - "quantity": 1, - "totalLength": 155 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 245.1, - "quantity": 1, - "totalLength": 245.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|3/4\"|undefined|ASTM A106 B", - "material_ids": [ - 88153 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A106 B", - "quantity": 92, - "unit": "m", - "total_length": 7920.2, - "pipe_lengths": [ - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 43.3, - "quantity": 1, - "totalLength": 43.3 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 76.2, - "quantity": 1, - "totalLength": 76.2 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 77.6, - "quantity": 1, - "totalLength": 77.6 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 88.6, - "quantity": 1, - "totalLength": 88.6 - }, - { - "length": 88.6, - "quantity": 1, - "totalLength": 88.6 - }, - { - "length": 98.4, - "quantity": 1, - "totalLength": 98.4 - }, - { - "length": 98.4, - "quantity": 1, - "totalLength": 98.4 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 223.6, - "quantity": 1, - "totalLength": 223.6 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88157 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A312 TP304", - "quantity": 23, - "unit": "m", - "total_length": 7448.47, - "pipe_lengths": [ - { - "length": 82.1, - "quantity": 1, - "totalLength": 82.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 157.4, - "quantity": 1, - "totalLength": 157.4 - }, - { - "length": 283.4, - "quantity": 1, - "totalLength": 283.4 - }, - { - "length": 450.9, - "quantity": 1, - "totalLength": 450.9 - }, - { - "length": 800, - "quantity": 1, - "totalLength": 800 - }, - { - "length": 945.1, - "quantity": 1, - "totalLength": 945.1 - }, - { - "length": 1228.9, - "quantity": 1, - "totalLength": 1228.9 - }, - { - "length": 1321.87, - "quantity": 1, - "totalLength": 1321.87 - }, - { - "length": 200.8, - "quantity": 1, - "totalLength": 200.8 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 149.8, - "quantity": 1, - "totalLength": 149.8 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 152.4, - "quantity": 1, - "totalLength": 152.4 - }, - { - "length": 156.4, - "quantity": 1, - "totalLength": 156.4 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1\"|undefined|ASTM A106 B", - "material_ids": [ - 88167 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1\"", - "material_grade": "ASTM A106 B", - "quantity": 139, - "unit": "m", - "total_length": 43978.780000000006, - "pipe_lengths": [ - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 1250, - "quantity": 1, - "totalLength": 1250 - }, - { - "length": 1500, - "quantity": 1, - "totalLength": 1500 - }, - { - "length": 1520, - "quantity": 1, - "totalLength": 1520 - }, - { - "length": 1523.15, - "quantity": 1, - "totalLength": 1523.15 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 96, - "quantity": 1, - "totalLength": 96 - }, - { - "length": 98, - "quantity": 1, - "totalLength": 98 - }, - { - "length": 98.16, - "quantity": 1, - "totalLength": 98.16 - }, - { - "length": 99.8, - "quantity": 1, - "totalLength": 99.8 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 104, - "quantity": 1, - "totalLength": 104 - }, - { - "length": 104.5, - "quantity": 1, - "totalLength": 104.5 - }, - { - "length": 112.16, - "quantity": 1, - "totalLength": 112.16 - }, - { - "length": 125, - "quantity": 1, - "totalLength": 125 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 154.61, - "quantity": 1, - "totalLength": 154.61 - }, - { - "length": 165, - "quantity": 1, - "totalLength": 165 - }, - { - "length": 165, - "quantity": 1, - "totalLength": 165 - }, - { - "length": 169.6, - "quantity": 1, - "totalLength": 169.6 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 182.4, - "quantity": 1, - "totalLength": 182.4 - }, - { - "length": 195.2, - "quantity": 1, - "totalLength": 195.2 - }, - { - "length": 199.2, - "quantity": 1, - "totalLength": 199.2 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 208, - "quantity": 1, - "totalLength": 208 - }, - { - "length": 211.75, - "quantity": 1, - "totalLength": 211.75 - }, - { - "length": 219, - "quantity": 1, - "totalLength": 219 - }, - { - "length": 224.7, - "quantity": 1, - "totalLength": 224.7 - }, - { - "length": 230, - "quantity": 1, - "totalLength": 230 - }, - { - "length": 249.23, - "quantity": 1, - "totalLength": 249.23 - }, - { - "length": 250.6, - "quantity": 1, - "totalLength": 250.6 - }, - { - "length": 259.91, - "quantity": 1, - "totalLength": 259.91 - }, - { - "length": 271.55, - "quantity": 1, - "totalLength": 271.55 - }, - { - "length": 292.4, - "quantity": 1, - "totalLength": 292.4 - }, - { - "length": 319.2, - "quantity": 1, - "totalLength": 319.2 - }, - { - "length": 330.23, - "quantity": 1, - "totalLength": 330.23 - }, - { - "length": 367.79, - "quantity": 1, - "totalLength": 367.79 - }, - { - "length": 396.1, - "quantity": 1, - "totalLength": 396.1 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 404, - "quantity": 1, - "totalLength": 404 - }, - { - "length": 408.68, - "quantity": 1, - "totalLength": 408.68 - }, - { - "length": 433.3, - "quantity": 1, - "totalLength": 433.3 - }, - { - "length": 450.26, - "quantity": 1, - "totalLength": 450.26 - }, - { - "length": 466.4, - "quantity": 1, - "totalLength": 466.4 - }, - { - "length": 485.3, - "quantity": 1, - "totalLength": 485.3 - }, - { - "length": 485.3, - "quantity": 1, - "totalLength": 485.3 - }, - { - "length": 500, - "quantity": 1, - "totalLength": 500 - }, - { - "length": 510.2, - "quantity": 1, - "totalLength": 510.2 - }, - { - "length": 510.2, - "quantity": 1, - "totalLength": 510.2 - }, - { - "length": 545, - "quantity": 1, - "totalLength": 545 - }, - { - "length": 549, - "quantity": 1, - "totalLength": 549 - }, - { - "length": 576.68, - "quantity": 1, - "totalLength": 576.68 - }, - { - "length": 579, - "quantity": 1, - "totalLength": 579 - }, - { - "length": 579.7, - "quantity": 1, - "totalLength": 579.7 - }, - { - "length": 579.7, - "quantity": 1, - "totalLength": 579.7 - }, - { - "length": 613.8, - "quantity": 1, - "totalLength": 613.8 - }, - { - "length": 687.6, - "quantity": 1, - "totalLength": 687.6 - }, - { - "length": 718, - "quantity": 1, - "totalLength": 718 - }, - { - "length": 750, - "quantity": 1, - "totalLength": 750 - }, - { - "length": 865.9, - "quantity": 1, - "totalLength": 865.9 - }, - { - "length": 1032.3, - "quantity": 1, - "totalLength": 1032.3 - }, - { - "length": 1107.83, - "quantity": 1, - "totalLength": 1107.83 - }, - { - "length": 1117.83, - "quantity": 1, - "totalLength": 1117.83 - }, - { - "length": 1164.5, - "quantity": 1, - "totalLength": 1164.5 - }, - { - "length": 1180.83, - "quantity": 1, - "totalLength": 1180.83 - }, - { - "length": 1180.83, - "quantity": 1, - "totalLength": 1180.83 - }, - { - "length": 1279.8, - "quantity": 1, - "totalLength": 1279.8 - }, - { - "length": 1387.4, - "quantity": 1, - "totalLength": 1387.4 - }, - { - "length": 3137.2, - "quantity": 1, - "totalLength": 3137.2 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|1 1/2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88176 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 14, - "unit": "m", - "total_length": 5372.6, - "pipe_lengths": [ - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 68.8, - "quantity": 1, - "totalLength": 68.8 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 153.2, - "quantity": 1, - "totalLength": 153.2 - }, - { - "length": 189.7, - "quantity": 1, - "totalLength": 189.7 - }, - { - "length": 189.7, - "quantity": 1, - "totalLength": 189.7 - }, - { - "length": 356.5, - "quantity": 1, - "totalLength": 356.5 - }, - { - "length": 650, - "quantity": 1, - "totalLength": 650 - }, - { - "length": 824.7, - "quantity": 1, - "totalLength": 824.7 - }, - { - "length": 1000, - "quantity": 1, - "totalLength": 1000 - }, - { - "length": 1120, - "quantity": 1, - "totalLength": 1120 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1 1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 88190 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1 1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 98, - "unit": "m", - "total_length": 33891.09, - "pipe_lengths": [ - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 90, - "quantity": 1, - "totalLength": 90 - }, - { - "length": 90, - "quantity": 1, - "totalLength": 90 - }, - { - "length": 95, - "quantity": 1, - "totalLength": 95 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 145, - "quantity": 1, - "totalLength": 145 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 562.3, - "quantity": 1, - "totalLength": 562.3 - }, - { - "length": 575.3, - "quantity": 1, - "totalLength": 575.3 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 76.6, - "quantity": 1, - "totalLength": 76.6 - }, - { - "length": 76.6, - "quantity": 1, - "totalLength": 76.6 - }, - { - "length": 85.8, - "quantity": 1, - "totalLength": 85.8 - }, - { - "length": 93.1, - "quantity": 1, - "totalLength": 93.1 - }, - { - "length": 93.1, - "quantity": 1, - "totalLength": 93.1 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 103.2, - "quantity": 1, - "totalLength": 103.2 - }, - { - "length": 116.6, - "quantity": 1, - "totalLength": 116.6 - }, - { - "length": 116.6, - "quantity": 1, - "totalLength": 116.6 - }, - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 133.2, - "quantity": 1, - "totalLength": 133.2 - }, - { - "length": 137.7, - "quantity": 1, - "totalLength": 137.7 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 161.4, - "quantity": 1, - "totalLength": 161.4 - }, - { - "length": 171.9, - "quantity": 1, - "totalLength": 171.9 - }, - { - "length": 172.58, - "quantity": 1, - "totalLength": 172.58 - }, - { - "length": 176.9, - "quantity": 1, - "totalLength": 176.9 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 183, - "quantity": 1, - "totalLength": 183 - }, - { - "length": 183.2, - "quantity": 1, - "totalLength": 183.2 - }, - { - "length": 191.2, - "quantity": 1, - "totalLength": 191.2 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 202.4, - "quantity": 1, - "totalLength": 202.4 - }, - { - "length": 202.4, - "quantity": 1, - "totalLength": 202.4 - }, - { - "length": 207.8, - "quantity": 1, - "totalLength": 207.8 - }, - { - "length": 210, - "quantity": 1, - "totalLength": 210 - }, - { - "length": 218.2, - "quantity": 1, - "totalLength": 218.2 - }, - { - "length": 218.2, - "quantity": 1, - "totalLength": 218.2 - }, - { - "length": 218.89, - "quantity": 1, - "totalLength": 218.89 - }, - { - "length": 220, - "quantity": 1, - "totalLength": 220 - }, - { - "length": 235.2, - "quantity": 1, - "totalLength": 235.2 - }, - { - "length": 250, - "quantity": 1, - "totalLength": 250 - }, - { - "length": 250, - "quantity": 1, - "totalLength": 250 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 320, - "quantity": 1, - "totalLength": 320 - }, - { - "length": 360.4, - "quantity": 1, - "totalLength": 360.4 - }, - { - "length": 376.2, - "quantity": 1, - "totalLength": 376.2 - }, - { - "length": 383.89, - "quantity": 1, - "totalLength": 383.89 - }, - { - "length": 450, - "quantity": 1, - "totalLength": 450 - }, - { - "length": 485.3, - "quantity": 1, - "totalLength": 485.3 - }, - { - "length": 544, - "quantity": 1, - "totalLength": 544 - }, - { - "length": 553.2, - "quantity": 1, - "totalLength": 553.2 - }, - { - "length": 584, - "quantity": 1, - "totalLength": 584 - }, - { - "length": 733.2, - "quantity": 1, - "totalLength": 733.2 - }, - { - "length": 751.1, - "quantity": 1, - "totalLength": 751.1 - }, - { - "length": 782.3, - "quantity": 1, - "totalLength": 782.3 - }, - { - "length": 796.91, - "quantity": 1, - "totalLength": 796.91 - }, - { - "length": 879.7, - "quantity": 1, - "totalLength": 879.7 - }, - { - "length": 930.1, - "quantity": 1, - "totalLength": 930.1 - }, - { - "length": 960, - "quantity": 1, - "totalLength": 960 - }, - { - "length": 981.8, - "quantity": 1, - "totalLength": 981.8 - }, - { - "length": 1039.9, - "quantity": 1, - "totalLength": 1039.9 - }, - { - "length": 1293.6, - "quantity": 1, - "totalLength": 1293.6 - }, - { - "length": 2133.72, - "quantity": 1, - "totalLength": 2133.72 - }, - { - "length": 3134.2, - "quantity": 1, - "totalLength": 3134.2 - }, - { - "length": 3134.2, - "quantity": 1, - "totalLength": 3134.2 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 80, ASTM A106 B|1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 88446 - ], - "description": "PIPE, SMLS, SCH 80, ASTM A106 B", - "category": "PIPE", - "size": "1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 82, - "unit": "m", - "total_length": 37225.89, - "pipe_lengths": [ - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 50, - "quantity": 1, - "totalLength": 50 - }, - { - "length": 57.43, - "quantity": 1, - "totalLength": 57.43 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 60, - "quantity": 1, - "totalLength": 60 - }, - { - "length": 62.53, - "quantity": 1, - "totalLength": 62.53 - }, - { - "length": 68.4, - "quantity": 1, - "totalLength": 68.4 - }, - { - "length": 68.4, - "quantity": 1, - "totalLength": 68.4 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 70, - "quantity": 1, - "totalLength": 70 - }, - { - "length": 79.81, - "quantity": 1, - "totalLength": 79.81 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 96.88, - "quantity": 1, - "totalLength": 96.88 - }, - { - "length": 96.88, - "quantity": 1, - "totalLength": 96.88 - }, - { - "length": 99.08, - "quantity": 1, - "totalLength": 99.08 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 105.2, - "quantity": 1, - "totalLength": 105.2 - }, - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 140, - "quantity": 1, - "totalLength": 140 - }, - { - "length": 144.6, - "quantity": 1, - "totalLength": 144.6 - }, - { - "length": 148.4, - "quantity": 1, - "totalLength": 148.4 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 160, - "quantity": 1, - "totalLength": 160 - }, - { - "length": 167.25, - "quantity": 1, - "totalLength": 167.25 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 182.35, - "quantity": 1, - "totalLength": 182.35 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 212.7, - "quantity": 1, - "totalLength": 212.7 - }, - { - "length": 215.08, - "quantity": 1, - "totalLength": 215.08 - }, - { - "length": 228.65, - "quantity": 1, - "totalLength": 228.65 - }, - { - "length": 230, - "quantity": 1, - "totalLength": 230 - }, - { - "length": 250, - "quantity": 1, - "totalLength": 250 - }, - { - "length": 324.5, - "quantity": 1, - "totalLength": 324.5 - }, - { - "length": 328.3, - "quantity": 1, - "totalLength": 328.3 - }, - { - "length": 330, - "quantity": 1, - "totalLength": 330 - }, - { - "length": 370.4, - "quantity": 1, - "totalLength": 370.4 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 457, - "quantity": 1, - "totalLength": 457 - }, - { - "length": 470.5, - "quantity": 1, - "totalLength": 470.5 - }, - { - "length": 482.33, - "quantity": 1, - "totalLength": 482.33 - }, - { - "length": 483.13, - "quantity": 1, - "totalLength": 483.13 - }, - { - "length": 483.13, - "quantity": 1, - "totalLength": 483.13 - }, - { - "length": 494.5, - "quantity": 1, - "totalLength": 494.5 - }, - { - "length": 494.5, - "quantity": 1, - "totalLength": 494.5 - }, - { - "length": 494.5, - "quantity": 1, - "totalLength": 494.5 - }, - { - "length": 500, - "quantity": 1, - "totalLength": 500 - }, - { - "length": 508.4, - "quantity": 1, - "totalLength": 508.4 - }, - { - "length": 520.21, - "quantity": 1, - "totalLength": 520.21 - }, - { - "length": 562.63, - "quantity": 1, - "totalLength": 562.63 - }, - { - "length": 569.38, - "quantity": 1, - "totalLength": 569.38 - }, - { - "length": 598.4, - "quantity": 1, - "totalLength": 598.4 - }, - { - "length": 625, - "quantity": 1, - "totalLength": 625 - }, - { - "length": 660, - "quantity": 1, - "totalLength": 660 - }, - { - "length": 683.13, - "quantity": 1, - "totalLength": 683.13 - }, - { - "length": 688.4, - "quantity": 1, - "totalLength": 688.4 - }, - { - "length": 720, - "quantity": 1, - "totalLength": 720 - }, - { - "length": 774.36, - "quantity": 1, - "totalLength": 774.36 - }, - { - "length": 800, - "quantity": 1, - "totalLength": 800 - }, - { - "length": 800, - "quantity": 1, - "totalLength": 800 - }, - { - "length": 859.5, - "quantity": 1, - "totalLength": 859.5 - }, - { - "length": 1059.36, - "quantity": 1, - "totalLength": 1059.36 - }, - { - "length": 1240.23, - "quantity": 1, - "totalLength": 1240.23 - }, - { - "length": 1250, - "quantity": 1, - "totalLength": 1250 - }, - { - "length": 1345.23, - "quantity": 1, - "totalLength": 1345.23 - }, - { - "length": 1348.4, - "quantity": 1, - "totalLength": 1348.4 - }, - { - "length": 1500, - "quantity": 1, - "totalLength": 1500 - }, - { - "length": 1550, - "quantity": 1, - "totalLength": 1550 - }, - { - "length": 1715.73, - "quantity": 1, - "totalLength": 1715.73 - }, - { - "length": 2176.6, - "quantity": 1, - "totalLength": 2176.6 - }, - { - "length": 2374.5, - "quantity": 1, - "totalLength": 2374.5 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|10\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88528 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "10\"", - "material_grade": "ASTM A312 TP304", - "quantity": 4, - "unit": "m", - "total_length": 3635.8, - "pipe_lengths": [ - { - "length": 96.2, - "quantity": 1, - "totalLength": 96.2 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 1410.3, - "quantity": 1, - "totalLength": 1410.3 - }, - { - "length": 1829.3, - "quantity": 1, - "totalLength": 1829.3 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|12\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88532 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "12\"", - "material_grade": "ASTM A312 TP304", - "quantity": 1, - "unit": "m", - "total_length": 545.3, - "pipe_lengths": [ - { - "length": 545.3, - "quantity": 1, - "totalLength": 545.3 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|2\"|undefined|ASTM A106 B", - "material_ids": [ - 88533 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A106 B", - "quantity": 50, - "unit": "m", - "total_length": 25269.879999999997, - "pipe_lengths": [ - { - "length": 36.5, - "quantity": 1, - "totalLength": 36.5 - }, - { - "length": 49.8, - "quantity": 1, - "totalLength": 49.8 - }, - { - "length": 66.54, - "quantity": 1, - "totalLength": 66.54 - }, - { - "length": 67.57, - "quantity": 1, - "totalLength": 67.57 - }, - { - "length": 67.57, - "quantity": 1, - "totalLength": 67.57 - }, - { - "length": 77.8, - "quantity": 1, - "totalLength": 77.8 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 87.3, - "quantity": 1, - "totalLength": 87.3 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 105.7, - "quantity": 1, - "totalLength": 105.7 - }, - { - "length": 124.59, - "quantity": 1, - "totalLength": 124.59 - }, - { - "length": 135.8, - "quantity": 1, - "totalLength": 135.8 - }, - { - "length": 144.4, - "quantity": 1, - "totalLength": 144.4 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 157.1, - "quantity": 1, - "totalLength": 157.1 - }, - { - "length": 168.5, - "quantity": 1, - "totalLength": 168.5 - }, - { - "length": 187.3, - "quantity": 1, - "totalLength": 187.3 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 211.2, - "quantity": 1, - "totalLength": 211.2 - }, - { - "length": 211.2, - "quantity": 1, - "totalLength": 211.2 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 301.5, - "quantity": 1, - "totalLength": 301.5 - }, - { - "length": 302.5, - "quantity": 1, - "totalLength": 302.5 - }, - { - "length": 308.3, - "quantity": 1, - "totalLength": 308.3 - }, - { - "length": 350.1, - "quantity": 1, - "totalLength": 350.1 - }, - { - "length": 374.4, - "quantity": 1, - "totalLength": 374.4 - }, - { - "length": 383.4, - "quantity": 1, - "totalLength": 383.4 - }, - { - "length": 400, - "quantity": 1, - "totalLength": 400 - }, - { - "length": 440, - "quantity": 1, - "totalLength": 440 - }, - { - "length": 457.1, - "quantity": 1, - "totalLength": 457.1 - }, - { - "length": 722.9, - "quantity": 1, - "totalLength": 722.9 - }, - { - "length": 737.81, - "quantity": 1, - "totalLength": 737.81 - }, - { - "length": 820.2, - "quantity": 1, - "totalLength": 820.2 - }, - { - "length": 917.93, - "quantity": 1, - "totalLength": 917.93 - }, - { - "length": 1085.5, - "quantity": 1, - "totalLength": 1085.5 - }, - { - "length": 1214.4, - "quantity": 1, - "totalLength": 1214.4 - }, - { - "length": 1219.7, - "quantity": 1, - "totalLength": 1219.7 - }, - { - "length": 1268.41, - "quantity": 1, - "totalLength": 1268.41 - }, - { - "length": 1269.3, - "quantity": 1, - "totalLength": 1269.3 - }, - { - "length": 1285.93, - "quantity": 1, - "totalLength": 1285.93 - }, - { - "length": 1335.93, - "quantity": 1, - "totalLength": 1335.93 - }, - { - "length": 1382.1, - "quantity": 1, - "totalLength": 1382.1 - }, - { - "length": 1811.3, - "quantity": 1, - "totalLength": 1811.3 - }, - { - "length": 2665.3, - "quantity": 1, - "totalLength": 2665.3 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 650, - "quantity": 1, - "totalLength": 650 - }, - { - "length": 80, - "quantity": 1, - "totalLength": 80 - }, - { - "length": 140, - "quantity": 1, - "totalLength": 140 - }, - { - "length": 167, - "quantity": 1, - "totalLength": 167 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88583 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 9, - "unit": "m", - "total_length": 3063.6099999999997, - "pipe_lengths": [ - { - "length": 57.1, - "quantity": 1, - "totalLength": 57.1 - }, - { - "length": 99.8, - "quantity": 1, - "totalLength": 99.8 - }, - { - "length": 157.1, - "quantity": 1, - "totalLength": 157.1 - }, - { - "length": 157.41, - "quantity": 1, - "totalLength": 157.41 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 233.9, - "quantity": 1, - "totalLength": 233.9 - }, - { - "length": 1758.3, - "quantity": 1, - "totalLength": 1758.3 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|3\"|undefined|ASTM A106 B", - "material_ids": [ - 88592 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A106 B", - "quantity": 25, - "unit": "m", - "total_length": 14786.890000000001, - "pipe_lengths": [ - { - "length": 87.2, - "quantity": 1, - "totalLength": 87.2 - }, - { - "length": 250.4, - "quantity": 1, - "totalLength": 250.4 - }, - { - "length": 337.5, - "quantity": 1, - "totalLength": 337.5 - }, - { - "length": 561.89, - "quantity": 1, - "totalLength": 561.89 - }, - { - "length": 690.4, - "quantity": 1, - "totalLength": 690.4 - }, - { - "length": 706.59, - "quantity": 1, - "totalLength": 706.59 - }, - { - "length": 1000, - "quantity": 1, - "totalLength": 1000 - }, - { - "length": 1687.4, - "quantity": 1, - "totalLength": 1687.4 - }, - { - "length": 88.8, - "quantity": 1, - "totalLength": 88.8 - }, - { - "length": 144.3, - "quantity": 1, - "totalLength": 144.3 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 227, - "quantity": 1, - "totalLength": 227 - }, - { - "length": 230, - "quantity": 1, - "totalLength": 230 - }, - { - "length": 269.9, - "quantity": 1, - "totalLength": 269.9 - }, - { - "length": 285.51, - "quantity": 1, - "totalLength": 285.51 - }, - { - "length": 298.5, - "quantity": 1, - "totalLength": 298.5 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 346.8, - "quantity": 1, - "totalLength": 346.8 - }, - { - "length": 508, - "quantity": 1, - "totalLength": 508 - }, - { - "length": 572.2, - "quantity": 1, - "totalLength": 572.2 - }, - { - "length": 702.5, - "quantity": 1, - "totalLength": 702.5 - }, - { - "length": 1133.2, - "quantity": 1, - "totalLength": 1133.2 - }, - { - "length": 1238, - "quantity": 1, - "totalLength": 1238 - }, - { - "length": 1476.5, - "quantity": 1, - "totalLength": 1476.5 - }, - { - "length": 1494.3, - "quantity": 1, - "totalLength": 1494.3 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88600 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3\"", - "material_grade": "ASTM A312 TP304", - "quantity": 8, - "unit": "m", - "total_length": 1773.3, - "pipe_lengths": [ - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 71.8, - "quantity": 1, - "totalLength": 71.8 - }, - { - "length": 71.8, - "quantity": 1, - "totalLength": 71.8 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 549.7, - "quantity": 1, - "totalLength": 549.7 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40S, ASTM A312 TP304|3/4\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88625 - ], - "description": "PIPE, SMLS, SCH 40S, ASTM A312 TP304", - "category": "PIPE", - "size": "3/4\"", - "material_grade": "ASTM A312 TP304", - "quantity": 15, - "unit": "m", - "total_length": 3193.44, - "pipe_lengths": [ - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 120, - "quantity": 1, - "totalLength": 120 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 150, - "quantity": 1, - "totalLength": 150 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 234.89, - "quantity": 1, - "totalLength": 234.89 - }, - { - "length": 300, - "quantity": 1, - "totalLength": 300 - }, - { - "length": 339.15, - "quantity": 1, - "totalLength": 339.15 - }, - { - "length": 350, - "quantity": 1, - "totalLength": 350 - }, - { - "length": 549.4, - "quantity": 1, - "totalLength": 549.4 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|4\"|undefined|ASTM A106 B", - "material_ids": [ - 88728 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "4\"", - "material_grade": "ASTM A106 B", - "quantity": 12, - "unit": "m", - "total_length": 6229.51, - "pipe_lengths": [ - { - "length": 130, - "quantity": 1, - "totalLength": 130 - }, - { - "length": 311.24, - "quantity": 1, - "totalLength": 311.24 - }, - { - "length": 380, - "quantity": 1, - "totalLength": 380 - }, - { - "length": 381.69, - "quantity": 1, - "totalLength": 381.69 - }, - { - "length": 1015.7, - "quantity": 1, - "totalLength": 1015.7 - }, - { - "length": 1081.96, - "quantity": 1, - "totalLength": 1081.96 - }, - { - "length": 1454.2, - "quantity": 1, - "totalLength": 1454.2 - }, - { - "length": 90, - "quantity": 1, - "totalLength": 90 - }, - { - "length": 100.49, - "quantity": 1, - "totalLength": 100.49 - }, - { - "length": 180, - "quantity": 1, - "totalLength": 180 - }, - { - "length": 350, - "quantity": 1, - "totalLength": 350 - }, - { - "length": 754.23, - "quantity": 1, - "totalLength": 754.23 - } - ], - "user_requirement": "" - }, - { - "group_key": "PIPE, SMLS, SCH 40, ASTM A106 B|6\"|undefined|ASTM A106 B", - "material_ids": [ - 88740 - ], - "description": "PIPE, SMLS, SCH 40, ASTM A106 B", - "category": "PIPE", - "size": "6\"", - "material_grade": "ASTM A106 B", - "quantity": 13, - "unit": "m", - "total_length": 5794.42, - "pipe_lengths": [ - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 368.2, - "quantity": 1, - "totalLength": 368.2 - }, - { - "length": 875.8, - "quantity": 1, - "totalLength": 875.8 - }, - { - "length": 1070.7, - "quantity": 1, - "totalLength": 1070.7 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 100, - "quantity": 1, - "totalLength": 100 - }, - { - "length": 116.1, - "quantity": 1, - "totalLength": 116.1 - }, - { - "length": 198.7, - "quantity": 1, - "totalLength": 198.7 - }, - { - "length": 200, - "quantity": 1, - "totalLength": 200 - }, - { - "length": 234.81, - "quantity": 1, - "totalLength": 234.81 - }, - { - "length": 274.8, - "quantity": 1, - "totalLength": 274.8 - }, - { - "length": 530, - "quantity": 1, - "totalLength": 530 - }, - { - "length": 1625.31, - "quantity": 1, - "totalLength": 1625.31 - } - ], - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-015.json b/backend/exports/PR-20251014-015.json deleted file mode 100644 index f5bae09..0000000 --- a/backend/exports/PR-20251014-015.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "request_no": "PR-20251014-015", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:54:15.899037", - "materials": [], - "grouped_materials": [] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-016.json b/backend/exports/PR-20251014-016.json deleted file mode 100644 index 3e4b113..0000000 --- a/backend/exports/PR-20251014-016.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "request_no": "PR-20251014-016", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:54:33.149908", - "materials": [ - { - "material_id": 88142, - "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": "3.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 88144, - "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": "3.000", - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT|1/2\"|undefined|ASTM A312 TP304", - "material_ids": [ - 88142, - 88144 - ], - "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": "3.000", - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-017.json b/backend/exports/PR-20251014-017.json deleted file mode 100644 index 99f10df..0000000 --- a/backend/exports/PR-20251014-017.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "request_no": "PR-20251014-017", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:54:45.118843", - "materials": [ - { - "material_id": 91515, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91516, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91517, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91518, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91552, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91553, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91554, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91555, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 89471, - "description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm", - "category": "GASKET", - "size": "3/4\"", - "material_grade": "SS304", - "quantity": 18, - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "CLAMP CL-1|1\"|undefined|-", - "material_ids": [ - 91515, - 91516, - 91517, - 91518, - 91552, - 91553, - 91554, - 91555 - ], - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm|3/4\"|undefined|SS304", - "material_ids": [ - 89471 - ], - "description": "SWG, 150LB, H/F/I/O SS304/GRAPHITE/SS304/SS304, 4.5mm", - "category": "GASKET", - "size": "3/4\"", - "material_grade": "SS304", - "quantity": 18, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-018.json b/backend/exports/PR-20251014-018.json deleted file mode 100644 index b06a053..0000000 --- a/backend/exports/PR-20251014-018.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "request_no": "PR-20251014-018", - "job_no": "TK-MP-TEST-001", - "created_at": "2025-10-14T02:54:50.900910", - "materials": [ - { - "material_id": 91515, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91516, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91517, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91518, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91552, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91553, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91554, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 91555, - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - } - ], - "grouped_materials": [ - { - "group_key": "CLAMP CL-1|1\"|undefined|-", - "material_ids": [ - 91515, - 91516, - 91517, - 91518, - 91552, - 91553, - 91554, - 91555 - ], - "description": "CLAMP CL-1", - "category": "SUPPORT", - "size": "1\"", - "material_grade": "-", - "quantity": "8.000", - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/scripts/29_add_revision_status.sql b/backend/scripts/29_add_revision_status.sql new file mode 100644 index 0000000..9d0abb3 --- /dev/null +++ b/backend/scripts/29_add_revision_status.sql @@ -0,0 +1,20 @@ +-- 리비전 관리 개선: 자재 상태 추적 +-- 리비전 업로드 시 삭제된 자재의 상태를 추적 + +-- materials 테이블에 revision_status 컬럼 추가 +ALTER TABLE materials ADD COLUMN IF NOT EXISTS revision_status VARCHAR(20) DEFAULT 'active'; +-- 가능한 값: 'active', 'inventory', 'deleted_not_purchased', 'changed' + +-- revision_status 설명: +-- 'active': 정상 활성 자재 (기본값) +-- 'inventory': 재고품 (구매신청 후 리비전에서 삭제됨 - 연노랑색 표시) +-- 'deleted_not_purchased': 구매신청 전 삭제됨 (숨김 처리) +-- 'changed': 변경된 자재 (추가 구매 필요) + +-- 인덱스 추가 (성능 최적화) +CREATE INDEX IF NOT EXISTS idx_materials_revision_status ON materials(revision_status); +CREATE INDEX IF NOT EXISTS idx_materials_drawing_name ON materials(drawing_name); +CREATE INDEX IF NOT EXISTS idx_materials_line_no ON materials(line_no); + +COMMENT ON COLUMN materials.revision_status IS '리비전 자재 상태: active(활성), inventory(재고품), deleted_not_purchased(삭제됨), changed(변경됨)'; + diff --git a/frontend/src/pages/BOMWorkspacePage.jsx b/frontend/src/pages/BOMWorkspacePage.jsx index 54e9cad..3eb6353 100644 --- a/frontend/src/pages/BOMWorkspacePage.jsx +++ b/frontend/src/pages/BOMWorkspacePage.jsx @@ -299,6 +299,72 @@ const BOMWorkspacePage = ({ project, onNavigate, onBack }) => { }); if (response.data?.success) { + // 누락된 도면 확인 + if (response.data.missing_drawings && response.data.missing_drawings.requires_confirmation) { + const missingDrawings = response.data.missing_drawings.drawings || []; + const materialCount = response.data.missing_drawings.materials?.length || 0; + const hasPreviousPurchase = response.data.missing_drawings.has_previous_purchase; + const fileId = response.data.file_id; + + // 사용자 선택을 위한 프롬프트 메시지 + let alertMessage = `⚠️ 리비전 업로드 확인\n\n` + + `다음 도면이 새 파일에 없습니다:\n` + + `${missingDrawings.slice(0, 5).join('\n')}` + + `${missingDrawings.length > 5 ? `\n...외 ${missingDrawings.length - 5}개` : ''}\n\n` + + `관련 자재: ${materialCount}개\n\n`; + + if (hasPreviousPurchase) { + // 케이스 1: 이미 구매신청된 경우 + alertMessage += `✅ 이전 리비전에서 구매신청이 진행되었습니다.\n\n` + + `다음 중 선택하세요:\n\n` + + `1️⃣ "일부만 업로드" - 변경된 도면만 업로드, 기존 도면 유지\n` + + ` → 누락된 도면의 자재는 "재고품"으로 표시 (연노랑색)\n\n` + + `2️⃣ "도면 삭제됨" - 누락된 도면 완전 삭제\n` + + ` → 해당 자재 제거 및 재고품 처리\n\n` + + `3️⃣ "취소" - 업로드 취소\n\n` + + `숫자를 입력하세요 (1, 2, 3):`; + } else { + // 케이스 2: 구매신청 전인 경우 + alertMessage += `⚠️ 아직 구매신청이 진행되지 않았습니다.\n\n` + + `다음 중 선택하세요:\n\n` + + `1️⃣ "일부만 업로드" - 변경된 도면만 업로드, 기존 도면 유지\n` + + ` → 누락된 도면의 자재는 그대로 유지\n\n` + + `2️⃣ "도면 삭제됨" - 누락된 도면 완전 삭제\n` + + ` → 해당 자재 완전 제거 (숨김 처리)\n\n` + + `3️⃣ "취소" - 업로드 취소\n\n` + + `숫자를 입력하세요 (1, 2, 3):`; + } + + const userChoice = prompt(alertMessage); + + if (userChoice === '3' || userChoice === null) { + // 취소 선택 + await api.delete(`/files/${fileId}`); + alert('업로드가 취소되었습니다.'); + return; + } else if (userChoice === '2') { + // 도면 삭제됨 - 백엔드에 삭제 처리 요청 + try { + await api.post(`/files/${fileId}/process-missing-drawings`, { + action: 'delete', + drawings: missingDrawings + }); + alert(`✅ ${missingDrawings.length}개 도면이 삭제 처리되었습니다.`); + } catch (err) { + console.error('도면 삭제 처리 실패:', err); + alert('도면 삭제 처리에 실패했습니다.'); + } + } else if (userChoice === '1') { + // 일부만 업로드 - 이미 처리됨 (기본 동작) + alert(`✅ 일부 업로드로 처리되었습니다.\n누락된 ${missingDrawings.length}개 도면은 기존 상태를 유지합니다.`); + } else { + // 잘못된 입력 + await api.delete(`/files/${fileId}`); + alert('잘못된 입력입니다. 업로드가 취소되었습니다.'); + return; + } + } + alert(`리비전 ${response.data.revision} 업로드 성공!\n신규 자재: ${response.data.new_materials_count || 0}개`); await loadFiles(); } diff --git a/frontend/src/pages/NewMaterialsPage.css b/frontend/src/pages/NewMaterialsPage.css index 2b520ed..11721e7 100644 --- a/frontend/src/pages/NewMaterialsPage.css +++ b/frontend/src/pages/NewMaterialsPage.css @@ -1168,4 +1168,24 @@ ::-webkit-scrollbar-thumb:hover { background: #9ca3af; +} + +/* ================================ + 리비전 상태별 스타일 + ================================ */ + +/* 재고품 스타일 (구매신청 후 리비전에서 삭제됨) */ +.detailed-material-row.inventory { + background-color: #fef3c7 !important; /* 연노랑색 배경 */ + border-left: 4px solid #f59e0b !important; /* 주황색 왼쪽 테두리 */ +} + +/* 삭제된 자재 (구매신청 전) - 숨김 처리 */ +.detailed-material-row.deleted-not-purchased { + display: none !important; +} + +/* 변경된 자재 (추가 구매 필요) */ +.detailed-material-row.changed { + border-left: 4px solid #3b82f6 !important; /* 파란색 왼쪽 테두리 */ } \ No newline at end of file diff --git a/frontend/src/pages/NewMaterialsPage.jsx b/frontend/src/pages/NewMaterialsPage.jsx index 029d4e1..df3754a 100644 --- a/frontend/src/pages/NewMaterialsPage.jsx +++ b/frontend/src/pages/NewMaterialsPage.jsx @@ -1145,6 +1145,71 @@ const NewMaterialsPage = ({ setSelectedMaterials(newSelection); }; + // 자재 상태별 CSS 클래스 생성 + const getMaterialRowClasses = (material, baseClass) => { + const classes = [baseClass]; + + if (selectedMaterials.has(material.id)) { + classes.push('selected'); + } + + // 구매신청 여부 확인 + const isPurchased = material.grouped_ids ? + material.grouped_ids.some(id => purchasedMaterials.has(id)) : + purchasedMaterials.has(material.id); + + if (isPurchased) { + classes.push('purchased'); + } + + // 리비전 상태 + if (material.revision_status === 'inventory') { + classes.push('inventory'); + } else if (material.revision_status === 'deleted_not_purchased') { + classes.push('deleted-not-purchased'); + } else if (material.revision_status === 'changed') { + classes.push('changed'); + } + + return classes.join(' '); + }; + + // 리비전 상태 배지 렌더링 + const renderRevisionBadge = (material) => { + if (material.revision_status === 'inventory') { + return ( + + 재고품 + + ); + } else if (material.revision_status === 'changed') { + return ( + + 변경됨 + + ); + } + return null; + }; + // 필터 헤더 컴포넌트 const FilterableHeader = ({ children, sortKey, filterKey, className = "" }) => { const uniqueValues = React.useMemo(() => { @@ -1856,7 +1921,7 @@ const NewMaterialsPage = ({ return (