감경부과 등록 수정.

main
jjh 12 months ago
parent eea9a2776a
commit 1805a013f8

@ -16,6 +16,13 @@ public class LevyQuery extends CmmnQuery {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
// ID
private String[] crdnIDs; // 단속 IDs
private String crdnId; // 단속 ID
private String[] levyIDs; // 부과 IDs
private String levyId; // 부과 ID
private String[] rductIDs; // 감경 IDs
private String rductId; // 감경 ID
// 검색 조건 // 검색 조건
private String schRductYmdFrom; // 감경 일자 시작 private String schRductYmdFrom; // 감경 일자 시작
private String schRductYmdTo; // 감경 일자 종료 private String schRductYmdTo; // 감경 일자 종료
@ -24,21 +31,13 @@ public class LevyQuery extends CmmnQuery {
private String schVhrno; // 차량번호 private String schVhrno; // 차량번호
private String schRtpyrNo; // 납부자 번호 private String schRtpyrNo; // 납부자 번호
private String schRtpyrNm; // 납부자 명 private String schRtpyrNm; // 납부자 명
// ETC // ETC
private String callPurpose; // 호출용도 필요시 사용 (view 조회, create 등록, update 수정, refresh 재조회) private String callPurpose; // 호출용도 필요시 사용 (view 조회, create 등록, update 수정, refresh 재조회)
private String delYn; // 삭제 여부 private String delYn; // 삭제 여부
private String delRsn; // 삭제 사유 private String delRsn; // 삭제 사유
private String crdnDelYn; // 단속 삭제 여부 private String crdnDelYn; // 단속 삭제 여부
private String tnocs; // 총건수
// ID private String gramt; // 총금액
private String[] crdnIDs; // 단속 IDs
private String crdnId; // 단속 ID
private String[] levyIDs; // 부과 IDs
private String levyId; // 부과 ID
private String[] rductIDs; // 감경 IDs
private String rductId; // 감경 ID
// 부과 등록 // 부과 등록
private String fyr; // 회계연도 private String fyr; // 회계연도
private String acntgSeCd; // 회계 구분 코드 private String acntgSeCd; // 회계 구분 코드
@ -47,6 +46,68 @@ public class LevyQuery extends CmmnQuery {
private String dudtYmd; // 납기 일자 private String dudtYmd; // 납기 일자
private String crdnSttsCd; // 단속 상태 코드 private String crdnSttsCd; // 단속 상태 코드
// ID
public String[] getCrdnIDs() {
return ifEmpty(crdnIDs, () -> null);
}
public <T extends LevyQuery> T setCrdnIDs(String... crdnIDs) {
this.crdnIDs = crdnIDs;
return self();
}
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
}
public <T extends LevyQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String[] getLevyIDs() {
return ifEmpty(levyIDs, () -> null);
}
public <T extends LevyQuery> T setLevyIDs(String... levyIDs) {
this.levyIDs = levyIDs;
return self();
}
public String getLevyId() {
return ifEmpty(levyId, () -> null);
}
public <T extends LevyQuery> T setLevyId(String levyId) {
this.levyId = levyId;
return self();
}
public String[] getRductIDs() {
return ifEmpty(rductIDs, () -> null);
}
public <T extends LevyQuery> T setRductIDs(String... rductIDs) {
this.rductIDs = rductIDs;
return self();
}
public String getRductId() {
return ifEmpty(rductId, () -> null);
}
public <T extends LevyQuery> T setRductId(String rductId) {
this.rductId = rductId;
return self();
}
// 검색 조건
public String getSchRductYmdFrom() { public String getSchRductYmdFrom() {
return ifEmpty(schRductYmdFrom, () -> null); return ifEmpty(schRductYmdFrom, () -> null);
} }
@ -110,6 +171,7 @@ public class LevyQuery extends CmmnQuery {
return self(); return self();
} }
// ETC
public String getCallPurpose() { public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null); return ifEmpty(callPurpose, () -> null);
} }
@ -150,66 +212,25 @@ public class LevyQuery extends CmmnQuery {
return self(); return self();
} }
public String[] getCrdnIDs() { public String getTnocs() {
return ifEmpty(crdnIDs, () -> null); return ifEmpty(tnocs, () -> null);
}
public <T extends LevyQuery> T setCrdnIDs(String... crdnIDs) {
this.crdnIDs = crdnIDs;
return self();
}
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
}
public <T extends LevyQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String[] getLevyIDs() {
return ifEmpty(levyIDs, () -> null);
}
public <T extends LevyQuery> T setLevyIDs(String... levyIDs) {
this.levyIDs = levyIDs;
return self();
}
public String getLevyId() {
return ifEmpty(levyId, () -> null);
}
public <T extends LevyQuery> T setLevyId(String levyId) {
this.levyId = levyId;
return self();
}
public String[] getRductIDs() {
return ifEmpty(rductIDs, () -> null);
} }
public <T extends LevyQuery> T setRductIDs(String... rductIDs) { public <T extends LevyQuery> T setTnocs(String tnocs) {
this.rductIDs = rductIDs; this.tnocs = tnocs;
return self(); return self();
} }
public String getRductId() { public String getGramt() {
return ifEmpty(rductId, () -> null); return ifEmpty(gramt, () -> null);
} }
public <T extends LevyQuery> T setRductId(String rductId) { public <T extends LevyQuery> T setGramt(String gramt) {
this.rductId = rductId; this.gramt = gramt;
return self(); return self();
} }
//
// //
public String getFyr() { public String getFyr() {

@ -55,10 +55,10 @@ public interface LevyService {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
String createRductLevyList(LevyQuery req);
String createRductLevy(Levy levy); String createRductLevy(Levy levy);
String createRductLevyList(LevyQuery req);
/** . /** .
* @param levy * @param levy
* @return * @return

@ -87,23 +87,38 @@ public class LevyBean extends AbstractComponent {
// 변수 선언 // 변수 선언
String retMessage = "[F] "; // 처리 결과 메시지 String retMessage = "[F] "; // 처리 결과 메시지
// 단속 IDs 건수를 확인하여 1건이하면.. 종료 // 최초 조회
if (req.getCrdnIDs().length < 1 ) { List<DataObject> rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req);
// 조회 건수와 등록 대상 건수 확인
if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) {
retMessage = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다.";
return retMessage; return retMessage;
} }
// 부과 IDs 만큼 반복.. // 총 페이지 건수 확인
for (int iLoop = 0; iLoop < req.getCrdnIDs().length; iLoop++) { int totalPageCnt = rductLevyTrgtList.get(0).number("TOT_CNT").intValue() / req.getFetchSize() + ((rductLevyTrgtList.get(0).number("TOT_CNT").intValue() % req.getFetchSize() == 0) ? 0 : 1);
Levy levy = new Levy();
levy.setCrdnId(req.getCrdnIDs()[iLoop]); // 단속 ID // 페이지 건수 + 1 만큼 반복문 실행..
levy.setLevyYmd(req.getLevyYmd()); // 부과 일자 for (int iLoop = 1; iLoop <= totalPageCnt; iLoop++) {
levy.setFrstDudtYmd(req.getDudtYmd()); // 최초 납기 일자 if (iLoop != 1) {
levy.setDudtYmd(req.getDudtYmd()); // 납기 일자 req.setPageNum(iLoop);
retMessage = createRductLevy(levy); rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req);
if (retMessage.contains("[F]")) { }
throw new RuntimeException(retMessage);
for (int jLoop = 0; jLoop < rductLevyTrgtList.size(); jLoop++) {
Levy levy = new Levy();
levy.setCrdnId(rductLevyTrgtList.get(jLoop).string("CRDN_ID")); // 단속 ID
levy.setLevyYmd(req.getLevyYmd()); // 부과 일자
levy.setFrstDudtYmd(req.getDudtYmd()); // 최초 납기 일자
levy.setDudtYmd(req.getDudtYmd()); // 납기 일자
retMessage = createRductLevy(levy);
if (retMessage.contains("[F]")) {
throw new RuntimeException(retMessage);
}
} }
} }
@ -156,6 +171,12 @@ public class LevyBean extends AbstractComponent {
levy.setInspySn("00"); // 분납 순번 levy.setInspySn("00"); // 분납 순번
levy.setLevySeCd("02"); // 부과 구분 코드 FIM040 levy.setLevySeCd("02"); // 부과 구분 코드 FIM040
levy.setUntySeCd("02"); // 통합 구분 코드 FIM072 levy.setUntySeCd("02"); // 통합 구분 코드 FIM072
// levy.setLevyYmd("02"); // 부과 일자
// levy.setFrstDudtYmd("02"); // 최초 납기 일자
// levy.setDudtYmd("02"); // 납기 일자
//
levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnInfo.number("ADVNTCE_AMT").intValue()); // 부과 본세 levy.setLevyPcptax(crdnInfo.number("ADVNTCE_AMT").intValue()); // 부과 본세
levy.setLevyAdamt(0); // 부과 가산금 levy.setLevyAdamt(0); // 부과 가산금

@ -55,13 +55,13 @@ public class LevyServiceBean extends AbstractServiceBean implements LevyService
} }
@Override @Override
public String createRductLevyList(LevyQuery req) { public String createRductLevy(Levy levy) {
return levyBean.createRductLevyList(req); return levyBean.createRductLevy(levy);
} }
@Override @Override
public String createRductLevy(Levy levy) { public String createRductLevyList(LevyQuery req) {
return levyBean.createRductLevy(levy); return levyBean.createRductLevyList(req);
} }
@Override @Override

@ -38,7 +38,7 @@ public class Levy01Controller extends ApplicationController {
reductionLevyTargetMain = "/010/main.do" // 사전 감경부과 대상 메인 화면 reductionLevyTargetMain = "/010/main.do" // 사전 감경부과 대상 메인 화면
, getReductionLevyTargetList = "/010/list.do" // 사전 감경부과 대상 대장 목록 조회 , getReductionLevyTargetList = "/010/list.do" // 사전 감경부과 대상 대장 목록 조회
, getReductionLevyTargetInfo = "/020/info.do" // 사전 감경부과 대상 정보 , getReductionLevyTargetInfo = "/020/info.do" // 사전 감경부과 대상 정보
, createReductionLevy = "/010/createRductLevy.do" // 사전 감경부과 대장 등록 , createReductionLevyList = "/020/createRductLevyList.do" // 사전 감경부과 대장 등록
; ;
} }
@ -89,22 +89,21 @@ public class Levy01Controller extends ApplicationController {
public ModelAndView getReductionLevyTargetInfo(LevyQuery req) { public ModelAndView getReductionLevyTargetInfo(LevyQuery req) {
// 감경 부과일자 // 감경 부과일자
DataObject rductLevyYmdInfo = taskInfoService.getAdvntceYmdInfo(new TaskInfoQuery().setSggCd(req.getSggCd()) DataObject rductLevyYmdInfo = taskInfoService.getAdvntceYmdInfo(new TaskInfoQuery().setSggCd(req.getSggCd())
.setTaskSeCd(req.getTaskSeCd())); .setTaskSeCd(req.getTaskSeCd()));
boolean json = jsonResponse(); boolean json = jsonResponse();
ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/levy/levy01020-info"); ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/levy/levy01020-info");
rductLevyYmdInfo.put("TNOCS", req.getTnocs());
rductLevyYmdInfo.put("GRAMT", req.getGramt());
return mav.addObject("pageName", "levy01020") return mav.addObject("pageName", "levy01020")
.addObject("levyQuery", json ? req : toJson(req)) .addObject("levyQuery", json ? req : toJson(req))
.addObject("rductLevyYmdInfo", json ? rductLevyYmdInfo : toJson(rductLevyYmdInfo)) // .addObject("rductLevyYmdInfo", json ? rductLevyYmdInfo : toJson(rductLevyYmdInfo)) //
; ;
} }
/** . /** .
* @param levy * @param levy
* @return jsonView * @return jsonView
@ -112,10 +111,9 @@ public class Levy01Controller extends ApplicationController {
* "saved": true, false * "saved": true, false
* }</code></pre> * }</code></pre>
*/ */
public ModelAndView createReductionLevy(Levy levy) { public ModelAndView createReductionLevyList(LevyQuery req) {
boolean saved = false; boolean saved = false;
// String retMessage = levyService.createRductLevyList(req); String retMessage = levyService.createRductLevyList(req);
String retMessage = "[S]";
if (retMessage.contains("[S]")) { if (retMessage.contains("[S]")) {
saved = true; saved = true;

@ -561,7 +561,7 @@ public class SndngBean extends AbstractComponent {
sealCd3 = "M"; // M:전기차충전구역과태료고지서 sealCd3 = "M"; // M:전기차충전구역과태료고지서
} }
} else { } else {
retMessage = "[E] 작업중 지정되지 않았습니다."; retMessage = "[F] 작업중 지정되지 않았습니다.";
return retMessage; return retMessage;
} }
@ -581,7 +581,7 @@ public class SndngBean extends AbstractComponent {
} else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납분 } else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납분
jobCd = vltnInfo.string("VLTN_CD") + "09"; jobCd = vltnInfo.string("VLTN_CD") + "09";
} else { } else {
retMessage = "[E] 작업중 발송 구분이 지정되지 않았습니다."; retMessage = "[F] 작업중 발송 구분이 지정되지 않았습니다.";
return retMessage; return retMessage;
} }

@ -16,7 +16,6 @@ import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl; import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery; import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct; import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.payer.Payer; import cokr.xit.fims.payer.Payer;
@ -509,9 +508,9 @@ public class BpvController {
} }
@Override @Override
@RequestMapping(name="전용차로과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevy) @RequestMapping(name="전용차로과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevyList)
public ModelAndView createReductionLevy(Levy levy) { public ModelAndView createReductionLevyList(LevyQuery req) {
return super.createReductionLevy(levy); return super.createReductionLevyList(req);
} }
} }

