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}
+
+
+