diff --git a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnLevyPrvntcMapper_maria.xml b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnLevyPrvntcMapper_maria.xml
index dbe32bc..fe570e4 100644
--- a/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnLevyPrvntcMapper_maria.xml
+++ b/src/main/resources/mybatis/mapper/crdn/crndRegistAndView/main/CrdnLevyPrvntcMapper_maria.xml
@@ -335,7 +335,7 @@
UPDATE tb_levy_info
SET DEL_YN = 'Y',
DEL_DT = NOW(),
- DLTR = #{userId}
+ DLTR = #{dltr}
WHERE LEVY_INFO_ID = #{levyInfoId}
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 20f0f5d..1fb9d30 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
@@ -722,64 +722,64 @@
$('#vltnArea').val(existingData.vltnArea || '').trigger('focus');
// 산정률1 설정 (행위유형)
- $('#cmpttnRtDisplay').val((existingData.cmpttnRt || '') + ' %');
- $('#cmpttnRtCd').val(existingData.cmpttnRtCd || '');
- $('#cmpttnRt').val(existingData.cmpttnRt || '');
+ $('#cmpttnRtDisplay').val((existingData.cmpttnRt || '') + ' %'); // 산정률 표시 필드 (퍼센트 포함)
+ $('#cmpttnRtCd').val(existingData.cmpttnRtCd || ''); // 산정률 코드 설정
+ $('#cmpttnRt').val(existingData.cmpttnRt || ''); // 산정률 값 설정
$('#cmpttnRtRate').val(existingData.cmpttnRtRate || ''); // 계산용 비율값
// 기초공사구분 및 비율
- $('#bscsCstrnSeCd').val(existingData.bscsCstrnSeCd || '');
- $('#bscsCstrnRt').val(existingData.bscsCstrnRt || '');
+ $('#bscsCstrnSeCd').val(existingData.bscsCstrnSeCd || ''); // 기초공사구분 코드 설정
+ $('#bscsCstrnRt').val(existingData.bscsCstrnRt || ''); // 기초공사율 값 설정
// 건물기준시가액
- $('#bldgNewPrcCrtrAmtNo').val(existingData.bldgNewPrcCrtrAmtNo || '');
+ $('#bldgNewPrcCrtrAmtNo').val(existingData.bldgNewPrcCrtrAmtNo || ''); // 건물기준시가액 번호 설정
$('#bldgNewPrcCrtrAmtDisplay').val(existingData.bldgNewPrcCrtrAmtDisplay || ''); // 건축물용도명
- $('#bldgNewPrcCrtrAmt').val(existingData.bldgCrtrMprcAmt || '').trigger('focus');
+ $('#bldgNewPrcCrtrAmt').val(existingData.bldgCrtrMprcAmt || '').trigger('focus'); // 건물기준시가액 값 설정
// 구조지수
- $('#strctIdxCd').val(existingData.strctIdxCd || '');
+ $('#strctIdxCd').val(existingData.strctIdxCd || ''); // 구조지수 코드 설정
$('#strctIdx_nm').val(existingData.strctIdxCdNm || ''); // 구조지수명
- $('#strctIdx').val(existingData.strctIdx || '');
+ $('#strctIdx').val(existingData.strctIdx || ''); // 구조지수 값 설정
// 용도지수
- $('#usgIdxCd').val(existingData.usgIdxCd || '');
+ $('#usgIdxCd').val(existingData.usgIdxCd || ''); // 용도지수 코드 설정
$('#usgIdx_nm').val(existingData.usgIdxCdNm || ''); // 용도지수명
- $('#usgIdx').val(existingData.usgIdx || '');
+ $('#usgIdx').val(existingData.usgIdx || ''); // 용도지수 값 설정
// 위치지수
- $('#pstnIdxNo').val(existingData.pstnIdxNo || '');
+ $('#pstnIdxNo').val(existingData.pstnIdxNo || ''); // 위치지수 번호 설정
$('#pstnIdx_nm').val(existingData.oalp || '').trigger('focus').trigger('change'); // 공시지가
- $('#pstnIdx').val(existingData.pstnIdx || '');
+ $('#pstnIdx').val(existingData.pstnIdx || ''); // 위치지수 값 설정
// 경과년수별잔가율
$('#elpsYrRdvlrt_yr').val((existingData.elpsYrRdvlrtYr || '') + ' 년'); // 행위시작년도
- $('#elpsYrRdvlrt').val(existingData.elpsYrRdvlrt || '');
+ $('#elpsYrRdvlrt').val(existingData.elpsYrRdvlrt || ''); // 경과년수별잔가율 값 설정
// 산정률2
- $('#cmpttnRt2Cd').val(existingData.cmpttnRt2Cd || '');
- $('#cmpttnRt2').val(existingData.cmpttnRt2 || '');
- $('#cmpttnRt2Display').val((existingData.cmpttnRt2 || '') + ' %');
+ $('#cmpttnRt2Cd').val(existingData.cmpttnRt2Cd || ''); // 산정률2 코드 설정
+ $('#cmpttnRt2').val(existingData.cmpttnRt2 || ''); // 산정률2 값 설정
+ $('#cmpttnRt2Display').val((existingData.cmpttnRt2 || '') + ' %'); // 산정률2 표시 필드 (퍼센트 포함)
$('#cmpttnRt2Rate').val(existingData.cmpttnRt2Rate || ''); // 계산용 비율값
// 가감산 정보
- $('#adtnRtCd').val(existingData.adtnRtCd || '');
- $('#adtnRt').val(existingData.adtnRt || '');
+ $('#adtnRtCd').val(existingData.adtnRtCd || ''); // 가산율 코드 설정
+ $('#adtnRt').val(existingData.adtnRt || ''); // 가산율 값 설정
$('#adtnRtRate').val(existingData.adtnRtRate || ''); // 계산용 비율값
- $('#sbtrRtCd').val(existingData.sbtrRtCd || '');
- $('#sbtrRt').val(existingData.sbtrRt || '');
+ $('#sbtrRtCd').val(existingData.sbtrRtCd || ''); // 감산율 코드 설정
+ $('#sbtrRt').val(existingData.sbtrRt || ''); // 감산율 값 설정
$('#sbtrRtRate').val(existingData.sbtrRtRate || ''); // 계산용 비율값
// 가감산시행령률
- $('#adsbmtnEnfcRt').val(existingData.adsbmtnEnfcRt || '100');
- $('#adsbmtnEnfcRtDisplay').val((existingData.adsbmtnEnfcRt || '100') + ' %');
+ $('#adsbmtnEnfcRt').val(existingData.adsbmtnEnfcRt || '100'); // 가감산시행령률 값 설정
+ $('#adsbmtnEnfcRtDisplay').val((existingData.adsbmtnEnfcRt || '100') + ' %'); // 가감산시행령률 표시 필드 (퍼센트 포함)
// 산정액 및 부과총액
- $('#cmpttnAmt').val(existingData.cmpttnAmt || '').trigger('focus');
- $('#levyWholAmt').val(existingData.levyWholAmt || '');
+ $('#cmpttnAmt').val(existingData.cmpttnAmt || '').trigger('focus'); // 산정액 값 설정
+ $('#levyWholAmt').val(existingData.levyWholAmt || ''); // 부과총액 값 설정
$('#levyWholAmtDisplay').text((existingData.levyWholAmt ? Number(existingData.levyWholAmt).toLocaleString() : '0') + ' 원');
// 기존 데이터 로딩 시 계산하기 버튼 숨김 (이미 계산된 결과가 있으므로)
- hideCalculateButton();
+ LevyPrvntcPopup.hideCalculateButton(); // 기존 부과정보 로드 시 계산하기 버튼 숨김
// 시가표준액
$('#standardMarketPrice').val(existingData.mprcStdAmt || '').trigger('focus');
@@ -825,10 +825,10 @@
$('#vltnArea').val(vltnArea).trigger('focus').trigger('change'); // 위반면적, change 이벤트 트리거
// 행위유형에 따른 산정률1 설정
- $('#cmpttnRtDisplay').val(rowData.actCmpttnRt+ ' %');
- $('#cmpttnRtCd').val(rowData.actTypeCd);
- $('#cmpttnRt').val(rowData.actCmpttnRt);
- $('#cmpttnRtRate').val(rowData.actCmpttnRtRate);
+ $('#cmpttnRtDisplay').val(rowData.actCmpttnRt+ ' %'); // 산정률 표시 필드 (퍼센트 포함)
+ $('#cmpttnRtCd').val(rowData.actTypeCd); // 산정률 코드 설정
+ $('#cmpttnRt').val(rowData.actCmpttnRt); // 산정률 값 설정
+ $('#cmpttnRtRate').val(rowData.actCmpttnRtRate); // 산정률 계산용 비율값 설정
$('#bscsCstrnRt').val(''); // 기초공사율
$('#bscsCstrnSeCd').val(''); // 기초공사구분
@@ -865,7 +865,7 @@
$('#bscsCstrnSeCd').trigger('change'); // 기초공사구분 변경 이벤트 트리거
// 계산하기 버튼 표시 (값이 변경된 경우)
- showCalculateButton();
+ LevyPrvntcPopup.showCalculateButton(); // 신규 행위정보 선택 시 계산하기 버튼 표시
};
@@ -936,36 +936,36 @@
});
$('#bscsCstrnSeCd').on('change', function () { // 기초공사구분 변경 시
- var selectedValue = $(this).val();
- var rate = '';
+ var selectedValue = $(this).val(); // 선택된 기초공사구분 값 가져오기
+ var rate = ''; // 기초공사율 값 저장 변수
// 먼저 기존 부과정보에서 온 hidden 값들 확인
- var bscsCstrnYRate = $('#bscsCstrnYBdstCmpttnRt').val();
- var bscsCstrnNRate = $('#bscsCstrnNBdstCmpttnRt').val();
- var dupEtbldgRate = $('#dupEtbldgBdstCmpttnRt').val();
+ var bscsCstrnYRate = $('#bscsCstrnYBdstCmpttnRt').val(); // 기초공사Y건축물산정비율 값
+ var bscsCstrnNRate = $('#bscsCstrnNBdstCmpttnRt').val(); // 기초공사N건축물산정비율 값
+ var dupEtbldgRate = $('#dupEtbldgBdstCmpttnRt').val(); // 복측증축건축물산정비율 값
// 기존 부과정보에서 온 값이 있으면 사용, 없으면 그리드에서 조회
if (bscsCstrnYRate || bscsCstrnNRate || dupEtbldgRate) {
// 기존 부과정보 기준 비율 사용
- if (selectedValue === '1') {
- rate = bscsCstrnYRate || '';
- } else if (selectedValue === '2') {
- rate = bscsCstrnNRate || '';
- } else if (selectedValue === '3') {
- rate = dupEtbldgRate || '';
+ if (selectedValue === '1') { // 기초공사Y인 경우
+ rate = bscsCstrnYRate || ''; // 기초공사Y건축물산정비율 사용
+ } else if (selectedValue === '2') { // 기초공사N인 경우
+ rate = bscsCstrnNRate || ''; // 기초공사N건축물산정비율 사용
+ } else if (selectedValue === '3') { // 복측증축인 경우
+ rate = dupEtbldgRate || ''; // 복측증축건축물산정비율 사용
}
} else {
// 그리드에서 현재 선택된 행 데이터 사용
- var focusedCell = self.grid.instance.getFocusedCell();
+ var focusedCell = self.grid.instance.getFocusedCell(); // 현재 포커스된 셀 정보 가져오기
if (focusedCell && focusedCell.rowKey !== null) {
- var rowData = self.grid.instance.getRow(focusedCell.rowKey);
+ var rowData = self.grid.instance.getRow(focusedCell.rowKey); // 해당 행의 데이터 가져오기
if (rowData) {
- if (selectedValue === '1') {
- rate = rowData.bscsCstrnYBdstCmpttnRt || '';
- } else if (selectedValue === '2') {
- rate = rowData.bscsCstrnNBdstCmpttnRt || '';
- } else if (selectedValue === '3') {
- rate = rowData.dupEtbldgBdstCmpttnRt || '';
+ if (selectedValue === '1') { // 기초공사Y인 경우
+ rate = rowData.bscsCstrnYBdstCmpttnRt || ''; // 그리드에서 기초공사Y건축물산정비율 사용
+ } else if (selectedValue === '2') { // 기초공사N인 경우
+ rate = rowData.bscsCstrnNBdstCmpttnRt || ''; // 그리드에서 기초공사N건축물산정비율 사용
+ } else if (selectedValue === '3') { // 복측증축인 경우
+ rate = rowData.dupEtbldgBdstCmpttnRt || ''; // 그리드에서 복측증축건축물산정비율 사용
}
}
}
@@ -974,37 +974,37 @@
$('#bscsCstrnRt').val(rate).trigger('focus'); // 기초공사율 설정
// 계산하기 버튼 표시 (값이 변경된 경우)
- showCalculateButton();
+ LevyPrvntcPopup.showCalculateButton(); // 기초공사구분 선택 시 계산하기 버튼 표시
});
// 산정률2 선택 시 산정률2 input에 값 설정
$('#cmpttnRt2Cd').on('change', function () {
- var selectedOption = $(this).find('option:selected');
- var rateValue = selectedOption.attr('rateValueAttribute');
- var rateValue2 = selectedOption.attr('rateValueAttribute2');
- $('#cmpttnRt2').val(rateValue || '');
- $('#cmpttnRt2Rate').val(rateValue2 || '');
- $('#cmpttnRt2Display').val((rateValue || '') + ' %').trigger('focus');
+ var selectedOption = $(this).find('option:selected'); // 선택된 옵션 가져오기
+ var rateValue = selectedOption.attr('rateValueAttribute'); // 산정률2 값 가져오기
+ var rateValue2 = selectedOption.attr('rateValueAttribute2'); // 산정률2 계산용 비율값 가져오기
+ $('#cmpttnRt2').val(rateValue || ''); // 산정률2 값 설정
+ $('#cmpttnRt2Rate').val(rateValue2 || ''); // 산정률2 계산용 비율값 설정
+ $('#cmpttnRt2Display').val((rateValue || '') + ' %').trigger('focus'); // 산정률2 표시 필드 설정
// 계산하기 버튼 표시 (값이 변경된 경우)
- showCalculateButton();
+ LevyPrvntcPopup.showCalculateButton(); // 산정률2 선택 시 계산하기 버튼 표시
});
// 위반면적 변경 시 계산하기 버튼 표시
$('#vltnArea').on('change keyup', function() {
- showCalculateButton();
+ LevyPrvntcPopup.showCalculateButton(); // 위반면적 변경 시 계산하기 버튼 표시
});
// 계산에 사용되는 입력 필드 변경 시 계산하기 버튼 표시 (기초공사율 포함)
- var calculationInputs = '#bldgNewPrcCrtrAmt, #strctIdx, #usgIdx, #pstnIdx, #elpsYrRdvlrt, #bscsCstrnRt';
+ var calculationInputs = '#bldgNewPrcCrtrAmt, #strctIdx, #usgIdx, #pstnIdx, #elpsYrRdvlrt, #bscsCstrnRt'; // 계산 관련 입력 필드들
$(document).on('change', calculationInputs, function() {
- showCalculateButton();
+ LevyPrvntcPopup.showCalculateButton(); // 계산 관련 필드 변경 시 계산하기 버튼 표시
});
// 계산하기 버튼 클릭 이벤트
$('#btnCalculate').on('click', function() {
- performCalculation();
+ LevyPrvntcPopup.performCalculation(); // 계산하기 버튼 클릭 시 통합 계산 실행
});
},
@@ -1128,42 +1128,42 @@
*/
collectFormData: function() {
return {
- mode: $('#mode').val(),
- levyInfoId: LevyPrvntcPopup.levyInfoIdSelect || null,
- crdnYr: $('#crdnYr').val(),
- crdnNo: $('#crdnNo').val(),
- impltInfoId: $('#impltInfoId').val(),
- impltTaskSeCd: this.impltTaskSeCd,
- actInfoId: $('#actInfoId').val(),
- pstnInfoId: $('#pstnInfoId').val(),
- sggCd: $('#sggCd').val() || '000',
- docNo: $('#docNo').val() || null,
- impltCpsrAmt: $('#impltCpsrAmt').val() || null,
- mprcStdAmt: $('#standardMarketPrice').inputmask('unmaskedvalue') || '0',
- vltnArea: $('#vltnArea').inputmask('unmaskedvalue') || '0',
- adtnRtCd: $('#adtnRtCd').val() || null,
- adtnRt: $('#adtnRt').val() || null,
- sbtrRtCd: $('#sbtrRtCd').val() || null,
- sbtrRt: $('#sbtrRt').val() || null,
- adsbmtnEnfcRt: $('#adsbmtnEnfcRt').val() || '100',
- cmpttnRtCd: $('#cmpttnRtCd').val() || null,
- cmpttnRt: $('#cmpttnRt').val() || null,
- cmpttnRt2Cd: $('#cmpttnRt2Cd').val() || null,
- cmpttnRt2: $('#cmpttnRt2').val() || null,
- cmpttnAmt: $('#cmpttnAmt').inputmask('unmaskedvalue') || '0',
- levyWholAmt: $('#levyWholAmt').val() || '0',
- bldgNewPrcCrtrAmtNo: $('#bldgNewPrcCrtrAmtNo').val() || null,
- bldgCrtrMprcAmt: $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0',
- strctIdxCd: $('#strctIdxCd').val() || null,
- strctIdx: $('#strctIdx').inputmask('unmaskedvalue') || '0',
- usgIdxCd: $('#usgIdxCd').val() || null,
- usgIdx: $('#usgIdx').inputmask('unmaskedvalue') || '0',
- pstnIdxNo: $('#pstnIdxNo').val() || null,
- pstnIdx: $('#pstnIdx').inputmask('unmaskedvalue') || '0',
- elpsYrRdvlrt: $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0',
- bscsCstrnSeCd: $('#bscsCstrnSeCd').val() || null,
- bscsCstrnRt: $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0',
- bdstTxtnMprc: $('#taxableMarketPrice').inputmask('unmaskedvalue') || '0'
+ mode: $('#mode').val(), // 모드 (C:등록, U:수정, V:보기)
+ levyInfoId: LevyPrvntcPopup.levyInfoIdSelect || null, // 부과정보 ID (수정 시 사용)
+ crdnYr: $('#crdnYr').val(), // 단속연도
+ crdnNo: $('#crdnNo').val(), // 단속번호
+ impltInfoId: $('#impltInfoId').val(), // 이행정보 ID
+ impltTaskSeCd: this.impltTaskSeCd, // 이행업무구분코드
+ actInfoId: $('#actInfoId').val(), // 행위정보 ID
+ pstnInfoId: $('#pstnInfoId').val(), // 위치정보 ID
+ sggCd: $('#sggCd').val() || '000', // 시군구코드
+ docNo: $('#docNo').val() || null, // 문서번호
+ impltCpsrAmt: $('#impltCpsrAmt').val() || null, // 이행강제금액
+ mprcStdAmt: $('#standardMarketPrice').inputmask('unmaskedvalue') || '0', // 시가표준액
+ vltnArea: $('#vltnArea').inputmask('unmaskedvalue') || '0', // 위반면적
+ adtnRtCd: $('#adtnRtCd').val() || null, // 가산율 코드
+ adtnRt: $('#adtnRt').val() || null, // 가산율 값
+ sbtrRtCd: $('#sbtrRtCd').val() || null, // 감산율 코드
+ sbtrRt: $('#sbtrRt').val() || null, // 감산율 값
+ adsbmtnEnfcRt: $('#adsbmtnEnfcRt').val() || '100', // 가감산시행령률
+ cmpttnRtCd: $('#cmpttnRtCd').val() || null, // 산정률 코드
+ cmpttnRt: $('#cmpttnRt').val() || null, // 산정률 값
+ cmpttnRt2Cd: $('#cmpttnRt2Cd').val() || null, // 산정률2 코드
+ cmpttnRt2: $('#cmpttnRt2').val() || null, // 산정률2 값
+ cmpttnAmt: $('#cmpttnAmt').inputmask('unmaskedvalue') || '0', // 산정액
+ levyWholAmt: $('#levyWholAmt').val() || '0', // 부과총액
+ bldgNewPrcCrtrAmtNo: $('#bldgNewPrcCrtrAmtNo').val() || null, // 건물기준시가액 번호
+ bldgCrtrMprcAmt: $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0', // 건물기준시가액
+ strctIdxCd: $('#strctIdxCd').val() || null, // 구조지수 코드
+ strctIdx: $('#strctIdx').inputmask('unmaskedvalue') || '0', // 구조지수 값
+ usgIdxCd: $('#usgIdxCd').val() || null, // 용도지수 코드
+ usgIdx: $('#usgIdx').inputmask('unmaskedvalue') || '0', // 용도지수 값
+ pstnIdxNo: $('#pstnIdxNo').val() || null, // 위치지수 번호
+ pstnIdx: $('#pstnIdx').inputmask('unmaskedvalue') || '0', // 위치지수 값
+ elpsYrRdvlrt: $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0', // 경과년수별잔가율
+ bscsCstrnSeCd: $('#bscsCstrnSeCd').val() || null, // 기초공사구분 코드
+ bscsCstrnRt: $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0', // 기초공사율 값
+ bdstTxtnMprc: $('#taxableMarketPrice').inputmask('unmaskedvalue') || '0' // 건축물과세시가
};
},
@@ -1282,273 +1282,264 @@
let rateForTotal = 100;
if (type === '1') { // '1' for 가산(add)
- $('#adtnRtCd').val(selectedRow.adsbmtnRtCd);
- $('#adtnRt').val(rate);
- $('#adtnRtRate').val(rateForCalc);
- $('#btnOpenAddPopup').text('+ 가산 [' + rateForDisplay + ']');
+ $('#adtnRtCd').val(selectedRow.adsbmtnRtCd); // 가산율 코드 설정
+ $('#adtnRt').val(rate); // 가산율 값 설정
+ $('#adtnRtRate').val(rateForCalc); // 가산율 계산용 비율값 설정
+ $('#btnOpenAddPopup').text('+ 가산 [' + rateForDisplay + ']'); // 가산 버튼 텍스트 업데이트
} else if (type === '2') { // '2' for 감산(minus)
- $('#sbtrRtCd').val(selectedRow.adsbmtnRtCd);
- $('#sbtrRt').val(rate);
- $('#sbtrRtRate').val(rateForCalc);
- $('#btnOpenMinusPopup').text('- 감산 [' + rateForDisplay + ']');
+ $('#sbtrRtCd').val(selectedRow.adsbmtnRtCd); // 감산율 코드 설정
+ $('#sbtrRt').val(rate); // 감산율 값 설정
+ $('#sbtrRtRate').val(rateForCalc); // 감산율 계산용 비율값 설정
+ $('#btnOpenMinusPopup').text('- 감산 [' + rateForDisplay + ']'); // 감산 버튼 텍스트 업데이트
}
- var addRate = $('#adtnRt').val();
- var minusRate = $('#sbtrRt').val();
- const totalRateCalcAdd = parseFloat(addRate) || 0;
- const totalRateCalcMinus = parseFloat(minusRate) || 0;
- const totalRateCalc = 100 + totalRateCalcAdd - totalRateCalcMinus;
+ var addRate = $('#adtnRt').val(); // 현재 설정된 가산율 값 가져오기
+ var minusRate = $('#sbtrRt').val(); // 현재 설정된 감산율 값 가져오기
+ const totalRateCalcAdd = parseFloat(addRate) || 0; // 가산율을 숫자로 변환
+ const totalRateCalcMinus = parseFloat(minusRate) || 0; // 감산율을 숫자로 변환
+ const totalRateCalc = 100 + totalRateCalcAdd - totalRateCalcMinus; // 최종 가감산시행령률 계산 (100% + 가산율 - 감산율)
- $("#adsbmtnEnfcRt").val( totalRateCalc );
- $("#adsbmtnEnfcRtDisplay").val( totalRateCalc+" %" );
+ $("#adsbmtnEnfcRt").val( totalRateCalc ); // 가감산시행령률 hidden 필드에 계산된 비율 값 설정
+ $("#adsbmtnEnfcRtDisplay").val( totalRateCalc+" %" ); // 가감산시행령률 표시 필드에 퍼센트 포함하여 설정
// 계산하기 버튼 표시 (값이 변경된 경우)
- showCalculateButton();
- }
-
- };
+ LevyPrvntcPopup.showCalculateButton(); // 가감산시행령률 표시 영역 업데이트 후 계산하기 버튼 표시
+ },
- // ========================================
- // 6. 계산 관련 유틸리티 함수들
- // ========================================
+ /**
+ * 계산하기 버튼 표시 함수
+ * 중요로직: select box 값이 변경되었을 때 계산하기 버튼을 표시합니다.
+ */
+ showCalculateButton: function() {
+ var btnCalculate = $('#btnCalculate'); // 계산하기 버튼 DOM 요소
+ if (btnCalculate.length > 0) {
+ btnCalculate.show().addClass('btn-highlight');
- // ========================================
- // 🧮 계산하기 버튼 방식 계산 시스템
- // ========================================
+ // 건축물 과세시가, 시가표준액(상단), 시가표준액(하단), 산정액 값 초기화 처리
+ // 오류 시 필드 초기화
+ $('#taxableMarketPrice').val('').trigger('focus'); // 건축물과세시가 필드 초기화
+ $('#standardMarketPrice').val('').trigger('focus'); // 시가표준액(상단) 필드 초기화
+ $('#standardMarketPrice_bottom').val('').trigger('focus'); // 시가표준액(하단) 필드 초기화
+ $('#cmpttnAmt').val('').trigger('focus'); // 산정액 필드 초기화
+ $('#levyWholAmt').val(''); // 부과총액 hidden 필드 초기화
+ $('#levyWholAmtDisplay').text('0 원'); // 부과총액 표시 영역 초기화
+
+ console.log('🔄 계산하기 버튼 표시됨 - 값이 변경됨');
+ }
+ },
- /**
- * 계산하기 버튼 표시 함수
- * 중요로직: select box 값이 변경되었을 때 계산하기 버튼을 표시합니다.
- */
- function showCalculateButton() {
- var btnCalculate = $('#btnCalculate');
- if (btnCalculate.length > 0) {
- btnCalculate.show().addClass('btn-highlight');
-
- //건축물 과세시가, 시가표준액(상단), 시가표준액(하단), 산정액 값 초기화 처리
- // 오류 시 필드 초기화
- $('#taxableMarketPrice').val('').trigger('focus');
- $('#standardMarketPrice').val('').trigger('focus');
- $('#standardMarketPrice_bottom').val('').trigger('focus');
- $('#cmpttnAmt').val('').trigger('focus');
- $('#levyWholAmt').val('');
- $('#levyWholAmtDisplay').text('0 원');
-
- console.log('🔄 계산하기 버튼 표시됨 - 값이 변경됨');
- }
- }
+ /**
+ * 계산하기 버튼 숨김 함수
+ * 중요로직: 계산이 완료되었을 때 계산하기 버튼을 숨깁니다.
+ */
+ hideCalculateButton: function() {
+ var btnCalculate = $('#btnCalculate'); // 계산하기 버튼 DOM 요소
+ if (btnCalculate.length > 0) {
+ btnCalculate.hide().removeClass('btn-highlight');
- /**
- * 계산하기 버튼 숨김 함수
- * 중요로직: 계산이 완료되었을 때 계산하기 버튼을 숨깁니다.
- */
- function hideCalculateButton() {
- var btnCalculate = $('#btnCalculate');
- if (btnCalculate.length > 0) {
- btnCalculate.hide().removeClass('btn-highlight');
- console.log('✅ 계산하기 버튼 숨김됨 - 계산 완료');
- }
- }
+ console.log('✅ 계산하기 버튼 숨김 - 계산 완료됨');
+ }
+ },
- /**
- * 계산 수행 함수 - 단일 API 호출
- * 중요로직: 모든 필수값 validation 후 단일 API로 모든 계산을 한번에 수행합니다.
- * - 감산, 가산은 선택사항 (기본 100%)
- * - 나머지는 모두 필수
- */
- function performCalculation() {
- console.log('🧮 통합 계산하기 버튼 클릭됨');
-
- // 1. 필수값 validation
- var validationResult = validateCalculationInputs();
- if (!validationResult.isValid) {
- alert(validationResult.message);
- if (validationResult.focusElement) {
- $(validationResult.focusElement).focus();
+ /**
+ * 통합 계산 함수 - 건축물과세시가부터 부과총액까지 한번에 계산
+ * 중요로직: 모든 필수값 validation 후 단일 API로 모든 계산을 한번에 수행합니다.
+ */
+ performCalculation: function() {
+ console.log('🧮 통합 계산하기 버튼 클릭됨');
+
+ // 1. 필수값 validation
+ var validationResult = this.validateCalculationInputs(); // validation 함수 호출
+ if (!validationResult.isValid) {
+ alert(validationResult.message); // 오류 메시지 표시
+ if (validationResult.focusElement) {
+ $(validationResult.focusElement).focus(); // 문제 필드로 포커스 이동
+ }
+ return;
}
- return;
- }
- // 2. 입력값 수집
- var params = collectAllCalculationInputs();
- console.log('📊 수집된 통합 계산 파라미터:', params);
-
- // 3. 로딩 상태 표시
- $('#levyWholAmtDisplay').text('계산 중...');
- $('#btnCalculate').prop('disabled', true).text('계산 중...');
-
- // 4. 단일 API 호출로 모든 계산 수행
- $.ajax({
- url: '',
- type: 'POST',
- data: params,
- success: function(response) {
- if (response && response.success && response.data) {
- var data = response.data;
-
- // 모든 결과값을 한번에 설정
- // 1. 건축물과세시가
- $('#taxableMarketPrice').val(data.bdstTxtnMprc).trigger('focus');
-
- // 2. 시가표준액
- $('#standardMarketPrice').val(data.mprcStdAmt).trigger('focus');
- $('#standardMarketPrice_bottom').val(data.mprcStdAmt).trigger('focus');
-
- // 3. 산정액
- $('#cmpttnAmt').val(parseInt(data.cmpttnAmt)).trigger('focus');
-
- // 4. 부과총액
- $('#levyWholAmt').val(parseInt(data.levyWholAmt));
- $('#levyWholAmtDisplay').text(data.levyWholAmtDisplay);
-
- console.log('✅ 통합 계산 완료!', {
- 건축물과세시가: data.bdstTxtnMprc,
- 시가표준액: data.mprcStdAmt,
- 산정액: data.cmpttnAmt,
- 부과총액: data.levyWholAmt
- });
+ // 2. 입력값 수집
+ var params = this.collectAllCalculationInputs(); // 계산 파라미터 수집
+ console.log('📊 수집된 통합 계산 파라미터:', params);
- // 계산하기 버튼 숨김
- hideCalculateButton();
+ // 3. UI 로딩 상태 표시
+ $('#levyWholAmtDisplay').text('계산 중...'); // 부과총액 표시 영역에 로딩 메시지
+ $('#btnCalculate').prop('disabled', true).text('계산 중...'); // 계산하기 버튼 비활성화
- } else {
- throw new Error(response.message || '서버에서 올바른 계산 결과를 받지 못했습니다.');
+ // 4. 단일 API 호출로 모든 계산 수행
+ $.ajax({
+ url: '',
+ type: 'POST',
+ data: params,
+ success: function(response) {
+ if (response && response.success && response.data) {
+ var data = response.data; // 계산 결과 데이터
+
+ // 모든 결과값을 한번에 설정
+ // 1. 건축물과세시가
+ $('#taxableMarketPrice').val(data.bdstTxtnMprc).trigger('focus'); // 건축물과세시가 결과값 설정
+
+ // 2. 시가표준액
+ $('#standardMarketPrice').val(data.mprcStdAmt).trigger('focus'); // 시가표준액(상단) 결과값 설정
+ $('#standardMarketPrice_bottom').val(data.mprcStdAmt).trigger('focus'); // 시가표준액(하단) 결과값 설정
+
+ // 3. 산정액
+ $('#cmpttnAmt').val(parseInt(data.cmpttnAmt)).trigger('focus'); // 산정액 결과값 설정
+
+ // 4. 부과총액
+ $('#levyWholAmt').val(parseInt(data.levyWholAmt)); // 부과총액 hidden 필드 설정
+ $('#levyWholAmtDisplay').text(data.levyWholAmtDisplay); // 부과총액 표시 영역 설정
+
+ console.log('✅ 통합 계산 완료!', {
+ 건축물과세시가: data.bdstTxtnMprc,
+ 시가표준액: data.mprcStdAmt,
+ 산정액: data.cmpttnAmt,
+ 부과총액: data.levyWholAmt
+ });
+
+ // 계산하기 버튼 숨김
+ LevyPrvntcPopup.hideCalculateButton();
+
+ } else {
+ throw new Error(response.message || '서버에서 올바른 계산 결과를 받지 못했습니다.');
+ }
+ },
+ error: function(xhr, status, error) {
+ console.error('❌ 통합 계산 오류:', error);
+ alert('계산 중 오류가 발생했습니다.');
+
+ // 오류 시 필드 초기화
+ $('#taxableMarketPrice').val('').trigger('focus'); // 건축물과세시가 필드 초기화
+ $('#standardMarketPrice').val('').trigger('focus'); // 시가표준액(상단) 필드 초기화
+ $('#standardMarketPrice_bottom').val('').trigger('focus'); // 시가표준액(하단) 필드 초기화
+ $('#cmpttnAmt').val('').trigger('focus'); // 산정액 필드 초기화
+ $('#levyWholAmt').val(''); // 부과총액 hidden 필드 초기화
+ $('#levyWholAmtDisplay').text('0 원'); // 부과총액 표시 영역 초기화
+ },
+ complete: function() {
+ // 버튼 상태 복원
+ $('#btnCalculate').prop('disabled', false).text('계산하기'); // 계산하기 버튼 활성화 복원
}
- },
- error: function(xhr, status, error) {
- console.error('❌ 통합 계산 오류:', error);
- alert('계산 중 오류가 발생했습니다.');
+ });
+ },
- // 오류 시 필드 초기화
- $('#taxableMarketPrice').val('').trigger('focus');
- $('#standardMarketPrice').val('').trigger('focus');
- $('#standardMarketPrice_bottom').val('').trigger('focus');
- $('#cmpttnAmt').val('').trigger('focus');
- $('#levyWholAmt').val('');
- $('#levyWholAmtDisplay').text('0 원');
- },
- complete: function() {
- // 로딩 상태 해제
- $('#btnCalculate').prop('disabled', false).text('계산하기');
+ /**
+ * 통합 계산 필수값 검증 함수
+ * 중요로직: 건축물과세시가 계산부터 부과총액까지 전체 계산에 필요한 모든 필수값을 검증합니다.
+ */
+ validateCalculationInputs: function() {
+ // 1. 건축물과세시가 계산에 필요한 값들 검증
+ var bldgNewPrcCrtrAmt = $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0'; // 건물기준시가액
+ if (!bldgNewPrcCrtrAmt || parseFloat(bldgNewPrcCrtrAmt) <= 0) {
+ return {
+ isValid: false,
+ message: '건물기준시가액을 입력해주세요.',
+ focusElement: '#bldgNewPrcCrtrAmt'
+ };
}
- });
- }
- /**
- * 통합 계산 입력값 validation 함수
- * 중요로직: 건축물과세시가 계산부터 부과총액까지 전체 계산에 필요한 모든 필수값을 검증합니다.
- */
- function validateCalculationInputs() {
- // 1. 건축물과세시가 계산에 필요한 값들 검증
- var bldgNewPrcCrtrAmt = $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0';
- if (!bldgNewPrcCrtrAmt || parseFloat(bldgNewPrcCrtrAmt) <= 0) {
- return {
- isValid: false,
- message: '건물기준시가액을 입력해주세요.',
- focusElement: '#bldgNewPrcCrtrAmt'
- };
- }
+ var strctIdx = $('#strctIdx').inputmask('unmaskedvalue') || '0'; // 구조지수
+ if (!strctIdx || parseFloat(strctIdx) <= 0) {
+ return {
+ isValid: false,
+ message: '구조지수를 입력해주세요.',
+ focusElement: '#strctIdx'
+ };
+ }
- var strctIdx = $('#strctIdx').inputmask('unmaskedvalue') || '0';
- if (!strctIdx || parseFloat(strctIdx) <= 0) {
- return {
- isValid: false,
- message: '구조지수를 입력해주세요.',
- focusElement: '#strctIdx'
- };
- }
+ var usgIdx = $('#usgIdx').inputmask('unmaskedvalue') || '0'; // 용도지수
+ if (!usgIdx || parseFloat(usgIdx) <= 0) {
+ return {
+ isValid: false,
+ message: '용도지수를 입력해주세요.',
+ focusElement: '#usgIdx'
+ };
+ }
- var usgIdx = $('#usgIdx').inputmask('unmaskedvalue') || '0';
- if (!usgIdx || parseFloat(usgIdx) <= 0) {
- return {
- isValid: false,
- message: '용도지수를 입력해주세요.',
- focusElement: '#usgIdx'
- };
- }
+ var pstnIdx = $('#pstnIdx').inputmask('unmaskedvalue') || '0'; // 위치지수
+ if (!pstnIdx || parseFloat(pstnIdx) <= 0) {
+ return {
+ isValid: false,
+ message: '위치지수를 입력해주세요.',
+ focusElement: '#pstnIdx'
+ };
+ }
- var pstnIdx = $('#pstnIdx').inputmask('unmaskedvalue') || '0';
- if (!pstnIdx || parseFloat(pstnIdx) <= 0) {
- return {
- isValid: false,
- message: '위치지수를 입력해주세요.',
- focusElement: '#pstnIdx'
- };
- }
+ var elpsYrRdvlrt = $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0'; // 경과년수별잔가율
+ if (!elpsYrRdvlrt || parseFloat(elpsYrRdvlrt) <= 0) {
+ return {
+ isValid: false,
+ message: '경과년수별잔가율을 입력해주세요.',
+ focusElement: '#elpsYrRdvlrt'
+ };
+ }
- var elpsYrRdvlrt = $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0';
- if (!elpsYrRdvlrt || parseFloat(elpsYrRdvlrt) <= 0) {
- return {
- isValid: false,
- message: '경과년수별잔가율을 입력해주세요.',
- focusElement: '#elpsYrRdvlrt'
- };
- }
+ var bscsCstrnRt = $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0'; // 기초공사율
+ if (!bscsCstrnRt || parseFloat(bscsCstrnRt) <= 0) {
+ return {
+ isValid: false,
+ message: '기초공사율을 선택해주세요.',
+ focusElement: '#bscsCstrnSeCd'
+ };
+ }
- var bscsCstrnRt = $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0';
- if (!bscsCstrnRt || parseFloat(bscsCstrnRt) <= 0) {
- return {
- isValid: false,
- message: '기초공사율을 선택해주세요.',
- focusElement: '#bscsCstrnSeCd'
- };
- }
+ // 2. 위반면적 검증
+ var vltnArea = $('#vltnArea').inputmask('unmaskedvalue') || '0'; // 위반면적
+ if (!vltnArea || parseFloat(vltnArea) <= 0) {
+ return {
+ isValid: false,
+ message: '위반면적을 입력해주세요.',
+ focusElement: '#vltnArea'
+ };
+ }
- // 2. 위반면적 검증
- var vltnArea = $('#vltnArea').inputmask('unmaskedvalue') || '0';
- if (!vltnArea || parseFloat(vltnArea) <= 0) {
- return {
- isValid: false,
- message: '위반면적을 입력해주세요.',
- focusElement: '#vltnArea'
- };
- }
+ // 3. 산정률 검증
+ var cmpttnRtRate = $('#cmpttnRtRate').val(); // 산정률 비율값
+ if (!cmpttnRtRate || parseFloat(cmpttnRtRate) <= 0) {
+ return {
+ isValid: false,
+ message: '산정률을 선택해주세요.',
+ focusElement: '#cmpttnRtCd'
+ };
+ }
- // 3. 산정률 검증
- var cmpttnRtRate = $('#cmpttnRtRate').val();
- if (!cmpttnRtRate || parseFloat(cmpttnRtRate) <= 0) {
- return {
- isValid: false,
- message: '산정률을 선택해주세요.',
- focusElement: '#cmpttnRtCd'
- };
- }
+ // 4. 산정률2 검증
+ var cmpttnRt2Rate = $('#cmpttnRt2Rate').val(); // 산정률2 비율값
+ if (!cmpttnRt2Rate || parseFloat(cmpttnRt2Rate) <= 0) {
+ return {
+ isValid: false,
+ message: '산정률2를 선택해주세요.',
+ focusElement: '#cmpttnRt2Cd'
+ };
+ }
- // 4. 산정률2 검증
- var cmpttnRt2Rate = $('#cmpttnRt2Rate').val();
- if (!cmpttnRt2Rate || parseFloat(cmpttnRt2Rate) <= 0) {
+ return { isValid: true }; // 모든 검증 통과
+ },
+
+ /**
+ * 통합 계산에 필요한 모든 입력값 수집 함수
+ * 중요로직: 건축물과세시가부터 부과총액까지 계산에 필요한 모든 파라미터를 수집합니다.
+ */
+ collectAllCalculationInputs: function() {
return {
- isValid: false,
- message: '산정률2를 선택해주세요.',
- focusElement: '#cmpttnRt2Cd'
+ // 건축물과세시가 계산용 파라미터
+ bldgNewPrcCrtrAmt: $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0', // 건물기준시가액
+ strctIdx: $('#strctIdx').inputmask('unmaskedvalue') || '0', // 구조지수
+ usgIdx: $('#usgIdx').inputmask('unmaskedvalue') || '0', // 용도지수
+ pstnIdx: $('#pstnIdx').inputmask('unmaskedvalue') || '0', // 위치지수
+ elpsYrRdvlrt: $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0', // 경과년수별잔가율
+ bscsCstrnRt: $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0', // 기초공사율
+
+ // 산정액/부과총액 계산용 파라미터
+ vltnArea: $('#vltnArea').inputmask('unmaskedvalue') || '0', // 위반면적
+ adsbmtnEnfcRt: $('#adsbmtnEnfcRt').val() || '100', // 가감산시행령률
+ cmpttnRtRate: $('#cmpttnRtRate').val() || '0', // 산정률 비율값
+ cmpttnRt2Rate: $('#cmpttnRt2Rate').val() || '0' // 산정률2 비율값
};
}
- return { isValid: true };
- }
-
- /**
- * 통합 계산용 입력값 수집 함수
- * 중요로직: 모든 계산에 필요한 파라미터를 한번에 수집합니다.
- */
- function collectAllCalculationInputs() {
- return {
- // 건축물과세시가 계산용 파라미터
- bldgNewPrcCrtrAmt: $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0',
- strctIdx: $('#strctIdx').inputmask('unmaskedvalue') || '0',
- usgIdx: $('#usgIdx').inputmask('unmaskedvalue') || '0',
- pstnIdx: $('#pstnIdx').inputmask('unmaskedvalue') || '0',
- elpsYrRdvlrt: $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0',
- bscsCstrnRt: $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0',
-
- // 산정액/부과총액 계산용 파라미터
- vltnArea: $('#vltnArea').inputmask('unmaskedvalue') || '0',
- adsbmtnEnfcRt: $('#adsbmtnEnfcRt').val() || '100',
- cmpttnRtRate: $('#cmpttnRtRate').val() || '0',
- cmpttnRt2Rate: $('#cmpttnRt2Rate').val() || '0'
- };
- }
+ };
// ========================================