수납 등록 수정.

main
jjh 12 months ago
parent 6ba2a3adbe
commit 9a07507d6f

@ -103,7 +103,7 @@ public interface LevyMapper extends AbstractMapper {
return levy != null && updateLevy(params().set("levy", levy)) == 1; return levy != null && updateLevy(params().set("levy", levy)) == 1;
} }
/** , , . /** , , .
* @param levy * @param levy
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
@ -116,6 +116,19 @@ public interface LevyMapper extends AbstractMapper {
return levy != null && updateRductLevyYmd(params().set("levy", levy)) == 1; return levy != null && updateRductLevyYmd(params().set("levy", levy)) == 1;
} }
/** .
* @param levy
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
int updateRcvmtAmt(Map<String, Object> params);
default boolean updateRcvmtAmt(Levy levy) {
return levy != null && updateRcvmtAmt(params().set("levy", levy)) == 1;
}
/** . /** .
* @param params * @param params
* <ul><li>"levy" - </li> * <ul><li>"levy" - </li>

@ -247,11 +247,10 @@ public class LevyBean extends AbstractComponent {
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String retMessage = "[F] "; // 처리 결과 메시지
retSuccess = levyMapper.updateRductLevyYmd(levy); retSuccess = levyMapper.updateRductLevyYmd(levy);
if (!retSuccess) { if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("감경부과 대장 등록에 실패하였습니다."); throw new RuntimeException("부과 대장에 사전 감경부과 일자 정보 수정에 실패하였습니다.");
} }
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";
@ -259,9 +258,28 @@ public class LevyBean extends AbstractComponent {
return retMessage; return retMessage;
} }
/** .
* @param levy
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String updateRcvmtAmt(Levy levy) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
retSuccess = levyMapper.updateRcvmtAmt(levy);
if (!retSuccess) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다.");
}
retMessage = "[S] 작업이 정상 처리 되었습니다.";
return retMessage;
}
/** . /** .
* @param levy * @param levy

@ -37,11 +37,6 @@ public class Rcvmt extends AbstractEntity {
*/ */
private String rcvmtInptSeCd; private String rcvmtInptSeCd;
/**
*
*/
private String spclAcntgBizCd;
/** /**
* *
*/ */
@ -67,6 +62,16 @@ public class Rcvmt extends AbstractEntity {
*/ */
private String inspySn; private String inspySn;
/**
*
*/
private Integer lastPcptax;
/**
*
*/
private Integer lastAdamt;
/** /**
* *
*/ */

@ -52,6 +52,19 @@ public interface RcvmtMapper extends AbstractMapper {
*/ */
DataObject selectLevyInfo(RcvmtQuery req); DataObject selectLevyInfo(RcvmtQuery req);
/** .
* @param rcvmt
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
int updateRcvmtRtrcn(Map<String, Object> params);
default boolean updateRcvmtRtrcn(Rcvmt rcvmt) {
return rcvmt != null && updateRcvmtRtrcn(params().set("rcvmt", rcvmt)) == 1;
}
/** . /** .
* @param params * @param params
* <ul><li>"rcvmt" - </li> * <ul><li>"rcvmt" - </li>

@ -8,6 +8,10 @@ import org.springframework.stereotype.Component;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.cmmn.CrdnSttsHstry;
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.dao.LevyMapper;
import cokr.xit.fims.rcvm.Rcvmt; import cokr.xit.fims.rcvm.Rcvmt;
import cokr.xit.fims.rcvm.RcvmtQuery; import cokr.xit.fims.rcvm.RcvmtQuery;
import cokr.xit.fims.rcvm.dao.RcvmtMapper; import cokr.xit.fims.rcvm.dao.RcvmtMapper;
@ -29,6 +33,14 @@ public class RcvmtBean extends AbstractComponent {
@Resource(name = "rcvmtMapper") @Resource(name = "rcvmtMapper")
private RcvmtMapper rcvmtMapper; private RcvmtMapper rcvmtMapper;
/** 부과 대장 정보 DAO */
@Resource(name = "levyMapper")
private LevyMapper levyMapper;
/** 단속 상태 이력 정보 Bean */
@Resource(name = "crdnSttsHstryBean")
private CrdnSttsHstryBean crdnSttsHstryBean;
/** . /** .
* @param req * @param req
* @return * @return
@ -81,31 +93,29 @@ public class RcvmtBean extends AbstractComponent {
String retMessage = "[F] "; // 처리 결과 메시지 String retMessage = "[F] "; // 처리 결과 메시지
// 부과 ID로 단속, 부과 정보 조회 // 부과 ID로 단속, 부과 정보 조회
DataObject levyInfo = rcvmtMapper.selectLevyInfo(new RcvmtQuery().setLevyId(rcvmt.getLevyId()) DataObject levyInfo = rcvmtMapper.selectLevyInfo(new RcvmtQuery().setLevyId(rcvmt.getLevyId()).setDelYn("N"));
.setDelYn("N"));
String rcvmtSeCd = ""; // 수납 구분 코드(FIM041) String rcvmtSeCd = ""; // 수납 구분 코드(FIM041)
// 입력된 수납 금액으로 수납 본세, 수납 가산금 나누기 rcvmt.setLastPcptax(levyInfo.number("LAST_PCPTAX").intValue()); // 최종 본세
int pcptax = levyInfo.number("PCPTAX").intValue(); // 본세 rcvmt.setLastAdamt(levyInfo.number("LAST_ADAMT").intValue()); // 최종 가산금
int adamt = levyInfo.number("ADAMT").intValue(); // 가산금
if (pcptax + adamt == rcvmt.getRcvmtAmt()) { // 입력된 수납 금액으로 수납 본세, 수납 가산금 나누기
rcvmt.setRcvmtPcptax(pcptax); // 수납 본세 if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == 0) { // 최종 금액이 0원 이라면..
rcvmt.setRcvmtAdamt(adamt); // 수납 가산금
rcvmtSeCd = "01"; // 수납 구분 코드 = 완납
} else if (pcptax + adamt == 0) { // 납부할 금액이 없다면..
rcvmt.setRcvmtPcptax(0); // 수납 본세 rcvmt.setRcvmtPcptax(0); // 수납 본세
rcvmt.setRcvmtAdamt(0); // 수납 가산금 rcvmt.setRcvmtAdamt(0); // 수납 가산금
rcvmtSeCd = "02"; // 수납 구분 코드 = 이중수납 rcvmtSeCd = "02"; // 수납 구분 코드 = 이중수납
} else if (pcptax + adamt < rcvmt.getRcvmtAmt()) { } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == rcvmt.getRcvmtAmt()) { // 최종 금액과 수납 금액이 일치한다면..
rcvmt.setRcvmtPcptax(pcptax); // 수납 본세 rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
rcvmt.setRcvmtAdamt(adamt); // 수납 가산금 rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금
rcvmtSeCd = "01"; // 수납 구분 코드 = 완납
} else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() < rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 많다면..
rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금
rcvmtSeCd = "04"; // 수납 구분 코드 = 과납 rcvmtSeCd = "04"; // 수납 구분 코드 = 과납
} else if (pcptax + adamt > rcvmt.getRcvmtAmt()) { } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() > rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 적다면..
if (rcvmt.getRcvmtAmt() > pcptax) { if (rcvmt.getRcvmtAmt() > rcvmt.getLastPcptax()) {
rcvmt.setRcvmtPcptax(pcptax); // 수납 본세 rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세
rcvmt.setRcvmtAdamt(rcvmt.getRcvmtAmt() - pcptax); // 수납 가산금 rcvmt.setRcvmtAdamt(rcvmt.getRcvmtAmt() - rcvmt.getLastPcptax()); // 수납 가산금
} else { } else {
rcvmt.setRcvmtPcptax(rcvmt.getRcvmtAmt()); // 수납 본세 rcvmt.setRcvmtPcptax(rcvmt.getRcvmtAmt()); // 수납 본세
rcvmt.setRcvmtAdamt(0); // 수납 가산금 rcvmt.setRcvmtAdamt(0); // 수납 가산금
@ -120,56 +130,112 @@ public class RcvmtBean extends AbstractComponent {
rcvmt.setRcvmtSeCd(rcvmtSeCd); rcvmt.setRcvmtSeCd(rcvmtSeCd);
} }
retSuccess = rcvmtMapper.insert(rcvmt); retSuccess = rcvmtMapper.insert(rcvmt); // 수납 대장 등록
if (!retSuccess) { if (!retSuccess) {
throw new RuntimeException("수납 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("수납 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
// 부과 테이블 수정 // 부과(TB_LEVY) 대장을 수정한다.
if (!rcvmtSeCd.equals("02")) { // 이중 수납이 아니라면..
Levy levy = new Levy();
levy.setLevyId(levyInfo.string("LEVY_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()); // 납부 방법 구분 코드
retSuccess = levyMapper.updateRcvmtAmt(levy); // 부과 대장 수정
if (!retSuccess) {
throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 변경 // 합계 금액이 0이면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 변경한다.
if (levy.getSumAmt() == 0 && (rcvmtSeCd.equals("01") || rcvmtSeCd.equals("04"))) {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
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.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) 대장을 수정한다.
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!retSuccess) {
throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";
return retMessage; return retMessage;
} }
/** . /** .
* @param rcvmt * @param rcvmt
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public String removeRcvmt(Rcvmt rcvmt) { public String updateRcvmtRtrcn(Rcvmt rcvmt) {
// 변수 선언 // 변수 선언
boolean retSuccess = false; // DB 처리 결과 boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지 String retMessage = "[F] "; // 처리 결과 메시지
// 수납 ID로 수납 정보 조회 retSuccess = rcvmtMapper.updateRcvmtRtrcn(rcvmt);
DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()) if (!retSuccess) {
.setDelYn("N")); throw new RuntimeException("수납 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 부과 대장 수정 ///////////////////////////////////////////////////////////
// 단속 대장 수정 ///////////////////////////////////////////////////////////
retMessage = "[S] 작업이 정상 처리 되었습니다.";
if (!rcvmtInfo.string("RCVMT_INPT_SE_CD").equals("03")) {
retMessage = "[F] 수납입력구분이 수기 입력이 아닙니다.";
return retMessage; return retMessage;
} }
/** .
* @param rcvmt
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public String removeRcvmt(Rcvmt rcvmt) {
// 변수 선언
boolean retSuccess = false; // DB 처리 결과
String retMessage = "[F] "; // 처리 결과 메시지
retSuccess = rcvmtMapper.delete(rcvmt); retSuccess = rcvmtMapper.delete(rcvmt);
if (!retSuccess) { if (!retSuccess) {
throw new RuntimeException("수납 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("수납 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
// 부과 테이블 수정
// 단속 상태 변경
retMessage = "[S] 작업이 정상 처리 되었습니다."; retMessage = "[S] 작업이 정상 처리 되었습니다.";
return retMessage; return retMessage;

@ -662,14 +662,33 @@
AND DEL_YN = 'N' /* 삭제 여부 */ AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="updateRductLevyYmd" parameterType="map">/* 감경부과 대장 부과일자, 최초납기일자, 납기일자 수정(levyMapper.updateRductLevyYmd) */ <update id="updateRductLevyYmd" parameterType="map">/* 부과 대장 부과일자, 최초납기일자, 납기일자 수정(levyMapper.updateRductLevyYmd) */
UPDATE TB_LEVY UPDATE TB_LEVY
SET LEVY_YMD = #{levy.levyYmd} /* 부과 일자 */ SET LEVY_YMD = #{levy.levyYmd} /* 부과 일자 */
, FRST_DUDT_YMD = #{levy.frstDudtYmd} /* 최초 납기 일자 */ , FRST_DUDT_YMD = #{levy.frstDudtYmd} /* 최초 납기 일자 */
, DUDT_YMD = #{levy.dudtYmd} /* 납기 일자 */ , DUDT_YMD = #{levy.dudtYmd} /* 납기 일자 */
<if test="levy.ffnlgAmt != null">
, FFNLG_AMT = #{levy.ffnlgAmt} /* 과태료 금액 */ , FFNLG_AMT = #{levy.ffnlgAmt} /* 과태료 금액 */
</if>
<if test="levyPcptax != null">
, LEVY_PCPTAX = #{levy.levyPcptax} /* 본세 금액 */ , LEVY_PCPTAX = #{levy.levyPcptax} /* 본세 금액 */
</if>
<if test="sumAmt != null">
, SUM_AMT = #{levy.sumAmt} /* 합계 금액 */
</if>
, MDFCN_DT = #{levy.lastModified} /* 수정 일시 */
, MDFR = #{levy.modifiedBy} /* 수정자 */
WHERE LEVY_ID = #{levy.levyId} /* 부과 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
<update id="updateRcvmtAmt" parameterType="map">/* 부과 대장에 수납 금액 정보를 수정(levyMapper.updateRcvmtAmt) */
UPDATE TB_LEVY
SET RCVMT_PCPTAX = #{levy.rcvmtPcptax} /* 수납 본세 */
, RCVMT_ADAMT = #{levy.rcvmtAdamt} /* 수납 가산금 */
, SUM_AMT = #{levy.sumAmt} /* 합계 금액 */ , SUM_AMT = #{levy.sumAmt} /* 합계 금액 */
, RCVMT_YMD = #{levy.rcvmtYmd} /* 수납 일자 */
, PAY_MTHD_SE_CD = #{levy.payMthdSeCd} /* 납부 방법 구분 코드 */
, MDFCN_DT = #{levy.lastModified} /* 수정 일시 */ , MDFCN_DT = #{levy.lastModified} /* 수정 일시 */
, MDFR = #{levy.modifiedBy} /* 수정자 */ , MDFR = #{levy.modifiedBy} /* 수정자 */
WHERE LEVY_ID = #{levy.levyId} /* 부과 ID */ WHERE LEVY_ID = #{levy.levyId} /* 부과 ID */

@ -13,12 +13,13 @@
<result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 --> <result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 -->
<result property="levyId" column="LEVY_ID" /> <!-- 부과 ID --> <result property="levyId" column="LEVY_ID" /> <!-- 부과 ID -->
<result property="rcvmtInptSeCd" column="RCVMT_INPT_SE_CD" /> <!-- 수납 입력 구분 코드 --> <result property="rcvmtInptSeCd" column="RCVMT_INPT_SE_CD" /> <!-- 수납 입력 구분 코드 -->
<result property="spclAcntgBizCd" column="SPCL_ACNTG_BIZ_CD" /> <!-- 특별 회계 사업 코드 -->
<result property="fyr" column="FYR" /> <!-- 회계 연도 --> <result property="fyr" column="FYR" /> <!-- 회계 연도 -->
<result property="acntgSeCd" column="ACNTG_SE_CD" /> <!-- 회계 구분 코드 --> <result property="acntgSeCd" column="ACNTG_SE_CD" /> <!-- 회계 구분 코드 -->
<result property="txitmCd" column="TXITM_CD" /> <!-- 세목 코드 --> <result property="txitmCd" column="TXITM_CD" /> <!-- 세목 코드 -->
<result property="levyNo" column="LEVY_NO" /> <!-- 부과 번호 --> <result property="levyNo" column="LEVY_NO" /> <!-- 부과 번호 -->
<result property="inspySn" column="INSPY_SN" /> <!-- 분납 일련번호 --> <result property="inspySn" column="INSPY_SN" /> <!-- 분납 일련번호 -->
<result property="lastPcptax" column="LAST_PCPTAX" /> <!-- 최종 본세 -->
<result property="lastAdamt" column="LAST_ADAMT" /> <!-- 최종 가산금 -->
<result property="rcvmtSn" column="RCVMT_SN" /> <!-- 수납 일련번호 --> <result property="rcvmtSn" column="RCVMT_SN" /> <!-- 수납 일련번호 -->
<result property="rcvmtYmd" column="RCVMT_YMD" /> <!-- 수납 일자 --> <result property="rcvmtYmd" column="RCVMT_YMD" /> <!-- 수납 일자 -->
<result property="rcvmtAmt" column="RCVMT_AMT" /> <!-- 수납 금액 --> <result property="rcvmtAmt" column="RCVMT_AMT" /> <!-- 수납 금액 -->
@ -52,12 +53,13 @@
, R.SGG_CD /* 시군구 코드 */ , R.SGG_CD /* 시군구 코드 */
, R.TASK_SE_CD /* 업무 구분 코드 */ , R.TASK_SE_CD /* 업무 구분 코드 */
, R.RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */ , R.RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */
, R.SPCL_ACNTG_BIZ_CD /* 특별 회계 사업 코드 */
, R.FYR /* 회계연도 */ , R.FYR /* 회계연도 */
, R.ACNTG_SE_CD /* 회계 구분 코드 */ , R.ACNTG_SE_CD /* 회계 구분 코드 */
, R.TXITM_CD /* 세목 코드 */ , R.TXITM_CD /* 세목 코드 */
, R.LEVY_NO /* 부과 번호 */ , R.LEVY_NO /* 부과 번호 */
, R.INSPY_SN /* 분납 일련번호 */ , R.INSPY_SN /* 분납 일련번호 */
, R.LAST_PCPTAX /* 최종 본세 */
, R.LAST_ADAMT /* 최종 가산금 */
, R.RCVMT_SN /* 수납 일련번호 */ , R.RCVMT_SN /* 수납 일련번호 */
, R.RCVMT_YMD /* 수납 일자 */ , R.RCVMT_YMD /* 수납 일자 */
, R.RCVMT_AMT /* 수납 금액 */ , R.RCVMT_AMT /* 수납 금액 */
@ -264,8 +266,8 @@
, L.LEVY_PCPTAX /* 부과 본세 */ , L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */ , L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */ , L.INSPY_INT /* 분납 이자 */
, L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS PCPTAX /* 본세 */ , L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS LAST_PCPTAX /* 최종 본세 */
, L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS ADAMT /* 가산금 */ , L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS LAST_ADAMT /* 가산금 */
, C.CRDN_ID /* 단속 ID */ , C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */ , C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */
@ -292,6 +294,17 @@
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
<update id="updateRcvmtRtrcn" parameterType="map">/* 수납 대장 수납취소 정보 수정(rcvmtMapper.updateRcvmtRtrcn) */
UPDATE TB_RCVMT
SET RCVMT_RTRCN_YN = #{rcvmt.rcvmtRtrcnYn} /* 수납 취소 여부 */
, RCVMT_RTRCN_DT = #{rcvmt.rcvmtRtrcnDt} /* 수납 취소 일시 */
, RCVMT_RTRCN_RSN = #{rcvmt.rcvmtRtrcnRsn} /* 수납 취소 사유 */
, MDFCN_DT = #{rcvmt.lastModified} /* 수정 일시 */
, MDFR = #{rcvmt.modifiedBy} /* 수정자 */
WHERE RCVMT_ID = #{rcvmt.rcvmtId} /* 수납 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
</update>
<insert id="insertRcvmt" parameterType="map">/* 수납 대장 등록(rcvmtMapper.insertRcvmt) */ <insert id="insertRcvmt" parameterType="map">/* 수납 대장 등록(rcvmtMapper.insertRcvmt) */
<selectKey resultType="map" keyProperty="rcvmt.rcvmtId,rcvmt.rcvmtSn" keyColumn="NEW_ID,NEW_RCVMT_SN" order="BEFORE"> <selectKey resultType="map" keyProperty="rcvmt.rcvmtId,rcvmt.rcvmtSn" keyColumn="NEW_ID,NEW_RCVMT_SN" order="BEFORE">
SELECT (CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RCVMT_ID, 5)) + 1, 1) AS INT), 16, '0'))) AS NEW_ID SELECT (CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RCVMT_ID, 5)) + 1, 1) AS INT), 16, '0'))) AS NEW_ID
@ -306,12 +319,13 @@
, TASK_SE_CD /* 업무 구분 코드 */ , TASK_SE_CD /* 업무 구분 코드 */
, LEVY_ID /* 부과 ID */ , LEVY_ID /* 부과 ID */
, RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */ , RCVMT_INPT_SE_CD /* 수납 입력 구분 코드 */
, SPCL_ACNTG_BIZ_CD /* 특별 회계 사업 코드 */
, FYR /* 회계연도 */ , FYR /* 회계연도 */
, ACNTG_SE_CD /* 회계 구분 코드 */ , ACNTG_SE_CD /* 회계 구분 코드 */
, TXITM_CD /* 세목 코드 */ , TXITM_CD /* 세목 코드 */
, LEVY_NO /* 부과 번호 */ , LEVY_NO /* 부과 번호 */
, INSPY_SN /* 분납 일련번호 */ , INSPY_SN /* 분납 일련번호 */
, LAST_PCPTAX /* 최종 본세 */
, LAST_ADAMT /* 최종 가산금 */
, RCVMT_SN /* 수납 일련번호 */ , RCVMT_SN /* 수납 일련번호 */
, RCVMT_YMD /* 수납 일자 */ , RCVMT_YMD /* 수납 일자 */
, RCVMT_AMT /* 수납 금액 */ , RCVMT_AMT /* 수납 금액 */
@ -348,6 +362,8 @@
, #{rcvmt.txitmCd} /* 세목 코드 */ , #{rcvmt.txitmCd} /* 세목 코드 */
, #{rcvmt.levyNo} /* 부과 번호 */ , #{rcvmt.levyNo} /* 부과 번호 */
, #{rcvmt.inspySn} /* 분납 일련번호 */ , #{rcvmt.inspySn} /* 분납 일련번호 */
, #{rcvmt.lastPcptax} /* 최종 본세 */
, #{rcvmt.lastAdamt} /* 최종 가산금 */
, #{rcvmt.rcvmtSn} /* 수납 일련번호 */ , #{rcvmt.rcvmtSn} /* 수납 일련번호 */
, #{rcvmt.rcvmtYmd} /* 수납 일자 */ , #{rcvmt.rcvmtYmd} /* 수납 일자 */
, #{rcvmt.rcvmtAmt} /* 수납 금액 */ , #{rcvmt.rcvmtAmt} /* 수납 금액 */
@ -378,12 +394,13 @@
UPDATE TB_RCVMT UPDATE TB_RCVMT
SET LEVY_ID = #{rcvmt.levyId} /* 부과 ID */ SET LEVY_ID = #{rcvmt.levyId} /* 부과 ID */
, RCVMT_INPT_SE_CD = #{rcvmt.rcvmtInptSeCd} /* 수납 입력 구분 코드 */ , RCVMT_INPT_SE_CD = #{rcvmt.rcvmtInptSeCd} /* 수납 입력 구분 코드 */
, SPCL_ACNTG_BIZ_CD = #{rcvmt.spclAcntgBizCd} /* 특별 회계 사업 코드 */
, FYR = #{rcvmt.fyr} /* 회계연도 */ , FYR = #{rcvmt.fyr} /* 회계연도 */
, ACNTG_SE_CD = #{rcvmt.acntgSeCd} /* 회계 구분 코드 */ , ACNTG_SE_CD = #{rcvmt.acntgSeCd} /* 회계 구분 코드 */
, TXITM_CD = #{rcvmt.txitmCd} /* 세목 코드 */ , TXITM_CD = #{rcvmt.txitmCd} /* 세목 코드 */
, LEVY_NO = #{rcvmt.levyNo} /* 부과 번호 */ , LEVY_NO = #{rcvmt.levyNo} /* 부과 번호 */
, INSPY_SN = #{rcvmt.inspySn} /* 분납 일련번호 */ , INSPY_SN = #{rcvmt.inspySn} /* 분납 일련번호 */
, LAST_PCPTAX = #{rcvmt.lastPcptax} /* 최종 본세 */
, LAST_ADAMT = #{rcvmt.lastAdamt} /* 최종 가산금 */
, RCVMT_SN = #{rcvmt.rcvmtSn} /* 수납 일련번호 */ , RCVMT_SN = #{rcvmt.rcvmtSn} /* 수납 일련번호 */
, RCVMT_YMD = #{rcvmt.rcvmtYmd} /* 수납 일자 */ , RCVMT_YMD = #{rcvmt.rcvmtYmd} /* 수납 일자 */
, RCVMT_AMT = #{rcvmt.rcvmtAmt} /* 수납 금액 */ , RCVMT_AMT = #{rcvmt.rcvmtAmt} /* 수납 금액 */
@ -405,6 +422,7 @@
, MDFCN_DT = #{rcvmt.lastModified} /* 수정 일시 */ , MDFCN_DT = #{rcvmt.lastModified} /* 수정 일시 */
, MDFR = #{rcvmt.modifiedBy} /* 수정자 */ , MDFR = #{rcvmt.modifiedBy} /* 수정자 */
WHERE RCVMT_ID = #{rcvmt.rcvmtId} /* 수납 ID */ WHERE RCVMT_ID = #{rcvmt.rcvmtId} /* 수납 ID */
AND DEL_YN = 'N' /* 삭제 여부 */
</update> </update>
<update id="deleteRcvmt" parameterType="map">/* 수납 대장 삭제(rcvmtMapper.deleteRcvmt) */ <update id="deleteRcvmt" parameterType="map">/* 수납 대장 삭제(rcvmtMapper.deleteRcvmt) */

