diff --git a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnLevyPrvntc/levyPrvntcPopup.jsp b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnLevyPrvntc/levyPrvntcPopup.jsp
index eae8269..e4d78bb 100644
--- a/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnLevyPrvntc/levyPrvntcPopup.jsp
+++ b/src/main/webapp/WEB-INF/views/crdn/crndRegistAndView/main/crdnLevyPrvntc/levyPrvntcPopup.jsp
@@ -222,7 +222,7 @@
-
+
X |
@@ -244,7 +244,7 @@
|
= |
- |
+ |
@@ -257,7 +257,10 @@
- | 부과총액 = 결과값 계산로직 진행 중 |
+
+ 부과총액 = 0 원
+
+ |
@@ -456,7 +459,7 @@
if (!rowData) return;
var vltnArea = rowData.calcArea; // 면적 - 조치면적 : 위반면적
- $('#vltnArea').val(vltnArea); // 위반면적
+ $('#vltnArea').val(vltnArea).trigger('change'); // 위반면적, change 이벤트 트리거
// 행위유형에 따른 산정률1 설정
$('#cmpttnRtDisplay').val(rowData.actCmpttnRt+ ' %');
@@ -482,6 +485,9 @@
$('#elpsYrRdvlrt').val(rowData.elpsYrRdvlrt); // 경과년수별잔가율(하단)
$('#bscsCstrnSeCd').trigger('change'); // 기초공사구분 변경 이벤트 트리거
+
+ // 산정액 계산 함수 호출
+ calculateLevyAmount();
};
this.instance.on('focusChange', function(ev) {
@@ -571,6 +577,13 @@
$('#cmpttnRt2').val(rateValue || '');
$('#cmpttnRt2Rate').val(rateValue2 || '');
$('#cmpttnRt2Display').val((rateValue || '') + ' %').trigger('focus');
+ // 산정액 계산 함수 호출
+ calculateLevyAmount();
+ });
+
+ // 위반면적 변경 시 산정액 계산 함수 호출
+ $('#vltnArea').on('change keyup', function() {
+ calculateLevyAmount();
});
// 계산에 사용되는 입력 필드 변경 시 자동 계산 호출
@@ -701,6 +714,48 @@
};
+ /**
+ * 중요로직: 이행강제금 산정액 및 부과총액 자동 계산
+ * @description 시가표준액, 위반면적, 가감산시행령률, 산정률, 산정률2가 모두 입력되었을 때 산정액과 부과총액을 자동으로 계산합니다.
+ * - 산정액 = 시가표준액 * 위반면적 * (가감산시행령률 / 100) * 산정률(비율) * 산정률2(비율)
+ * - 부과총액 = 산정액의 1의 자리 절사 (10원 단위 버림)
+ */
+ function calculateLevyAmount() {
+ var standardMarketPrice = parseFloat($('#standardMarketPrice_top').inputmask('unmaskedvalue')) || 0;
+ var vltnArea = parseFloat($('#vltnArea').inputmask('unmaskedvalue')) || 0;
+ var adsbmtnEnfcRt = parseFloat($('#adsbmtnEnfcRt').val()) || 0;
+ var cmpttnRtRate = parseFloat($('#cmpttnRtRate').val()) || 0;
+ var cmpttnRt2Rate = parseFloat($('#cmpttnRt2Rate').val()) || 0;
+
+ var cmpttnAmt = 0; // 산정액
+ var levyWholAmt = 0; // 부과총액
+
+ // 모든 값이 0보다 큰지 확인 (필수 입력값 체크)
+ if (standardMarketPrice > 0 && vltnArea > 0 && adsbmtnEnfcRt > 0 && cmpttnRtRate > 0 && cmpttnRt2Rate > 0) {
+ // 산정액 계산 (소수점 버림)
+ cmpttnAmt = Math.floor(standardMarketPrice * vltnArea * (adsbmtnEnfcRt / 100) * cmpttnRtRate * cmpttnRt2Rate);
+
+ // 부과총액 계산: 산정액에서 1의 자리 절사 (10원 단위로 버림)
+ levyWholAmt = Math.floor(cmpttnAmt / 10) * 10;
+ }
+
+ // '산정액' 필드에 값 설정
+ if (cmpttnAmt > 0) {
+ $('#cmpttnAmt').val(cmpttnAmt).trigger('focus');
+ } else {
+ $('#cmpttnAmt').val('').trigger('focus');
+ }
+
+ // '부과총액' 필드 및 표시에 값 설정
+ if (levyWholAmt > 0) {
+ $('#levyWholAmt').val(levyWholAmt);
+ $('#levyWholAmtDisplay').text(levyWholAmt.toLocaleString() + ' 원');
+ } else {
+ $('#levyWholAmt').val('');
+ $('#levyWholAmtDisplay').text('');
+ }
+ }
+
/**
* 자동 계산 (서버 API 호출)
* @description 각 항목의 값을 서버로 보내 건축물과세시가를 계산하고, 그 결과를 받아 시가표준액을 계산합니다.
@@ -720,6 +775,7 @@
$('#taxableMarketPrice').val('').trigger('focus'); // 건축물과세시가
$('#standardMarketPrice').val('').trigger('focus'); // 시가표준액
$('#standardMarketPrice_top').val('').trigger('focus'); // 시가표준액(상단)
+ calculateLevyAmount(); // 산정액 계산
return;
}
@@ -753,12 +809,15 @@
$('#standardMarketPrice').val('').trigger('focus'); // 시가표준액
$('#standardMarketPrice_top').val('').trigger('focus'); // 시가표준액(상단)
}
+ // 산정액 계산 함수 호출
+ calculateLevyAmount();
},
error: function() {
alert('서버와 통신 중 오류가 발생했습니다.');
$('#taxableMarketPrice').val('').trigger('focus'); // 건축물과세시가
$('#standardMarketPrice').val('').trigger('focus'); // 시가표준액
$('#standardMarketPrice_top').val('').trigger('focus'); // 시가표준액(상단)
+ calculateLevyAmount(); // 산정액 계산
}
});
}
@@ -831,6 +890,8 @@
$("#adsbmtnEnfcRt").val( totalRateCalc );
$("#adsbmtnEnfcRtDisplay").val( totalRateCalc+" %" );
+ // 산정액 계산 함수 호출
+ calculateLevyAmount();
};
})(window, jQuery);