diff --git a/WebContent/WEB-INF/view/productionplanning/prodPlanFormPopup.jsp b/WebContent/WEB-INF/view/productionplanning/prodPlanFormPopup.jsp index bcef2e7..14c0391 100644 --- a/WebContent/WEB-INF/view/productionplanning/prodPlanFormPopup.jsp +++ b/WebContent/WEB-INF/view/productionplanning/prodPlanFormPopup.jsp @@ -307,7 +307,19 @@ function fn_loadProjectInfo(projectObjid){ $("#REQ_DEL_DATE").val(fnc_checkNull(info.req_del_date)); // S/N - $("#SERIAL_NO").val(fnc_checkNull(info.serial_no)); + var serialNoVal = fnc_checkNull(info.serial_no); + $("#SERIAL_NO").val(serialNoVal); + // snList 동기화 (AJAX 로드 시에도 팝업 목록 갱신) + snList = []; + snCounter = 1; + if(serialNoVal && serialNoVal.trim() != '') { + var snArr = serialNoVal.split(','); + for(var si = 0; si < snArr.length; si++) { + if(snArr[si].trim() != '') { + snList.push({ id: snCounter++, value: snArr[si].trim() }); + } + } + } // 수주수량 $("#ORDER_QTY").val(fnc_checkNull(info.order_qty) || 0); @@ -479,7 +491,7 @@ function fn_openSnManagePopup() { width: '700px', showConfirmButton: false, showCloseButton: true, - didOpen: function() { + onOpen: function() { setTimeout(function() { fn_renderSnList(); // 엔터키로 추가 diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp index f3bc587..037f207 100644 --- a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/revenueMgmtList.jsp @@ -227,7 +227,21 @@ Swal.fire("매출마감 전 데이터만 매출마감 가능합니다."); return false; } - + + // 선택된 항목의 고객사가 모두 동일한지 체크 + var firstCustomer = fnc_checkNull(targetObj[0].CUSTOMER); + var hasDiffCustomer = false; + for(var i = 1; i < targetObj.length; i++){ + if(fnc_checkNull(targetObj[i].CUSTOMER) != firstCustomer){ + hasDiffCustomer = true; + break; + } + } + if(hasDiffCustomer){ + Swal.fire("동일한 고객사의 데이터만 매출마감할 수 있습니다."); + return false; + } + // 매출마감일 입력 팝업 Swal.fire({ title: '매출마감 처리', diff --git a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp index fd440ff..0e7dbd9 100644 --- a/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp +++ b/WebContent/WEB-INF/view/salesmgmt/salesMgmt/salesMgmtList.jsp @@ -215,7 +215,16 @@ return; } - // 거래명세서 출력 버튼은 항상 새로 작성 (저장된 데이터 무시) + // 이미 거래명세서가 생성된 항목이 있는지 확인 + var alreadyCreated = selectedData.filter(function(row) { + return row.HAS_TRANSACTION_STATEMENT === 'Y'; + }); + if(alreadyCreated.length > 0) { + var projectNames = alreadyCreated.map(function(row) { return row.PROJECT_NO; }).join(', '); + alert("이미 거래명세서가 생성된 항목이 있습니다.\n(" + projectNames + ")\n파란 폴더 아이콘을 클릭하여 확인해주세요."); + return; + } + localStorage.setItem('loadSavedStatement', 'false'); // 같은 거래처인지 확인 @@ -233,15 +242,19 @@ console.log(selectedData); localStorage.setItem('transactionStatementData', JSON.stringify(selectedData)); - // 프로젝트 번호들을 수집 + // 프로젝트 번호/OBJID 수집 var projectNos = selectedData.map(function(row) { return row.PROJECT_NO; }).join(','); + var projectObjids = selectedData.map(function(row) { + return row.OBJID; + }).join(','); // 새로 만든 거래명세서 팝업 열기 var popup_width = 1000; var popup_height = 800; - var url = "/salesMgmt/transactionStatementForm.do?projectNos=" + encodeURIComponent(projectNos); + var url = "/salesMgmt/transactionStatementForm.do?projectNos=" + encodeURIComponent(projectNos) + + "&projectObjids=" + encodeURIComponent(projectObjids); fn_centerPopup(popup_width, popup_height, url); } @@ -463,8 +476,9 @@ var columns = [ cellClick: function(e, cell) { var data = cell.getRow().getData(); var projectNo = data.PROJECT_NO; + var projectObjid = data.OBJID; var hasStatement = data.HAS_TRANSACTION_STATEMENT === 'Y'; - if(projectNo) fn_openTransactionStatementPopup(projectNo, hasStatement); + if(projectNo) fn_openTransactionStatementPopup(projectNo, projectObjid, hasStatement); } } ]; @@ -555,9 +569,9 @@ function fn_search(){ // 출하일 상세 내역 팝업 // 거래명세서 팝업 열기 (단일 프로젝트) -function fn_openTransactionStatementPopup(projectNo, hasStatement) { +function fn_openTransactionStatementPopup(projectNo, projectObjid, hasStatement) { console.log("=== 거래명세서 팝업 열기 ==="); - console.log("projectNo:", projectNo); + console.log("projectNo:", projectNo, "projectObjid:", projectObjid); console.log("hasStatement:", hasStatement); if(!projectNo) { @@ -583,11 +597,11 @@ function fn_openTransactionStatementPopup(projectNo, hasStatement) { } localStorage.setItem('transactionStatementData', JSON.stringify(projectData)); - // 파란폴더(저장된 경우)만 여기까지 도달 → DB 데이터 로드 localStorage.setItem('loadSavedStatement', 'true'); - // 거래명세서 팝업 열기 - var url = "/salesMgmt/transactionStatementForm.do?projectNos=" + encodeURIComponent(projectNo); + // 거래명세서 팝업 열기 (OBJID 포함) + var url = "/salesMgmt/transactionStatementForm.do?projectNos=" + encodeURIComponent(projectNo) + + "&projectObjids=" + encodeURIComponent(projectObjid); var popup_width = 900; var popup_height = 800; var left = (screen.width - popup_width) / 2; @@ -688,8 +702,13 @@ function fn_bulkRegister(){ } } - // 판매등록 팝업 열기 (그리드 데이터 전달) - fn_openSaleRegPopupWithData(selectedRow); + if(selectedRow.SALES_REG_NO) { + // 기존 판매등록 수정 모드 + fn_openSaleRegPopup(selectedRow.PROJECT_NO, selectedRow.SALES_REG_NO); + } else { + // 신규 판매등록 + fn_openSaleRegPopupWithData(selectedRow); + } }