diff --git a/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp b/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp index 67184fe..7d03259 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp @@ -91,6 +91,9 @@ var materialList = []; // 공급업체(가공업체) 목록 전역 변수 var supplyVendorList = []; +// 환종 목록 전역 변수 +var currencyList = []; + $(function(){ // 최상위 프레임(mBomPopupHeaderFs.jsp)에서 프로젝트 수주수량 가져오기 try { @@ -118,6 +121,9 @@ $(function(){ // 공급업체(가공업체) 목록 로드 fn_loadSupplyVendorList(); + // 환종 목록 로드 + fn_loadCurrencyList(); + // Tabulator 초기화 fn_initGrid(); }); @@ -172,6 +178,31 @@ function fn_loadSupplyVendorList() { }); } +// 환종(통화) 목록 로드 (공통코드 0001533) +function fn_loadCurrencyList() { + $.ajax({ + url: "/admin/makeCodeSelect.do", + method: 'post', + data: { codeId: '0001533' }, + dataType: 'json', + async: false, + success: function(data) { + if(data && data.RESULT) { + data.RESULT.forEach(function(item) { + var codeId = item.CODE_ID || ''; + var codeName = item.CODE_NAME || ''; + if(codeId && codeName) { + currencyList.push({id: codeId, text: codeName}); + } + }); + } + }, + error: function() { + console.error("환종 목록 로드 실패"); + } + }); +} + // Select2 커스텀 에디터 생성 함수 function createSelect2Editor(options) { return function(cell, onRendered, success, cancel, editorParams) { @@ -808,11 +839,29 @@ function fn_initGrid() { return cell.getValue() || '-'; } }, - // 숨김 컬럼: 공급업체 코드 (저장 시 필요) - { - field: 'VENDOR', - visible: false - }, + // 숨김 컬럼: 공급업체 코드 (저장 시 필요) + { + field: 'VENDOR', + visible: false + }, + { + headerHozAlign: 'center', + hozAlign: 'center', + width: 80, + title: '환종', + field: 'CURRENCY', + editor: false, + formatter: function(cell) { + var value = cell.getValue(); + if(!value) return '-'; + for(var i = 0; i < currencyList.length; i++) { + if(currencyList[i].id == value) { + return currencyList[i].text; + } + } + return value; + } + }, // 숨김 컬럼: 품의서 작성일 (저장 시 기존 값 유지) { field: 'PROPOSAL_DATE', diff --git a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp index 333ca26..8f38f44 100644 --- a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp +++ b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp @@ -168,6 +168,8 @@ var mbomHeaderObjid = "${resolvedMbomHeaderObjid}"; // MBOM_HEADER.OBJID (M-BOM var vendorList = []; // 공급업체 목록 var processingVendorList = []; // 가공업체 목록 (Select2용 배열) var copiedVendorData = { field: null, value: null, displayName: '' }; // 복사된 업체 정보 +var currencyList = []; // 환종 목록 (Select2용 배열) +var defaultCurrencyCode = ''; // 기본 환종 코드 (원) // 디버그: resultMap 내용 확인 (주석처리) // console.log("=== JSP resultMap 디버그 ==="); @@ -201,9 +203,11 @@ $(document).ready(function(){ } console.log("가공업체 목록 변환 완료:", processingVendorList.length + "개"); - fn_initGrid(); - logDebug("purchaseListFormPopUp :: grid initialized"); - fn_loadInitialData(); + fn_loadCurrencyList(function(){ + fn_initGrid(); + logDebug("purchaseListFormPopUp :: grid initialized"); + fn_loadInitialData(); + }); }); }); @@ -240,6 +244,37 @@ function fn_loadVendorList(callback) { } +// 환종(통화) 목록 로드 (공통코드 0001533) +function fn_loadCurrencyList(callback) { + $.ajax({ + url: "/admin/makeCodeSelect.do", + method: 'post', + data: { codeId: '0001533' }, + dataType: 'json', + success: function(data) { + currencyList = []; + if(data && data.RESULT) { + data.RESULT.forEach(function(item) { + var codeId = item.CODE_ID || ''; + var codeName = item.CODE_NAME || ''; + if(codeId && codeName) { + currencyList.push({id: codeId, text: codeName}); + if(codeName === '원' || codeName === 'KRW' || codeName.indexOf('원') >= 0) { + defaultCurrencyCode = codeId; + } + } + }); + } + console.log("환종 목록 로드 완료:", currencyList.length + "개, 기본값:", defaultCurrencyCode); + if(callback) callback(); + }, + error: function(xhr, status, error) { + logError("환종 목록 로드 실패:", error); + if(callback) callback(); + } + }); +} + function fn_loadInitialData(){ logDebug("purchaseListFormPopUp :: fn_loadInitialData start", "projectMgmtObjid=", projectMgmtObjid, @@ -520,8 +555,8 @@ function fn_initGrid() { title: '지급/사급', field: 'SUPPLY_TYPE' }, -// 20. 소재소요량 -{ + // 20. 소재소요량 + { headerHozAlign: 'center', hozAlign: 'right', width: 100, @@ -610,6 +645,32 @@ function fn_initGrid() { return value; } }, + + // 30-1. 환종 (수정가능 - Select2 에디터, 기본값: 원) + { + headerHozAlign: 'center', + hozAlign: 'center', + width: 100, + title: '환종', + field: 'CURRENCY', + editor: function(cell, onRendered, success, cancel, editorParams) { + return createSelect2Editor(currencyList)(cell, onRendered, success, cancel, editorParams); + }, + mutator: function(value, data) { + if(!value && defaultCurrencyCode) return defaultCurrencyCode; + return value || ''; + }, + formatter: function(cell) { + var value = (typeof cell.getValue === 'function') ? cell.getValue() : (cell.value || ''); + if(!value) return ''; + for(var i = 0; i < currencyList.length; i++) { + if(currencyList[i].id == value) { + return currencyList[i].text; + } + } + return value; + } + }, // 31. 단가 (수정가능) -> 소재단가 { headerHozAlign: 'center', diff --git a/src/com/pms/mapper/salesMng.xml b/src/com/pms/mapper/salesMng.xml index 29a9623..39616cb 100644 --- a/src/com/pms/mapper/salesMng.xml +++ b/src/com/pms/mapper/salesMng.xml @@ -3913,6 +3913,7 @@ ORDER BY V.PATH2 PO_QTY = COALESCE(NULLIF(TRIM(#{PO_QTY}::TEXT), '')::NUMERIC, 0), VENDOR = #{VENDOR_PM}, PROCESSING_VENDOR = #{PROCESSING_VENDOR}, + CURRENCY = #{CURRENCY}, UNIT_PRICE = COALESCE(NULLIF(TRIM(#{UNIT_PRICE}::TEXT), '')::NUMERIC, 0), TOTAL_PRICE = COALESCE(NULLIF(TRIM(#{TOTAL_PRICE}::TEXT), '')::NUMERIC, 0), PROCESSING_UNIT_PRICE = COALESCE(NULLIF(TRIM(#{PROCESSING_UNIT_PRICE}::TEXT), '')::NUMERIC, 0),