From c5ba0ae0126df1b6c7b451c5e6a0e80e10074471 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Thu, 27 Nov 2025 14:52:51 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EB=A7=A4=EB=A6=AC=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/productionplanning/mBomMgmtList.jsp | 110 ++++++++++----- .../view/productionplanning/mBomPopupLeft.jsp | 4 +- .../view/salesMng/purchaseListFormPopUp.jsp | 127 +++++++++++------- .../view/salesMng/salesRequestFormPopUp.jsp | 42 +++--- .../view/salesMng/salesRequestMngRegList.jsp | 17 ++- src/com/pms/mapper/productionplanning.xml | 20 +++ src/com/pms/mapper/salesMng.xml | 111 ++++++++++++--- .../controller/SalesMngController.java | 4 +- .../salesmgmt/service/SalesMngService.java | 58 +++----- 9 files changed, 324 insertions(+), 169 deletions(-) diff --git a/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp b/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp index 04d61c9..23e97df 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomMgmtList.jsp @@ -76,6 +76,8 @@ var columns = [ {title:'OBJID', field:'OBJID', visible: false}, {title:'CONTRACT_OBJID', field:'CONTRACT_OBJID', visible: false}, {title:'BOM_REPORT_OBJID', field:'BOM_REPORT_OBJID', visible: false}, + {title:'MBOM_HEADER_OBJID', field:'MBOM_HEADER_OBJID', visible: false}, + {title:'PURCHASE_LIST_OBJID', field:'PURCHASE_LIST_OBJID', visible: false}, // 1. 체크박스 { @@ -479,7 +481,7 @@ function fn_checkAssignmentAndOpenMbom(projectObjId) { }); } -// 구매리스트 생성 팝업 열기 +// 구매리스트 생성 function fn_openPurchaseListPopup() { // 체크된 행 가져오기 var checkedRows = []; @@ -514,38 +516,82 @@ function fn_openPurchaseListPopup() { // 선택된 프로젝트 정보 var selectedRow = checkedRows[0]; - var projectObjId = selectedRow.OBJID; - var projectNo = selectedRow.PROJECT_NO; + var projectObjId = selectedRow.OBJID; // PROJECT_MGMT.OBJID + var projectNo = selectedRow.PROJECT_NO; // 프로젝트 번호 (문자열) + var mbomHeaderObjid = selectedRow.MBOM_HEADER_OBJID; // MBOM_HEADER.OBJID + var purchaseListObjid = selectedRow.PURCHASE_LIST_OBJID; // 기존 구매리스트 OBJID - // 구매요청서 마스터 생성 후 팝업 열기 - $.ajax({ - url: "/salesMng/createPurchaseListFromMBom.do", - method: "POST", - data: { - PROJECT_MGMT_OBJID: projectObjId, - PROJECT_NO: projectNo - }, - dataType: "json", - success: function(result) { - if(result.resultFlag === "S") { - var salesRequestMasterObjid = result.SALES_REQUEST_MASTER_OBJID; - // 구매리스트 팝업 열기 - var url = "/salesMng/purchaseListFormPopUp.do?SALES_REQUEST_MASTER_OBJID=" + salesRequestMasterObjid - + "&PROJECT_MGMT_OBJID=" + projectObjId; - window.open(url, "purchaseListPopup", "width=1400,height=800,scrollbars=yes,resizable=yes"); - } else { - Swal.fire({ - title: '오류', - text: result.message || '구매리스트 생성 중 오류가 발생했습니다.', - icon: 'error' - }); - } - }, - error: function(xhr, status, error) { - Swal.fire({ - title: '오류', - text: '서버 통신 중 오류가 발생했습니다.', - icon: 'error' + if(!projectObjId || projectObjId === 'null' || projectObjId === '') { + Swal.fire({ + title: '오류', + text: '프로젝트 OBJID를 찾을 수 없습니다.', + icon: 'error' + }); + return; + } + + if(!mbomHeaderObjid || mbomHeaderObjid === 'null' || mbomHeaderObjid === '') { + Swal.fire({ + title: '오류', + text: 'M-BOM이 생성되지 않았습니다.\n먼저 M-BOM을 생성해주세요.', + icon: 'warning' + }); + return; + } + + // 이미 생성된 구매리스트가 있는지 확인 + if(purchaseListObjid && purchaseListObjid !== 'null' && purchaseListObjid !== '') { + Swal.fire({ + title: '알림', + text: '이미 생성된 구매리스트가 있습니다.\n구매리스트관리 화면에서 확인하세요.', + icon: 'info' + }); + return; + } + + // 생성 확인 + Swal.fire({ + title: '구매리스트 생성', + text: '구매리스트를 생성하시겠습니까?', + icon: 'question', + showCancelButton: true, + confirmButtonText: '예', + cancelButtonText: '아니오' + }).then((result) => { + if (result.isConfirmed) { + // 구매요청서 마스터 생성 + $.ajax({ + url: "/salesMng/createPurchaseListFromMBom.do", + method: "POST", + data: { + PROJECT_MGMT_OBJID: projectObjId, // PROJECT_MGMT.OBJID 전달 + PROJECT_NO: projectNo, // 프로젝트 번호 전달 + MBOM_HEADER_OBJID: mbomHeaderObjid // MBOM_HEADER.OBJID 전달 + }, + dataType: "json", + success: function(result) { + if(result.resultFlag === "S") { + // 성공 알림 + Swal.fire({ + title: '생성 완료', + text: '구매리스트가 생성되었습니다.\n구매리스트관리 화면에서 확인하세요.', + icon: 'success' + }); + } else { + Swal.fire({ + title: '오류', + text: result.message || '구매리스트 생성 중 오류가 발생했습니다.', + icon: 'error' + }); + } + }, + error: function(xhr, status, error) { + Swal.fire({ + title: '오류', + text: '서버 통신 중 오류가 발생했습니다.', + icon: 'error' + }); + } }); } }); diff --git a/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp b/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp index 7d18f84..516f77f 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp @@ -547,7 +547,7 @@ function fn_initGrid() { hozAlign: 'left', width: 150, title: '공급업체', - field: 'VENDOR', + field: 'VENDOR_NAME', editor: false, // 구매쪽에서 입력 formatter: function(cell) { return cell.getValue() || '-'; @@ -891,7 +891,7 @@ function getMbomTreeData() { shortageQty: toNumber(row.SHORTAGE_QTY), // 구매 정보 - vendor: row.VENDOR, + vendor: row.VENDOR_NAME, unitPrice: toNumber(row.UNIT_PRICE), totalPrice: toNumber(row.TOTAL_PRICE), currency: row.CURRENCY, diff --git a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp index a79497e..aa3737e 100644 --- a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp +++ b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp @@ -39,6 +39,7 @@ body, html { padding: 15px 20px; background: #f5f5f5; border-bottom: 2px solid #ddd; + text-align: right; } .header h3 { margin: 0 0 10px 0; @@ -60,27 +61,22 @@ body, html { padding: 20px; overflow: auto; } -.footer { - padding: 15px 20px; - background: #f5f5f5; - border-top: 1px solid #ddd; - text-align: center; -}
- - +
+ + +
+
- - +