diff --git a/WebContent/WEB-INF/view/contractMgmt/orderMgmtList.jsp b/WebContent/WEB-INF/view/contractMgmt/orderMgmtList.jsp index 81c819d..d0c7249 100644 --- a/WebContent/WEB-INF/view/contractMgmt/orderMgmtList.jsp +++ b/WebContent/WEB-INF/view/contractMgmt/orderMgmtList.jsp @@ -24,12 +24,6 @@ $(document).ready(function(){ //날짜 _fnc_datepick(); - // 그리드 높이 동적 계산 (Total 합계 영역 + 여유 공간 80px) - fnc_calculateContentHeight("gridDiv", 80); - $(window).resize(function() { - fnc_calculateContentHeight("gridDiv", 80); - }); - $('.select2').select2(); // 품번/품명 Select2 AJAX 초기화 (common.js의 새 함수 사용) @@ -242,8 +236,15 @@ function fn_search(){ _tabulGrid.off("renderComplete"); _tabulGrid.on("renderComplete", function(){ fn_calculateTotalFromGrid(); + // 그리드 렌더링 완료 후 높이 계산 + fnc_calculateContentHeight("gridDiv", 20); }); } + + // 윈도우 리사이즈 이벤트 (한 번만 등록) + $(window).off("resize.gridHeight").on("resize.gridHeight", function() { + fnc_calculateContentHeight("gridDiv", 20); + }); } // 그리드에 표시된 데이터의 원화총액 합계 계산 diff --git a/WebContent/WEB-INF/view/contractMgmt/orderRegistFormPopup.jsp b/WebContent/WEB-INF/view/contractMgmt/orderRegistFormPopup.jsp index 759b97d..ab33f75 100644 --- a/WebContent/WEB-INF/view/contractMgmt/orderRegistFormPopup.jsp +++ b/WebContent/WEB-INF/view/contractMgmt/orderRegistFormPopup.jsp @@ -219,8 +219,13 @@ html += ''; html += ''; html += ''; - // ORDER_QUANTITY가 없으면 QUANTITY 사용 (견적서에서 가져온 값) - html += ''; + // Machine이고 프로젝트가 있으면 수량 수정 불가 + var isQuantityReadonly = ("${isMachine}" === "Y" && "${hasProject}" === "Y"); + if(isQuantityReadonly) { + html += ''; + } else { + html += ''; + } // ORDER_UNIT_PRICE 수정 가능 html += ''; // ORDER_SUPPLY_PRICE 자동 계산 diff --git a/src/com/pms/mapper/project.xml b/src/com/pms/mapper/project.xml index 78f3f2f..5e3d0a9 100644 --- a/src/com/pms/mapper/project.xml +++ b/src/com/pms/mapper/project.xml @@ -7464,39 +7464,57 @@ SELECT ,( - SELECT - -- 주문유형 코드 (CATEGORY_CD를 영문 약어로 매핑) - CASE CODE_NAME(CATEGORY_CD) - WHEN '오버홀' THEN 'O' - WHEN '개조' THEN 'M' - WHEN '개발' THEN 'D' - WHEN '견적' THEN 'Q' - WHEN '수리' THEN 'R' - WHEN '판매' THEN 'S' - ELSE 'T' - END || '-' || - -- 제품구분 코드 (PRODUCT의 CODE_NAME에서 슬래시 제거) - REPLACE(CODE_NAME(PRODUCT), '/', '') || '-' || + SELECT + -- 주문유형 코드 (CATEGORY_CD를 영문 약어로 매핑) + CASE CODE_NAME(CATEGORY_CD) + WHEN '오버홀' THEN 'O' + WHEN '개조' THEN 'M' + WHEN '개발' THEN 'D' + WHEN '견적' THEN 'Q' + WHEN '수리' THEN 'R' + WHEN '판매' THEN 'S' + ELSE 'T' + END || '-' || + -- 제품구분 코드 (PRODUCT를 약어로 매핑) + CASE CODE_NAME(PRODUCT) + WHEN 'Machine' THEN 'MC' + WHEN 'A/S' THEN 'AS' + WHEN 'D/S' THEN 'DS' + WHEN 'B/S' THEN 'BS' + WHEN 'C/T' THEN 'CT' + WHEN 'A/C' THEN 'AC' + WHEN 'W/M' THEN 'WM' + ELSE REPLACE(CODE_NAME(PRODUCT), '/', '') + END || '-' || -- 날짜 (YYMMDD) TO_CHAR(CURRENT_DATE, 'YYMMDD') || '-' || -- 순번 (001, 002, ...) LPAD( COALESCE( ( - SELECT MAX(SUBSTRING(PROJECT_NO FROM '\d{3}$')::INTEGER) + 1 - FROM PROJECT_MGMT - WHERE PROJECT_NO LIKE - CASE CODE_NAME(CATEGORY_CD) - WHEN '오버홀' THEN 'O' - WHEN '개조' THEN 'M' - WHEN '개발' THEN 'D' - WHEN '견적' THEN 'Q' - WHEN '수리' THEN 'R' - WHEN '판매' THEN 'S' - ELSE 'T' - END || '-' || - REPLACE(CODE_NAME(PRODUCT), '/', '') || '-' || - TO_CHAR(CURRENT_DATE, 'YYMMDD') || '-%' + SELECT MAX(SUBSTRING(PROJECT_NO FROM '\d{3}$')::INTEGER) + 1 + FROM PROJECT_MGMT + WHERE PROJECT_NO LIKE + CASE CODE_NAME(CATEGORY_CD) + WHEN '오버홀' THEN 'O' + WHEN '개조' THEN 'M' + WHEN '개발' THEN 'D' + WHEN '견적' THEN 'Q' + WHEN '수리' THEN 'R' + WHEN '판매' THEN 'S' + ELSE 'T' + END || '-' || + CASE CODE_NAME(PRODUCT) + WHEN 'Machine' THEN 'MC' + WHEN 'A/S' THEN 'AS' + WHEN 'D/S' THEN 'DS' + WHEN 'B/S' THEN 'BS' + WHEN 'C/T' THEN 'CT' + WHEN 'A/C' THEN 'AC' + WHEN 'W/M' THEN 'WM' + ELSE REPLACE(CODE_NAME(PRODUCT), '/', '') + END || '-' || + TO_CHAR(CURRENT_DATE, 'YYMMDD') || '-%' ), 1 )::TEXT, @@ -7530,14 +7548,14 @@ SELECT ,EST_USER_ID ,EST_COMP_DATE ,EST_RESULT_CD - ,AREA_CD - ,MECHANICAL_TYPE - ,#{overhaul_order} - ,#{is_temp} - ,#{part_objid} - ,#{part_no} - ,#{part_name} - ,#{quantity} + ,AREA_CD + ,MECHANICAL_TYPE + ,#{overhaul_order} + ,#{is_temp} + ,#{part_objid} + ,#{part_no} + ,#{part_name} + ,#{quantity} FROM CONTRACT_MGMT WHERE OBJID=#{objId} ) diff --git a/src/com/pms/salesmgmt/controller/ContractMgmtController.java b/src/com/pms/salesmgmt/controller/ContractMgmtController.java index 3cd50b7..c6c2a5c 100644 --- a/src/com/pms/salesmgmt/controller/ContractMgmtController.java +++ b/src/com/pms/salesmgmt/controller/ContractMgmtController.java @@ -2481,6 +2481,12 @@ public class ContractMgmtController { String apprStatus = CommonUtils.nullToEmpty((String)info.get("APPR_STATUS")); boolean useEstimateTemplate = "결재완료".equals(apprStatus); + // Machine 여부 및 프로젝트 존재 여부 확인 + String productCd = CommonUtils.nullToEmpty((String)info.get("PRODUCT")); + boolean isMachine = "0000928".equals(productCd); + Map projectInfo = contractMgmtService.checkProjectExists(paramMap); + boolean hasProject = (projectInfo != null); + request.setAttribute("code_map", code_map); request.setAttribute("info", info); request.setAttribute("contractInfo", contractInfo); @@ -2488,6 +2494,8 @@ public class ContractMgmtController { request.setAttribute("objId", objId); request.setAttribute("actionType", actionType); request.setAttribute("useEstimateTemplate", useEstimateTemplate ? "Y" : "N"); + request.setAttribute("isMachine", isMachine ? "Y" : "N"); + request.setAttribute("hasProject", hasProject ? "Y" : "N"); } catch(Exception e) { e.printStackTrace(); diff --git a/src/com/pms/salesmgmt/mapper/contractMgmt.xml b/src/com/pms/salesmgmt/mapper/contractMgmt.xml index b453411..f3b8400 100644 --- a/src/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/src/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -535,7 +535,7 @@ -- 수주수량 (CONTRACT_MGMT의 QUANTITY 또는 CONTRACT_ITEM 합계) ,COALESCE( NULLIF(T.QUANTITY, '')::NUMERIC, - (SELECT COALESCE(SUM(CAST(QUANTITY AS NUMERIC)), 0) FROM CONTRACT_ITEM WHERE CONTRACT_OBJID = T.OBJID AND STATUS = 'ACTIVE') + (SELECT COALESCE(SUM(CAST(ORDER_QUANTITY AS NUMERIC)), 0) FROM CONTRACT_ITEM WHERE CONTRACT_OBJID = T.OBJID AND STATUS = 'ACTIVE') ) AS ORDER_QUANTITY ,CASE WHEN T.ORDER_TOTAL_AMOUNT IS NOT NULL AND T.ORDER_TOTAL_AMOUNT != '' @@ -4758,6 +4758,16 @@ WHERE WHERE OBJID = #{objId} + + +