과태료 감경 취소 수정.

main
jjh 1 year ago
parent 5e2d17ba10
commit 9a1181d4d6

@ -110,7 +110,7 @@ public class Levy02Bean extends AbstractComponent {
// 단속 ID로 단속, 감경 정보 조회 // 단속 ID로 단속, 감경 정보 조회
DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId()); DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId());
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. // 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
if (!infoCrdnRduct.string("RDUCT_ID").equals("")) { if (!infoCrdnRduct.string("RDUCT_ID").equals("")) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("과태료 감경 정보가 이미 존재합니다."); throw new RuntimeException("과태료 감경 정보가 이미 존재합니다.");
@ -153,36 +153,44 @@ public class Levy02Bean extends AbstractComponent {
throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다."); throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다.");
} }
// 부과(TB_LEVY) 대장을 수정 한다. // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정 한다.
Levy levy = new Levy(); if (!infoCrdnRduct.string("LEVY_ID").equals("")) {
// 가산금이 존재하는 확인
if (infoCrdnRduct.number("LEVY_ADAMT").intValue() != 0 ) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 등록 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다.");
}
Levy levy = new Levy();
levy.setLevyId(infoCrdnRduct.string("LEVY_ID")); // 부과 ID levy.setLevyId(infoCrdnRduct.string("LEVY_ID")); // 부과 ID
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액 levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
// 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로.. // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
if (infoCrdnRduct.number("CRDN_STTS_CD").intValue() == 51) { if (infoCrdnRduct.number("CRDN_STTS_CD").intValue() == 51) {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
} else { } else {
// 주정차위반, 전용차로위반 과태료 // 주정차위반, 전용차로위반 과태료
if (infoCrdnRduct.string("TASK_SE_CD").equals("BPV") || infoCrdnRduct.string("TASK_SE_CD").equals("PVS")) { if (infoCrdnRduct.string("TASK_SE_CD").equals("BPV") || infoCrdnRduct.string("TASK_SE_CD").equals("PVS")) {
if (infoCrdnRduct.number("DUDT_YMD").intValue() >= infoCrdnRduct.number("TODAY").intValue()) { // 납기 일자 확인
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 if (infoCrdnRduct.number("DUDT_YMD").intValue() >= infoCrdnRduct.number("TODAY").intValue()) {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} else {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
}
} else { } else {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} }
} else {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} }
}
int sumAmt = levy.getLevyPcptax() - infoCrdnRduct.number("RCVMT_PCPTAX").intValue() - infoCrdnRduct.number("RDCAMT_PCPTAX").intValue(); int sumAmt = levy.getLevyPcptax() - infoCrdnRduct.number("RCVMT_PCPTAX").intValue() - infoCrdnRduct.number("RDCAMT_PCPTAX").intValue();
levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세 levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세
retSuccess = rductMapper.updateLevy(levy); retSuccess = rductMapper.updateLevy(levy);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다.");
}
} }
return true; return true;
@ -207,7 +215,86 @@ public class Levy02Bean extends AbstractComponent {
* </ul> * </ul>
*/ */
public boolean removeRduct(Rduct rduct) { public boolean removeRduct(Rduct rduct) {
return rductMapper.delete(rduct); // 변수 선언
boolean retSuccess = false; // DB 처리 결과
// 감경(TB_RDUCT) 자료 조회
// 감경(TB_RDUCT) 대장을 삭제 한다.
retSuccess = rductMapper.delete(rduct);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 대장 삭제에 실패하였습니다.");
}
// 단속 자료 조회
DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId());
// 과태료 금액 변경
int ffnlgAmt = 0; // 과태료 금액
int advntceAmt = 0; // 사전통지 금액
ffnlgAmt = infoCrdnRduct.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액
advntceAmt = ffnlgAmt - (ffnlgAmt * infoCrdnRduct.number("ADVNTCE_RDUCT_RT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
// 단속(TB_CRDN) 대장을 수정 한다.
Crdn crdn = new Crdn();
crdn.setCrdnId(infoCrdnRduct.string("CRDN_ID")); // 단속 ID
crdn.setFfnlgRductRt("0"); // 과태료 감경 율
crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
retSuccess = rductMapper.updateCrdn(crdn);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 취소 중 단속대장 금액 수정에 실패하였습니다.");
}
// 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정 한다.
if (!infoCrdnRduct.string("LEVY_ID").equals("")) {
// 가산금이 존재하는 확인
if (infoCrdnRduct.number("LEVY_ADAMT").intValue() != 0 ) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 취소 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다.");
}
Levy levy = new Levy();
levy.setLevyId(infoCrdnRduct.string("LEVY_ID")); // 부과 ID
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
// 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
if (infoCrdnRduct.number("CRDN_STTS_CD").intValue() == 51) {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
} else {
// 주정차위반, 전용차로위반 과태료
if (infoCrdnRduct.string("TASK_SE_CD").equals("BPV") || infoCrdnRduct.string("TASK_SE_CD").equals("PVS")) {
// 납기 일자 확인
if (infoCrdnRduct.number("DUDT_YMD").intValue() >= infoCrdnRduct.number("TODAY").intValue()) {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
} else {
levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
}
} else {
levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
}
}
int sumAmt = levy.getLevyPcptax() + infoCrdnRduct.number("LEVY_ADAMT").intValue() + infoCrdnRduct.number("INSPY_INT").intValue()
- infoCrdnRduct.number("RCVMT_PCPTAX").intValue() - infoCrdnRduct.number("RCVMT_ADAMT").intValue()
- infoCrdnRduct.number("RDCAMT_PCPTAX").intValue() - infoCrdnRduct.number("RDCAMT_ADAMT").intValue();
levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 + 부과 가산금 + 분납 이자 - 수납 본세 - 수납 가산금 - 감액 본세 - 감액 가산금
retSuccess = rductMapper.updateLevy(levy);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다.");
}
}
return true;
} }
} }

