diff --git a/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp b/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp index c0fb90b..502dcd3 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp @@ -375,48 +375,95 @@ function fn_openBomCopyPopupWindow(objId) { // 할당 정보 확인 후 M-BOM 팝업 열기 function fn_checkAssignmentAndOpenMbom(projectObjId) { - // PROJECT_MGMT의 BOM 할당 정보 조회 - $.ajax({ - url: "/productionplanning/getMbomAssignmentInfo.do", - type: "POST", - data: { projectObjId: projectObjId }, - dataType: "json", - success: function(response) { - console.log("BOM 할당 정보:", response); - - // Machine(0000928) 이외 제품인지 확인 - var productCode = response ? response.PRODUCT_CODE : null; - var partNo = response ? response.PART_NO : null; - - if(!response || !response.SOURCE_BOM_TYPE) { - // 할당 정보가 없는 경우 - - // Machine 이외 제품이고 품번이 있으면 템플릿 확인 - if(productCode && productCode !== '0000928' && partNo) { - console.log("Machine 이외 제품 - 템플릿 확인 후 팝업 열기"); - // 템플릿이 있을 수 있으므로 팝업 열기 + // 먼저 해당 프로젝트의 M-BOM이 실제로 존재하는지 확인 + $.ajax({ + url: "/productionplanning/getLatestMbomByProjectId.do", + type: "POST", + data: { projectObjId: projectObjId }, + dataType: "json", + success: function(mbomResponse) { + if(mbomResponse && mbomResponse.OBJID) { + // M-BOM이 실제로 존재하면 무조건 팝업 열기 + console.log("M-BOM 존재 - 팝업 열기"); fn_openMBomFormPopup(projectObjId); - } else { - // Machine 제품이거나 품번이 없으면 할당 필요 - Swal.fire({ - title: '알림', - text: 'BOM 할당 정보가 없습니다.\nBOM 복사 버튼을 통해 먼저 BOM을 할당해주세요.', - icon: 'info' - }); + return; } - return; - } - - // 할당된 BOM 정보가 있는 경우 기존 M-BOM 팝업 열기 - fn_openMBomFormPopup(projectObjId); - }, - error: function(xhr, status, error) { - console.error("BOM 할당 정보 조회 오류:", error); - Swal.fire({ - title: '오류', - text: 'BOM 할당 정보를 조회하는 중 오류가 발생했습니다.', - icon: 'error' - }); + + // M-BOM이 없으면 할당 정보 확인 + $.ajax({ + url: "/productionplanning/getMbomAssignmentInfo.do", + type: "POST", + data: { projectObjId: projectObjId }, + dataType: "json", + success: function(response) { + console.log("BOM 할당 정보:", response); + + // Machine(0000928) 이외 제품인지 확인 + var productCode = response ? response.PRODUCT_CODE : null; + var partNo = response ? response.PART_NO : null; + + if(!response || !response.SOURCE_BOM_TYPE) { + // 할당 정보가 없는 경우 + + // Machine 이외 제품이고 품번이 있으면 동일 품번의 M-BOM 확인 + if(productCode && productCode !== '0000928' && partNo) { + console.log("Machine 이외 제품 - 동일 품번의 M-BOM 확인"); + + // 동일 품번의 M-BOM이 있는지 확인 + $.ajax({ + url: "/productionplanning/getLatestMbomByPartNo.do", + type: "POST", + data: { partNo: partNo }, + dataType: "json", + async: false, + success: function(templateResponse) { + if(templateResponse && templateResponse.MBOM_PART_NO) { + console.log("동일 품번의 M-BOM 템플릿 발견 - 팝업 열기"); + fn_openMBomFormPopup(projectObjId); + } else { + console.log("동일 품번의 M-BOM 템플릿 없음 - 할당 필요"); + Swal.fire({ + title: '알림', + text: 'BOM 할당 정보가 없습니다.\nBOM 복사 버튼을 통해 먼저 BOM을 할당해주세요.', + icon: 'info' + }); + } + }, + error: function() { + console.log("M-BOM 조회 실패 - 할당 필요"); + Swal.fire({ + title: '알림', + text: 'BOM 할당 정보가 없습니다.\nBOM 복사 버튼을 통해 먼저 BOM을 할당해주세요.', + icon: 'info' + }); + } + }); + } else { + // Machine 제품이거나 품번이 없으면 할당 필요 + Swal.fire({ + title: '알림', + text: 'BOM 할당 정보가 없습니다.\nBOM 복사 버튼을 통해 먼저 BOM을 할당해주세요.', + icon: 'info' + }); + } + return; + } + + // 할당된 BOM 정보가 있는 경우 팝업 열기 + fn_openMBomFormPopup(projectObjId); + }, + error: function(xhr, status, error) { + console.error("BOM 할당 정보 조회 오류:", error); + Swal.fire({ + title: '오류', + text: 'BOM 할당 정보를 조회하는 중 오류가 발생했습니다.', + icon: 'error' + }); + } + }); + }, + error: function(xhr, status, error) { + console.error("M-BOM 존재 여부 조회 오류:", error); } }); }