|
|
|
@ -110,7 +110,7 @@ public class Levy02Bean extends AbstractComponent {
|
|
|
|
|
// 단속 ID로 단속, 감경 정보 조회
|
|
|
|
|
DataObject infoCrdnRduct = rductMapper.selectCrdnInfo(rduct.getCrdnId());
|
|
|
|
|
|
|
|
|
|
// 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
|
|
|
|
|
// 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
|
|
|
|
|
if (!infoCrdnRduct.string("RDUCT_ID").equals("")) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("과태료 감경 정보가 이미 존재합니다.");
|
|
|
|
@ -153,7 +153,14 @@ public class Levy02Bean extends AbstractComponent {
|
|
|
|
|
throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 부과(TB_LEVY) 대장을 수정 한다.
|
|
|
|
|
// 부과 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
|
|
|
|
@ -165,6 +172,7 @@ public class Levy02Bean extends AbstractComponent {
|
|
|
|
|
} 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 {
|
|
|
|
@ -175,7 +183,6 @@ public class Levy02Bean extends AbstractComponent {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int sumAmt = levy.getLevyPcptax() - infoCrdnRduct.number("RCVMT_PCPTAX").intValue() - infoCrdnRduct.number("RDCAMT_PCPTAX").intValue();
|
|
|
|
|
levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세
|
|
|
|
|
|
|
|
|
@ -184,6 +191,7 @@ public class Levy02Bean extends AbstractComponent {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -207,7 +215,86 @@ public class Levy02Bean extends AbstractComponent {
|
|
|
|
|
* </ul>
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|