diff --git a/backend/app/routers/purchase_request.py b/backend/app/routers/purchase_request.py index 9234f54..39d0d92 100644 --- a/backend/app/routers/purchase_request.py +++ b/backend/app/routers/purchase_request.py @@ -51,9 +51,13 @@ async def create_purchase_request( count = db.execute(count_query, {"pattern": f"PR-{today}%"}).fetchone().count request_no = f"PR-{today}-{str(count + 1).zfill(3)}" - # 자재 데이터를 JSON 파일로 저장 (나중에 재다운로드 시 사용) + # 자재 데이터를 JSON과 엑셀 파일로 저장 json_filename = f"{request_no}.json" + excel_filename = f"{request_no}.xlsx" json_path = os.path.join(EXCEL_DIR, json_filename) + excel_path = os.path.join(EXCEL_DIR, excel_filename) + + # JSON 저장 save_materials_data( request_data.materials_data, json_path, @@ -62,6 +66,14 @@ async def create_purchase_request( request_data.grouped_materials # 그룹화 정보 추가 ) + # 엑셀 파일 생성 및 저장 + create_excel_file( + request_data.grouped_materials or request_data.materials_data, + excel_path, + request_no, + request_data.job_no + ) + # 구매신청 레코드 생성 insert_request = text(""" INSERT INTO purchase_requests ( @@ -79,7 +91,7 @@ async def create_purchase_request( "job_no": request_data.job_no, "category": request_data.category, "material_count": len(request_data.material_ids), - "excel_path": json_filename, + "excel_path": excel_filename, # 엑셀 파일명 저장 (JSON 대신) "requested_by": 1 # current_user.get("user_id") }) request_id = result.fetchone().request_id @@ -276,12 +288,30 @@ async def get_request_materials( m.original_description, m.classified_category, m.size_spec, + m.main_nom, + m.red_nom, m.schedule, m.material_grade, + m.full_material_grade, m.quantity as original_quantity, - m.unit as original_unit + m.unit as original_unit, + m.classification_details, + pd.outer_diameter, pd.schedule as pipe_schedule, pd.material_spec, pd.manufacturing_method, + pd.end_preparation, pd.length_mm, + fd.fitting_type, fd.fitting_subtype, fd.connection_method as fitting_connection, + fd.pressure_rating as fitting_pressure, fd.schedule as fitting_schedule, + fld.flange_type, fld.facing_type, + fld.pressure_rating as flange_pressure, + gd.gasket_type, gd.gasket_subtype, gd.material_type as gasket_material, + gd.filler_material, gd.pressure_rating as gasket_pressure, gd.thickness as gasket_thickness, + bd.bolt_type, bd.material_standard as bolt_material, bd.length as bolt_length FROM purchase_request_items pri JOIN materials m ON pri.material_id = m.id + LEFT JOIN pipe_details pd ON m.id = pd.material_id + LEFT JOIN fitting_details fd ON m.id = fd.material_id + LEFT JOIN flange_details fld ON m.id = fld.material_id + LEFT JOIN gasket_details gd ON m.id = gd.material_id + LEFT JOIN bolt_details bd ON m.id = bd.material_id WHERE pri.request_id = :request_id ORDER BY m.classified_category, m.original_description """) @@ -296,21 +326,69 @@ async def get_request_materials( qty_int = int(float(qty)) if qty else 0 except (ValueError, TypeError): qty_int = 0 - - materials.append({ + + # BOM 페이지와 동일한 형식으로 데이터 구성 + material_dict = { "item_id": row.item_id, "material_id": row.material_id, - "description": row.original_description, - "category": row.classified_category, - "size": row.size_spec, + "id": row.material_id, + "original_description": row.original_description, + "classified_category": row.classified_category, + "size_spec": row.size_spec, + "size_inch": row.main_nom, + "main_nom": row.main_nom, + "red_nom": row.red_nom, "schedule": row.schedule, "material_grade": row.material_grade, - "quantity": qty_int, # 정수로 변환 + "full_material_grade": row.full_material_grade, + "quantity": qty_int, "unit": row.requested_unit or row.original_unit, "user_requirement": row.user_requirement, "is_ordered": row.is_ordered, - "is_received": row.is_received - }) + "is_received": row.is_received, + "classification_details": row.classification_details + } + + # 카테고리별 상세 정보 추가 + if row.classified_category == 'PIPE' and row.manufacturing_method: + material_dict["pipe_details"] = { + "manufacturing_method": row.manufacturing_method, + "schedule": row.pipe_schedule, + "material_spec": row.material_spec, + "end_preparation": row.end_preparation, + "length_mm": row.length_mm + } + elif row.classified_category == 'FITTING' and row.fitting_type: + material_dict["fitting_details"] = { + "fitting_type": row.fitting_type, + "fitting_subtype": row.fitting_subtype, + "connection_method": row.fitting_connection, + "pressure_rating": row.fitting_pressure, + "schedule": row.fitting_schedule + } + elif row.classified_category == 'FLANGE' and row.flange_type: + material_dict["flange_details"] = { + "flange_type": row.flange_type, + "facing_type": row.facing_type, + "pressure_rating": row.flange_pressure + } + elif row.classified_category == 'GASKET' and row.gasket_type: + material_dict["gasket_details"] = { + "gasket_type": row.gasket_type, + "gasket_subtype": row.gasket_subtype, + "material_type": row.gasket_material, + "filler_material": row.filler_material, + "pressure_rating": row.gasket_pressure, + "thickness": row.gasket_thickness + } + elif row.classified_category == 'BOLT' and row.bolt_type: + material_dict["bolt_details"] = { + "bolt_type": row.bolt_type, + "material_standard": row.bolt_material, + "length": row.bolt_length + } + + materials.append(material_dict) return { "success": True, @@ -334,8 +412,10 @@ async def download_request_excel( db: Session = Depends(get_db) ): """ - 구매신청 자재 데이터 조회 (프론트엔드에서 엑셀 생성용) + 구매신청 엑셀 파일 직접 다운로드 (BOM 페이지에서 생성한 파일 그대로) """ + from fastapi.responses import FileResponse + try: # 구매신청 정보 조회 query = text(""" @@ -351,25 +431,20 @@ async def download_request_excel( detail="구매신청을 찾을 수 없습니다" ) - file_path = os.path.join(EXCEL_DIR, result.excel_file_path) + excel_file_path = os.path.join(EXCEL_DIR, result.excel_file_path) - if not os.path.exists(file_path): + if not os.path.exists(excel_file_path): raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, - detail="데이터 파일을 찾을 수 없습니다" + detail="엑셀 파일을 찾을 수 없습니다" ) - # JSON 파일 읽기 - with open(file_path, 'r', encoding='utf-8') as f: - data = json.load(f) - - return { - "success": True, - "request_no": result.request_no, - "job_no": result.job_no, - "materials": data.get("materials", []), - "grouped_materials": data.get("grouped_materials", []) # 그룹화 정보도 반환 - } + # 엑셀 파일 직접 다운로드 + return FileResponse( + path=excel_file_path, + filename=f"{result.job_no}_{result.request_no}.xlsx", + media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + ) except HTTPException: raise @@ -418,3 +493,85 @@ def save_materials_data(materials_data: List[Dict], file_path: str, request_no: with open(file_path, 'w', encoding='utf-8') as f: json.dump(data_to_save, f, ensure_ascii=False, indent=2) + + +def create_excel_file(materials_data: List[Dict], file_path: str, request_no: str, job_no: str): + """ + 자재 데이터로 엑셀 파일 생성 (BOM 페이지와 동일한 형식) + """ + import openpyxl + from openpyxl.styles import Font, PatternFill, Alignment, Border, Side + + # 새 워크북 생성 + wb = openpyxl.Workbook() + wb.remove(wb.active) # 기본 시트 제거 + + # 카테고리별 그룹화 + category_groups = {} + for material in materials_data: + category = material.get('category', 'UNKNOWN') + if category not in category_groups: + category_groups[category] = [] + category_groups[category].append(material) + + # 각 카테고리별 시트 생성 + for category, items in category_groups.items(): + if not items: + continue + + ws = wb.create_sheet(title=category) + + # 헤더 정의 + headers = ['TAGNO', '품목명', '수량', '통화구분', '단가', '크기', '압력등급', '스케줄', + '재질', '상세내역', '사용자요구', '관리항목1', '관리항목7', '관리항목8', + '관리항목9', '관리항목10', '납기일(YYYY-MM-DD)'] + + # 헤더 작성 + for col, header in enumerate(headers, 1): + cell = ws.cell(row=1, column=col, value=header) + cell.font = Font(bold=True, color="000000", size=12, name="맑은 고딕") + cell.fill = PatternFill(start_color="B3D9FF", end_color="B3D9FF", fill_type="solid") + cell.alignment = Alignment(horizontal="center", vertical="center") + cell.border = Border( + top=Side(style="thin", color="666666"), + bottom=Side(style="thin", color="666666"), + left=Side(style="thin", color="666666"), + right=Side(style="thin", color="666666") + ) + + # 데이터 작성 + for row_idx, material in enumerate(items, 2): + data = [ + '', # TAGNO + category, # 품목명 + material.get('quantity', 0), # 수량 + 'KRW', # 통화구분 + 1, # 단가 + material.get('size', '-'), # 크기 + '-', # 압력등급 (추후 개선) + material.get('schedule', '-'), # 스케줄 + material.get('material_grade', '-'), # 재질 + '-', # 상세내역 (추후 개선) + material.get('user_requirement', ''), # 사용자요구 + '', '', '', '', '', # 관리항목들 + datetime.now().strftime('%Y-%m-%d') # 납기일 + ] + + for col, value in enumerate(data, 1): + ws.cell(row=row_idx, column=col, value=value) + + # 컬럼 너비 자동 조정 + for column in ws.columns: + max_length = 0 + column_letter = column[0].column_letter + for cell in column: + try: + if len(str(cell.value)) > max_length: + max_length = len(str(cell.value)) + except: + pass + adjusted_width = min(max(max_length + 2, 10), 50) + ws.column_dimensions[column_letter].width = adjusted_width + + # 파일 저장 + wb.save(file_path) diff --git a/backend/exports/PR-20251014-001.json b/backend/exports/PR-20251014-001.json index f344915..7889920 100644 --- a/backend/exports/PR-20251014-001.json +++ b/backend/exports/PR-20251014-001.json @@ -1,814 +1,44 @@ { "request_no": "PR-20251014-001", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T05:52:12.372051", + "job_no": "테스트용", + "created_at": "2025-10-14T06:47:25.065166", "materials": [ { - "material_id": 1, - "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 3, - "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 143, - "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", - "category": "FITTING", + "material_id": 2013, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", "size": "1\"", - "material_grade": "ASTM A106 B", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 292, - "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 296, - "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 299, - "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 301, - "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": 612, - "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": 613, - "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", - "category": "FITTING", - "size": "2\"", - "material_grade": "ASTM A234 WPB", - "quantity": 25, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 638, - "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", - "category": "FITTING", - "size": "2\"", - "material_grade": "ASTM A403 WP304", + "material_grade": "SS", "quantity": 6, "unit": "EA", "user_requirement": "" }, { - "material_id": 644, - "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", - "category": "FITTING", - "size": "3\"", - "material_grade": "ASTM A234 WPB", - "quantity": 12, + "material_id": 2019, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", + "size": "1/2\"", + "material_grade": "SS", + "quantity": 5, "unit": "EA", "user_requirement": "" }, { - "material_id": 656, - "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": 660, - "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": 667, - "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": 668, - "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": "" - }, - { - "material_id": 675, - "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": 677, - "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", - "category": "FITTING", + "material_id": 2024, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", "size": "2\"", - "material_grade": "ASTM A234 WPB", - "quantity": 4, + "material_grade": "SS", + "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "material_id": 681, - "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", - "category": "FITTING", + "material_id": 2027, + "description": "STRAINER, FLG, 150LB", + "category": "FLANGE", "size": "2\"", - "material_grade": "ASTM A403 WP304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 682, - "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": 683, - "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": 684, - "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": 687, - "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": 689, - "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": 692, - "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": 694, - "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": 699, - "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": 701, - "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": 706, - "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": 707, - "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": 713, - "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": 714, - "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": 715, - "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": 717, - "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": 718, - "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": 719, - "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": 720, - "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": 897, - "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": 899, - "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": 903, - "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": 981, - "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": 1597, - "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": 1599, - "description": "90 ELL, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 57, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1603, - "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": 1607, - "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": 1639, - "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": 1706, - "description": "90 ELL, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A105", - "quantity": 32, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1738, - "description": "90 ELL, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 24, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1762, - "description": "TEE, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1769, - "description": "TEE, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1784, - "description": "TEE, SW, 3000LB, ASTM A182 F304", - "category": "FITTING", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1785, - "description": "TEE, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1787, - "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": 1792, - "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": 1794, - "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": 1800, - "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": 1807, - "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": 1810, - "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": 1816, - "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": 1820, - "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": 1825, - "description": "CAP, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1826, - "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": 1827, - "description": "CAP, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1828, - "description": "CAP, SW, 3000LB, ASTM A182 F304", - "category": "FITTING", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1829, - "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": 1831, - "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": 1832, - "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": 1833, - "description": "CAP, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1834, - "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": 1870, - "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": 1887, - "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": 1888, - "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": 1889, - "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": 1890, - "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": 1892, - "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": 1893, - "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": 1894, - "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": 1903, - "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": 1906, - "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": 1907, - "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": 1908, - "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": 1910, - "description": "SOCK O LET, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "6\" x 3/4\"", - "material_grade": "ASTM A105", + "material_grade": "-", "quantity": 1, "unit": "EA", "user_requirement": "" @@ -816,1018 +46,53 @@ ], "grouped_materials": [ { - "group_key": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT|1/2\"|undefined|ASTM A312 TP304", + "group_key": "SIGHT GLASS, FLG, 150LB|1\"|undefined|SS", "material_ids": [ - 1, - 3 + 2013 ], - "description": "HALF NIPPLE, SMLS, SCH 80S, ASTM A312 TP304 SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A312 TP304", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT|1\"|undefined|ASTM A106 B", - "material_ids": [ - 143 - ], - "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW * NPT", - "category": "FITTING", + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", "size": "1\"", - "material_grade": "ASTM A106 B", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT|1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 292, - 296, - 299 - ], - "description": "HALF NIPPLE, SMLS, SCH 160, ASTM A106 B SW X NPT", - "category": "FITTING", - "size": "1/2\"", - "material_grade": "ASTM A106 B", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "NIPPLE, SMLS, SCH 160, ASTM A106 B|1/2\"|undefined|ASTM A106 B", - "material_ids": [ - 301 - ], - "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": [ - 612 - ], - "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": [ - 613 - ], - "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", - "category": "FITTING", - "size": "2\"", - "material_grade": "ASTM A234 WPB", - "quantity": 25, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", - "material_ids": [ - 638 - ], - "description": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304", - "category": "FITTING", - "size": "2\"", - "material_grade": "ASTM A403 WP304", + "material_grade": "SS", "quantity": 6, "unit": "EA", "user_requirement": "" }, { - "group_key": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB|3\"|undefined|ASTM A234 WPB", + "group_key": "SIGHT GLASS, FLG, 150LB|1/2\"|undefined|SS", "material_ids": [ - 644 + 2019 ], - "description": "90 LR ELL, SMLS, SCH 40, ASTM A234 WPB", - "category": "FITTING", - "size": "3\"", - "material_grade": "ASTM A234 WPB", - "quantity": 12, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", + "size": "1/2\"", + "material_grade": "SS", + "quantity": 5, "unit": "EA", "user_requirement": "" }, { - "group_key": "90 LR ELL, SMLS, SCH 40S, ASTM A403 WP304|3\"|undefined|ASTM A403 WP304", + "group_key": "SIGHT GLASS, FLG, 150LB|2\"|undefined|SS", "material_ids": [ - 656 + 2024 ], - "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": [ - 660 - ], - "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": [ - 667 - ], - "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": [ - 668 - ], - "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": [ - 675 - ], - "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": [ - 677 - ], - "description": "TEE, SMLS, SCH 40, ASTM A234 WPB", - "category": "FITTING", + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", "size": "2\"", - "material_grade": "ASTM A234 WPB", - "quantity": 4, + "material_grade": "SS", + "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "group_key": "TEE, SMLS, SCH 40S, ASTM A403 WP304|2\"|undefined|ASTM A403 WP304", + "group_key": "STRAINER, FLG, 150LB|2\"|undefined|-", "material_ids": [ - 681 + 2027 ], - "description": "TEE, SMLS, SCH 40S, ASTM A403 WP304", - "category": "FITTING", + "description": "STRAINER, FLG, 150LB", + "category": "FLANGE", "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": [ - 682 - ], - "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": [ - 683 - ], - "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": [ - 684 - ], - "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": [ - 687 - ], - "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": [ - 689 - ], - "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": [ - 692 - ], - "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": [ - 694 - ], - "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": [ - 699 - ], - "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": [ - 701 - ], - "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": [ - 706 - ], - "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": [ - 707 - ], - "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": [ - 713 - ], - "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": [ - 714 - ], - "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": [ - 715 - ], - "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": [ - 717 - ], - "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": [ - 718 - ], - "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": [ - 719 - ], - "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": [ - 720 - ], - "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": [ - 897 - ], - "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": [ - 899 - ], - "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": [ - 903 - ], - "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": [ - 981 - ], - "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": [ - 1597 - ], - "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": [ - 1599 - ], - "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": [ - 1603 - ], - "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": [ - 1607 - ], - "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": [ - 1639 - ], - "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": [ - 1706 - ], - "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": [ - 1738 - ], - "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": [ - 1762 - ], - "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": [ - 1769 - ], - "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": [ - 1784 - ], - "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": [ - 1785 - ], - "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": [ - 1787 - ], - "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": [ - 1792 - ], - "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": [ - 1794 - ], - "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": [ - 1800 - ], - "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": [ - 1807 - ], - "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": [ - 1810 - ], - "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": [ - 1816 - ], - "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": [ - 1820 - ], - "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": [ - 1825 - ], - "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": [ - 1826 - ], - "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": [ - 1827 - ], - "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": [ - 1828 - ], - "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": [ - 1829 - ], - "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": [ - 1831 - ], - "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": [ - 1832 - ], - "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": [ - 1833 - ], - "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": [ - 1834 - ], - "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": [ - 1870 - ], - "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": [ - 1887 - ], - "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": [ - 1888 - ], - "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": [ - 1889 - ], - "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": [ - 1890 - ], - "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": [ - 1892 - ], - "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": [ - 1893 - ], - "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": [ - 1894 - ], - "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": [ - 1903 - ], - "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": [ - 1906 - ], - "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": [ - 1907 - ], - "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": [ - 1908 - ], - "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": [ - 1910 - ], - "description": "SOCK O LET, SW, 3000LB, ASTM A105", - "category": "FITTING", - "size": "6\" x 3/4\"", - "material_grade": "ASTM A105", + "material_grade": "-", "quantity": 1, "unit": "EA", "user_requirement": "" diff --git a/backend/exports/PR-20251014-002.json b/backend/exports/PR-20251014-002.json index 079a90f..32ff32a 100644 --- a/backend/exports/PR-20251014-002.json +++ b/backend/exports/PR-20251014-002.json @@ -1,745 +1,101 @@ { "request_no": "PR-20251014-002", "job_no": "TKG-25000P", - "created_at": "2025-10-14T06:14:58.376128", + "created_at": "2025-10-14T06:54:44.585437", "materials": [ { - "material_id": 1075, - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", + "material_id": 5552, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1079, - "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": "" - }, - { - "material_id": 1083, - "description": "(4) 0.625, 100 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1085, - "description": "(4) 0.75, 105 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1086, - "description": "(8) 0.75, 125 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1087, - "description": "(8) 0.75, 140 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1088, - "description": "(4) 0.5, 65 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 36, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1124, - "description": "(4) 0.5, 65 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "1/2\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1131, - "description": "(4) 0.5, 70 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 11, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1142, - "description": "(4) 0.5, 70 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1193, - "description": "(4) 0.5, 75 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1226, - "description": "(4) 0.5, 80 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1234, - "description": "(4) 0.5, 90 LG, 150LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1239, - "description": "(4) 0.5, 95 LG, 150LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1247, - "description": "(4) 0.75, 120 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1252, - "description": "(4) 0.75, 125 LG, 300LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1254, - "description": "(8) 0.75, 115 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "6\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1259, - "description": "(8) 0.75, 120 LG, 150LB, WOOD OR, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "6\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1261, - "description": "(8) 0.75, 120 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1263, - "description": "(8) 0.75, 140 CK, 600LB, PSV, ASTM A320M/A194M GR B8/8", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A320M/A194M GR B8/8", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1267, - "description": "(8) 0.75, 145 LG, 600LB, WOOD OR, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1268, - "description": "(4) 0.625, 100 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1275, - "description": "(4) 0.625, 100 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A320/A194M GR B8/8", + "material_grade": "SS", "quantity": 6, "unit": "EA", "user_requirement": "" }, { - "material_id": 1283, - "description": "(4) 0.625, 100 LG, 600LB, ASTM A320M/A194M GR B8/8", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A320M/A194M GR B8/8", - "quantity": 1, + "material_id": 5558, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", + "size": "1/2\"", + "material_grade": "SS", + "quantity": 5, "unit": "EA", "user_requirement": "" }, { - "material_id": 1284, - "description": "(4) 0.625, 105 LG, 600LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", + "material_id": 5563, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", + "size": "2\"", + "material_grade": "SS", "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "material_id": 1286, - "description": "(4) 0.625, 90 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", + "material_id": 5566, + "description": "STRAINER, FLG, 150LB", + "category": "FLANGE", "size": "2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 25, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1311, - "description": "(4) 0.625, 90 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "2\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1317, - "description": "(4) 0.625, 95 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1319, - "description": "(4) 0.625, 95 LG, 600LB, ASTM A320M/A194M GR B8/8", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A320M/A194M GR B8/8", + "material_grade": "-", "quantity": 1, "unit": "EA", "user_requirement": "" - }, - { - "material_id": 1320, - "description": "(8) 0.625, 95 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1321, - "description": "(12) 0.875, 130 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "10\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1322, - "description": "(12) 0.875, 140 LG, 150LB, TS, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "10\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 2, - "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", + "group_key": "SIGHT GLASS, FLG, 150LB|1\"|undefined|SS", "material_ids": [ - 1075 + 5552 ], - "description": "(4) 0.5, 75 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 51, - "unit": "EA", - "user_requirement": "" - }, - { - "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": [ - 1079 - ], - "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": "" - }, - { - "group_key": "(4) 0.625, 100 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1083 - ], - "description": "(4) 0.625, 100 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.75, 105 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1 1/2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1085 - ], - "description": "(4) 0.75, 105 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 125 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|4\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1086 - ], - "description": "(8) 0.75, 125 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 140 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|3\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1087 - ], - "description": "(8) 0.75, 140 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 65 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1/2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1088 - ], - "description": "(4) 0.5, 65 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 36, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 65 LG, 150LB, ASTM A320/A194M GR B8/8|1/2\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1124 - ], - "description": "(4) 0.5, 65 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "1/2\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 70 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|3/4\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1131 - ], - "description": "(4) 0.5, 70 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 11, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 70 LG, 150LB, ASTM A320/A194M GR B8/8|3/4\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1142 - ], - "description": "(4) 0.5, 70 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 4, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 75 LG, 150LB, ASTM A320/A194M GR B8/8|1\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1193 - ], - "description": "(4) 0.5, 75 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 80 LG, 150LB, ASTM A320/A194M GR B8/8|1 1/2\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1226 - ], - "description": "(4) 0.5, 80 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 90 LG, 150LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV|3/4\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1234 - ], - "description": "(4) 0.5, 90 LG, 150LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.5, 95 LG, 150LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV|1 1/2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1239 - ], - "description": "(4) 0.5, 95 LG, 150LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.75, 120 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|1 1/2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1247 - ], - "description": "(4) 0.75, 120 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.75, 125 LG, 300LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV|1 1/2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1252 - ], - "description": "(4) 0.75, 125 LG, 300LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "1 1/2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 115 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|6\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1254 - ], - "description": "(8) 0.75, 115 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "6\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 120 LG, 150LB, WOOD OR, ASTM A193/A194 GR B7/2H, ELEC.GALV|6\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1259 - ], - "description": "(8) 0.75, 120 LG, 150LB, WOOD OR, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "6\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 120 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|3\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1261 - ], - "description": "(8) 0.75, 120 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 140 CK, 600LB, PSV, ASTM A320M/A194M GR B8/8|3\"|undefined|ASTM A320M/A194M GR B8/8", - "material_ids": [ - 1263 - ], - "description": "(8) 0.75, 140 CK, 600LB, PSV, ASTM A320M/A194M GR B8/8", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A320M/A194M GR B8/8", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(8) 0.75, 145 LG, 600LB, WOOD OR, ASTM A193/A194 GR B7/2H, ELEC.GALV|3\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1267 - ], - "description": "(8) 0.75, 145 LG, 600LB, WOOD OR, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.625, 100 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|3\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1268 - ], - "description": "(4) 0.625, 100 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.625, 100 LG, 150LB, ASTM A320/A194M GR B8/8|3\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1275 - ], - "description": "(4) 0.625, 100 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "3\"", - "material_grade": "ASTM A320/A194M GR B8/8", + "material_grade": "SS", "quantity": 6, "unit": "EA", "user_requirement": "" }, { - "group_key": "(4) 0.625, 100 LG, 600LB, ASTM A320M/A194M GR B8/8|1\"|undefined|ASTM A320M/A194M GR B8/8", + "group_key": "SIGHT GLASS, FLG, 150LB|1/2\"|undefined|SS", "material_ids": [ - 1283 + 5558 ], - "description": "(4) 0.625, 100 LG, 600LB, ASTM A320M/A194M GR B8/8", - "category": "BOLT", - "size": "1\"", - "material_grade": "ASTM A320M/A194M GR B8/8", - "quantity": 1, + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", + "size": "1/2\"", + "material_grade": "SS", + "quantity": 5, "unit": "EA", "user_requirement": "" }, { - "group_key": "(4) 0.625, 105 LG, 600LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV|3/4\"|undefined|ASTM A193/A194 GR B7/2H", + "group_key": "SIGHT GLASS, FLG, 150LB|2\"|undefined|SS", "material_ids": [ - 1284 + 5563 ], - "description": "(4) 0.625, 105 LG, 600LB, PSV, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", + "description": "SIGHT GLASS, FLG, 150LB", + "category": "FLANGE", + "size": "2\"", + "material_grade": "SS", "quantity": 2, "unit": "EA", "user_requirement": "" }, { - "group_key": "(4) 0.625, 90 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|2\"|undefined|ASTM A193/A194 GR B7/2H", + "group_key": "STRAINER, FLG, 150LB|2\"|undefined|-", "material_ids": [ - 1286 + 5566 ], - "description": "(4) 0.625, 90 LG, 150LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", + "description": "STRAINER, FLG, 150LB", + "category": "FLANGE", "size": "2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 25, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.625, 90 LG, 150LB, ASTM A320/A194M GR B8/8|2\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1311 - ], - "description": "(4) 0.625, 90 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "2\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.625, 95 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|3/4\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1317 - ], - "description": "(4) 0.625, 95 LG, 600LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(4) 0.625, 95 LG, 600LB, ASTM A320M/A194M GR B8/8|3/4\"|undefined|ASTM A320M/A194M GR B8/8", - "material_ids": [ - 1319 - ], - "description": "(4) 0.625, 95 LG, 600LB, ASTM A320M/A194M GR B8/8", - "category": "BOLT", - "size": "3/4\"", - "material_grade": "ASTM A320M/A194M GR B8/8", + "material_grade": "-", "quantity": 1, "unit": "EA", "user_requirement": "" - }, - { - "group_key": "(8) 0.625, 95 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV|2\"|undefined|ASTM A193/A194 GR B7/2H", - "material_ids": [ - 1320 - ], - "description": "(8) 0.625, 95 LG, 300LB, ASTM A193/A194 GR B7/2H, ELEC.GALV", - "category": "BOLT", - "size": "2\"", - "material_grade": "ASTM A193/A194 GR B7/2H", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(12) 0.875, 130 LG, 150LB, ASTM A320/A194M GR B8/8|10\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1321 - ], - "description": "(12) 0.875, 130 LG, 150LB, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "10\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "(12) 0.875, 140 LG, 150LB, TS, ASTM A320/A194M GR B8/8|10\"|undefined|ASTM A320/A194M GR B8/8", - "material_ids": [ - 1322 - ], - "description": "(12) 0.875, 140 LG, 150LB, TS, ASTM A320/A194M GR B8/8", - "category": "BOLT", - "size": "10\"", - "material_grade": "ASTM A320/A194M GR B8/8", - "quantity": 2, - "unit": "EA", - "user_requirement": "" } ] } \ No newline at end of file diff --git a/backend/exports/PR-20251014-003.json b/backend/exports/PR-20251014-003.json deleted file mode 100644 index eac24cc..0000000 --- a/backend/exports/PR-20251014-003.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "request_no": "PR-20251014-003", - "job_no": "TKG-25000P", - "created_at": "2025-10-14T06:15:45.368700", - "materials": [ - { - "material_id": 723, - "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": 728, - "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": "" - }, - { - "material_id": 729, - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 36, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 765, - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 771, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 779, - "description": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 784, - "description": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 786, - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 12, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 798, - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 803, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 812, - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "4\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 815, - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "6\"", - "material_grade": "ASTM A105", - "quantity": 10, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 825, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 837, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 841, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 842, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 66, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 846, - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 848, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 856, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 40, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 892, - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 913, - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 986, - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 991, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A105", - "quantity": 57, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1048, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1055, - "description": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1056, - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1068, - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1070, - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1874, - "description": "ORIFICE, 150LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1876, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1878, - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "3\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1879, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "4\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1881, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1882, - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1883, - "description": "WOOD ORIFICE, 150LB", - "category": "FLANGE", - "size": "6\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 1885, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "8\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 2013, - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1\"", - "material_grade": "SS", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 2019, - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "SS", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 2024, - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "SS", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 2027, - "description": "STRAINER, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "-", - "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": [ - 723 - ], - "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": [ - 728 - ], - "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": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105|2\"|undefined|ASTM A105", - "material_ids": [ - 729 - ], - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 36, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105|2\"|undefined|ASTM A105", - "material_ids": [ - 765 - ], - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|2\"|undefined|ASTM A182 F304", - "material_ids": [ - 771 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105|3\"|undefined|ASTM A105", - "material_ids": [ - 779 - ], - "description": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304|3\"|undefined|ASTM A182 F304", - "material_ids": [ - 784 - ], - "description": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105|3\"|undefined|ASTM A105", - "material_ids": [ - 786 - ], - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 12, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105|3\"|undefined|ASTM A105", - "material_ids": [ - 798 - ], - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|3\"|undefined|ASTM A182 F304", - "material_ids": [ - 803 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105|4\"|undefined|ASTM A105", - "material_ids": [ - 812 - ], - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "4\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105|6\"|undefined|ASTM A105", - "material_ids": [ - 815 - ], - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "6\"", - "material_grade": "ASTM A105", - "quantity": 10, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", - "material_ids": [ - 825 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|3/4\"|undefined|ASTM A105", - "material_ids": [ - 837 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", - "material_ids": [ - 841 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|1\"|undefined|ASTM A105", - "material_ids": [ - 842 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 66, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 600LB, ASTM A105|1\"|undefined|ASTM A105", - "material_ids": [ - 846 - ], - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1 1/2\"|undefined|ASTM A182 F304", - "material_ids": [ - 848 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|1 1/2\"|undefined|ASTM A105", - "material_ids": [ - 856 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 40, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 600LB, ASTM A105|1 1/2\"|undefined|ASTM A105", - "material_ids": [ - 892 - ], - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", - "material_ids": [ - 913 - ], - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 300LB, ASTM A105|1 1/2\"|undefined|ASTM A105", - "material_ids": [ - 986 - ], - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|1/2\"|undefined|ASTM A105", - "material_ids": [ - 991 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A105", - "quantity": 57, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", - "material_ids": [ - 1048 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", - "material_ids": [ - 1055 - ], - "description": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", - "material_ids": [ - 1056 - ], - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 300LB, ASTM A105|3/4\"|undefined|ASTM A105", - "material_ids": [ - 1068 - ], - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 600LB, ASTM A105|3/4\"|undefined|ASTM A105", - "material_ids": [ - 1070 - ], - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "ORIFICE, 150LB|10\"|undefined|-", - "material_ids": [ - 1874 - ], - "description": "ORIFICE, 150LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|10\"|undefined|-", - "material_ids": [ - 1876 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 600LB|3\"|undefined|-", - "material_ids": [ - 1878 - ], - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "3\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|4\"|undefined|-", - "material_ids": [ - 1879 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "4\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|5\"|undefined|-", - "material_ids": [ - 1881 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 600LB|5\"|undefined|-", - "material_ids": [ - 1882 - ], - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 150LB|6\"|undefined|-", - "material_ids": [ - 1883 - ], - "description": "WOOD ORIFICE, 150LB", - "category": "FLANGE", - "size": "6\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|8\"|undefined|-", - "material_ids": [ - 1885 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "8\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SIGHT GLASS, FLG, 150LB|1\"|undefined|SS", - "material_ids": [ - 2013 - ], - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1\"", - "material_grade": "SS", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SIGHT GLASS, FLG, 150LB|1/2\"|undefined|SS", - "material_ids": [ - 2019 - ], - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "SS", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SIGHT GLASS, FLG, 150LB|2\"|undefined|SS", - "material_ids": [ - 2024 - ], - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "SS", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "STRAINER, FLG, 150LB|2\"|undefined|-", - "material_ids": [ - 2027 - ], - "description": "STRAINER, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - } - ] -} \ No newline at end of file diff --git a/backend/exports/PR-20251014-004.json b/backend/exports/PR-20251014-004.json deleted file mode 100644 index 9ac8d03..0000000 --- a/backend/exports/PR-20251014-004.json +++ /dev/null @@ -1,929 +0,0 @@ -{ - "request_no": "PR-20251014-004", - "job_no": "TK-MP-DEV-001", - "created_at": "2025-10-14T06:20:42.821334", - "materials": [ - { - "material_id": 4262, - "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": 4267, - "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": "" - }, - { - "material_id": 4268, - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 36, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4304, - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4310, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4318, - "description": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4323, - "description": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4325, - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 12, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4337, - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4342, - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4351, - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "4\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4354, - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "6\"", - "material_grade": "ASTM A105", - "quantity": 10, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4364, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4376, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4380, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4381, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 66, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4385, - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4387, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4395, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 40, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4431, - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4452, - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4525, - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4530, - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A105", - "quantity": 57, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4587, - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4594, - "description": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4595, - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4607, - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 4609, - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5413, - "description": "ORIFICE, 150LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5415, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5417, - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "3\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5418, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "4\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5420, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5421, - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5422, - "description": "WOOD ORIFICE, 150LB", - "category": "FLANGE", - "size": "6\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5424, - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "8\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5552, - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1\"", - "material_grade": "SS", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5558, - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "SS", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5563, - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "SS", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5566, - "description": "STRAINER, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "-", - "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": [ - 4262 - ], - "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": [ - 4267 - ], - "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": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105|2\"|undefined|ASTM A105", - "material_ids": [ - 4268 - ], - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 36, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105|2\"|undefined|ASTM A105", - "material_ids": [ - 4304 - ], - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|2\"|undefined|ASTM A182 F304", - "material_ids": [ - 4310 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "2\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105|3\"|undefined|ASTM A105", - "material_ids": [ - 4318 - ], - "description": "FLG WELD NECK RF SCH 40, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304|3\"|undefined|ASTM A182 F304", - "material_ids": [ - 4323 - ], - "description": "FLG WELD NECK RF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105|3\"|undefined|ASTM A105", - "material_ids": [ - 4325 - ], - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 12, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105|3\"|undefined|ASTM A105", - "material_ids": [ - 4337 - ], - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304|3\"|undefined|ASTM A182 F304", - "material_ids": [ - 4342 - ], - "description": "FLG WELD NECK RF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105|4\"|undefined|ASTM A105", - "material_ids": [ - 4351 - ], - "description": "FLG WELD NECK RF SCH 40, 300LB, ASTM A105", - "category": "FLANGE", - "size": "4\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105|6\"|undefined|ASTM A105", - "material_ids": [ - 4354 - ], - "description": "FLG WELD NECK RF SCH 40, 150LB, ASTM A105", - "category": "FLANGE", - "size": "6\"", - "material_grade": "ASTM A105", - "quantity": 10, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1/2\"|undefined|ASTM A182 F304", - "material_ids": [ - 4364 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 14, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|3/4\"|undefined|ASTM A105", - "material_ids": [ - 4376 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 15, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", - "material_ids": [ - 4380 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 9, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|1\"|undefined|ASTM A105", - "material_ids": [ - 4381 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 66, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 600LB, ASTM A105|1\"|undefined|ASTM A105", - "material_ids": [ - 4385 - ], - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A105", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|1 1/2\"|undefined|ASTM A182 F304", - "material_ids": [ - 4387 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A182 F304", - "quantity": 8, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|1 1/2\"|undefined|ASTM A105", - "material_ids": [ - 4395 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 40, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 600LB, ASTM A105|1 1/2\"|undefined|ASTM A105", - "material_ids": [ - 4431 - ], - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304|1\"|undefined|ASTM A182 F304", - "material_ids": [ - 4452 - ], - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "1\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 300LB, ASTM A105|1 1/2\"|undefined|ASTM A105", - "material_ids": [ - 4525 - ], - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "1 1/2\"", - "material_grade": "ASTM A105", - "quantity": 3, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 150LB, ASTM A105|1/2\"|undefined|ASTM A105", - "material_ids": [ - 4530 - ], - "description": "FLG SWRF SCH 80, 150LB, ASTM A105", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "ASTM A105", - "quantity": 57, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", - "material_ids": [ - 4587 - ], - "description": "FLG SWRF SCH 40S, 150LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 7, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", - "material_ids": [ - 4594 - ], - "description": "FLG SWRF SCH 40S, 300LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304|3/4\"|undefined|ASTM A182 F304", - "material_ids": [ - 4595 - ], - "description": "FLG SWRF SCH 40S, 600LB, ASTM A182 F304", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A182 F304", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 300LB, ASTM A105|3/4\"|undefined|ASTM A105", - "material_ids": [ - 4607 - ], - "description": "FLG SWRF SCH 80, 300LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "FLG SWRF SCH 80, 600LB, ASTM A105|3/4\"|undefined|ASTM A105", - "material_ids": [ - 4609 - ], - "description": "FLG SWRF SCH 80, 600LB, ASTM A105", - "category": "FLANGE", - "size": "3/4\"", - "material_grade": "ASTM A105", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "ORIFICE, 150LB|10\"|undefined|-", - "material_ids": [ - 5413 - ], - "description": "ORIFICE, 150LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|10\"|undefined|-", - "material_ids": [ - 5415 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "10\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 600LB|3\"|undefined|-", - "material_ids": [ - 5417 - ], - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "3\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|4\"|undefined|-", - "material_ids": [ - 5418 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "4\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|5\"|undefined|-", - "material_ids": [ - 5420 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 600LB|5\"|undefined|-", - "material_ids": [ - 5421 - ], - "description": "WOOD ORIFICE, 600LB", - "category": "FLANGE", - "size": "5\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 150LB|6\"|undefined|-", - "material_ids": [ - 5422 - ], - "description": "WOOD ORIFICE, 150LB", - "category": "FLANGE", - "size": "6\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "WOOD ORIFICE, 300LB|8\"|undefined|-", - "material_ids": [ - 5424 - ], - "description": "WOOD ORIFICE, 300LB", - "category": "FLANGE", - "size": "8\"", - "material_grade": "-", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SIGHT GLASS, FLG, 150LB|1\"|undefined|SS", - "material_ids": [ - 5552 - ], - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1\"", - "material_grade": "SS", - "quantity": 6, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SIGHT GLASS, FLG, 150LB|1/2\"|undefined|SS", - "material_ids": [ - 5558 - ], - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "1/2\"", - "material_grade": "SS", - "quantity": 5, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "SIGHT GLASS, FLG, 150LB|2\"|undefined|SS", - "material_ids": [ - 5563 - ], - "description": "SIGHT GLASS, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "SS", - "quantity": 2, - "unit": "EA", - "user_requirement": "" - }, - { - "group_key": "STRAINER, FLG, 150LB|2\"|undefined|-", - "material_ids": [ - 5566 - ], - "description": "STRAINER, FLG, 150LB", - "category": "FLANGE", - "size": "2\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "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 a702aba..0000000 --- a/backend/exports/PR-20251014-005.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "request_no": "PR-20251014-005", - "job_no": "TK-MP-DEV-001", - "created_at": "2025-10-14T06:23:18.137603", - "materials": [ - { - "material_id": 5450, - "description": "ON/OFF VALVE, FLG, 600LB", - "category": "VALVE", - "size": "1\"", - "material_grade": "-", - "quantity": 1, - "unit": "EA", - "user_requirement": "" - }, - { - "material_id": 5451, - "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": [ - 5450 - ], - "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": [ - 5451 - ], - "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/frontend/src/pages/NewMaterialsPage.jsx b/frontend/src/pages/NewMaterialsPage.jsx index df3754a..2b027a6 100644 --- a/frontend/src/pages/NewMaterialsPage.jsx +++ b/frontend/src/pages/NewMaterialsPage.jsx @@ -1382,6 +1382,20 @@ const NewMaterialsPage = ({ user_requirement: userRequirements[material.id] || '' })); + // 1단계: 엑셀 파일 생성 + const timestamp = new Date().toISOString().split('T')[0]; + const fileName = `${jobNo}_${selectedCategory}_${timestamp}.xlsx`; + + // BOM 페이지에서 사용하는 엑셀 내보내기 함수 사용 + await exportCategoryToExcel( + selectedCategory, + dataWithRequirements, + jobNo, + fileName, + userRequirements + ); + + // 2단계: 생성된 엑셀을 서버에 업로드 (구매신청과 함께) // 서버에 구매신청 생성 try { // 그룹화된 데이터를 구매신청 형식으로 변환 @@ -1472,9 +1486,9 @@ const NewMaterialsPage = ({ uploadDate: new Date().toLocaleDateString() }; - const fileName = `${selectedCategory}_${jobNo || 'export'}_${new Date().toISOString().split('T')[0]}.xlsx`; + const excelFileName = `${selectedCategory}_${jobNo || 'export'}_${new Date().toISOString().split('T')[0]}.xlsx`; - exportMaterialsToExcel(dataWithRequirements, fileName, additionalInfo); + exportMaterialsToExcel(dataWithRequirements, excelFileName, additionalInfo); console.log('✅ 엑셀 내보내기 성공'); } catch (error) { diff --git a/frontend/src/pages/PurchaseRequestPage.jsx b/frontend/src/pages/PurchaseRequestPage.jsx index ffd6c1d..abe4269 100644 --- a/frontend/src/pages/PurchaseRequestPage.jsx +++ b/frontend/src/pages/PurchaseRequestPage.jsx @@ -54,81 +54,27 @@ const PurchaseRequestPage = ({ onNavigate, fileId, jobNo, selectedProject }) => const handleDownloadExcel = async (requestId, requestNo) => { try { console.log('📥 엑셀 다운로드 시작:', requestId, requestNo); - // 서버에서 자재 데이터 가져오기 - const response = await api.get(`/purchase-request/${requestId}/download-excel`); - console.log('📦 서버 응답:', response.data); - if (response.data.success) { - const materials = response.data.materials; - const groupedMaterials = response.data.grouped_materials || []; - const jobNo = response.data.job_no; - - console.log('📊 materials:', materials.length, '개'); - console.log('📊 groupedMaterials:', groupedMaterials.length, '개'); - - // 사용자 요구사항 매핑 - const userRequirements = {}; - materials.forEach(material => { - if (material.user_requirement) { - userRequirements[material.material_id || material.id] = material.user_requirement; - } - }); - - // 개별 자재 사용 (BOM 페이지와 동일하게) - // groupedMaterials는 일부 자재가 누락될 수 있으므로 materials 사용 - const dataToExport = materials; - - // 파일명 생성 - const timestamp = new Date().toISOString().split('T')[0]; - const fileName = `${jobNo}_${requestNo}_${timestamp}.xlsx`; - - console.log('📄 내보낼 데이터:', dataToExport.length, '개'); - console.log('📄 첫 번째 자재:', dataToExport[0]); - - // materials 데이터를 BOM 형식으로 변환 - const materialsForExport = materials.map(m => { - // description에서 품목명 추출 (NIPPLE, ELBOW, TEE 등) - const desc = m.description || ''; - const category = m.category || 'UNKNOWN'; - - return { - ...m, - classified_category: category, - original_description: desc, - size_spec: m.size, - size_inch: m.size, - material_grade: m.material_grade, - full_material_grade: m.material_grade, - schedule: m.schedule, - quantity: m.quantity, - unit: m.unit, - // FITTING의 경우 타입 정보 추가 - fitting_details: category === 'FITTING' ? { - fitting_type: desc.includes('NIPPLE') ? 'NIPPLE' : - desc.includes('ELBOW') ? 'ELBOW' : - desc.includes('TEE') ? 'TEE' : - desc.includes('REDUCER') ? 'REDUCER' : - desc.includes('CAP') ? 'CAP' : - desc.includes('PLUG') ? 'PLUG' : - desc.includes('COUPLING') ? 'COUPLING' : 'FITTING' - } : undefined - }; - }); - - console.log('🔄 BOM 형식으로 변환 완료:', materialsForExport.length, '개'); - - // 기존 엑셀 유틸리티 사용 - exportMaterialsToExcel(materialsForExport, fileName, { - jobNo, - requestNo, - userRequirements - }); - - console.log('✅ 엑셀 내보내기 완료'); - } else { - console.error('❌ 서버 응답 실패:', response.data); - alert('데이터를 가져올 수 없습니다'); - } + // 서버에서 생성된 엑셀 파일 직접 다운로드 (BOM 페이지와 동일한 파일) + const response = await api.get(`/purchase-request/${requestId}/download-excel`, { + responseType: 'blob' // 파일 다운로드용 + }); + + // 파일 다운로드 처리 + const blob = new Blob([response.data], { + type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + }); + + const url = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = `${requestNo}_재다운로드.xlsx`; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(url); + + console.log('✅ 엑셀 파일 다운로드 완료'); } catch (error) { console.error('❌ 엑셀 다운로드 실패:', error); alert('엑셀 다운로드 실패: ' + error.message); diff --git a/frontend/src/utils/excelExport.js b/frontend/src/utils/excelExport.js index 94af793..87fa7b9 100644 --- a/frontend/src/utils/excelExport.js +++ b/frontend/src/utils/excelExport.js @@ -150,66 +150,43 @@ const formatMaterialForExcel = (material, includeComparison = false) => { // 구매 수량 계산 const purchaseInfo = calculatePurchaseQuantity(material); - // 품목명 생성 (카테고리별 상세 처리) + // 변수 선언 (먼저 선언) let itemName = ''; + let detailInfo = ''; + let gasketMaterial = ''; + let gasketThickness = ''; if (category === 'PIPE') { itemName = material.pipe_details?.manufacturing_method || 'PIPE'; } else if (category === 'FITTING') { itemName = material.fitting_details?.fitting_type || 'FITTING'; } else if (category === 'FLANGE') { - // 플랜지 타입 추출 - const desc = cleanDescription.toUpperCase(); - console.log('🔍 FLANGE 품목명 추출:', cleanDescription); + // 플랜지는 품목명만 간단하게 (상세내역에 타입 정보) + itemName = 'FLANGE'; - if (material.flange_details) { - console.log(' flange_details:', material.flange_details); - const flangeType = material.flange_details.flange_type || ''; - const originalFlangeType = material.flange_details.original_flange_type || ''; - const facingType = material.flange_details.facing_type || ''; - - // 특수 플랜지 타입 우선 - if (desc.includes('ORIFICE')) { - itemName = 'ORIFICE FLANGE'; - } else if (desc.includes('SPECTACLE')) { - itemName = 'SPECTACLE BLIND'; - } else if (desc.includes('PADDLE')) { - itemName = 'PADDLE BLIND'; - } else if (desc.includes('SPACER')) { - itemName = 'SPACER'; - } else if (desc.includes('BLIND')) { - itemName = 'BLIND FLANGE'; - } else { - // 일반 플랜지: flange_type 사용 (WN RF, SO RF 등) - itemName = flangeType || 'FLANGE'; - } + // 특수 플랜지는 구분 + const desc = cleanDescription.toUpperCase(); + if (desc.includes('ORIFICE')) { + itemName = 'ORIFICE FLANGE'; + } else if (desc.includes('SPECTACLE')) { + itemName = 'SPECTACLE BLIND'; + } else if (desc.includes('PADDLE')) { + itemName = 'PADDLE BLIND'; + } else if (desc.includes('SPACER')) { + itemName = 'SPACER'; + } else if (desc.includes('BLIND')) { + itemName = 'BLIND FLANGE'; + } + + // 상세내역에 플랜지 타입 정보 저장 (줄임말 사용) + if (material.flange_details && material.flange_details.flange_type) { + detailInfo = material.flange_details.flange_type; // WN RF, SO RF 등 } else { - console.log(' flange_details 없음, description에서 추출'); - // flange_details가 없으면 description에서 추출 - if (desc.includes('ORIFICE')) { - itemName = 'ORIFICE FLANGE'; - } else if (desc.includes('SPECTACLE') || desc.includes('SPEC')) { - itemName = 'SPECTACLE BLIND'; - } else if (desc.includes('PADDLE')) { - itemName = 'PADDLE BLIND'; - } else if (desc.includes('SPACER')) { - itemName = 'SPACER'; - } else if (desc.includes('BLIND')) { - itemName = 'BLIND FLANGE'; - } else if (desc.includes(' SW') || desc.includes(',SW') || desc.includes(', SW')) { - itemName = 'FLANGE SW'; - } else if (desc.includes(' BW') || desc.includes(',BW') || desc.includes(', BW')) { - itemName = 'FLANGE BW'; - } else if (desc.includes('RTJ')) { - itemName = 'FLANGE RTJ'; - } else if (desc.includes(' FF') || desc.includes('FULL FACE')) { - itemName = 'FLANGE FF'; - } else if (desc.includes(' RF') || desc.includes('RAISED')) { - itemName = 'FLANGE RF'; - } else { - itemName = 'FLANGE'; + // description에서 추출 (전체 이름 그대로 사용) + const flangeTypeMatch = cleanDescription.match(/FLG\s+([^,]+?)(?=\s*SCH|\s*,\s*\d+LB|$)/i); + if (flangeTypeMatch) { + detailInfo = flangeTypeMatch[1].trim(); // WELD NECK RF 등 그대로 } } - console.log(' → 품목명:', itemName); } else if (category === 'VALVE') { itemName = 'VALVE'; } else if (category === 'GASKET') { @@ -379,10 +356,7 @@ const formatMaterialForExcel = (material, includeComparison = false) => { } } - // 카테고리별 상세 정보 추출 - let detailInfo = ''; - let gasketMaterial = ''; - let gasketThickness = ''; + // 카테고리별 상세 정보 추출 (이미 위에서 선언됨) if (category === 'BOLT') { // 볼트의 경우 표면처리 정보 추출