서울 세외수입 연계 관련 수정

main
mjkhan21 3 months ago
parent 351521e3ce
commit 95be726013

@ -199,14 +199,27 @@ public class Levy extends AbstractEntity {
/** 단속 Ids */
private String[] crdnIds;
public int finalPcptax() {
/**( - - ) .
* @return
*/
public int lastPcptax() {
return toInt(levyPcptax) - toInt(rcvmtPcptax) - toInt(rdamtPcptax);
}
public int finalAdamt() {
/**( - - ) .
* @return
*/
public int lastAdamt() {
return toInt(levyAdamt) - toInt(rcvmtAdamt) - toInt(rdamtAdamt);
}
/**(( + ) - ( + ) - ( + )) .
* @return
*/
public int lastAmt() {
return lastPcptax() + lastAdamt();
}
public List<BiConsumer<String, String>> bankAccountSetters() {
ArrayList<BiConsumer<String, String>> setters = new ArrayList<>();
setters.add((bankNm, accountNo) -> {setBankNm(bankNm); setVrActno(accountNo);});

@ -229,9 +229,8 @@ public class SnisBean extends AbstractBean {
prenotice.setDisposalContent("부과"); // 처분내용
prenotice.setRawBasis(Vltn.legalBasis(crdnInfo)); // 부과근거
prenotice.setSemokCd(crdnInfo.string("ACNTG_SE_CD") + crdnInfo.string("TXITM_CD")); // 세목코드
long taxAmt = toLong(crdnInfo.get("FFNLG_AMT"));
prenotice.setTaxAmt(taxAmt); // 과세금액
prenotice.setPreTaxAmt(toLong(taxAmt * 0.8)); //
prenotice.setTaxAmt(toLong(crdnInfo.get("FFNLG_AMT"))); // 부과예정금액(감경전)
prenotice.setPreTaxAmt(toLong(crdnInfo.get("ADVNTCE_AMT"))); // 자진납부금액(감경후)
prenotice.setJukbalDtlAddr(Crdn.location(crdnInfo)); // 위반장소
prenotice.setJukbalMgrNm(currentUser.getName()); // 적발담당자
@ -318,18 +317,20 @@ public class SnisBean extends AbstractBean {
levy.setLevyNo(notice.getTaxNo()); // 부과번호
levy.setLevyYmd(notice.getTaxYmd()); // 부과일자
levy.setDudtYmd(notice.getNapgiYmd()); // 납기일자
levy.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자
levy.setLevyPcptax((int)notice.getTaxAmt()); // 부과본세 <- 과세금액
levy.setLevyAdamt((int)notice.gasanAmt()); // 부과가산금
levy.setLastAmt((int)notice.totalAmt()); // 최종금액
int taxAmt = (int)notice.getTaxAmt();
levy.setLevyPcptax(taxAmt); // 부과본세 <- 과세금액
int gasanAmt = (int)notice.gasanAmt();
levy.setLevyAdamt(gasanAmt); // 부과가산금
levy.setDudtAftrAmt(null);
/*
if ("1".equals(notice.getBuStatusCd())) { // 완납일경우
levy.setRcvmtPcptax((int)notice.getTaxAmt());
levy.setRcvmtAdamt((int)notice.gasanAmt());
levy.setRcvmtPcptax(taxAmt);
levy.setRcvmtAdamt(gasanAmt);
levy.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자
}
levy.setLastAmt(levy.lastAmt()); // 최종금액
*/
levy.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후일자
levy.setTxtnThing(notice.getMulNm()); // 물건이름
@ -365,7 +366,11 @@ public class SnisBean extends AbstractBean {
}
private void update(List<Ye22NoticeInfoDTO> notices) {
log().debug("{} Ye22NoticeInfoDTO(s) received", !isEmpty(notices) ? notices.size() : 0);
log().debug("Ye22NoticeInfoDTO(s) received: {}", !isEmpty(notices) ? notices.size() : 0);
// 상태가 부과,완납,감면,전액감액,신고종료인 것들만 처리
notices = !isEmpty(notices) ?
notices.stream().filter(notice -> "부과,완납,감면,전액감액,신고종료".contains(notice.getBuStatusNm())).toList() :
Collections.emptyList();
if (isEmpty(notices)) return;
// 세외수입 연계키별 부과정보
@ -380,14 +385,8 @@ public class SnisBean extends AbstractBean {
Crdn::getCrdnId,
crdn -> crdn
));
// '부과'상태 사전통보 포함여부
boolean bugwa = notices.stream()
.filter(notice -> "0".equals(notice.getBuStatusCd()))
.count() > 0;
// 단속ID별 발송상세 정보
List<SndngDtl> sndngDtls = !bugwa ?
Collections.emptyList() :
sndngDtlMapper.selectSndngDetails(new SndbQuery().setCrdnIds(crdnIDs.toArray(new String[crdnIDs.size()])));
List<SndngDtl> sndngDtls = sndngDtlMapper.selectSndngDetails(new SndbQuery().setCrdnIds(crdnIDs.toArray(new String[crdnIDs.size()])));
Map<String, SndngDtl> sndngDetails = sndngDtls.stream().collect(Collectors.toMap(
SndngDtl::getCrdnId,
sndngDtl -> sndngDtl
@ -405,17 +404,17 @@ public class SnisBean extends AbstractBean {
String statusCode = notice.getBuStatusCd(), // 과태료 상태
status = notice.getBuStatusNm(); // 상태이름
boolean paid = "1,2,3,4,5".contains(statusCode); // 수납(완납,이중납,일부납,과납,오납)
boolean paid = "완납".equals(status);
int rcvmtAmt = (int)notice.totalAmt();
log().debug("세외수입 연계키: {}, 상태: {}({})", linkMngKey, status, statusCode);
update(notice, levy); // 부과정보에 적용
levyMapper.updateLevy(levy);
if (paid) {
Rcvmt rcvmt = Rcvmt.create(levy); // 수납등록
rcvmt.setRcvmtAmt(rcvmtAmt); // 수납금액
rcvmt.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자
rcvmt.calcAmts();
if ("1".equals(statusCode)) { // 완납
String rcvmtSttsCd = switch (crdn.getCrdnSttsCd()) {
case "23", "31", "42", "43", "44", "45" -> "1"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납
@ -427,51 +426,30 @@ public class SnisBean extends AbstractBean {
rcvmt.setRcvmtSttsCd(rcvmtSttsCd);
}
rcvmtBean.createRcvmt(rcvmt);
crdn.setRcvmtAmt(rcvmtAmt); // 수납금액
crdnUpdtMapper.updateEditCrdn(crdn);
}
if (bugwa) {
SndngDtl sndngDtl = sndngDetails.get(crdnId);
update(notice, sndngDtl); // 발송상세에 적용
if (sndngDtl != null)
sndngDtlMapper.updateSndngDtl(sndngDtl);
SndngDtl sndngDtl = sndngDetails.get(crdnId);
update(notice, sndngDtl); // 발송상세에 적용
if (sndngDtl != null) {
sndngDtl.setLastAmt(levy.getLastAmt());
sndngDtlMapper.updateSndngDtl(sndngDtl);
}
boolean reduced = "30".equals(statusCode);
boolean reduced = "감면".equals(status);
if (reduced) { // 감면 -> 감액 등록
Rdamt rdamt = Rdamt.create(levy);
rdamtBean.createRdamt(rdamt);
}
if (!paid && !reduced)
levyMapper.updateLevy(levy);
// String crdnStatus = crdn.getCrdnSttsCd();
// 단속정보에 적용
if ("0".equals(statusCode)) { // '부과'상태
} else if (paid) {
crdn.setRcvmtAmt(rcvmtAmt); // 수납금액
// notice.getNapbuYmd(); // 납부일자
crdnUpdtMapper.updateEditCrdn(crdn);
/*
crdnStatus = switch (crdn.getCrdnSttsCd()) {
case "23", "31", "42", "43", "44", "45" -> "71"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납
case "51" -> "72"; // 부과 -> 부과수납
case "52" -> "73"; // 독촉 -> 독촉수납
case "53", "54" -> "74"; // 압류예고, 압류대상 -> 압류예정수납
case "55" -> "75"; // 압류 -> 압류수납
default -> null;
};
if (crdnStatus != null) {
CrdnSttsHstry history = CrdnSttsHstry.create(crdnStatus, null, crdn);
crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(history);
}
*/
} else if ("전액감액".equals(status)) { // 전액감액 -> 부과취소
if ("전액감액,신고종료".contains(status)) { // 전액감액, -> 부과취소
LevyExcl levyExcl = new LevyExcl();
levyExcl.setCrdnId(crdnId);
levyExcl.setLevyExclSeCd("3");
levyExcl.setLevyExclYmd(ifEmpty(notice.getNapbuYmd(), dateFormats::today));
levyExcl.setLevyExclSeCd("3"); // 구분: 부과취소
levyExcl.setLevyExclRsnCd("150"); // 사유: 부과취소
levyExcl.setLevyExclYmd(dateFormats.today());
levyExclBean.createLevyExcl(levyExcl);
}
}

@ -30,8 +30,9 @@ public class Rcvmt extends AbstractEntity {
rcvmt.setPayMthdSeCd("10"); // 납부방법구분: 기타 (FIM045)
rcvmt.setEpayno(levy.getEpayno()); // 전자납부번호
rcvmt.setLastPcptax(levy.finalPcptax()); // 최종본세
rcvmt.setLastAdamt(levy.finalAdamt()); // 최종가산금
rcvmt.setLastPcptax(levy.lastPcptax()); // 최종본세
rcvmt.setLastAdamt(levy.lastAdamt()); // 최종가산금
return rcvmt;
}
@ -202,7 +203,6 @@ public class Rcvmt extends AbstractEntity {
/** , .
* .
*/
public void calcAmts() {
if (lastPcptax == null || lastAdamt == null) return;
@ -229,4 +229,5 @@ public class Rcvmt extends AbstractEntity {
}
}
}
*/
}

@ -99,9 +99,7 @@ public class RcvmtBean extends AbstractBean {
* </ul>
*/
public String createRcvmt(Rcvmt rcvmt) {
// 부과 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(toInt(levyInfo.get("LAST_PCPTAX")));// 최종 본세

Loading…
Cancel
Save