@ -14,7 +14,6 @@ import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl; import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery; import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct; import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.nxrp.NxrpMtchg; import cokr.xit.fims.nxrp.NxrpMtchg;
@ -479,9 +478,9 @@ public class DpvController {
} }
@Override @Override
@RequestMapping(name="사전 감경부과 대장 등록", value=METHOD_URL.createReductionLevy) @RequestMapping(name="사전 감경부과 대장 등록", value=METHOD_URL.createReductionLevyList)
public ModelAndView createReductionLevy(Levy levy) { public ModelAndView createReductionLevyList(LevyQuery req) {
return super.createReductionLevy(levy); return super.createReductionLevyList(req);
} }
} }

@ -15,7 +15,6 @@ import cokr.xit.fims.excl.CrdnReReg;
import cokr.xit.fims.excl.LevyExclQuery; import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.excl.LevyExcl; import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.OpnnSbmsn; import cokr.xit.fims.excl.OpnnSbmsn;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery; import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.Rduct; import cokr.xit.fims.levy.Rduct;
import cokr.xit.fims.payer.Payer; import cokr.xit.fims.payer.Payer;
@ -479,9 +478,9 @@ public class PvsController {
} }
@Override @Override
@RequestMapping(name="주정차과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevy) @RequestMapping(name="주정차과태료업무 사전(감경) 부과 대장 등록", value=METHOD_URL.createReductionLevyList)
public ModelAndView createReductionLevy(Levy levy) { public ModelAndView createReductionLevyList(LevyQuery req) {
return super.createReductionLevy(levy); return super.createReductionLevyList(req);
} }
} }

