From a579f6162652d7795c5e05165f517c426642a4d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Mon, 22 Sep 2025 14:35:00 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=80=EA=B3=BC=EC=B4=9D=EC=95=A1=20?= =?UTF-8?q?=EA=B3=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/crdnLevyPrvntc/levyPrvntcPopup.jsp | 69 +++++++++++++++++-- 1 file changed, 65 insertions(+), 4 deletions(-) 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);