feat: BOM과 구매관리 페이지 엑셀 통합 및 완전 동일화
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
엑셀 내보내기 통합: - BOM 페이지: 구매신청 시 백엔드에서 엑셀 파일 생성 및 저장 - 구매관리 페이지: 저장된 엑셀 파일 직접 다운로드 (재생성 안 함) - 두 페이지에서 완전히 동일한 엑셀 파일 제공 백엔드 엑셀 생성: - openpyxl 사용하여 서버에서 엑셀 생성 - 카테고리별 시트 구성 - 헤더 스타일링 (연파랑 배경) - 컬럼 너비 자동 조정 FLANGE 품목명 개선: - 품목명: FLANGE (간단) - 상세내역: WELD NECK RF, SLIP-ON RF 등 (전체 이름) - 특수 플랜지: ORIFICE FLANGE, SPECTACLE BLIND 등 구분 구매신청 관리 API 개선: - 상세 정보 포함 (pipe_details, fitting_details, flange_details 등) - BOM 형식과 동일한 데이터 구조 - 수량 정수 변환 (3.000 → 3) 에러 수정: - fileName 중복 선언 해결 - flange_details.connection_method 컬럼 제거 (존재하지 않음) - Python 문법 오류 수정 (new Date() → datetime.now()) DB 스키마 개선: - revision_status 컬럼 추가 및 크기 조정 (VARCHAR(30)) - 리비전 변경사항 추적 지원
This commit is contained in:
@@ -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)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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') {
|
||||
// 볼트의 경우 표면처리 정보 추출
|
||||
|
||||
Reference in New Issue
Block a user