부과예고, 이행정보 삭제 처리 오타 수정, 팝업페이지 스크립트 상세 주석 추가

dev
박성영 3 months ago
parent e0a2370771
commit 7b4bb0d621

@ -335,7 +335,7 @@
UPDATE tb_levy_info
SET DEL_YN = 'Y',
DEL_DT = NOW(),
DLTR = #{userId}
DLTR = #{dltr}
WHERE LEVY_INFO_ID = #{levyInfoId}
</delete>

@ -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: '<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/calculateAll.ajax"/>',
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: '<c:url value="/crdn/crndRegistAndView/crdnLevyPrvntc/calculateAll.ajax"/>',
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'
};
}
};
// ========================================

Loading…
Cancel
Save