package cokr.xit.fims.levy;

import java.util.List;

import cokr.xit.fims.cmmn.CmmnQuery;

/**과태료 부과 대장 정보 조회 요청
 *
 * <p>상세 설명:
 *
 * <pre>
 * ============ 변경 이력 ============
 * 2023-08-30    JoJH 최초 작성
 * ================================
 * </pre>
 */
public class LevyQuery extends CmmnQuery {

    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[] rdctIds;                                                   // 감경 Ids
    private String rdctId;                                                      // 감경 ID
    private List<String> nxrpLevyKeys;                                          // 세외수입 부과키
    // 검색 조건
    private String schFyr;                                                      // 회계연도
    private String schLevyNoFrom;                                               // 부과 번호 시작
    private String schLevyNoTo;                                                 // 부과 번호 종료
    private String schRdctSeCd;                                                 // 감경 구분 코드
    private String schLevyYmdFrom;                                              // 부과 일자 시작
    private String schLevyYmdTo;                                                // 부과 일자 종료
    private String schRdctYmdFrom;                                              // 감경 일자 시작
    private String schRdctYmdTo;                                                // 감경 일자 종료
    private String schRdctRsnCd;                                                // 감경 사유 코드
    private String schCrdnYmdFrom;                                              // 단속 일자 시작
    private String schCrdnYmdTo;                                                // 단속 일자 종료
    private String schVhrno;                                                    // 차량번호
    private String schCrdnSttsCd;                                               // 단속 상태 코드
    private String schVltnCd;                                                   // 위반 코드
    private String schCvlcptRcptYmdFrom;                                        // 민원 접수 일자 시작
    private String schCvlcptRcptYmdTo;                                          // 민원 접수 일자 종료
    private String schCvlcptPrcsCmptnDtFrom;                                    // 민원 처리 완료 일시 시작
    private String schCvlcptPrcsCmptnDtTo;                                      // 민원 처리 완료 일시 종료
    private String schCvlcptPrcsPic;                                            // 민원 처리 담당자
    private String schRtpyrNo;                                                  // 납부자 번호
    private String schRtpyrNm;                                                  // 납부자 명
    // 상세 검색 조건

    // ETC
    private String callPurpose;                                                 // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
    private String delRsn;                                                      // 삭제 사유
    private String tnocs;                                                       // 총 건수
    private String gramtFfnlgAmt;                                               // 총 금액
    private String gramtAdvntceAmt;                                             // 총 감경부과 금액
    // 부과 등록
    private String spclBizCd;                                                   // 특별회계 사업 코드
    private String fyr;                                                         // 회계연도
    private String acntgSeCd;                                                   // 회계 구분 코드
    private String txitmCd;                                                     // 세목 코드
    private String operItemCd;                                                  // 운영 항목 코드
    private String levyNo;                                                      // 부과 번호
    private String ispySn;                                                      // 분납 일련번호
    private String levyYmd;                                                     // 부과 일자
    private String dudtYmd;                                                     // 납기 일자
    private String crdnSttsCd;                                                  // 단속 상태 코드
    // 최근 2년 내 특정일 이전 부과 목록 조회 조건
    private String rtpyrId; // 납부자 ID
    private String date;    // 지정일

