diff --git a/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java b/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java
index f6f31374..f740565a 100644
--- a/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java
+++ b/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java
@@ -302,7 +302,7 @@ public class OutsourcingFileMaker {
predefinedSetList.add(new PredefinedSet("CRDN_SE_NM", "단속구분명"));
predefinedSetList.add(new PredefinedSet("ATCH_FILE_CNT", "첨부파일갯수"));
predefinedSetList.add(new PredefinedSet("FFNLG_CRDN_AMT", "과태료단속금액"));
- predefinedSetList.add(new PredefinedSet("SUM_AMT", "합계금액"));
+ predefinedSetList.add(new PredefinedSet("LAST_AMT", "최종금액"));
predefinedSetList.add(new PredefinedSet("RG_NO", "등기번호"));
predefinedSetList.add(new PredefinedSet("OCR0", "OCR0").offLog());
predefinedSetList.add(new PredefinedSet("OCR0_1", "OCR0_1").offLog());
diff --git a/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java b/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java
index 3956d1d6..8a95a2c7 100644
--- a/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java
+++ b/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java
@@ -74,7 +74,7 @@ public class ReportOnClaims extends HWPFormat {
writer.setValue("체납자성명", EgovStringUtil.null2void(globalVariable.get("rtpyrNm")));
writer.setValue("체납자번호", EgovStringUtil.null2void(globalVariable.get("rtpyrNo")));
writer.setValue("체납자주소", EgovStringUtil.null2void(globalVariable.get("rtpyrFullAddr")));
- int sumOfList = data.stream().mapToInt(item -> item.number("SUM_AMT").intValue()).sum();
+ int sumOfList = data.stream().mapToInt(item -> item.number("LAST_AMT").intValue()).sum();
writer.setValue("채권청구액", DataFormat.n_nn0(sumOfList));
writer.setValue("합계금액", DataFormat.n_nn0(sumOfList));
writer.setValue("합계금액한글", CmmnUtil.convertNumberToHangul(sumOfList));
@@ -100,7 +100,7 @@ public class ReportOnClaims extends HWPFormat {
.set("세목", one.string("TXITM_NM"))
.set("세액", DataFormat.n_nn0(one.string("LEVY_PCPTAX")))
.set("가산금", DataFormat.n_nn0(one.string("LEVY_ADAMT")))
- .set("합계", DataFormat.n_nn0(one.string("SUM_AMT")));
+ .set("합계", DataFormat.n_nn0(one.string("LAST_AMT")));
return newObj;
}).toList();
writer.table(0, 9, 2).setValues(list);
diff --git a/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java b/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java
index 03f26809..3d35aabb 100644
--- a/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java
+++ b/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java
@@ -74,7 +74,7 @@ public class RequestForDelivery extends HWPFormat {
writer.setValue("차량번호", EgovStringUtil.null2void(globalVariable.get("vhrno")));
writer.setValue("주소", EgovStringUtil.null2void(globalVariable.get("rtpyrFullAddr")));
- int sumOfList = data.stream().mapToInt(item -> item.number("SUM_AMT").intValue()).sum();
+ int sumOfList = data.stream().mapToInt(item -> item.number("LAST_AMT").intValue()).sum();
writer.setValue("합계금액", DataFormat.n_nn0(sumOfList));
writer.setValue("교부청구금액", DataFormat.n_nn0(sumOfList));
writer.setValue("교부청구금액한글", CmmnUtil.convertNumberToHangul(sumOfList));
@@ -101,7 +101,7 @@ public class RequestForDelivery extends HWPFormat {
DataObject newObj = (DataObject) new DataObject()
.set("징수과목", one.string("TXITM_NM"))
.set("고지번호", one.string("GOJI_NO"))
- .set("과태료계", DataFormat.n_nn0(one.string("SUM_AMT")))
+ .set("과태료계", DataFormat.n_nn0(one.string("LAST_AMT")))
.set("법정기일", DataFormat.yyyy_mm_dd(one.string("DUDT_YMD")))
;
return newObj;
diff --git a/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java b/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java
index 70858fee..2bf35b70 100644
--- a/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java
+++ b/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java
@@ -57,7 +57,7 @@ public class Nht extends PDFPrintFormat {
text("pcptax","본세",""),
text("adamt","가산금",""),
- text("sumAmt","납기금액",""),
+ text("lastAmt","납기금액",""),
text("dudtYmd","납기일자",""),
text("dudtAftrPcptax","납기후본세",""),
text("dudtAftrAdamt","납기후가산금",""),
@@ -180,8 +180,8 @@ public class Nht extends PDFPrintFormat {
case "adamt" -> { //가산금
result = dataObject.string("ADAMT");
}
- case "sumAmt" -> { //납기금액
- result = dataObject.string("SUM_AMT");
+ case "lastAmt" -> { //납기금액
+ result = dataObject.string("LAST_AMT");
}
case "dudtYmd" -> { //납기일자
result = dataObject.string("DUDT_YMD");
@@ -257,9 +257,9 @@ public class Nht extends PDFPrintFormat {
String ocrBand1 = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn);
String levySeCd = dataObject.string("LEVY_SE_CD");
- int sumAmt = dataObject.number("SUM_AMT").intValue(); // 합계 금액
+ int lastAmt = dataObject.number("LAST_AMT").intValue(); // 최종 금액
String dudtYmd = dataObject.string("DUDT_YMD");
- result = CmmnUtil.getOcrband2(ocrBand1, levySeCd, sumAmt, dudtYmd);
+ result = CmmnUtil.getOcrband2(ocrBand1, levySeCd, lastAmt, dudtYmd);
}
case "ocr3" -> {
String deptCode = dataObject.string("DEPT_CD");
@@ -272,12 +272,12 @@ public class Nht extends PDFPrintFormat {
String ocrBand1 = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn);
String levySeCd = dataObject.string("LEVY_SE_CD");
- int sumAmt = dataObject.number("SUM_AMT").intValue(); // 합계 금액
+ int lastAmt = dataObject.number("LAST_AMT").intValue(); // 최종 금액
String dudtYmd = dataObject.string("DUDT_YMD");
- String ocrBand2 = CmmnUtil.getOcrband2(ocrBand1, levySeCd, sumAmt, dudtYmd);
+ String ocrBand2 = CmmnUtil.getOcrband2(ocrBand1, levySeCd, lastAmt, dudtYmd);
int afterSumAmt = dataObject.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액
- result = CmmnUtil.getOcrband3(ocrBand2, sumAmt, dudtYmd, afterSumAmt);
+ result = CmmnUtil.getOcrband3(ocrBand2, lastAmt, dudtYmd, afterSumAmt);
}
case "otptYmd" -> {
@@ -428,7 +428,7 @@ public class Nht extends PDFPrintFormat {
dataObject.put("PCPTAX", "80000"); //본세
dataObject.put("ADAMT", "0"); //가산금
- dataObject.put("SUM_AMT", "80000"); //합계금액
+ dataObject.put("LAST_AMT", "80000"); //최종금액
dataObject.put("DUDT_YMD", "20231215"); //납기일자
dataObject.put("DUDT_AFTR_AMT", "100000"); //납기후 금액
dataObject.put("DUDT_AFTR_YMD", "20231231"); //납기후 일자
diff --git a/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java b/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java
index 5db4ce62..5e759c9b 100644
--- a/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java
+++ b/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java
@@ -100,9 +100,4 @@ public interface RdctMapper extends AbstractMapper {
*/
int updateCrdnRdct(Crdn crdn);
- /**부과(TB_LEVY) 대장의 금액을 수정한다.
- * @param levy 부과 대장
- * @return 저장된 정보수
- */
- int updateLevyRdct(Levy levy);
}
diff --git a/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java b/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java
index 2a593fb9..f70155b6 100644
--- a/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java
+++ b/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java
@@ -215,7 +215,7 @@ public class LevyBean extends AbstractBean {
}
levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnInfo.number("ADVNTCE_AMT").intValue()); // 부과 본세
- levy.setSumAmt(crdnInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
+ levy.setLastAmt(crdnInfo.number("ADVNTCE_AMT").intValue()); // 최종 금액
levy.setLevyAdamt(0); // 부과 가산금
levy.setIspyInt(0); // 분납 이자
levy.setRcvmtPcptax(0); // 수납 본세
@@ -284,8 +284,8 @@ public class LevyBean extends AbstractBean {
*
그렇지 않으면 false
*
*/
- public String updateRcvmt(Levy levy) {
- int rtnNocs = levyMapper.updateRcvmt(levy);
+ public String updateLevyRcvmt(Levy levy) {
+ int rtnNocs = levyMapper.updateLevyRcvmt(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
@@ -300,8 +300,8 @@ public class LevyBean extends AbstractBean {
* 그렇지 않으면 false
*
*/
- public String updateRdcamt(Levy levy) {
- int rtnNocs = levyMapper.updateRdamt(levy);
+ public String updateLevyRdcamt(Levy levy) {
+ int rtnNocs = levyMapper.updateLevyRdamt(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
diff --git a/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java b/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java
index 628afe6a..8a088630 100644
--- a/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java
+++ b/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java
@@ -11,6 +11,7 @@ import cokr.xit.fims.crdn.service.bean.CrdnStngBean;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rdct;
+import cokr.xit.fims.levy.dao.LevyMapper;
import cokr.xit.fims.levy.dao.RdctMapper;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@@ -21,281 +22,285 @@ import cokr.xit.foundation.data.DataObject;
*
*
* ============ 변경 이력 ============
- * 2023-08-30 JoJH 최초 작성
+ * 2023-08-30 JoJH 최초 작성
* ================================
*
*/
@Component("rdctBean")
public class RdctBean extends AbstractBean {
- /** 과태료 감경 대장 정보 DAO */
- @Resource(name = "rdctMapper")
- private RdctMapper rdctMapper;
-
- @Resource(name = "crdnStngBean")
- private CrdnStngBean crdnStngBean;
-
- /**지정한 조건에 따라 과태료 감경 대장 목록을 조회하여 반환한다.
- * @param req 과태료 감경 대장 조회 조건
- * @return 과태료 감경 대장 목록
- */
- public List getRdctList(LevyQuery req) {
- if (req.getDelYn() == null) {
- req.setDelYn("N");
- }
- if (req.getOrderBy() == null) {
- req.setOrderBy("REG_DT");
- }
-
- return rdctMapper.selectRdctList(req);
- }
-
- /**지정한 조건에 따라 과태료 감경 대장 객체들을 반환한다.
- * @param req 과태료 감경 대장 조회 조건
- * @return 과태료 감경 대장 객체 목록
- */
- public List getRdcts(LevyQuery req) {
- if (req.getOrderBy() == null) {
- req.setOrderBy("R.RDCT_ID DESC");
- }
-
- return rdctMapper.selectRdcts(req);
- }
-
- /**지정한 감경 ID의 과태료 감경 대장 객체를 반환한다.
- * @param req 과태료 감경 대장 조회 조건
- * @return 과태료 감경 대장 객체
- */
- public DataObject getRdctInfo(LevyQuery req) {
- return rdctMapper.selectRdctInfo(req);
- }
-
- /**지정한 단속 ID의 단속 정보를 반환한다.
- * @param req 과태료 감경 대장 조회 조건
- * @return 단속 정보
- */
-
- public DataObject getCrdnInfo(LevyQuery req) {
- DataObject dataCrdn = rdctMapper.selectCrdn(req);
-
- if (req.getCallPurpose().equals("create")) {
- dataCrdn.set("RDCT_YMD", dataCrdn.get("TODAY")); // 감경 일자
- dataCrdn.set("RDCT_AMT", dataCrdn.get("CALC_RDCT_AMT")); // 감경 금액
- }
-
- return dataCrdn;
- }
-
- /**과태료 감경 대장 정보를 등록한다.
- * @param rdct 과태료 감경 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String createRdct(Rdct rdct) {
- // 변수 선언
- int rtnNocs = -1; // 처리 결과 건수
- String rtnMsg = "[F] "; // 처리 결과 메시지
-
- // 단속 ID로 단속, 감경 정보 조회
- DataObject crdnRdctInfo = rdctMapper.selectCrdnInfo(rdct.getCrdnId());
-
- // 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
- if (!crdnRdctInfo.string("RDCT_ID").equals("")) {
- rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
- return rtnMsg;
- }
- // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
- if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) {
- rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
- return rtnMsg;
- }
- // 부과 가산금(LEVY_ADAMT)이 있다면..
- if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) {
- rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
부과 가산금이 존재합니다.";
- return rtnMsg;
- }
-
- // 과태료 감경(TB_RDCT) 대장을 등록한다.
- rtnNocs = rdctMapper.insertRdct(rdct);
- if (rtnNocs != 1) {
- throw new RuntimeException("과태료 감경 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- int ffnlgAmt = 0; // 과태료 금액
- int advntceAmt = 0; // 사전통지 금액
-
- ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue() - rdct.getRdctAmt(); // 과태료 단속 금액 - 감경 금액
- advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
-
- // 단속(TB_CRDN) 대장을 수정한다.
- Crdn crdn = new Crdn();
- crdn.setCrdnId(rdct.getCrdnId()); // 단속 ID
- crdn.setFfnlgRdcrt(crdnRdctInfo.string("WKSN_RDCRT")); // 과태료 감경 율
- crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
- crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
-
- rtnNocs = rdctMapper.updateCrdnRdct(crdn);
- if (rtnNocs != 1) {
- throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다.
- if (!crdnRdctInfo.string("LEVY_ID").equals("")) {
- // 가산금이 존재하는 확인
- if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) {
- throw new RuntimeException("감경 등록 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- Levy levy = new Levy();
- levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID
- levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
-
- // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
- if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) {
- levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
- } else {
- // 주정차위반, 전용차로위반 과태료
- if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) {
- // 납기 일자 확인
- if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) {
- levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
- } else {
- levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
- }
- } else {
- levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
- }
- }
-
- int sumAmt = levy.getLevyPcptax() - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_PCPTAX").intValue();
- levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세
-
- rtnNocs = rdctMapper.updateLevyRdct(levy);
- if (rtnNocs != 1) {
- throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
- }
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
-
- /**과태료 감경 대장 정보를 수정한다.
- * @param rdct 과태료 감경 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String updateRdct(Rdct rdct) {
- // 과태료 감경(TB_RDCT) 대장을 수정한다.
- int rtnNocs = rdctMapper.updateRdct(rdct);
- if (rtnNocs != 1) {
- throw new RuntimeException("과태료 감경 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
-
- /**과태료 감경 대장 정보를 삭제한다.
- * @param rdct 과태료 감경 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String removeRdct(Rdct rdct) {
- // 변수 선언
- int rtnNocs = -1; // 처리 결과 건수
- String rtnMsg = "[F] "; // 처리 결과 메시지
-
- // 단속 ID로 단속, 감경 정보 조회
- LevyQuery req = new LevyQuery();
- req.setRdctId(rdct.getRdctId());
- req.setDelYn("N");
-
- DataObject crdnRdctInfo = rdctMapper.selectCrdn(req);
-
- // 감경 ID가 조회되지 않았다면 종료..
- if (crdnRdctInfo.string("RDCT_ID").equals("")) {
- rtnMsg = "[F] 작업 중 자료가 존재하지 않습니다.";
- return rtnMsg;
- }
- // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
- if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) {
- rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
- return rtnMsg;
- }
- // 부과 가산금(LEVY_ADAMT)이 있다면..
- if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) {
- rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
부과 가산금이 존재합니다.";
- return rtnMsg;
- }
-
- // 감경(TB_RDCT) 대장을 삭제한다.
- rtnNocs = rdctMapper.deleteRdct(rdct);
- if (rtnNocs != 1) {
- // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
- throw new RuntimeException("감경 대장 삭제에 실패하였습니다.");
- }
-
- // 과태료 금액
- int ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액
- int advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
-
- // 단속(TB_CRDN) 대장을 수정한다.
- Crdn crdn = new Crdn();
- crdn.setCrdnId(crdnRdctInfo.string("CRDN_ID")); // 단속 ID
- crdn.setFfnlgRdcrt("0"); // 과태료 감경 율
- crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
- crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
-
- rtnNocs = rdctMapper.updateCrdnRdct(crdn);
- if (rtnNocs != 1) {
- throw new RuntimeException("감경 취소 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다.
- if (!crdnRdctInfo.string("LEVY_ID").equals("")) {
- // 가산금이 존재하는 확인
- if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) {
- throw new RuntimeException("감경 취소 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- Levy levy = new Levy();
- levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID
- levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
-
- // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
- if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) {
- levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
- } else {
- // 주정차위반, 전용차로위반 과태료
- if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) {
- // 납기 일자 확인
- if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) {
- levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
- } else {
- levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
- }
- } else {
- levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
- }
- }
-
- int sumAmt = levy.getLevyPcptax() + crdnRdctInfo.number("LEVY_ADAMT").intValue()
- - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RCVMT_ADAMT").intValue()
- - crdnRdctInfo.number("RDAMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_ADAMT").intValue();
- levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 + 부과 가산금 + 분납 이자 - 수납 본세 - 수납 가산금 - 감액 본세 - 감액 가산금
-
- rtnNocs = rdctMapper.updateLevyRdct(levy);
- if (rtnNocs != 1) {
- throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
- }
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
+ /** 과태료 감경 대장 정보 DAO */
+ @Resource(name = "rdctMapper")
+ private RdctMapper rdctMapper;
+
+ /** 부과 대장 정보 DAO */
+ @Resource(name = "levyMapper")
+ private LevyMapper levyMapper;
+
+ @Resource(name = "crdnStngBean")
+ private CrdnStngBean crdnStngBean;
+
+ /**지정한 조건에 따라 과태료 감경 대장 목록을 조회하여 반환한다.
+ * @param req 과태료 감경 대장 조회 조건
+ * @return 과태료 감경 대장 목록
+ */
+ public List getRdctList(LevyQuery req) {
+ if (req.getDelYn() == null) {
+ req.setDelYn("N");
+ }
+ if (req.getOrderBy() == null) {
+ req.setOrderBy("REG_DT");
+ }
+
+ return rdctMapper.selectRdctList(req);
+ }
+
+ /**지정한 조건에 따라 과태료 감경 대장 객체들을 반환한다.
+ * @param req 과태료 감경 대장 조회 조건
+ * @return 과태료 감경 대장 객체 목록
+ */
+ public List getRdcts(LevyQuery req) {
+ if (req.getOrderBy() == null) {
+ req.setOrderBy("R.RDCT_ID DESC");
+ }
+
+ return rdctMapper.selectRdcts(req);
+ }
+
+ /**지정한 감경 ID의 과태료 감경 대장 객체를 반환한다.
+ * @param req 과태료 감경 대장 조회 조건
+ * @return 과태료 감경 대장 객체
+ */
+ public DataObject getRdctInfo(LevyQuery req) {
+ return rdctMapper.selectRdctInfo(req);
+ }
+
+ /**지정한 단속 ID의 단속 정보를 반환한다.
+ * @param req 과태료 감경 대장 조회 조건
+ * @return 단속 정보
+ */
+
+ public DataObject getCrdnInfo(LevyQuery req) {
+ DataObject dataCrdn = rdctMapper.selectCrdn(req);
+
+ if (req.getCallPurpose().equals("create")) {
+ dataCrdn.set("RDCT_YMD", dataCrdn.get("TODAY")); // 감경 일자
+ dataCrdn.set("RDCT_AMT", dataCrdn.get("CALC_RDCT_AMT")); // 감경 금액
+ }
+
+ return dataCrdn;
+ }
+
+ /**과태료 감경 대장 정보를 등록한다.
+ * @param rdct 과태료 감경 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String createRdct(Rdct rdct) {
+ // 변수 선언
+ int rtnNocs = -1; // 처리 결과 건수
+ String rtnMsg = "[F] "; // 처리 결과 메시지
+
+ // 단속 ID로 단속, 감경 정보 조회
+ DataObject crdnRdctInfo = rdctMapper.selectCrdnInfo(rdct.getCrdnId());
+
+ // 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료..
+ if (!crdnRdctInfo.string("RDCT_ID").equals("")) {
+ rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다.";
+ return rtnMsg;
+ }
+ // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
+ if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) {
+ rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
+ return rtnMsg;
+ }
+ // 부과 가산금(LEVY_ADAMT)이 있다면..
+ if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) {
+ rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
부과 가산금이 존재합니다.";
+ return rtnMsg;
+ }
+
+ // 과태료 감경(TB_RDCT) 대장을 등록한다.
+ rtnNocs = rdctMapper.insertRdct(rdct);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("과태료 감경 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ int ffnlgAmt = 0; // 과태료 금액
+ int advntceAmt = 0; // 사전통지 금액
+
+ ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue() - rdct.getRdctAmt(); // 과태료 단속 금액 - 감경 금액
+ advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
+
+ // 단속(TB_CRDN) 대장을 수정한다.
+ Crdn crdn = new Crdn();
+ crdn.setCrdnId(rdct.getCrdnId()); // 단속 ID
+ crdn.setFfnlgRdcrt(crdnRdctInfo.string("WKSN_RDCRT")); // 과태료 감경 율
+ crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
+ crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
+
+ rtnNocs = rdctMapper.updateCrdnRdct(crdn);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다.
+ if (!crdnRdctInfo.string("LEVY_ID").equals("")) {
+ // 가산금이 존재하는 확인
+ if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) {
+ throw new RuntimeException("감경 등록 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ Levy levy = new Levy();
+ levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID
+ levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
+
+ // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
+ if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) {
+ levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
+ } else {
+ // 주정차위반, 전용차로위반 과태료
+ if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) {
+ // 납기 일자 확인
+ if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) {
+ levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
+ } else {
+ levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
+ }
+ } else {
+ levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
+ }
+ }
+
+ int lastAmt = levy.getLevyPcptax() - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_PCPTAX").intValue();
+ levy.setLastAmt(lastAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세
+
+ rtnNocs = levyMapper.updateLevyRdct(levy);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+ }
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
+
+ /**과태료 감경 대장 정보를 수정한다.
+ * @param rdct 과태료 감경 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String updateRdct(Rdct rdct) {
+ // 과태료 감경(TB_RDCT) 대장을 수정한다.
+ int rtnNocs = rdctMapper.updateRdct(rdct);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("과태료 감경 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
+
+ /**과태료 감경 대장 정보를 삭제한다.
+ * @param rdct 과태료 감경 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String removeRdct(Rdct rdct) {
+ // 변수 선언
+ int rtnNocs = -1; // 처리 결과 건수
+ String rtnMsg = "[F] "; // 처리 결과 메시지
+
+ // 단속 ID로 단속, 감경 정보 조회
+ LevyQuery req = new LevyQuery();
+ req.setRdctId(rdct.getRdctId());
+ req.setDelYn("N");
+
+ DataObject crdnRdctInfo = rdctMapper.selectCrdn(req);
+
+ // 감경 ID가 조회되지 않았다면 종료..
+ if (crdnRdctInfo.string("RDCT_ID").equals("")) {
+ rtnMsg = "[F] 작업 중 자료가 존재하지 않습니다.";
+ return rtnMsg;
+ }
+ // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면..
+ if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) {
+ rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다.";
+ return rtnMsg;
+ }
+ // 부과 가산금(LEVY_ADAMT)이 있다면..
+ if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) {
+ rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
부과 가산금이 존재합니다.";
+ return rtnMsg;
+ }
+
+ // 감경(TB_RDCT) 대장을 삭제한다.
+ rtnNocs = rdctMapper.deleteRdct(rdct);
+ if (rtnNocs != 1) {
+ // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
+ throw new RuntimeException("감경 대장 삭제에 실패하였습니다.");
+ }
+
+ // 과태료 금액
+ int ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액
+ int advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100)
+
+ // 단속(TB_CRDN) 대장을 수정한다.
+ Crdn crdn = new Crdn();
+ crdn.setCrdnId(crdnRdctInfo.string("CRDN_ID")); // 단속 ID
+ crdn.setFfnlgRdcrt("0"); // 과태료 감경 율
+ crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액
+ crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액
+
+ rtnNocs = rdctMapper.updateCrdnRdct(crdn);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("감경 취소 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다.
+ if (!crdnRdctInfo.string("LEVY_ID").equals("")) {
+ // 가산금이 존재하는 확인
+ if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) {
+ throw new RuntimeException("감경 취소 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ Levy levy = new Levy();
+ levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID
+ levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
+
+ // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로..
+ if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) {
+ levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
+ } else {
+ // 주정차위반, 전용차로위반 과태료
+ if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) {
+ // 납기 일자 확인
+ if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) {
+ levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
+ } else {
+ levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액
+ }
+ } else {
+ levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액
+ }
+ }
+
+ int lastAmt = levy.getLevyPcptax() + crdnRdctInfo.number("LEVY_ADAMT").intValue()
+ - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RCVMT_ADAMT").intValue()
+ - crdnRdctInfo.number("RDAMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_ADAMT").intValue();
+ levy.setLastAmt(lastAmt); // 합계 금액 = 부과 본세 + 부과 가산금 + 분납 이자 - 수납 본세 - 수납 가산금 - 감액 본세 - 감액 가산금
+
+ rtnNocs = levyMapper.updateLevyRdct(levy);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+ }
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
}
diff --git a/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java b/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java
index fb5a421e..7c7d768a 100644
--- a/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java
+++ b/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java
@@ -295,7 +295,7 @@ public class Levy01Controller extends ApplicationController {
valueMap.put("수납가산금", format.of("RCVMT_ADAMT").style(numeric));
valueMap.put("감액본세", format.of("RDAMT_PCPTAX").style(numeric));
valueMap.put("감액가산금", format.of("RDAMT_ADAMT").style(numeric));
- valueMap.put("미납금액", format.of("SUM_AMT").style(numeric));
+ valueMap.put("최종금액", format.of("LAST_AMT").style(numeric));
valueMap.put("과세물건", format.of("TXTN_THING"));
valueMap.put("체납사유", format.of("NPMNT_RSN_NM"));
valueMap.put("수납일자", FormatMaker.yyyy_mm_dd(format, "RCVMT_YMD").style(dateYMD));
diff --git a/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java b/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java
index ee520559..f72b5489 100644
--- a/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java
+++ b/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java
@@ -139,7 +139,7 @@ public class Levy02Controller extends ApplicationController {
valueMap.put("단속원금", format.of("FFNLG_CRDN_AMT").style(numeric));
valueMap.put("감경금액", format.of("RDCT_AMT").style(numeric));
valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric));
- valueMap.put("미납금액", format.of("SUM_AMT").style(numeric));
+ valueMap.put("최종금액", format.of("LAST_AMT").style(numeric));
valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
valueMap.put("단속특별구역", format.of("CRDN_SPAREA_NM").style(center));
valueMap.put("사용연료", format.of("USE_FUEL_NM").style(center));
diff --git a/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java b/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java
index 73ec1b69..feedf23b 100644
--- a/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java
+++ b/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java
@@ -24,317 +24,353 @@ import cokr.xit.foundation.data.DataObject;
*
*
* ============ 변경 이력 ============
- * 2023-08-31 JoJH 최초 작성
+ * 2023-08-31 JoJH 최초 작성
* ================================
*
*/
@Component("rcvmtBean")
public class RcvmtBean extends AbstractBean {
- /** 수납 대장 정보 DAO */
- @Resource(name = "rcvmtMapper")
- private RcvmtMapper rcvmtMapper;
-
- /** 부과 대장 정보 DAO */
- @Resource(name = "levyMapper")
- private LevyMapper levyMapper;
-
- /** 단속 상태 이력 정보 Bean */
- @Resource(name = "crdnSttsHstryBean")
- private CrdnSttsHstryBean crdnSttsHstryBean;
-
- /**지정한 조건에 따라 수납 대장 목록을 조회하여 반환한다.
- * @param req 수납 대장 조회 조건
- * @return 수납 대장 목록
- */
- public List getRcvmtList(RcvmtQuery req) {
- if (req.getDelYn() == null) {
- req.setDelYn("N");
- }
- // 정렬 확인
- if (req.getOrderBy() == null) {
- if (req.getBy() == null) {
- req.setOrderBy("REG_DT");
- } else {
- req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
- }
- }
-
- return rcvmtMapper.selectRcvmtList(req);
- }
-
- /**지정한 조건에 따라 수납 대장 객체들을 반환한다.
- * @param req 수납 대장 조회 조건
- * @return 수납 대장 객체 목록
- */
- public List getRcvmts(RcvmtQuery req) {
- if (req.getDelYn() == null) {
- req.setDelYn("N");
- }
- if (req.getOrderBy() == null) {
- req.setOrderBy("R.RCVMT_ID DESC");
- }
-
- return rcvmtMapper.selectRcvmts(req);
- }
-
- /**지정한 ID의 수납 정보를 반환한다.
- * @param req 수납 대장 조회 조건
- * @return 수납 정보
- */
- public DataObject getRcvmtInfo(RcvmtQuery req) {
- return rcvmtMapper.selectRcvmtInfo(req);
- }
-
- /**지정한 ID의 부과 정보를 반환한다.
- * @param req 수납 대장 조회 조건
- * @return 수납 정보
- */
- public DataObject getLevyInfo(RcvmtQuery req) {
- return rcvmtMapper.selectLevyInfo(req);
- }
-
- /**수납 대장 정보를 등록한다.
- * @param rcvmt 수납 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String createRcvmt(Rcvmt rcvmt) {
- // 변수 선언
- int rtnNocs = -1; // 처리 결과 건수
- String rtnMsg = ""; // 처리 결과 메시지
-
- // 부과 ID로 부과 정보 조회
- DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmt.getLevyId()));
-
- rcvmt.setDeptCd(levyInfo.string("DEPT_CD")); // 부서 코드
- rcvmt.setSpclBizCd(levyInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드
- rcvmt.setLastPcptax(levyInfo.number("LAST_PCPTAX").intValue()); // 최종 본세
- rcvmt.setLastAdamt(levyInfo.number("LAST_ADAMT").intValue()); // 최종 가산금
-
- // 입력된 수납 금액으로 수납 본세, 수납 가산금 나누기
- String rcvmtSeCd = ""; // 수납 구분 코드(FIM041)
- if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == 0) { // 최종 금액이 0원 이라면..
- rcvmt.setRcvmtPcptax(0); // 수납 본세
- rcvmt.setRcvmtAdamt(0); // 수납 가산금
- rcvmtSeCd = "02"; // 수납 구분 코드 = 이중수납
- } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == rcvmt.getRcvmtAmt()) { // 최종 금액과 수납 금액이 일치한다면..
- rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
- rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금
- rcvmtSeCd = "01"; // 수납 구분 코드 = 완납
- } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() < rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 많다면..
- rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
- rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금
- rcvmtSeCd = "04"; // 수납 구분 코드 = 과납
- } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() > rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 적다면..
- if (rcvmt.getRcvmtAmt() > rcvmt.getLastPcptax()) {
- rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
- rcvmt.setRcvmtAdamt(rcvmt.getRcvmtAmt() - rcvmt.getLastPcptax()); // 수납 가산금
- } else {
- rcvmt.setRcvmtPcptax(rcvmt.getRcvmtAmt()); // 수납 본세
- rcvmt.setRcvmtAdamt(0); // 수납 가산금
- }
- rcvmtSeCd = "06"; // 수납 구분 코드 = 일부수납
- } else {
- rtnMsg = "[F] 수납 등록 중 수납금액 계산에 실패하였습니다."; // 예외를 발생시켜서 DB Rollback
- return rtnMsg;
- }
-
- // 수납 구분 코드가 입력 되지 않았다면..
- if (rcvmt.getRcvmtSeCd() == null) {
- rcvmt.setRcvmtSeCd(rcvmtSeCd);
- }
-
- // 수납(TB_RCVMT) 대장을 등록한다.
- rtnNocs = rcvmtMapper.insertRcvmt(rcvmt);
- if (rtnNocs != 1) {
- throw new RuntimeException("수납 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- if (!rcvmtSeCd.equals("02")) { // 이중 수납이 아니라면..
- Levy levy = new Levy();
- levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID
- levy.setRcvmtPcptax(rcvmt.getRcvmtPcptax()); // 수납 본세
- levy.setRcvmtAdamt(rcvmt.getRcvmtAdamt()); // 수납 가산금
- levy.setSumAmt(rcvmt.getLastPcptax() + rcvmt.getLastAdamt() - rcvmt.getRcvmtPcptax() - rcvmt.getRcvmtAdamt()); // 합계 금액
- levy.setRcvmtYmd(rcvmt.getRcvmtYmd()); // 수납 일자
- levy.setPayMthdSeCd(rcvmt.getPayMthdSeCd()); // 납부 방법 구분 코드
-
- // 부과(TB_LEVY) 대장에 수납금액을 수정한다.
- rtnNocs = levyMapper.updateRcvmt(levy);
- if (rtnNocs != 1) {
- throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- // 합계 금액이 0이면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다.
- if (levy.getSumAmt() == 0 && (rcvmtSeCd.equals("01") || rcvmtSeCd.equals("04"))) {
- // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
- String newCrdnSttsCd = "";
- if (levyInfo.number("CRDN_STTS_CD").intValue() >= 11 && levyInfo.number("CRDN_STTS_CD").intValue() <= 45) {
- newCrdnSttsCd = "71"; // 사전통보수납
- } else if (levyInfo.string("CRDN_STTS_CD").equals("51")) {
- newCrdnSttsCd = "72"; // 부과수납
- } else if (levyInfo.string("CRDN_STTS_CD").equals("52")) {
- newCrdnSttsCd = "73"; // 독촉수납
- } else if (levyInfo.string("CRDN_STTS_CD").equals("53")) {
- newCrdnSttsCd = "74"; // 압류예정수납
- } else if (levyInfo.string("CRDN_STTS_CD").equals("54")) {
- newCrdnSttsCd = "74"; // 압류예정수납
- } else if (levyInfo.string("CRDN_STTS_CD").equals("55")) {
- newCrdnSttsCd = "75"; // 압류수납
- }
-
- CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
- crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID
- crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드
- crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시
- crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010)
- crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID
-
- // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
- boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
- if (!rtnScs) {
- throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
- }
- }
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
-
- /**수납 대장에 수납취소 정보를 등록하고, 과오납 정보를 등록을 한다.
- * @param rcvmt 수납 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String updateRcvmtRtrcn(Rcvmt rcvmt) {
- // 변수 선언
- String rtnMsg = "";
-
- // 수납 취소
- rtnMsg = updateRcvmtCancle(rcvmt);
- if (!rtnMsg.contains("[S]")) {
- throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
- }
-
- // 과오납 등록
-
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
-
- /**수납 대장에 수납취소 정보를 등록한다.
- * @param rcvmt 수납 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String updateRcvmtCancle(Rcvmt rcvmt) {
- // 변수 선언
- int rtnNocs = -1; // 처리 결과 건수
-
- // 수납 ID로 수납 정보 조회
- DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()).setDelYn("N"));
-
- // 수납(TB_RCVMT) 대장에 수납취소 정보를 수정한다.
- rtnNocs = rcvmtMapper.updateRcvmtRtrcn(rcvmt);
- if (rtnNocs != 1) {
- throw new RuntimeException("수납 대장에 수납취소 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- // 수납구분코드(RCVMT_SE_CD)가 이중 수납이 아니라면..
- if (!rcvmtInfo.string("RCVMT_SE_CD").equals("02")) {
- // 부과 ID로 단속, 부과 정보 조회
- DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmtInfo.string("LEVY_ID")));
-
- int rcvmtPcptax = levyInfo.number("RCVMT_PCPTAX").intValue() - rcvmtInfo.number("RCVMT_PCPTAX").intValue(); // 부과 수납본세 - 수납 수납본세
- int rcvmtAdamt = levyInfo.number("RCVMT_ADAMT").intValue() - rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 부과 수납가산금 - 수납 수납가산금
- int sumAmt = levyInfo.number("SUM_AMT").intValue()
- + rcvmtInfo.number("RCVMT_PCPTAX").intValue() + rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 합계 금액
-
- Levy levy = new Levy();
- levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID
- levy.setRcvmtPcptax(rcvmtPcptax); // 수납 본세
- levy.setRcvmtAdamt(rcvmtAdamt); // 수납 가산금
- levy.setSumAmt(sumAmt); // 합계 금액
-
- // 수납 금액이 0이면서.. 완납(01) 또는 과납(04)이라면 수납 일자를 NULL로 수정한다.
- if (rcvmtPcptax + rcvmtAdamt == 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) {
- levy.setRcvmtYmd(null); // 수납 일자
- levy.setPayMthdSeCd(null); // 납부 방법 구분 코드
- } else {
- levy.setRcvmtYmd(levyInfo.string("RCVMT_YMD")); // 수납 일자
- levy.setPayMthdSeCd(levyInfo.string("PAY_MTHD_SE_CD")); // 납부 방법 구분 코드
- }
-
- // 부과(TB_LEVY) 대장에 수납금액 정보를 수정한다.
- rtnNocs = levyMapper.updateRcvmt(levy);
- if (rtnNocs != 1) {
- throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- // 단속 대장 수정 ///////////////////////////////////////////////////////////
- // 합계 금액이 0보다 크면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다.
- if (levy.getSumAmt() > 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) {
- // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
- CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
- String newCrdnSttsCd = "";
-
- if (levyInfo.string("CRDN_STTS_CD").equals("71")) {
- newCrdnSttsCd = "42"; // 사전통보 발송
- } else if (levyInfo.string("CRDN_STTS_CD").equals("72")) {
- newCrdnSttsCd = "51"; // 부과
- } else if (levyInfo.string("CRDN_STTS_CD").equals("73")) {
- newCrdnSttsCd = "52"; // 독촉
- } else if (levyInfo.string("CRDN_STTS_CD").equals("74")) {
- newCrdnSttsCd = "54"; // 압류대상
- } else if (levyInfo.string("CRDN_STTS_CD").equals("75")) {
- newCrdnSttsCd = "55"; // 압류
- }
-
- crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID
- crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드
- crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시
- crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010)
- crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID
-
- // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
- boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
- if (!rtnScs) {
- throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
- }
- }
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
-
- /**수납 대장 정보를 삭제한다.
- * @param rcvmt 수납 대장
- * @return 저장 여부
- * - 저장됐으면 true
- * - 그렇지 않으면 false
- *
- */
- public String removeRcvmt(Rcvmt rcvmt) {
- // 수납 ID로 수납 정보 조회
- DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()));
-
- if (rcvmtInfo.string("RCVMT_INPT_SE_CD").equals("03")) {
- throw new RuntimeException("수납입력구분이 수기등록 자료만 삭제가 가능합니다."); // 예외를 발생시켜서 DB Rollback
- }
- // 수납(TB_RCVMT) 대장을 삭제한다.
- int rtnNocs = rcvmtMapper.deleteRcvmt(rcvmt);
- if (rtnNocs != 1) {
- throw new RuntimeException("수납 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
-
- return "[S] 작업이 정상 처리 되었습니다.";
- }
+ /** 수납 대장 정보 DAO */
+ @Resource(name = "rcvmtMapper")
+ private RcvmtMapper rcvmtMapper;
+
+ /** 부과 대장 정보 DAO */
+ @Resource(name = "levyMapper")
+ private LevyMapper levyMapper;
+
+ /** 단속 상태 이력 정보 Bean */
+ @Resource(name = "crdnSttsHstryBean")
+ private CrdnSttsHstryBean crdnSttsHstryBean;
+
+ /**지정한 조건에 따라 수납 대장 목록을 조회하여 반환한다.
+ * @param req 수납 대장 조회 조건
+ * @return 수납 대장 목록
+ */
+ public List getRcvmtList(RcvmtQuery req) {
+ if (req.getDelYn() == null) {
+ req.setDelYn("N");
+ }
+ // 정렬 확인
+ if (req.getOrderBy() == null) {
+ if (req.getBy() == null) {
+ req.setOrderBy("REG_DT");
+ } else {
+ req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy()));
+ }
+ }
+
+ return rcvmtMapper.selectRcvmtList(req);
+ }
+
+ /**지정한 조건에 따라 수납 대장 객체들을 반환한다.
+ * @param req 수납 대장 조회 조건
+ * @return 수납 대장 객체 목록
+ */
+ public List getRcvmts(RcvmtQuery req) {
+ if (req.getDelYn() == null) {
+ req.setDelYn("N");
+ }
+ if (req.getOrderBy() == null) {
+ req.setOrderBy("R.RCVMT_ID DESC");
+ }
+
+ return rcvmtMapper.selectRcvmts(req);
+ }
+
+ /**지정한 ID의 수납 정보를 반환한다.
+ * @param req 수납 대장 조회 조건
+ * @return 수납 정보
+ */
+ public DataObject getRcvmtInfo(RcvmtQuery req) {
+ return rcvmtMapper.selectRcvmtInfo(req);
+ }
+
+ /**지정한 ID의 부과 정보를 반환한다.
+ * @param req 수납 대장 조회 조건
+ * @return 수납 정보
+ */
+ public DataObject getLevyInfo(RcvmtQuery req) {
+ return rcvmtMapper.selectLevyInfo(req);
+ }
+
+ /**수납 대장 정보를 등록한다.
+ * @param rcvmt 수납 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String createRcvmt(Rcvmt rcvmt) {
+ // 변수 선언
+ int rtnNocs = -1; // 처리 결과 건수
+ String rtnMsg = ""; // 처리 결과 메시지
+
+ // 부과 ID로 부과 정보 조회
+ DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmt.getLevyId()));
+
+ rcvmt.setDeptCd(levyInfo.string("DEPT_CD")); // 부서 코드
+ rcvmt.setSpclBizCd(levyInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드
+ rcvmt.setLastPcptax(levyInfo.number("LAST_PCPTAX").intValue()); // 최종 본세
+ rcvmt.setLastAdamt(levyInfo.number("LAST_ADAMT").intValue()); // 최종 가산금
+
+ // 입력된 수납 금액으로 수납 본세, 수납 가산금 나누기
+ String rcvmtSeCd = ""; // 수납 구분 코드(FIM041)
+ if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == 0) { // 최종 금액이 0원 이라면..
+ rcvmt.setRcvmtPcptax(0); // 수납 본세
+ rcvmt.setRcvmtAdamt(0); // 수납 가산금
+ rcvmtSeCd = "02"; // 수납 구분 코드 = 이중수납
+ } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == rcvmt.getRcvmtAmt()) { // 최종 금액과 수납 금액이 일치한다면..
+ rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
+ rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금
+ rcvmtSeCd = "01"; // 수납 구분 코드 = 완납
+ } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() < rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 많다면..
+ rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
+ rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금
+ rcvmtSeCd = "04"; // 수납 구분 코드 = 과납
+ } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() > rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 적다면..
+ if (rcvmt.getRcvmtAmt() > rcvmt.getLastPcptax()) {
+ rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
+ rcvmt.setRcvmtAdamt(rcvmt.getRcvmtAmt() - rcvmt.getLastPcptax()); // 수납 가산금
+ } else {
+ rcvmt.setRcvmtPcptax(rcvmt.getRcvmtAmt()); // 수납 본세
+ rcvmt.setRcvmtAdamt(0); // 수납 가산금
+ }
+ rcvmtSeCd = "06"; // 수납 구분 코드 = 일부수납
+ } else {
+ rtnMsg = "[F] 수납 등록 중 수납금액 계산에 실패하였습니다."; // 예외를 발생시켜서 DB Rollback
+ return rtnMsg;
+ }
+
+ // 수납 구분 코드가 입력 되지 않았다면..
+ if (rcvmt.getRcvmtSeCd() == null) {
+ rcvmt.setRcvmtSeCd(rcvmtSeCd);
+ }
+
+ // 수납(TB_RCVMT) 대장을 등록한다.
+ rtnNocs = rcvmtMapper.insertRcvmt(rcvmt);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("수납 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ if (!rcvmtSeCd.equals("02")) { // 이중 수납이 아니라면..
+ Levy levy = new Levy();
+ levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID
+ levy.setRcvmtPcptax(rcvmt.getRcvmtPcptax()); // 수납 본세
+ levy.setRcvmtAdamt(rcvmt.getRcvmtAdamt()); // 수납 가산금
+ levy.setLastAmt(rcvmt.getLastPcptax() + rcvmt.getLastAdamt() - rcvmt.getRcvmtPcptax() - rcvmt.getRcvmtAdamt()); // 최종 금액
+ levy.setRcvmtYmd(rcvmt.getRcvmtYmd()); // 수납 일자
+ levy.setPayMthdSeCd(rcvmt.getPayMthdSeCd()); // 납부 방법 구분 코드
+
+ // 부과(TB_LEVY) 대장에 수납금액을 수정한다.
+ rtnNocs = levyMapper.updateLevyRcvmt(levy);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 합계 금액이 0이면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다.
+ if (levy.getLastAmt() == 0 && (rcvmtSeCd.equals("01") || rcvmtSeCd.equals("04"))) {
+ // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
+ String newCrdnSttsCd = "";
+ if (levyInfo.number("CRDN_STTS_CD").intValue() >= 11 && levyInfo.number("CRDN_STTS_CD").intValue() <= 45) {
+ newCrdnSttsCd = "71"; // 사전통보수납
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("51")) {
+ newCrdnSttsCd = "72"; // 부과수납
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("52")) {
+ newCrdnSttsCd = "73"; // 독촉수납
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("53")) {
+ newCrdnSttsCd = "74"; // 압류예정수납
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("54")) {
+ newCrdnSttsCd = "74"; // 압류예정수납
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("55")) {
+ newCrdnSttsCd = "75"; // 압류수납
+ }
+
+ CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
+ crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID
+ crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드
+ crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시
+ crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010)
+ crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID
+
+ // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
+ boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
+ if (!rtnScs) {
+ throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+ }
+ }
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
+
+ /**수납 대장에 수납취소 정보를 등록하고, 과오납 정보를 등록을 한다.
+ * @param rcvmt 수납 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String updateRcvmtRtrcn(Rcvmt rcvmt) {
+ // 변수 선언
+ String rtnMsg = "";
+
+ // 수납 취소
+ rtnMsg = updateRcvmtCancle(rcvmt);
+ if (!rtnMsg.contains("[S]")) {
+ throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 과오납 등록
+
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
+
+ /**수납 대장에 수납취소 정보를 등록한다.
+ * @param rcvmt 수납 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String updateRcvmtCancle(Rcvmt rcvmt) {
+ // 변수 선언
+ int rtnNocs = -1; // 처리 결과 건수
+
+ // 수납 ID로 수납 정보 조회
+ DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()).setDelYn("N"));
+
+ // 수납(TB_RCVMT) 대장에 수납취소 정보를 수정한다.
+ rtnNocs = rcvmtMapper.updateRcvmtRtrcn(rcvmt);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("수납 대장에 수납취소 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 수납구분코드(RCVMT_SE_CD)가 이중 수납이 아니라면..
+ if (!rcvmtInfo.string("RCVMT_SE_CD").equals("02")) {
+ // 부과 ID로 단속, 부과 정보 조회
+ DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmtInfo.string("LEVY_ID")));
+
+ int rcvmtPcptax = levyInfo.number("RCVMT_PCPTAX").intValue() - rcvmtInfo.number("RCVMT_PCPTAX").intValue(); // 부과 수납본세 - 수납 수납본세
+ int rcvmtAdamt = levyInfo.number("RCVMT_ADAMT").intValue() - rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 부과 수납가산금 - 수납 수납가산금
+ int lastAmt = levyInfo.number("LAST_AMT").intValue()
+ + rcvmtInfo.number("RCVMT_PCPTAX").intValue() + rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 최종 금액
+
+ Levy levy = new Levy();
+ levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID
+ levy.setRcvmtPcptax(rcvmtPcptax); // 수납 본세
+ levy.setRcvmtAdamt(rcvmtAdamt); // 수납 가산금
+ levy.setLastAmt(lastAmt); // 최종 금액
+
+ // 수납 금액이 0이면서.. 완납(01) 또는 과납(04)이라면 수납 일자를 NULL로 수정한다.
+ if (rcvmtPcptax + rcvmtAdamt == 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) {
+ levy.setRcvmtYmd(null); // 수납 일자
+ levy.setPayMthdSeCd(null); // 납부 방법 구분 코드
+ } else {
+ levy.setRcvmtYmd(levyInfo.string("RCVMT_YMD")); // 수납 일자
+ levy.setPayMthdSeCd(levyInfo.string("PAY_MTHD_SE_CD")); // 납부 방법 구분 코드
+ }
+
+ // 부과(TB_LEVY) 대장에 수납금액 정보를 수정한다.
+ rtnNocs = levyMapper.updateLevyRcvmt(levy);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 단속 대장 수정 ///////////////////////////////////////////////////////////
+ // 합계 금액이 0보다 크면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다.
+ if (levy.getLastAmt() > 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) {
+ // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
+ CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
+ String newCrdnSttsCd = "";
+
+ if (levyInfo.string("CRDN_STTS_CD").equals("71")) {
+ newCrdnSttsCd = "42"; // 사전통보 발송
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("72")) {
+ newCrdnSttsCd = "51"; // 부과
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("73")) {
+ newCrdnSttsCd = "52"; // 독촉
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("74")) {
+ newCrdnSttsCd = "54"; // 압류대상
+ } else if (levyInfo.string("CRDN_STTS_CD").equals("75")) {
+ newCrdnSttsCd = "55"; // 압류
+ }
+
+ crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID
+ crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드
+ crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시
+ crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010)
+ crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID
+
+ // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
+ boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
+ if (!rtnScs) {
+ throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+ }
+ }
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
+
+ /**수납 대장 정보를 삭제한다.
+ * @param rcvmt 수납 대장
+ * @return 저장 여부
+ * - 저장됐으면 true
+ * - 그렇지 않으면 false
+ *
+ */
+ public String removeRcvmt(Rcvmt rcvmt) {
+ //
+ boolean rtnScs = false; // 처리 결과 여부
+
+ // 수납 ID로 수납 정보 조회
+ DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()));
+
+ if (!rcvmtInfo.string("RCVMT_INPT_SE_CD").equals("03")) {
+ throw new RuntimeException("수납입력구분이 수기등록 자료만 삭제가 가능합니다."); // 예외를 발생시켜서 DB Rollback
+ }
+ // 수납(TB_RCVMT) 대장을 삭제한다.
+ int rtnNocs = rcvmtMapper.deleteRcvmt(rcvmt);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("수납 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 부과(TB_LEVY) 대장 수납 금액 수정한다.
+ int rcvmtPcptax = rcvmtInfo.number("L_RCVMT_PCPTAX").intValue() - rcvmtInfo.number("RCVMT_PCPTAX").intValue();
+ int rcvmtAdamt = rcvmtInfo.number("L_RCVMT_ADAMT").intValue() - rcvmtInfo.number("RCVMT_ADAMT").intValue();
+
+ Levy levy = new Levy();
+ levy.setLevyId(rcvmtInfo.string("LEVY_ID")); // 부과 ID
+ levy.setRcvmtPcptax(rcvmtPcptax); // 수납 본세
+ levy.setRcvmtAdamt(rcvmtAdamt); // 수납 가산금
+ levy.setLastAmt(rcvmtInfo.number("L_LEVY_PCPTAX").intValue() + rcvmtInfo.number("L_LEVY_ADAMT").intValue()
+ - rcvmtPcptax - rcvmtAdamt
+ - rcvmtInfo.number("L_RDAMT_PCPTAX").intValue() - rcvmtInfo.number("L_RDAMT_ADAMT").intValue()); // 최종 금액
+
+ // 부과(TB_LEVY) 대장에 수납금액을 수정한다.
+ rtnNocs = levyMapper.updateLevyRcvmt(levy);
+ if (rtnNocs != 1) {
+ throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+
+ // 최종 금액이 0보다 크다면 이전 처리상태로 변경한다.
+ if (levy.getLastAmt() > 0) {
+ CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
+ crdnSttsHstry.setCrdnId(rcvmtInfo.string("CRDN_ID")); // 단속 ID
+ crdnSttsHstry.setCrdnSttsCd(rcvmtInfo.string("CRDN_STTS_CD")); // 단속 상태 코드
+ crdnSttsHstry.setEtcCn(rcvmt.getDelRsn()); // 기타 내용 - 삭제 사유
+ crdnSttsHstry.setUseYn("N"); // 사용 여부
+
+ // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장의 사용 여부를 "N"으로 처리하고, 단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다.
+ rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnSttsHstry);
+ if (!rtnScs) {
+ throw new RuntimeException("[F] 발송상세 삭제 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ }
+ }
+
+ return "[S] 작업이 정상 처리 되었습니다.";
+ }
}
diff --git a/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java b/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java
index 10ae12ff..2c8e4234 100644
--- a/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java
+++ b/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java
@@ -35,7 +35,7 @@ import cokr.xit.foundation.data.DataObject;
*
*
* ============ 변경 이력 ============
- * 2023-08-31 JoJH 최초 작성
+ * 2023-08-31 JoJH 최초 작성
* ================================
*
*/
@@ -43,243 +43,239 @@ import cokr.xit.foundation.data.DataObject;
@RequestMapping(name = "수납 관리", value = Rcvm01Controller.CLASS_URL)
public class Rcvm01Controller extends ApplicationController {
- public static final String CLASS_URL = "/rcvm/rcvm01";
-
- public class METHOD_URL {
- public static final String
- receivingMoneyMain = "/010/main.do" // 수납 관리 메인 화면
- , getReceivingMoneyList = "/010/list.do" // 수납 대장 목록 조회
- , getReceivingMoneyInfo = "/020/info.do" // 수납 정보 조회
- , createReceivingMoney = "/020/create.do" // 수납 대장 등록
- , updateReceivingMoney = "/020/update.do" // 수납 대장 수정
- , removeReceivingMoney = "/010/remove.do" // 수납 대장 삭제
- , updateReceivingMoneyRetraction = "/010/updateRcvmtRtrcn.do" // 수납취소 등록
- ;
- }
-
- /**수납 대장 서비스*/
- @Resource(name="rcvmtService")
- private RcvmtService rcvmtService;
-
- @Resource(name="stngBean")
- private StngBean stngBean;
-
- /**수납 대장 관리 메인화면(rcvmt/rcvmt-main)을 연다.
- * 조건없는 {@link #getRcvmtList(RcvmtQuery) 수납 대장 조회 결과}를 포함시킨다.
- * @return /rcvmt/rcvmt-main
- */
- @RequestMapping(name = "수납 관리 메인", value = METHOD_URL.receivingMoneyMain)
- public ModelAndView receivingMoneyMain() {
- // View(jsp)
- ModelAndView mav = new ModelAndView("fims/rcvm/rcvm01010-main");
-
- // 사용자 정보
- FimsUser fimsUser = (FimsUser)currentUser().getUser();
-
- // View(jsp)에서 사용할 공통코드를 조회
- Map> commonCodes = getCodesOf("FIM041", "FIM045", "FIM054");
-
- return mav
- .addObject("pageName", "rcvm01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
- .addObject("infoPrefix", "rcvmt") // prefix
- .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
- .addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD)
- .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
- .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD)
- .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD)
- ;
- }
-
- /**수납 대장 목록을 조회하여 반환한다.
- * {@link RcvmtService#getRcvmtList(RcvmtQuery)} 참고
- * @param req 수납 대장 조회 조건
- * @return jsonView
- * {
- * "rcvmtList": [수납 대장 목록]
- * "rcvmtStart": 수납 대장 목록 시작 인덱스
- * "rcvmtFetch": 한 번에 가져오는 수납 대장 목록 수
- * "rcvmtTotal": 조회 결과 찾은 전체 수납 대장 수
- * }
- */
- @Task
- @RequestMapping(name="수납 대장 목록 조회", value=METHOD_URL.getReceivingMoneyList)
- public ModelAndView getReceivingMoneyList(RcvmtQuery req) {
- if (!"xls".equals(req.getDownload())) {
- List> result = rcvmtService.getRcvmtList(setFetchSize(req));
- return setCollectionInfo(new ModelAndView("jsonView"), result, "rcvmt");
- } else {
- // 현재 날짜 구하기
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
- String dateTime = dateFormat.format(System.currentTimeMillis());
-
- List cellDefs = fromJson(req.getCellDefs(), CellDef.listType());
-
- XLSWriter xlsx = new XLSWriter().worksheet(0);
- Format format = new Format(xlsx);
- CellStyle center = format.cellStyle(Style.CENTER);
- CellStyle numeric = format.n_nn0();
- CellStyle dateYMD = format.yyyy_mm_dd();
- CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss();
-
- List list = rcvmtService.getRcvmtList(req.setFetchSize(0));
-
- Map valueMap = new HashMap();
- valueMap.put("업무구분", format.of("TASK_SE_NM").style(center));
- valueMap.put("수납입력구분", format.of("RCVMT_INPT_SE_NM").style(center));
- valueMap.put("수납취소", format.of("RCVMT_RTRCN_NM").style(center));
- valueMap.put("회계연도", format.of("FYR").style(center));
- valueMap.put("회계구분", format.of("ACNTG_SE_CD").style(center));
- valueMap.put("세목코드", format.of("TXITM_CD").style(center));
- valueMap.put("세목명", format.of("TXITM_NM"));
- valueMap.put("부과번호", format.of("LEVY_NO").style(center));
- valueMap.put("분납일련번호", format.of("ISPY_SN").style(center));
- valueMap.put("최종본세", format.of("LAST_PCPTAX").style(numeric));
- valueMap.put("최종가산금", format.of("LAST_ADAMT").style(numeric));
- valueMap.put("수납일련번호", format.of("RCVMT_SN").style(center));
- valueMap.put("수납구분", format.of("RCVMT_SE_NM").style(center));
- valueMap.put("수납일자", FormatMaker.yyyy_mm_dd(format, "RCVMT_YMD").style(dateYMD));
- valueMap.put("회계일자", FormatMaker.yyyy_mm_dd(format, "ACNTG_YMD").style(dateYMD));
- valueMap.put("이체일자", FormatMaker.yyyy_mm_dd(format, "TSF_YMD").style(dateYMD));
- valueMap.put("수납금액", format.of("RCVMT_AMT").style(numeric));
- valueMap.put("수납본세", format.of("RCVMT_PCPTAX").style(numeric));
- valueMap.put("수납가산금", format.of("RCVMT_ADAMT").style(numeric));
- valueMap.put("수납이자", format.of("RCVMT_INT").style(numeric));
- valueMap.put("수납은행", format.of("RCVMT_BANK_NM"));
- valueMap.put("납부방법", format.of("PAY_MTHD_SE_NM"));
- valueMap.put("수납상태", format.of("RCVMT_STTS_NM").style(center));
- valueMap.put("부과일자", FormatMaker.yyyy_mm_dd(format, "LEVY_YMD").style(dateYMD));
- valueMap.put("최초납기일자", FormatMaker.yyyy_mm_dd(format, "FRST_DUDT_YMD").style(dateYMD));
- valueMap.put("납기일자", FormatMaker.yyyy_mm_dd(format, "DUDT_YMD").style(dateYMD));
- valueMap.put("압류일자", FormatMaker.yyyy_mm_dd(format, "SZR_YMD").style(dateYMD));
- valueMap.put("압류물건", format.of("SZR_THING"));
- valueMap.put("대체압류차량", format.of("RPM_SZR_VHRNO"));
- valueMap.put("압류해제일자", FormatMaker.yyyy_mm_dd(format, "SZR_RMV_YMD").style(dateYMD));
- valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT));
- valueMap.put("차량번호", format.of("VHRNO"));
- valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center));
- valueMap.put("납부자번호", format.of("RTPYR_NO").style(center));
- valueMap.put("납부자명", format.of("RTPYR_NM"));
- valueMap.put("단속법정동", format.of("CRDN_STDG_NM"));
- valueMap.put("단속장소", format.of("CRDN_PLC"));
- valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
- valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT));
- valueMap.put("등록사용자", format.of("RGTR_NM").style(center));
- valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT));
- valueMap.put("수정사용자", format.of("MDFR_NM").style(center));
-
- CellDef.setValues(cellDefs, valueMap);
-
- xlsx.cell(0, 0).value("수납").value(center).merge(0, cellDefs.size() - 1)
- .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx)))
- .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList()));
-
- return new ModelAndView("downloadView")
- .addObject("download", xlsx.getDownloadable().setFilename("수납" + "_목록_" + dateTime + ".xlsx"));
- }
- }
-
- /**지정한 부과 ID의 수납 정보를 반환한다.
- * @param levyId 부과 ID
- * @return fims/rcvm/rcvm01020-info 또는 jsonView
- * {
- * "rcvmtInfo": 수납 정보
- * }
- */
- @Task
- @RequestMapping(name="수납 정보 조회", value=METHOD_URL.getReceivingMoneyInfo)
- public ModelAndView getReceivingMoneyInfo(HttpServletRequest hReq, RcvmtQuery req) {
- DataObject info = rcvmtService.getRcvmtInfo(req);
-
- boolean json = jsonResponse();
-
- ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/rcvm/rcvm01020-info");
-
- // View(jsp)에서 사용할 공통코드를 조회
- Map> commonCodes = getCodesOf("FIM041", "FIM045", "FIM054");
-
- return mav
- .addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
- .addObject("callPurpose", req.getCallPurpose()) // 호출 용도
- .addObject("pageName", "rcvm01020") // jsp pageName
- .addObject("infoPrefix", "rcvmt") // prefix
- .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl
- .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD)
- .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD)
- .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD)
- .addObject("rcvmtInfo", json ? info : toJson(info)) // 수납 정보
- ;
- }
-
- /**수납 대장 정보를 등록한다.
- * @param rcvmt 수납 대장 정보
- * @return jsonView
- * {
- * "saved": 등록되었으면 true, 그렇지 않으면 false
- * }
- */
- @Task
- @RequestMapping(name="수납 대장 등록", value=METHOD_URL.createReceivingMoney)
- public ModelAndView createReceivingMoney(Rcvmt rcvmt) {
- boolean saved = false;
- String rtnMsg = rcvmtService.createRcvmt(rcvmt);
-
- if (rtnMsg.contains("[S]")) {
- saved = true;
- } else {
- saved = false;
- }
-
- return new ModelAndView("jsonView")
- .addObject("saved", saved)
- .addObject("rtnMsg", rtnMsg);
- }
-
- /**수납 대장에 수납취소 정보를 등록한다.
- * @param rcvmt 수납 대장 정보
- * @return jsonView
- * {
- * "saved": 등록되었으면 true, 그렇지 않으면 false
- * }
- */
- @Task
- @RequestMapping(name="수납 대장에 수납취소 수정", value=METHOD_URL.updateReceivingMoneyRetraction)
- public ModelAndView updateReceivingMoneyRetraction(Rcvmt rcvmt) {
- boolean saved = false;
- String rtnMsg = rcvmtService.updateRcvmtRtrcn(rcvmt);
-
- if (rtnMsg.contains("[S]")) {
- saved = true;
- } else {
- saved = false;
- }
-
- return new ModelAndView("jsonView")
- .addObject("saved", saved)
- .addObject("rtnMsg", rtnMsg);
- }
-
- /**수납 대장 정보를 삭제한다.
- * @param rcvmt 수납 대장 정보
- * @return jsonView
- * {
- * "saved": 등록되었으면 true, 그렇지 않으면 false
- * }
- */
- @Task
- @RequestMapping(name="수납 대장 삭제", value=METHOD_URL.removeReceivingMoney)
- public ModelAndView removeReceivingMoney(Rcvmt rcvmt) {
- boolean saved = false;
- String rtnMsg = rcvmtService.removeRcvmt(rcvmt);
-
- if (rtnMsg.contains("[S]")) {
- saved = true;
- } else {
- saved = false;
- }
-
- return new ModelAndView("jsonView")
- .addObject("saved", saved)
- .addObject("rtnMsg", rtnMsg);
- }
+ public static final String CLASS_URL = "/rcvm/rcvm01";
+
+ public class METHOD_URL {
+ public static final String
+ receivingMoneyMain = "/010/main.do" // 수납 관리 메인 화면
+ , getReceivingMoneyList = "/010/list.do" // 수납 대장 목록 조회
+ , getReceivingMoneyInfo = "/020/info.do" // 수납 정보 조회
+ , createReceivingMoney = "/020/create.do" // 수납 대장 등록
+ , updateReceivingMoney = "/020/update.do" // 수납 대장 수정
+ , removeReceivingMoney = "/010/remove.do" // 수납 대장 삭제
+ , updateReceivingMoneyRetraction = "/010/updateRcvmtRtrcn.do" // 수납취소 등록
+ ;
+ }
+
+ /**수납 대장 서비스*/
+ @Resource(name="rcvmtService")
+ private RcvmtService rcvmtService;
+
+ @Resource(name="stngBean")
+ private StngBean stngBean;
+
+ /**수납 대장 관리 메인화면(rcvmt/rcvmt-main)을 연다.
+ * 조건없는 {@link #getRcvmtList(RcvmtQuery) 수납 대장 조회 결과}를 포함시킨다.
+ * @return /rcvmt/rcvmt-main
+ */
+ @RequestMapping(name = "수납 관리 메인", value = METHOD_URL.receivingMoneyMain)
+ public ModelAndView receivingMoneyMain() {
+ // View(jsp)
+ ModelAndView mav = new ModelAndView("fims/rcvm/rcvm01010-main");
+
+ // 사용자 정보
+ FimsUser fimsUser = (FimsUser)currentUser().getUser();
+
+ // View(jsp)에서 사용할 공통코드를 조회
+ Map> commonCodes = getCodesOf("FIM041", "FIM045", "FIM054");
+
+ return mav
+ .addObject("pageName", "rcvm01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
+ .addObject("prefixUrl", CLASS_URL) // prefixUrl
+ .addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD)
+ .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054")))
+ .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD)
+ .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD)
+ ;
+ }
+
+ /**수납 대장 목록을 조회하여 반환한다.
+ * {@link RcvmtService#getRcvmtList(RcvmtQuery)} 참고
+ * @param req 수납 대장 조회 조건
+ * @return jsonView
+ * {
+ * "rcvmtList": [수납 대장 목록]
+ * "rcvmtStart": 수납 대장 목록 시작 인덱스
+ * "rcvmtFetch": 한 번에 가져오는 수납 대장 목록 수
+ * "rcvmtTotal": 조회 결과 찾은 전체 수납 대장 수
+ * }
+ */
+ @Task
+ @RequestMapping(name="수납 대장 목록 조회", value=METHOD_URL.getReceivingMoneyList)
+ public ModelAndView getReceivingMoneyList(RcvmtQuery req) {
+ if (!"xls".equals(req.getDownload())) {
+ List> result = rcvmtService.getRcvmtList(setFetchSize(req));
+ return setPagingInfo(new ModelAndView("jsonView"), result, "");
+ } else {
+ // 현재 날짜 구하기
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ String dateTime = dateFormat.format(System.currentTimeMillis());
+
+ List cellDefs = fromJson(req.getCellDefs(), CellDef.listType());
+
+ XLSWriter xlsx = new XLSWriter().worksheet(0);
+ Format format = new Format(xlsx);
+ CellStyle center = format.cellStyle(Style.CENTER);
+ CellStyle numeric = format.n_nn0();
+ CellStyle dateYMD = format.yyyy_mm_dd();
+ CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss();
+
+ List list = rcvmtService.getRcvmtList(req.setFetchSize(0));
+
+ Map valueMap = new HashMap();
+ valueMap.put("업무구분", format.of("TASK_SE_NM").style(center));
+ valueMap.put("수납입력구분", format.of("RCVMT_INPT_SE_NM").style(center));
+ valueMap.put("수납취소", format.of("RCVMT_RTRCN_NM").style(center));
+ valueMap.put("회계연도", format.of("FYR").style(center));
+ valueMap.put("회계구분", format.of("ACNTG_SE_CD").style(center));
+ valueMap.put("세목코드", format.of("TXITM_CD").style(center));
+ valueMap.put("세목명", format.of("TXITM_NM"));
+ valueMap.put("부과번호", format.of("LEVY_NO").style(center));
+ valueMap.put("분납일련번호", format.of("ISPY_SN").style(center));
+ valueMap.put("최종본세", format.of("LAST_PCPTAX").style(numeric));
+ valueMap.put("최종가산금", format.of("LAST_ADAMT").style(numeric));
+ valueMap.put("수납일련번호", format.of("RCVMT_SN").style(center));
+ valueMap.put("수납구분", format.of("RCVMT_SE_NM").style(center));
+ valueMap.put("수납일자", FormatMaker.yyyy_mm_dd(format, "RCVMT_YMD").style(dateYMD));
+ valueMap.put("회계일자", FormatMaker.yyyy_mm_dd(format, "ACNTG_YMD").style(dateYMD));
+ valueMap.put("이체일자", FormatMaker.yyyy_mm_dd(format, "TSF_YMD").style(dateYMD));
+ valueMap.put("수납금액", format.of("RCVMT_AMT").style(numeric));
+ valueMap.put("수납본세", format.of("RCVMT_PCPTAX").style(numeric));
+ valueMap.put("수납가산금", format.of("RCVMT_ADAMT").style(numeric));
+ valueMap.put("수납이자", format.of("RCVMT_INT").style(numeric));
+ valueMap.put("수납은행", format.of("RCVMT_BANK_NM"));
+ valueMap.put("납부방법", format.of("PAY_MTHD_SE_NM"));
+ valueMap.put("수납상태", format.of("RCVMT_STTS_NM").style(center));
+ valueMap.put("부과일자", FormatMaker.yyyy_mm_dd(format, "LEVY_YMD").style(dateYMD));
+ valueMap.put("최초납기일자", FormatMaker.yyyy_mm_dd(format, "FRST_DUDT_YMD").style(dateYMD));
+ valueMap.put("납기일자", FormatMaker.yyyy_mm_dd(format, "DUDT_YMD").style(dateYMD));
+ valueMap.put("압류일자", FormatMaker.yyyy_mm_dd(format, "SZR_YMD").style(dateYMD));
+ valueMap.put("압류물건", format.of("SZR_THING"));
+ valueMap.put("대체압류차량", format.of("RPM_SZR_VHRNO"));
+ valueMap.put("압류해제일자", FormatMaker.yyyy_mm_dd(format, "SZR_RMV_YMD").style(dateYMD));
+ valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT));
+ valueMap.put("차량번호", format.of("VHRNO"));
+ valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center));
+ valueMap.put("납부자번호", format.of("RTPYR_NO").style(center));
+ valueMap.put("납부자명", format.of("RTPYR_NM"));
+ valueMap.put("단속법정동", format.of("CRDN_STDG_NM"));
+ valueMap.put("단속장소", format.of("CRDN_PLC"));
+ valueMap.put("처리상태", format.of("CRDN_STTS_NM"));
+ valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT));
+ valueMap.put("등록사용자", format.of("RGTR_NM").style(center));
+ valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT));
+ valueMap.put("수정사용자", format.of("MDFR_NM").style(center));
+
+ CellDef.setValues(cellDefs, valueMap);
+
+ xlsx.cell(0, 0).value("수납").value(center).merge(0, cellDefs.size() - 1)
+ .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx)))
+ .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList()));
+
+ return new ModelAndView("downloadView")
+ .addObject("download", xlsx.getDownloadable().setFilename("수납" + "_목록_" + dateTime + ".xlsx"));
+ }
+ }
+
+ /**지정한 부과 ID의 수납 정보를 반환한다.
+ * @param levyId 부과 ID
+ * @return fims/rcvm/rcvm01020-info 또는 jsonView
+ * {
+ * "rcvmtInfo": 수납 정보
+ * }
+ */
+ @Task
+ @RequestMapping(name="수납 정보 조회", value=METHOD_URL.getReceivingMoneyInfo)
+ public ModelAndView getReceivingMoneyInfo(HttpServletRequest hReq, RcvmtQuery req) {
+ //
+ DataObject rcvmtInfo = rcvmtService.getRcvmtInfo(req);
+
+ boolean json = jsonResponse();
+ ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/rcvm/rcvm01020-info");
+
+ // View(jsp)에서 사용할 공통코드를 조회
+ Map> commonCodes = getCodesOf("FIM041", "FIM045");
+
+ return mav
+ .addObject("callPurpose", req.getCallPurpose()) // 호출 용도
+ .addObject("pageName", "rcvm01020") // jsp pageName
+ .addObject("prefixUrl", CLASS_URL) // prefixUrl
+ .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD)
+ .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD)
+ .addObject("Info", json ? rcvmtInfo : toJson(rcvmtInfo)) // 수납 정보
+ ;
+ }
+
+ /**수납 대장 정보를 등록한다.
+ * @param rcvmt 수납 대장 정보
+ * @return jsonView
+ * {
+ * "saved": 등록되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @Task
+ @RequestMapping(name="수납 대장 등록", value=METHOD_URL.createReceivingMoney)
+ public ModelAndView createReceivingMoney(Rcvmt rcvmt) {
+ boolean saved = false;
+ String rtnMsg = rcvmtService.createRcvmt(rcvmt);
+
+ if (rtnMsg.contains("[S]")) {
+ saved = true;
+ } else {
+ saved = false;
+ }
+
+ return new ModelAndView("jsonView")
+ .addObject("saved", saved)
+ .addObject("rtnMsg", rtnMsg);
+ }
+
+ /**수납 대장에 수납취소 정보를 등록한다.
+ * @param rcvmt 수납 대장 정보
+ * @return jsonView
+ * {
+ * "saved": 등록되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @Task
+ @RequestMapping(name="수납 대장에 수납취소 수정", value=METHOD_URL.updateReceivingMoneyRetraction)
+ public ModelAndView updateReceivingMoneyRetraction(Rcvmt rcvmt) {
+ boolean saved = false;
+ String rtnMsg = rcvmtService.updateRcvmtRtrcn(rcvmt);
+
+ if (rtnMsg.contains("[S]")) {
+ saved = true;
+ } else {
+ saved = false;
+ }
+
+ return new ModelAndView("jsonView")
+ .addObject("saved", saved)
+ .addObject("rtnMsg", rtnMsg);
+ }
+
+ /**수납 대장 정보를 삭제한다.
+ * @param rcvmt 수납 대장 정보
+ * @return jsonView
+ * {
+ * "saved": 등록되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @Task
+ @RequestMapping(name="수납 대장 삭제", value=METHOD_URL.removeReceivingMoney)
+ public ModelAndView removeReceivingMoney(Rcvmt rcvmt) {
+ boolean saved = false;
+ String rtnMsg = rcvmtService.removeRcvmt(rcvmt);
+
+ if (rtnMsg.contains("[S]")) {
+ saved = true;
+ } else {
+ saved = false;
+ }
+
+ return new ModelAndView("jsonView")
+ .addObject("saved", saved)
+ .addObject("rtnMsg", rtnMsg);
+ }
}
diff --git a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java
index 31c8a92f..1fa19e2b 100644
--- a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java
+++ b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java
@@ -138,9 +138,9 @@ public class SndngDtl extends AbstractEntity {
private String bfrDlvrYmd;
/**
- * 전 배달 시간
+ * 전 배달 시각
*/
- private String bfrDlvrHr;
+ private String bfrDlvrTm;
/**
* 발송 수납 코드
@@ -213,9 +213,9 @@ public class SndngDtl extends AbstractEntity {
private Integer adamt;
/**
- * 합계 금액
+ * 최종 금액
*/
- private Integer sumAmt;
+ private Integer lastAmt;
/**
* 납기 후 금액
diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java
index a4dd0881..d8189570 100644
--- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java
+++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java
@@ -175,7 +175,7 @@ public class SndngBean extends AbstractBean {
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue());// 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue()); // 본세
sndngDtl.setAdamt(0); // 가산금
- sndngDtl.setSumAmt(0); // 합계 금액
+ sndngDtl.setLastAmt(0); // 최종 금액
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setDelYn("N"); // 삭제 여부
@@ -505,13 +505,13 @@ public class SndngBean extends AbstractBean {
return rtnMsg;
}
// 부과 본세와 합계 금액이 같은지 확인
- if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("SUM_AMT").intValue()) {
- rtnMsg = "[F] 발송상세 등록 작업중 본세금액과 합계금액이 다릅니다."
+ if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("LAST_AMT").intValue()) {
+ rtnMsg = "[F] 발송상세 등록 작업중 본세금액과 최종금액이 다릅니다."
+ "" + "단속ID : " + crdnPayerInfo.string("CRDN_ID")
+ "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK")
+ "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO")
+ "
" + "본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX")
- + "
" + "합계금액 : " + crdnPayerInfo.string("SUM_AMT")
+ + "
" + "최종금액 : " + crdnPayerInfo.string("LAST_AMT")
+ "
";
return rtnMsg;
}
@@ -523,7 +523,7 @@ public class SndngBean extends AbstractBean {
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액
- levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
+ levy.setLastAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 최종 금액
// 부과(TB_LEVY) 대장에 부과일자, 최초납기일자, 납기일자를 수정한다.
rtnMsg = levyBean.updateRdctLevyYmd(levy);
@@ -562,10 +562,10 @@ public class SndngBean extends AbstractBean {
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세
}
sndngDtl.setAdamt(0); // 가산금 = 0
- if (crdnPayerInfo.string("SUM_AMT").equals("")) {
- sndngDtl.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 = 사전통지 금액
+ if (crdnPayerInfo.string("LAST_AMT").equals("")) {
+ sndngDtl.setLastAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 최종 금액 = 사전통지 금액
} else {
- sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
+ sndngDtl.setLastAmt(crdnPayerInfo.number("LAST_AMT").intValue()); // 최종 금액
}
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
@@ -871,7 +871,7 @@ public class SndngBean extends AbstractBean {
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세
sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
- sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액
+ sndngDtl.setLastAmt(crdnPayerInfo.number("LAST_AMT").intValue()); // 최종 금액
sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
@@ -1430,42 +1430,42 @@ public class SndngBean extends AbstractBean {
// 금액
int pcptax = 0; // 본세
int adamt = 0; // 가산금
- int sumAmt = 0; // 합계 금액
- int afterPcptax = 0; // 납기후 본세
- int afterAdamt = 0; // 납기후 가산금
- int afterSumAmt = 0; // 납기후 합계 금액
+ int lastAmt = 0; // 최종 금액
+ int dudtAftrPcptax = 0; // 납기후 본세
+ int dudtAftrAdamt = 0; // 납기후 가산금
+ int dudtAftrAmt = 0; // 납기후 합계 금액
// 계고장에는 최초 과태료 금액을 출력한다.
if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) {
pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액
adamt = 0; // 가산금 = 0
- sumAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액
- afterPcptax = 0; // 납기후 본세
- afterAdamt = 0; // 납기후 가산금
- afterSumAmt = 0; // 납기후 합계 금액
+ lastAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액
+ dudtAftrPcptax = 0; // 납기후 본세
+ dudtAftrAdamt = 0; // 납기후 가산금
+ dudtAftrAmt = 0; // 납기후 합계 금액
} else {
pcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 본세
adamt = sndngDtlInfo.number("ADAMT").intValue(); // 가산금
- sumAmt = sndngDtlInfo.number("SUM_AMT").intValue(); // 합계 금액
+ lastAmt = sndngDtlInfo.number("LAST_AMT").intValue(); // 최종 금액
if (sndngDtlInfo.string("SGG_CD").equals("50110")) {
- afterPcptax = 0; // 납기후 본세
- afterAdamt = 0; // 납기후 가산금
- afterSumAmt = 0; // 납기후 합계 금액
+ dudtAftrPcptax = 0; // 납기후 본세
+ dudtAftrAdamt = 0; // 납기후 가산금
+ dudtAftrAmt = 0; // 납기후 합계 금액
} else {
- afterSumAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액
- if (afterSumAmt == 0) { // 납기후 금액이 0 이라면..
- afterPcptax = 0;
- afterAdamt = 0;
- afterSumAmt = 0;
+ dudtAftrAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액
+ if (dudtAftrAmt == 0) { // 납기후 금액이 0 이라면..
+ dudtAftrPcptax = 0; // 납기후 본세
+ dudtAftrAdamt = 0; // 납기후 가산금
+ dudtAftrAmt = 0; // 납기후 금액
} else {
- afterPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세
- if (afterSumAmt > afterPcptax) { // 납기후 금액이 본세보다 크다면..
- afterAdamt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue() - sndngDtlInfo.number("PCPTAX").intValue();
- } else if (afterSumAmt < afterPcptax) { // 납기후 금액이 본세보다 작다면 오류..
+ dudtAftrPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세
+ if (dudtAftrAmt > dudtAftrPcptax) { // 납기후 금액이 본세보다 크다면..
+ dudtAftrAdamt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue() - sndngDtlInfo.number("PCPTAX").intValue();
+ } else if (dudtAftrAmt < dudtAftrPcptax) { // 납기후 금액이 본세보다 작다면 오류..
throw new RuntimeException("우편통합 발송 작업중 납기후 금액이 본세보다 작은 자료가 발견되었습니다."); // 예외를 발생시켜서 DB Rollback
} else {
- afterAdamt = 0;
+ dudtAftrAdamt = 0;
}
}
}
@@ -1486,8 +1486,8 @@ public class SndngBean extends AbstractBean {
} else {
// TAX_NO = 부서코드(7) + 특별회계사업코드(4) + 회계연도(4) + 회계구분(2) + 세목코드(6) + 고지번호(6) + 분납순번(2)
ocr0 = sndngDtlInfo.string("TAX_NO") + CmmnUtil.getOcrVrfcCode("12357", sndngDtlInfo.string("TAX_NO"), 31);
- ocr1 = CmmnUtil.getOcrband2(ocr0, sndngDtlInfo.string("LEVY_SE_CD"), sumAmt, sndngDtlInfo.string("DUDT_YMD"));
- ocr2 = CmmnUtil.getOcrband3(ocr1, sumAmt, sndngDtlInfo.string("DUDT_YMD"), afterSumAmt);
+ ocr1 = CmmnUtil.getOcrband2(ocr0, sndngDtlInfo.string("LEVY_SE_CD"), lastAmt, sndngDtlInfo.string("DUDT_YMD"));
+ ocr2 = CmmnUtil.getOcrband3(ocr1, lastAmt, sndngDtlInfo.string("DUDT_YMD"), dudtAftrAmt);
}
// 전자우편 접수 상세 /////////////////////////////////////////////////////
@@ -1580,25 +1580,25 @@ public class SndngBean extends AbstractBean {
// 과태료금액
epostRcptDtl.setRecevFinePrice(sndngDtlInfo.string("FFNLG_AMT"));
// 납부금액
- epostRcptDtl.setRecevPayPrice(String.valueOf(sumAmt));
+ epostRcptDtl.setRecevPayPrice(String.valueOf(lastAmt));
// 납부기한
epostRcptDtl.setRecevPayDt(sndngDtlInfo.string("DUDT_YMD_MASK_KOR"));
// 납기내기한
epostRcptDtl.setRecevPayInDate(sndngDtlInfo.string("DUDT_YMD_MASK"));
- // 납기내금액
+ // 납기내본세
epostRcptDtl.setRecevPayInPrice(String.valueOf(pcptax));
// 납기내가산금
epostRcptDtl.setRecevPayInAddPrice(String.valueOf(adamt));
- // 납기내합계금액
- epostRcptDtl.setRecevPayInDefaultPrice(String.valueOf(sumAmt));
+ // 납기내금액
+ epostRcptDtl.setRecevPayInDefaultPrice(String.valueOf(lastAmt));
// 납기후기한
epostRcptDtl.setRecevPayOutDate(sndngDtlInfo.string("DUDT_AFTR_YMD_MASK"));
- // 납기후금액
- epostRcptDtl.setRecevPayOutPrice(String.valueOf(afterPcptax));
+ // 납기후본세
+ epostRcptDtl.setRecevPayOutPrice(String.valueOf(dudtAftrPcptax));
// 납기후가산금
- epostRcptDtl.setRecevPayOutAddPrice(String.valueOf(afterAdamt));
- // 납기후합계금액
- epostRcptDtl.setRecevPayOutDefaultPrice(String.valueOf(afterSumAmt));
+ epostRcptDtl.setRecevPayOutAddPrice(String.valueOf(dudtAftrAdamt));
+ // 납기후금액
+ epostRcptDtl.setRecevPayOutDefaultPrice(String.valueOf(dudtAftrAmt));
// 차량번호
epostRcptDtl.setRecevCarNumber(sndngDtlInfo.string("VHRNO"));
// 우편번호
diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java
index 7a6fbb5f..e023f35d 100644
--- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java
+++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java
@@ -324,9 +324,9 @@ public class SndngDtlBean extends AbstractBean {
uptSndngDtl.setLevyYmd(a03.getOpnSbmsnTermBgngYmd()); // 부과 일자
uptSndngDtl.setDudtYmd(a03.getOpnSbmsnTermEndYmd()); // 납기 일자
uptSndngDtl.setFfnlgAmt(Integer.parseInt(a03.getFinScrgAmt())); // 과태료 금액
- uptSndngDtl.setPcptax(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 본세
+ uptSndngDtl.setPcptax(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 본세
uptSndngDtl.setAdamt(0); // 가산금
- uptSndngDtl.setSumAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 합계 금액
+ uptSndngDtl.setLastAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 최종 금액
uptSndngDtl.setDudtAftrAmt(0); // 납기 후 금액
uptSndngDtl.setTaxNo(a03.getRsveItem1()); // 납세 번호
uptSndngDtl.setEpayno(a03.getEpayNo()); // 전자납부번호
@@ -417,7 +417,7 @@ public class SndngDtlBean extends AbstractBean {
levy.setRcvmtAdamt(0); // 수납 가산금
levy.setRdamtPcptax(0); // 감액 본세
levy.setRdamtAdamt(0); // 감액 가산금
- levy.setSumAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 합계 금액
+ levy.setLastAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 최종 금액
levy.setDudtAftrAmt(0); // 납기 후 금액
// levy.setTxtnThing(a03.getVhrno()); // 과세 물건 -> 값이 넘어오지 않는다.. 차세대 연계 확인 요청이 필요하다.
levy.setTxtnThing(crdnLevyInfo.string("VHRNO")); // 과세 물건
@@ -693,7 +693,7 @@ public class SndngDtlBean extends AbstractBean {
}
sndngDtl.setDlvrYmd(sndbkInfo.string("BFR_DLVR_YMD"));
- sndngDtl.setDlvrTm(sndbkInfo.string("BFR_DLVR_HR"));
+ sndngDtl.setDlvrTm(sndbkInfo.string("BFR_DLVR_TM"));
sndngDtl.setSndngDtlSttsCd(sndbkInfo.string("BFR_SNDNG_DTL_STTS_CD"));
// 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 삭제한다.
diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java
index ae7f4ab9..9b5ff781 100644
--- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java
+++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java
@@ -942,7 +942,7 @@ public class Sndb01Controller extends ApplicationController {
valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric));
valueMap.put("본세", format.of("PCPTAX").style(numeric));
valueMap.put("가산금", format.of("ADAMT").style(numeric));
- valueMap.put("미납금액", format.of("SUM_AMT").style(numeric));
+ valueMap.put("최종금액", format.of("LAST_AMT").style(numeric));
valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT));
valueMap.put("등록사용자", format.of("RGTR_NM").style(center));
valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT));
@@ -1329,7 +1329,7 @@ public class Sndb01Controller extends ApplicationController {
valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric));
valueMap.put("본세", format.of("PCPTAX").style(numeric));
valueMap.put("가산금", format.of("ADAMT").style(numeric));
- valueMap.put("미납금액", format.of("SUM_AMT").style(numeric));
+ valueMap.put("최종금액", format.of("LAST_AMT").style(numeric));
valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT));
valueMap.put("등록사용자", format.of("RGTR_NM").style(center));
valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT));
@@ -1451,7 +1451,7 @@ public class Sndb01Controller extends ApplicationController {
valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric));
valueMap.put("본세", format.of("PCPTAX").style(numeric));
valueMap.put("가산금", format.of("ADAMT").style(numeric));
- valueMap.put("미납금액", format.of("SUM_AMT").style(numeric));
+ valueMap.put("최종금액", format.of("LAST_AMT").style(numeric));
valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT));
valueMap.put("등록사용자", format.of("RGTR_NM").style(center));
valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT));
diff --git a/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml b/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml
index e9c63cea..6e4fc6a2 100644
--- a/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml
+++ b/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml
@@ -78,7 +78,7 @@
, L.RCVMT_ADAMT
, L.RDAMT_PCPTAX
, L.RDAMT_ADAMT
- , L.SUM_AMT
+ , L.LAST_AMT
, L.LEVY_PCPTAX + L.LEVY_ADAMT AS LEVY_AMT
, L.RCVMT_PCPTAX + L.RCVMT_ADAMT AS RCVMT_AMT
, L.RDAMT_PCPTAX + L.RDAMT_ADAMT AS RDAMT_AMT
@@ -205,31 +205,31 @@
, C.FFNLG_AMT
, C.ADVNTCE_AMT
, C.CRDN_STTS_CD
- , (CONCAT(C.CRDN_YMD,C.CRDN_TM)) AS CRDN_YMD_TM
- , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM
+ , (CONCAT(C.CRDN_YMD,C.CRDN_TM)) AS CRDN_YMD_TM
+ , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM
, L.LEVY_ID
- , L.SUM_AMT
- , L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT
- , L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT
- , L.RDAMT_PCPTAX + RDAMT_ADAMT AS RDAMT_AMT
+ , L.LAST_AMT
+ , L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT
+ , L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT
+ , L.RDAMT_PCPTAX + RDAMT_ADAMT AS RDAMT_AMT
, P.RTPYR_ID
, P.RTPYR_NO
, P.RTPYR_NM
, R.RDCT_ID
, R.RDCT_YMD
, R.RDCT_RSN_CD
+ , (GET_CODE_NM('FIM019', R.RDCT_RSN_CD)) AS RDCT_RSN_NM
, R.RDCT_AMT
, R.ETC_CN
, R.DEL_YN
, R.REG_DT
, R.RGTR
+ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM
, R.MDFCN_DT
, R.MDFR
+ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM
, R.DEL_DT
, R.DLTR
- , (SELECT GET_CODE_NM('FIM019', R.RDCT_RSN_CD) FROM DUAL) AS RDCT_RSN_NM
- , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM
- , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM
FROM TB_CRDN C
INNER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
@@ -372,15 +372,4 @@
AND DEL_YN = 'N'
- /* 부과 대장 과태료 감경 금액 수정(rdctMapper.updateLevyRdct) */
- UPDATE TB_LEVY
- SET FFNLG_AMT = #{ffnlgAmt}
- , LEVY_PCPTAX = #{levyPcptax}
- , SUM_AMT = #{sumAmt}
- , MDFCN_DT =
- , MDFR = #{modifiedBy}
- WHERE LEVY_ID = #{levyId}
- AND DEL_YN = 'N'
-
-
diff --git a/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml b/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml
index f64c8d66..dc92ce27 100644
--- a/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml
+++ b/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml
@@ -53,23 +53,23 @@
SELECT R.RCVMT_ID
, R.SGG_CD
, R.TASK_SE_CD
- , (SELECT GET_CODE_NM('FIM054', R.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM
+ , (GET_CODE_NM('FIM054', R.TASK_SE_CD)) AS TASK_SE_NM
, R.RCVMT_INPT_SE_CD
- , (SELECT GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD) FROM DUAL) AS RCVMT_INPT_SE_NM
+ , (GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD)) AS RCVMT_INPT_SE_NM
, R.DEPT_CD
, R.SPCL_BIZ_CD
, R.FYR
, R.ACNTG_SE_CD
- , (SELECT GET_CODE_NM('FIM074', R.ACNTG_SE_CD) FROM DUAL) AS ACNTG_SE_NM
+ , (GET_CODE_NM('FIM074', R.ACNTG_SE_CD)) AS ACNTG_SE_NM
, R.TXITM_CD
- , (SELECT GET_CODE_NM('FIM075', R.TXITM_CD) FROM DUAL) AS TXITM_NM
+ , (GET_CODE_NM('FIM075', R.TXITM_CD)) AS TXITM_NM
, R.LEVY_NO
, R.ISPY_SN
, R.LAST_PCPTAX
, R.LAST_ADAMT
, R.RCVMT_SN
, R.RCVMT_SE_CD
- , (SELECT GET_CODE_NM('FIM041', R.RCVMT_SE_CD) FROM DUAL) AS RCVMT_SE_NM
+ , (GET_CODE_NM('FIM041', R.RCVMT_SE_CD)) AS RCVMT_SE_NM
, R.RCVMT_YMD
, R.ACNTG_YMD
, R.TSF_YMD
@@ -79,15 +79,15 @@
, R.RCVMT_INT
, R.RCVMT_BANK_NM
, R.PAY_MTHD_SE_CD
- , (SELECT GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD) FROM DUAL) AS PAY_MTHD_SE_NM
+ , (GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD)) AS PAY_MTHD_SE_NM
, R.EPAYNO
, R.VR_ACTNO
, R.RCVMT_RTRCN_YN
- , (SELECT GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN) FROM DUAL) AS RCVMT_RTRCN_NM
+ , (GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN)) AS RCVMT_RTRCN_NM
, R.RCVMT_RTRCN_DT
, R.RCVMT_RTRCN_RSN
, R.RCVMT_STTS_CD
- , (SELECT GET_CODE_NM('FIM020', R.RCVMT_STTS_CD) FROM DUAL) AS RCVMT_STTS_NM
+ , (GET_CODE_NM('FIM020', R.RCVMT_STTS_CD)) AS RCVMT_STTS_NM
, R.DEL_YN
, R.REG_DT
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM
@@ -97,6 +97,7 @@
, L.LEVY_YMD
, L.FRST_DUDT_YMD
, L.DUDT_YMD
+ , L.LAST_AMT
, L.SZR_YMD
, L.SZR_THING
, L.RPM_SZR_VHRNO
@@ -104,17 +105,17 @@
, L.SZR_RMV_RSN
, C.CRDN_ID
, C.CRDN_YMD
- , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM
+ , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM
, C.VHRNO
, C.CRDN_STDG_NM
, C.CRDN_ROAD_NM
, C.CRDN_PLC
, C.CRDN_STTS_CD
- , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM
+ , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM
, C.CRDN_STTS_CHG_DT
, P.RTPYR_ID
, P.RTPYR_SE_CD
- , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM
+ , (GET_CODE_NM('FIM011', P.RTPYR_SE_CD)) AS RTPYR_SE_NM
, P.RTPYR_NO
, P.RTPYR_NM
, PA.ADDR_SN
@@ -274,23 +275,23 @@
SELECT R.RCVMT_ID
, R.SGG_CD
, R.TASK_SE_CD
- , (SELECT GET_CODE_NM('FIM054', R.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM
+ , (GET_CODE_NM('FIM054', R.TASK_SE_CD)) AS TASK_SE_NM
, R.RCVMT_INPT_SE_CD
- , (SELECT GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD) FROM DUAL) AS RCVMT_INPT_SE_NM
+ , (GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD)) AS RCVMT_INPT_SE_NM
, R.DEPT_CD
, R.SPCL_BIZ_CD
, R.FYR
, R.ACNTG_SE_CD
- , (SELECT GET_CODE_NM('FIM074', R.ACNTG_SE_CD) FROM DUAL) AS ACNTG_SE_NM
+ , (GET_CODE_NM('FIM074', R.ACNTG_SE_CD)) AS ACNTG_SE_NM
, R.TXITM_CD
- , (SELECT GET_CODE_NM('FIM075', R.TXITM_CD) FROM DUAL) AS TXITM_NM
+ , (GET_CODE_NM('FIM075', R.TXITM_CD)) AS TXITM_NM
, R.LEVY_NO
, R.ISPY_SN
, R.LAST_PCPTAX
, R.LAST_ADAMT
, R.RCVMT_SN
, R.RCVMT_SE_CD
- , (SELECT GET_CODE_NM('FIM041', R.RCVMT_SE_CD) FROM DUAL) AS RCVMT_SE_NM
+ , (GET_CODE_NM('FIM041', R.RCVMT_SE_CD)) AS RCVMT_SE_NM
, R.RCVMT_YMD
, R.ACNTG_YMD
, R.TSF_YMD
@@ -300,22 +301,31 @@
, R.RCVMT_INT
, R.RCVMT_BANK_NM
, R.PAY_MTHD_SE_CD
- , (SELECT GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD) FROM DUAL) AS PAY_MTHD_SE_NM
+ , (GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD)) AS PAY_MTHD_SE_NM
, R.EPAYNO
, R.VR_ACTNO
, R.RCVMT_RTRCN_YN
, R.RCVMT_RTRCN_DT
, R.RCVMT_RTRCN_RSN
- , (SELECT GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN) FROM DUAL) AS RCVMT_RTRCN_NM
+ , (GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN)) AS RCVMT_RTRCN_NM
, R.RCVMT_STTS_CD
- , (SELECT GET_CODE_NM('FIM020', R.RCVMT_STTS_CD) FROM DUAL) AS RCVMT_STTS_NM
+ , (GET_CODE_NM('FIM020', R.RCVMT_STTS_CD)) AS RCVMT_STTS_NM
, R.DEL_YN
, R.REG_DT
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM
, R.MDFCN_DT
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM
, L.LEVY_ID
+ , L.LEVY_PCPTAX AS L_LEVY_PCPTAX
+ , L.LEVY_ADAMT AS L_LEVY_ADAMT
+ , L.RCVMT_PCPTAX AS L_RCVMT_PCPTAX
+ , L.RCVMT_ADAMT AS L_RCVMT_ADAMT
+ , L.RDAMT_PCPTAX AS L_RDAMT_PCPTAX
+ , L.RDAMT_ADAMT AS L_RDAMT_ADAMT
+ , L.LAST_AMT
, C.CRDN_ID
+ , C.CRDN_STTS_CD
+ , C.CRDN_STTS_CHG_DT
FROM TB_RCVMT R
LEFT OUTER JOIN TB_LEVY L ON (R.LEVY_ID = L.LEVY_ID)
LEFT OUTER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID)
@@ -480,32 +490,38 @@