@ -428,7 +428,7 @@
FROM TB_OPNN_SBMSN FROM TB_OPNN_SBMSN
WHERE RCPT_NO LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') ) AS NEW_RCPT_NO /* 신규 접수 번호 */ WHERE RCPT_NO LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') ) AS NEW_RCPT_NO /* 신규 접수 번호 */
, <include refid="utility.today" /> AS TODAY /* 오늘 일자 */ , <include refid="utility.today" /> AS TODAY /* 오늘 일자 */
FROM TB_CRDN C FROM TB_CRDN C
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N') LEFT OUTER JOIN TB_OPNN_SBMSN OS ON (C.CRDN_ID = OS.CRDN_ID AND OS.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */

@ -54,13 +54,15 @@
, C.MINUS_AMT , C.MINUS_AMT
, C.ADTN_AMT , C.ADTN_AMT
, C.RCVMT_AMT , C.RCVMT_AMT
, C.CRDN_STTS_CD /* 처리상태 */ , C.CRDN_STTS_CD /* 단속 상태 코드 */
, (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, P.RTPYR_NO /* 납부자 번호 */ , P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */ , P.RTPYR_NM /* 납부자 명 */
, L.LEVY_ID /* 부과 ID */
FROM TB_RDUCT R FROM TB_RDUCT R
INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID) INNER JOIN TB_CRDN C ON (R.CRDN_ID = C.CRDN_ID)
INNER JOIN TB_TASK_INFO TI ON (C.SGG_CD = TI.SGG_CD AND C.TASK_SE_CD = TI.TASK_SE_CD)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.LEVY_ID = L.LEVY_ID)
</sql> </sql>
<select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */ <select id="selectRductList" parameterType="map" resultType="dataobject">/* 과태료 감경 대장 목록 조회(rductMapper.selectRductList) */
@ -206,6 +208,7 @@
, L.DUDT_YMD /* 납기 일자 */ , L.DUDT_YMD /* 납기 일자 */
, L.LEVY_PCPTAX /* 부과 본세 */ , L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */ , L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.RCVMT_PCPTAX /* 수납 본세 */ , L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */ , L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */ , L.RDCAMT_PCPTAX /* 감액 본세 */
@ -219,6 +222,7 @@
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N') LEFT OUTER JOIN TB_RDUCT R ON (C.CRDN_ID = R.CRDN_ID AND R.DEL_YN = 'N')
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
AND C.DEL_YN = 'N' /* 삭제 여부 */
</select> </select>
<update id="updateCrdnRduct" parameterType="map">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */ <update id="updateCrdnRduct" parameterType="map">/* 단속 대장 과태료 감경 금액 수정(rductMapper.updateCrdnRduct) */

@ -163,6 +163,14 @@
// validate 확인 // validate 확인
if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
// 감경 사유 확인
let rductRsn = $("#rductRsnCd--${pageName}").val();
if (rductRsn == "00") {
dialog.alert("다른 감경 사유를 선택하여 주시기 바랍니다.");
return;
}
dialog.alert({ dialog.alert({
content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?" content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?"
, onOK : () => { , onOK : () => {

Loading…
Cancel
Save