@ -94,7 +94,9 @@
<select id="selectRductLevyTrgtList" parameterType="map" resultType="dataobject">/* 감경부과 대상 목록 조회(levyMapper.selectRductLevyTrgtList) */ <select id="selectRductLevyTrgtList" parameterType="map" resultType="dataobject">/* 감경부과 대상 목록 조회(levyMapper.selectRductLevyTrgtList) */
<include refid="utility.paging-prefix" /> <include refid="utility.paging-prefix" />
SELECT C.CRDN_ID <!-- 단속 ID --> SELECT COUNT(*) OVER() AS TNOCS <!-- 총건수 -->
, SUM(C.ADVNTCE_AMT) OVER() AS GRAMT <!-- 총금액 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 --> , C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 --> , C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 --> , C.CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
@ -148,13 +150,11 @@
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 --> WHERE C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND C.CRDN_STTS_CD BETWEEN '21' AND '31' <!-- 단속 상태 코드 --> AND C.CRDN_STTS_CD BETWEEN '21' AND '31' <!-- 단속 상태 코드 -->
AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD <![CDATA[ <> ]]> '00') <!-- 민원 처리 코드 --> AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD <![CDATA[ <> ]]> '00') <!-- 민원 처리 코드 -->
AND L.LEVY_ID IS NULL <!-- 부과 ID --> AND L.LEVY_ID IS NULL <!-- 부과 ID -->
AND C.DEL_YN = 'N' <!-- 삭제 여부 --> AND C.DEL_YN = 'N' <!-- 삭제 여부 -->
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
<if test="schCrdnYmdFrom != null"> <if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 --> AND C.CRDN_YMD <![CDATA[ >= ]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if> </if>
@ -210,15 +210,21 @@
<when test="by == 'vhrno'"> C.VHRNO </when> <when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when> <when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
<when test="by == 'crdnPlc'"> C.CRDN_PLC </when> <when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
<when test="by == 'vltnArtcl'"> VI.VLTN_ARTCL </when>
<when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when> <when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when>
<when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when> <when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when>
<when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when> <when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when>
<when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when> <when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptTrsmCd'"> CC.CVLCPT_TRSM_CD </when>
<when test="by == 'rtpyrNm'"> P.RTPYR_NM </when> <when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> P.RTPYR_NO </when> <when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when> <when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when> <when test="by == 'zip'"> P.ZIP </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when> <when test="by == 'addr'"> P.ADDR </when>
<when test="by == 'dtlAddr'"> P.DTL_ADDR </when>
</choose> </choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" /> <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when> </when>

@ -94,6 +94,18 @@
, (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.MDFR) AS MDFR_NM /* 수정자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM /* 삭제자 명 */
, L.LEVY_ID /* 부과 ID */ , L.LEVY_ID /* 부과 ID */
, L.LEVY_YMD /* 부과 일자 */
, L.FRST_DUDT_YMD /* 최초 납기 일자 */
, L.DUDT_YMD /* 납기 일자 */
, L.FFNLG_AMT /* 과태료 금액 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.SZR_YMD /* 압류 일자 */
, L.SZR_THING /* 압류 물건 */
, L.RPM_SZR_VHRNO /* 대체 압류 자동차등록번호 */
, L.SZR_RMV_YMD /* 압류 해제 일자 */
, L.SZR_RMV_RSN /* 압류 해제 사유 */
, C.CRDN_ID /* 단속 ID */ , C.CRDN_ID /* 단속 ID */
, C.CRDN_YMD /* 단속 일자 */ , C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */ , C.CRDN_TM /* 단속 시각 */
@ -149,6 +161,71 @@
<if test="schRtpyrNm != null"> <if test="schRtpyrNm != null">
AND P.RTPYR_NM = #{schRtpyrNm} /* 납부자 명 */ AND P.RTPYR_NM = #{schRtpyrNm} /* 납부자 명 */
</if> </if>
<choose>
<when test="schDetailCrdnRegDtOpt == 'regDt'">
<if test="schDetailCrdnRegDtFrom != null">
AND SUBSTR(C.REG_DT,1,8) <![CDATA[ >= ]]> #{schDetailCrdnRegDtFrom} <!-- 등록 일자 시작 -->
</if>
<if test="schDetailCrdnRegDtTo != null">
AND SUBSTR(C.REG_DT,1,8) <![CDATA[ <= ]]> #{schDetailCrdnRegDtTo} <!-- 등록 일자 종료 -->
</if>
</when>
<when test="schDetailCrdnRegDtOpt == 'mdfcnDt'">
<if test="schDetailCrdnRegDtFrom != null">
AND SUBSTR(C.MDFCN_DT,1,8) <![CDATA[ >= ]]> #{schDetailCrdnRegDtFrom} <!-- 수정 일자 시작 -->
</if>
<if test="schDetailCrdnRegDtTo != null">
AND SUBSTR(C.MDFCN_DT,1,8) <![CDATA[ <= ]]> #{schDetailCrdnRegDtTo} <!-- 수정 일자 종료 -->
</if>
</when>
<otherwise>
</otherwise>
</choose>
<choose>
<when test="schDetailCrdnRgtrOpt == 'rgtr'">
<if test="schDetailCrdnRgtrCd != null">
AND C.RGTR = #{schDetailCrdnRgtrCd} <!-- 등록자 코드 -->
</if>
</when>
<when test="schDetailCrdnRgtrOpt == 'mdfr'">
<if test="schDetailCrdnRgtrCd != null">
AND C.MDFR = #{schDetailCrdnRgtrCd} <!-- 수정자 코드 -->
</if>
</when>
<otherwise>
</otherwise>
</choose>
<if test="by != null and by != '' and term != null">
<choose>
<when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
<include refid="dynamicSearch.start" />
<choose>
<when test="by == 'crdnYmd'"> C.CRDN_YMD </when>
<when test="by == 'vhrno'"> C.VHRNO </when>
<when test="by == 'crdnStdgNm'"> C.CRDN_STDG_NM </when>
<when test="by == 'crdnPlc'"> C.CRDN_PLC </when>
<when test="by == 'vltnArtcl'"> VI.VLTN_ARTCL </when>
<when test="by == 'ffnlgCrdnAmt'"> C.FFNLG_CRDN_AMT </when>
<when test="by == 'ffnlgAmt'"> C.FFNLG_AMT </when>
<when test="by == 'advntceAmt'"> C.ADVNTCE_AMT </when>
<when test="by == 'crdnSttsCd'"> C.CRDN_STTS_CD </when>
<when test="by == 'cvlcptRcptYmd'"> CC.CVLCPT_RCPT_YMD </when>
<when test="by == 'cvlcptAplyNo'"> CC.CVLCPT_APLY_NO </when>
<when test="by == 'cvlcptRcptNo'"> CC.CVLCPT_RCPT_NO </when>
<when test="by == 'cvlcptTrsmCd'"> CC.CVLCPT_TRSM_CD </when>
<when test="by == 'rtpyrNm'"> P.RTPYR_NM </when>
<when test="by == 'rtpyrNo'"> P.RTPYR_NO </when>
<when test="by == 'rtpyrBrdt'"> P.RTPYR_BRDT </when>
<when test="by == 'zip'"> P.ZIP </when>
<when test="by == 'addr'"> P.ADDR </when>
<when test="by == 'dtlAddr'"> P.DTL_ADDR </when>
</choose>
<include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
</when>
<otherwise>
</otherwise>
</choose>
</if>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>

@ -189,7 +189,7 @@
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_CRDN_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{FFNLG_AMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td> <td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{ADVNTCE_AMT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_APLY_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_NO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CVLCPT_RCPT_YMD}</td>
@ -250,7 +250,6 @@
, urls : { , urls : {
getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보 getInfo : wctx.url("/sprt/sprt02/010/main.do") // 개별총정보
} }
, formats : { , formats : {
CRDN_YMD_TM : datetimeFormat CRDN_YMD_TM : datetimeFormat
, CVLCPT_RCPT_YMD : dateFormat , CVLCPT_RCPT_YMD : dateFormat
@ -346,7 +345,7 @@
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : ${pageName}Control.prefixed("Dialog") id : "rductLevyDialog"
, title : ${pageName}Control.prefixName + " 정보" , title : ${pageName}Control.prefixName + " 정보"
, content : resp , content : resp
, size : ${pageName}Control.infoSize , size : ${pageName}Control.infoSize
@ -488,9 +487,11 @@
// 감경부과등록 버튼 이벤트 // 감경부과등록 버튼 이벤트
fnRductLevyInfo${pageName} = () => { fnRductLevyInfo${pageName} = () => {
let params = ${pageName}Fields.get(); let params = ${pageName}Control.query;
params.callPurpose = "create"; params.callPurpose = "create";
params.tnocs = ${pageName}Control.dataset.getValue("TNOCS");
params.gramt = ${pageName}Control.dataset.getValue("GRAMT");
getRductLevyInfo${pageName}(params); getRductLevyInfo${pageName}(params);
} }

@ -14,13 +14,14 @@
<!-- hidden --> <!-- hidden -->
<input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" /> <input type="hidden" id="sggCd--${pageName}" name="sggCd" data-map="SGG_CD" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" /> <input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="advntceDaycnt--${pageName}" name="advntceDaycnt" data-map="ADVNTCE_DAYCNT" />
<div class="row g-1"> <div class="row g-1">
<!-- 총건수 --> <!-- 총건수 -->
<div class="col-md-12"> <div class="col-md-12">
<label for="tnocs--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">총 건수/금액</label> <label for="tnocs--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end">총 건수/금액</label>
<input type="text" class="form-control w-px-80" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" readonly /> <input type="text" class="form-control w-px-80 text-end" id="tnocs--${pageName}" name="tnocs" data-map="TNOCS" readonly />
<input type="text" class="form-control w-px-120" id="gramt--${pageName}" name="gramt" data-map="GRAMT" readonly /> <input type="text" class="form-control w-px-140 text-end" id="gramt--${pageName}" name="gramt" data-map="GRAMT" readonly />
</div> </div>
<!-- 회계연도 --> <!-- 회계연도 -->
<div class="col-md-12"> <div class="col-md-12">
@ -41,12 +42,6 @@
data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required /> data-fmt-type="day" autocomplete="off" title="날짜 선택" maxlength="10" required />
<button type="button" class="bx bx-sm bx-calendar bg-white"></button> <button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div> </div>
<!-- 감경율 -->
<div class="col-md-12">
<label for="rductRt--${pageName}" class="w-px-120 bg-lighter pe-2 col-form-label text-sm-end required">감경율</label>
<input type="text" class="form-control w-px-120" id="rductRt--${pageName}" name="rductRt" data-map="RDUCT_RT"
autocomplete="off" required readonly />
</div>
</div> </div>
</form> <!-- /입력 영역 --> </form> <!-- /입력 영역 -->
</div> <!-- <div class="card"> --> </div> <!-- <div class="card"> -->
@ -72,10 +67,10 @@
* Global Variable * Global Variable
**************************************************************************/ **************************************************************************/
// URL // URL
var ${pageName}PrefixUrl = "/excl/excl01"; var ${pageName}PrefixUrl = "/levy/levy01";
// FormFields // FormFields
var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}"); var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}");
// // main 의 검색 조건을 그대로 유지
var ${pageName}Query = ${levyQuery}; var ${pageName}Query = ${levyQuery};
/************************************************************************** /**************************************************************************
@ -85,11 +80,15 @@
prefix : "rductLevy" prefix : "rductLevy"
, prefixName : "감경부과" , prefixName : "감경부과"
, keymapper : info => info ? info.CRDN_ID : "" , keymapper : info => info ? info.CRDN_ID : ""
, dataGetter : obj => obj.levyExclInfo , dataGetter : obj => obj.rductLevyInfo
, urls : { , urls : {
create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록 create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록
, update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정 , update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정
} }
, formats : {
TNOCS : numberFormat
, GRAMT : numberFormat
}
}); });
${pageName}Control.onCurrentChange = item => { ${pageName}Control.onCurrentChange = item => {
@ -99,8 +98,7 @@
${pageName}Fields.set(item); ${pageName}Fields.set(item);
// 업무구분에 따른 url 변경 // 업무구분에 따른 url 변경
${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/create.do"); ${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/createRductLevyList.do");
${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/update.do");
} }
/************************************************************************** /**************************************************************************
@ -115,10 +113,7 @@
if (resp.saved) { if (resp.saved) {
dialog.close(${pageName}Control.prefix + "Dialog"); dialog.close(${pageName}Control.prefix + "Dialog");
${savedCallbackFuncName}(resp.saved);
if ("${savedCallbackFuncName}" != "") {
${savedCallbackFuncName}(resp.saved);
}
} }
} }
@ -126,22 +121,17 @@
${pageName}Control.save = (info) => { ${pageName}Control.save = (info) => {
if (!info) return; if (!info) return;
let create = isEmpty(info.levyExclId); let params = $.extend({}, ${pageName}Query, info); // 객체를 합친다.
// 민원 접수 관리에서 호출했다면.. ajax.post({
if (create && "${saveCallbackFuncName}" != "") { url : info.taskSeCd + ${pageName}PrefixUrl + "/020/createRductLevyList.do"
${saveCallbackFuncName}(info); , data : params
} else { , success : resp => ${pageName}Control.onSave(resp)
ajax.post({ });
url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create
, data : info
, success : resp => ${pageName}Control.onSave(resp)
});
}
} }
/************************************************************************** /**************************************************************************
* * Event
**************************************************************************/ **************************************************************************/
/************************************************************************** /**************************************************************************
@ -161,14 +151,22 @@
} }
}); });
}); });
$("#levyYmd--${pageName}").on("change", function() {
let levyYmd = $("#levyYmd--${pageName}").val();
let advntceDaycnt = $("#advntceDaycnt--${pageName}").val();
$("#dudtYmd--${pageName}").val(addDate(levyYmd, Number(advntceDaycnt)));
});
} }
// 검색조건 초기값 셋팅 // 검색조건 초기값 셋팅
setForm${pageName} = () => { setForm${pageName} = () => {
// 달력 초기화 // 달력 초기화
initDatepicker("frmEdit--${pageName}"); initDatepicker("frmEdit--${pageName}");
$("#levyYmd--${pageName}").datepicker("setDate", new Date());
$("#dudtYmd--${pageName}").datepicker("setDate", new Date()); $("#levyYmd--${pageName}").datepicker("setDate", new Date());
$("#dudtYmd--${pageName}").datepicker("setDate", new Date());
} }
/************************************************************************** /**************************************************************************
@ -199,7 +197,6 @@
// Dataset 셋팅 // Dataset 셋팅
${pageName}Control.setData([${rductLevyYmdInfo}]); ${pageName}Control.setData([${rductLevyYmdInfo}]);
debugger;
}); });
</script> </script>

@ -197,6 +197,16 @@
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('PAY_MTHD_SE_CD', this.innerText, 'codeValue', 'FIM045');">납부방법</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('PAY_MTHD_SE_CD', this.innerText, 'codeValue', 'FIM045');">납부방법</th>
<th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('RCVMT_SE_CD', this.innerText, 'codeValue', 'FIM041');">수납구분</th> <th class="cmn" style="width: 100px;" onclick="searchFromGridTitle('RCVMT_SE_CD', this.innerText, 'codeValue', 'FIM041');">수납구분</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('RCVMT_STTS_CD', this.innerText, 'codeValue', 'FIM020');">수납상태</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('RCVMT_STTS_CD', this.innerText, 'codeValue', 'FIM020');">수납상태</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_YMD', this.innerText, 'ymd', '');">부과일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('FRST_DUDT_YMD', this.innerText, 'ymd', '');">최초납기일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('DUDT_YMD', this.innerText, 'ymd', '');">납기일자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_PCPTAX', this.innerText, 'match', 'part');">부과본세</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('LEVY_ADAMT', this.innerText, 'match', 'part');">부과가산금</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('INSPY_INT', this.innerText, 'match', 'part');">분납이자</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SZR_YMD', this.innerText, 'ymd', '');">압류일자</th>
<th class="cmn" style="width: 200px;" onclick="searchFromGridTitle('SZR_THING', this.innerText, 'match', 'part');">압류물건</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('RPM_SZR_VHRNO', this.innerText, 'match', 'part');">대체압류차량</th>
<th class="cmn" style="width: 120px;" onclick="searchFromGridTitle('SZR_RMV_YMD', this.innerText, 'ymd', '');">압류해제일자</th>
<th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th> <th class="cmn" style="width: 180px;" onclick="searchFromGridTitle('CRDN_YMD', this.innerText, 'ymd', '');">단속일시</th>
<th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th> <th class="cmn" style="width: 140px;" onclick="searchFromGridTitle('VHRNO', this.innerText, 'match', 'part');">차량번호</th>
<th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th> <th class="cmn" style="width: 160px;" onclick="searchFromGridTitle('CRDN_STDG_NM', this.innerText, 'match', 'part');">법정동</th>
@ -237,6 +247,16 @@
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{PAY_MTHD_SE_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{PAY_MTHD_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_SE_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_SE_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_STTS_NM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{RCVMT_STTS_NM}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{FRST_DUDT_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{DUDT_YMD}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_PCPTAX}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{LEVY_ADAMT}</td>
<td class="cmn text-end" onclick="{onclick}" ondblclick="{ondblclick}">{INSPY_INT}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SZR_YMD}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{SZR_THING}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{RPM_SZR_VHRNO}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{SZR_RMV_YMD}</td>
<td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td> <td class="cmn text-center" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_YMD_TM}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{VHRNO}</td>
<td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td> <td class="cmn text-start" onclick="{onclick}" ondblclick="{ondblclick}">{CRDN_STDG_NM}</td>
@ -252,7 +272,7 @@
</template> </template>
<template id="${infoPrefix}NotFound--${pageName}"> <template id="${infoPrefix}NotFound--${pageName}">
<tr class="odd"> <tr class="odd">
<td valign="top" colspan="32" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td> <td valign="top" colspan="42" class="dataTables_empty text-center">${prefixName} 정보를 찾지 못했습니다.</td>
</tr> </tr>
</template> </template>
</table> </table>
@ -301,6 +321,13 @@
, RCVMT_PCPTAX : numberFormat , RCVMT_PCPTAX : numberFormat
, RCVMT_ADAMT : numberFormat , RCVMT_ADAMT : numberFormat
, RCVMT_INT : numberFormat , RCVMT_INT : numberFormat
, LEVY_YMD : dateFormat
, FRST_DUDT_YMD : dateFormat
, DUDT_YMD : dateFormat
, FFNLG_AMT : numberFormat
, LEVY_PCPTAX : numberFormat
, LEVY_ADAMT : numberFormat
, SZR_YMD : dateFormat
, CRDN_YMD_TM : datetimeFormat , CRDN_YMD_TM : datetimeFormat
, REG_DT : datetimeFormat , REG_DT : datetimeFormat
, MDFCN_DT : datetimeFormat , MDFCN_DT : datetimeFormat

Loading…
Cancel
Save