@ -178,7 +178,7 @@
<button type="button" class="btn btn-primary w-px-120" id="btnLevyExclInfo--${pageName}" title="부과제외 정보" onclick="fnLevyExclInfo${pageName}();"> <button type="button" class="btn btn-primary w-px-120" id="btnLevyExclInfo--${pageName}" title="부과제외 정보" onclick="fnLevyExclInfo${pageName}();">
부과제외 정보 부과제외 정보
</button> </button>
<button type="button" class="btn btn-primary w-px-120" id="btnLevyExclRemove--${pageName}" title="부과제외 삭제" onclick="fnLevyExclRemove${pageName}();"> <button type="button" class="btn btn-primary w-px-120" id="btnRemoveLevyExcl--${pageName}" title="부과제외 삭제" onclick="fnRemoveLevyExcl${pageName}();">
부과제외 삭제 부과제외 삭제
</button> </button>
</span> </span>
@ -348,7 +348,7 @@
checkbox.prop("checked", keys.includes(checkbox.val())); checkbox.prop("checked", keys.includes(checkbox.val()));
}); });
$("#btnLevyExclRemove--${pageName}").prop("disabled", keys.length < 1); $("#btnRemoveLevyExcl--${pageName}").prop("disabled", keys.length < 1);
}; };
// 개별총정보 dialog // 개별총정보 dialog
@ -376,36 +376,6 @@
}); });
} }
// 삭제 callback
${pageName}Control.onRemove = (selected, resp) => {
let btnTitle = $("#btnLevyExclRemove--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage);
if (resp.saved) {
${pageName}Control._load();
}
}
// 삭제
${pageName}Control.remove = (params) => {
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
if (!params) {
params = {};
params[${pageName}Control.prefixed("IDs")] = selected.join(",");
}
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => ${pageName}Control.onRemove(selected, resp)
});
}
/************************************************************************** /**************************************************************************
* *
**************************************************************************/ **************************************************************************/
@ -450,6 +420,36 @@
}); });
} }
// 부과제외 삭제 callback
removeLevyExcl${pageName} = (obj) => {
let selected = ${pageName}Control.dataset.getKeys("selected");
if (selected.length < 1) return;
// 서버에 전송할 data(파라미터) 생성
let params = {
callPurpose : "remove"
, levyExclIDs : selected.join(",") // 부과제외 IDs
, delYn : "Y" // 삭제 여부
, delRsn : obj.reason // 삭제 사유
};
ajax.post({
url : ${pageName}Control.urls.remove
, data : params
, success : resp => {
let btnTitle = $("#btnRemoveLevyExcl--${pageName}").attr("title");
let showMessage = resp.retMessage.replace(/[S]|[F]/g, btnTitle);
dialog.alert(showMessage); // 메시지 출력
if (resp.saved) {
${pageName}Control._load(); // 자료 재조회
}
}
});
}
/************************************************************************** /**************************************************************************
* 초기 셋팅 * 초기 셋팅
**************************************************************************/ **************************************************************************/
@ -597,13 +597,26 @@
} }
// 부과제외 삭제 버튼 이벤트 // 부과제외 삭제 버튼 이벤트
fnLevyExclRemove${pageName} = () => { fnRemoveLevyExcl${pageName} = () => {
dialog.alert({ // 부과제외 IDs
content : "선택한 부과제외 정보를 삭제하시겠습니까?" let selected = ${pageName}Control.dataset.getKeys("selected");
, onOK : () => {
${pageName}Control.remove(); if (selected.length < 1) return;
}
}); let callbackFuncName = "removeLevyExcl${pageName}";
let popupWidth = 640;
let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2);
let popupY= (window.screen.height / 2) - (popupHeight / 2);
window.open(
wctx.url("/resources/html/inputRsnDialog.html"
+ "?callbackFuncName=" + callbackFuncName
+ "&CALL_PURPOSE=" + "remove"
)
, "inputDelRsnDialog"
, 'status=no, height=' + popupHeight + ', width=' + popupWidth + ', left='+ popupX + ', top='+ popupY
);
} }
/************************************************************************** /**************************************************************************

@ -493,7 +493,7 @@
} }
// 감경 삭제 // 감경 삭제
callbackRemoveRduct${pageName} = (obj) => { removeRduct${pageName} = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = { let params = {
callPurpose : "remove" callPurpose : "remove"
@ -521,8 +521,8 @@
}); });
} }
// 부과제외 삭제 callback // 부과제외 삭제
callbackRemoveLevyExcl${pageName} = (obj) => { removeLevyExcl${pageName} = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = { let params = {
callPurpose : "remove" callPurpose : "remove"
@ -634,7 +634,7 @@
// 감경 ID 가 없다면.. return // 감경 ID 가 없다면.. return
if (typeof rductId == "undefined" || rductId == null || rductId == "") return; if (typeof rductId == "undefined" || rductId == null || rductId == "") return;
let callbackFuncName = "callbackRemoveRduct${pageName}"; let callbackFuncName = "removeRduct${pageName}";
let popupWidth = 640; let popupWidth = 640;
let popupHeight = 360; let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2); let popupX = (window.screen.width / 2) - (popupWidth / 2);
@ -712,7 +712,7 @@
// 부과제외 ID 가 없다면.. return // 부과제외 ID 가 없다면.. return
if (typeof levyExclId == "undefined" || levyExclId == null || levyExclId == "") return; if (typeof levyExclId == "undefined" || levyExclId == null || levyExclId == "") return;
let callbackFuncName = "callbackRemoveLevyExcl${pageName}"; let callbackFuncName = "removeLevyExcl${pageName}";
let popupWidth = 640; let popupWidth = 640;
let popupHeight = 360; let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2); let popupX = (window.screen.width / 2) - (popupWidth / 2);

@ -15,6 +15,9 @@
<button type="button" class="btn btn-primary" id="btnCreateRcvmt--${pageName}" title="수기 수납 등록" onclick="fnCreateRcvmt${pageName}();"> <button type="button" class="btn btn-primary" id="btnCreateRcvmt--${pageName}" title="수기 수납 등록" onclick="fnCreateRcvmt${pageName}();">
수기 수납 등록 수기 수납 등록
</button> </button>
<button type="button" class="btn btn-primary" id="btnRemoveRcvmt--${pageName}" title="수기 수납 취소" onclick="fnUpdateRcvmtRtrcn${pageName}();">
수기 수납 삭제
</button>
<button type="button" class="btn btn-primary" id="btnRemoveRcvmt--${pageName}" title="수기 수납 삭제" onclick="fnRemoveRcvmt${pageName}();"> <button type="button" class="btn btn-primary" id="btnRemoveRcvmt--${pageName}" title="수기 수납 삭제" onclick="fnRemoveRcvmt${pageName}();">
수기 수납 삭제 수기 수납 삭제
</button> </button>
@ -292,8 +295,8 @@
}); });
} }
// 삭제 // 수기 수납 삭제
callbackRemoveRcvmt${pageName} = () => { removeRcvmt${pageName} = (obj) => {
// 서버에 전송할 data(파라미터) 생성 // 서버에 전송할 data(파라미터) 생성
let params = { let params = {
callPurpose : "remove" callPurpose : "remove"
@ -406,8 +409,13 @@
${pageName}Control.getInfo(params); ${pageName}Control.getInfo(params);
} }
// 수기 수납 취소
fnUpdateRcvmtRtrcn${pageName} = () => {
}
// 수기 수납 삭제 // 수기 수납 삭제
fnRemoveRcvmt${pageName} = (obj) => { fnRemoveRcvmt${pageName} = () => {
// 수납 ID // 수납 ID
let rcvmtId = ${pageName}Control.dataset.getValue("RCVMT_ID"); let rcvmtId = ${pageName}Control.dataset.getValue("RCVMT_ID");
@ -423,8 +431,17 @@
return; return;
} }
// 수납 취소 여부가 "Y" 일때만 삭제 가능
if (${pageName}Control.dataset.getValue("RCVMT_RTRCN_YN") != "Y") {
dialog.alert({
content : "수납이 취소된 자료만 삭제 가능합니다."
, onOK : () => { }
});
return;
}
let callbackFuncName = "callbackRemoveRcvmt${pageName}"; let callbackFuncName = "removeRcvmt${pageName}";
let popupWidth = 640; let popupWidth = 640;
let popupHeight = 360; let popupHeight = 360;
let popupX = (window.screen.width / 2) - (popupWidth / 2); let popupX = (window.screen.width / 2) - (popupWidth / 2);

Loading…
Cancel
Save