    // 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[] getRdctIds() {
        return ifEmpty(rdctIds, () -> null);
    }

    public <T extends LevyQuery> T setRdctIds(String... rdctIds) {
        this.rdctIds = rdctIds;
        return self();
    }

    public String getRdctId() {
        return ifEmpty(rdctId, () -> null);
    }

    public <T extends LevyQuery> T setRdctId(String rdctId) {
        this.rdctId = rdctId;
        return self();
    }

    public List<String> getNxrpLevyKeys() {
    	return ifEmpty(nxrpLevyKeys, () -> null);
    }

    public <T extends LevyQuery> T setNxrpLevyKeys(List<String> nxrpLevyKeys) {
    	this.nxrpLevyKeys = nxrpLevyKeys;
    	return self();
    }

    // 검색 조건 //////////////////////////////////////////////////////////////////
    public String getSchRdctYmdFrom() {
        return ifEmpty(schRdctYmdFrom, () -> null);
    }

    public <T extends LevyQuery> T setSchRdctYmdFrom(String schRdctYmdFrom) {
        this.schRdctYmdFrom = schRdctYmdFrom;
        return self();
    }

    public String getSchRdctYmdTo() {
        return ifEmpty(schRdctYmdTo, () -> null);
    }

    public <T extends LevyQuery> T setSchRdctYmdTo(String schRdctYmdTo) {
        this.schRdctYmdTo = schRdctYmdTo;
        return self();
    }

    public String getSchRdctRsnCd() {
        return ifEmpty(schRdctRsnCd, () -> null);
    }

    public <T extends LevyQuery> T setSchRdctRsnCd(String schRdctRsnCd) {
        this.schRdctRsnCd = schRdctRsnCd;
        return self();
    }

    public String getSchFyr() {
        return ifEmpty(schFyr, () -> null);
    }

    public <T extends LevyQuery> T setSchFyr(String schFyr) {
        this.schFyr = schFyr;
        return self();
    }

    public String getSchLevyNoFrom() {
        return ifEmpty(schLevyNoFrom, () -> null);
    }

    public <T extends LevyQuery> T setSchLevyNoFrom(String schLevyNoFrom) {
        this.schLevyNoFrom = schLevyNoFrom;
        return self();
    }

    public String getSchLevyNoTo() {
        return ifEmpty(schLevyNoTo, () -> null);
    }

    public <T extends LevyQuery> T setSchLevyNoTo(String schLevyNoTo) {
        this.schLevyNoTo = schLevyNoTo;
        return self();
    }

    public String getSchRdctSeCd() {
        return ifEmpty(schRdctSeCd, () -> null);
    }

    public <T extends LevyQuery> T setSchRdctSeCd(String schRdctSeCd) {
        this.schRdctSeCd = schRdctSeCd;
        return self();
    }

    public String getSchLevyYmdFrom() {
        return ifEmpty(schLevyYmdFrom, () -> null);
    }

    public <T extends LevyQuery> T setSchLevyYmdFrom(String schLevyYmdFrom) {
        this.schLevyYmdFrom = schLevyYmdFrom;
        return self();
    }

    public String getSchLevyYmdTo() {
        return ifEmpty(schLevyYmdTo, () -> null);
    }

    public <T extends LevyQuery> T setSchLevyYmdTo(String schLevyYmdTo) {
        this.schLevyYmdTo = schLevyYmdTo;
        return self();
    }

    public String getSchCrdnYmdFrom() {
        return ifEmpty(schCrdnYmdFrom, () -> null);
    }

    public <T extends LevyQuery> T setSchCrdnYmdFrom(String schCrdnYmdFrom) {
        this.schCrdnYmdFrom = schCrdnYmdFrom;
        return self();
    }

    public String getSchCrdnYmdTo() {
        return ifEmpty(schCrdnYmdTo, () -> null);
    }

    public <T extends LevyQuery> T setSchCrdnYmdTo(String schCrdnYmdTo) {
        this.schCrdnYmdTo = schCrdnYmdTo;
        return self();
    }

    public String getSchVhrno() {
        return ifEmpty(schVhrno, () -> null);
    }

    public <T extends LevyQuery> T setSchVhrno(String schVhrno) {
        this.schVhrno = schVhrno;
        return self();
    }

    public String getSchCrdnSttsCd() {
        return ifEmpty(schCrdnSttsCd, () -> null);
    }

    public <T extends LevyQuery> T setSchCrdnSttsCd(String schCrdnSttsCd) {
        this.schCrdnSttsCd = schCrdnSttsCd;
        return self();
    }

    public String getSchVltnCd() {
        return ifEmpty(schVltnCd, () -> null);
    }

    public <T extends LevyQuery> T setSchVltnCd(String schVltnCd) {
        this.schVltnCd = schVltnCd;
        return self();
    }

    public String getSchCvlcptRcptYmdFrom() {
        return ifEmpty(schCvlcptRcptYmdFrom, () -> null);
    }

    public <T extends LevyQuery> T setSchCvlcptRcptYmdFrom(String schCvlcptRcptYmdFrom) {
        this.schCvlcptRcptYmdFrom = schCvlcptRcptYmdFrom;
        return self();
    }

    public String getSchCvlcptRcptYmdTo() {
        return ifEmpty(schCvlcptRcptYmdTo, () -> null);
    }

    public <T extends LevyQuery> T setSchCvlcptRcptYmdTo(String schCvlcptRcptYmdTo) {
        this.schCvlcptRcptYmdTo = schCvlcptRcptYmdTo;
        return self();
    }

    public String getSchCvlcptPrcsCmptnDtFrom() {
        return ifEmpty(schCvlcptPrcsCmptnDtFrom, () -> null);
    }

    public <T extends LevyQuery> T setSchCvlcptPrcsCmptnDtFrom(String schCvlcptPrcsCmptnDtFrom) {
        this.schCvlcptPrcsCmptnDtFrom = schCvlcptPrcsCmptnDtFrom;
        return self();
    }

    public String getSchCvlcptPrcsCmptnDtTo() {
        return ifEmpty(schCvlcptPrcsCmptnDtTo, () -> null);
    }

    public <T extends LevyQuery> T setSchCvlcptPrcsCmptnDtTo(String schCvlcptPrcsCmptnDtTo) {
        this.schCvlcptPrcsCmptnDtTo = schCvlcptPrcsCmptnDtTo;
        return self();
    }

    public String getSchCvlcptPrcsPic() {
        return ifEmpty(schCvlcptPrcsPic, () -> null);
    }

    public <T extends LevyQuery> T setSchCvlcptPrcsPic(String schCvlcptPrcsPic) {
        this.schCvlcptPrcsPic = schCvlcptPrcsPic;
        return self();
    }

    public String getSchRtpyrNo() {
        return ifEmpty(schRtpyrNo, () -> null);
    }

    public <T extends LevyQuery> T setSchRtpyrNo(String schRtpyrNo) {
        this.schRtpyrNo = schRtpyrNo;
        return self();
    }

    public String getSchRtpyrNm() {
        return ifEmpty(schRtpyrNm, () -> null);
    }

    public <T extends LevyQuery> T setSchRtpyrNm(String schRtpyrNm) {
        this.schRtpyrNm = schRtpyrNm;
        return self();
    }
    // 검색 조건 //////////////////////////////////////////////////////////////////

    // 상세 검색 조건 ///////////////////////////////////////////////////////////////

    // 상세 검색 조건 ///////////////////////////////////////////////////////////////

    // ETC ////////////////////////////////////////////////////////////////////
    public String getCallPurpose() {
        return ifEmpty(callPurpose, () -> null);
    }

    public <T extends LevyQuery> T setCallPurpose(String callPurpose) {
        this.callPurpose = callPurpose;
        return self();
    }

    public String getDelRsn() {
        return ifEmpty(delRsn, () -> null);
    }

    public <T extends LevyQuery> T setDelRsn(String delRsn) {
        this.delRsn = delRsn;
        return self();
    }
    // ETC /////////////////////////////////////////////////////////////////////

    public String getTnocs() {
        return ifEmpty(tnocs, () -> null);
    }

    public <T extends LevyQuery> T setTnocs(String tnocs) {
        this.tnocs = tnocs;
        return self();
    }

    public String getGramtFfnlgAmt() {
        return ifEmpty(gramtFfnlgAmt, () -> null);
    }

    public <T extends LevyQuery> T setGramtFfnlgAmt(String gramtFfnlgAmt) {
        this.gramtFfnlgAmt = gramtFfnlgAmt;
        return self();
    }

    public String getGramtAdvntceAmt() {
        return ifEmpty(gramtAdvntceAmt, () -> null);
    }

    public <T extends LevyQuery> T setGramtAdvntceAmt(String gramtAdvntceAmt) {
        this.gramtAdvntceAmt = gramtAdvntceAmt;
        return self();
    }
    // ETC ////////////////////////////////////////////////////////////////////

    // 부과 등록 //////////////////////////////////////////////////////////////////
    public String getSpclBizCd() {
        return ifEmpty(spclBizCd, () -> null);
    }

    public <T extends LevyQuery> T setSpclBizCd(String spclBizCd) {
        this.spclBizCd = spclBizCd;
        return self();
    }

    public String getFyr() {
        return ifEmpty(fyr, () -> null);
    }

    public <T extends LevyQuery> T setFyr(String fyr) {
        this.fyr = fyr;
        return self();
    }

    public String getAcntgSeCd() {
        return ifEmpty(acntgSeCd, () -> null);
    }

    public <T extends LevyQuery> T setAcntgSeCd(String acntgSeCd) {
        this.acntgSeCd = acntgSeCd;
        return self();
    }

    public String getTxitmCd() {
        return ifEmpty(txitmCd, () -> null);
    }

    public <T extends LevyQuery> T setTxitmCd(String txitmCd) {
        this.txitmCd = txitmCd;
        return self();
    }

    public String getOperItemCd() {
        return ifEmpty(operItemCd, () -> null);
    }

    public <T extends LevyQuery> T setOperItemCd(String operItemCd) {
        this.operItemCd = operItemCd;
        return self();
    }

    public String getLevyNo() {
        return ifEmpty(levyNo, () -> null);
    }

    public <T extends LevyQuery> T setLevyNo(String levyNo) {
        this.levyNo = levyNo;
        return self();
    }

    public String getIspySn() {
        return ifEmpty(ispySn, () -> null);
    }

    public <T extends LevyQuery> T setIspySn(String ispySn) {
        this.ispySn = ispySn;
        return self();
    }

    public String getLevyYmd() {
        return ifEmpty(levyYmd, () -> null);
    }

    public <T extends LevyQuery> T setLevyYmd(String levyYmd) {
        this.levyYmd = levyYmd;
        return self();
    }

    public String getDudtYmd() {
        return ifEmpty(dudtYmd, () -> null);
    }

    public <T extends LevyQuery> T setDudtYmd(String dudtYmd) {
        this.dudtYmd = dudtYmd;
        return self();
    }

    public String getCrdnSttsCd() {
        return ifEmpty(crdnSttsCd, () -> null);
    }

    public <T extends LevyQuery> T setCrdnSttsCd(String crdnSttsCd) {
        this.crdnSttsCd = crdnSttsCd;
        return self();
    }
    // 부과 등록 //////////////////////////////////////////////////////////////////

	/**납부자 ID를 반환한다.
	 * @return 납부자 ID
	 */
	public String getRtpyrId() {
		return rtpyrId;
	}

	/**납부자 ID를 설정한다.
	 * @param rtpyrId 납부자 ID
	 * @return 현재 LevyQuery
	 */
	public <T extends LevyQuery> T setRtpyrId(String rtpyrId) {
		this.rtpyrId = rtpyrId;
        return self();
	}

	/**지정일자를 반환한다.
	 * @return 지정일자
	 */
	public String getDate() {
		return date;
	}

	/**지정일자를 설정한다.
	 * @param date 지정일자
	 * @return 현재 LevyQuery
	 */
	public <T extends LevyQuery> T setDate(String date) {
		this.date = date;
        return self();
	}
}