<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.rcvm.dao.RcvmtMapper">

<!-- 수납 대장 정보 매퍼
 ========== 변경 이력 ==========
 2023-08-31	JoJH 최초 작성
 ============================ -->

	<resultMap id="rcvmtRow" type="cokr.xit.fims.rcvm.Rcvmt">
		<result property="rcvmtId"				column="RCVMT_ID" />					<!-- 수납 ID -->
		<result property="sggCd"				column="SGG_CD" />						<!-- 시군구 코드 -->
		<result property="taskSeCd"				column="TASK_SE_CD" />					<!-- 업무 구분 코드 -->
		<result property="levyId"				column="LEVY_ID" />						<!-- 부과 ID -->
		<result property="rcvmtInptSeCd"		column="RCVMT_INPT_SE_CD" />			<!-- 수납 입력 구분 코드 -->
		<result property="spclAcntgBizCd"		column="SPCL_ACNTG_BIZ_CD" />			<!-- 특별 회계 사업 코드 -->
		<result property="acntgYr"				column="ACNTG_YR" />					<!-- 회계 연도 -->
		<result property="acntgSe"				column="ACNTG_SE" />					<!-- 회계 구분 -->
		<result property="txitmCd"				column="TXITM_CD" />					<!-- 세목 코드 -->
		<result property="levyNo"				column="LEVY_NO" />						<!-- 부과 번호 -->
		<result property="inspySn"				column="INSPY_SN" />					<!-- 분납 일련번호 -->
		<result property="rcvmtSn"				column="RCVMT_SN" />					<!-- 수납 일련번호 -->
		<result property="rcvmtYmd"				column="RCVMT_YMD" />					<!-- 수납 일자 -->
		<result property="rcvmtPcptax"			column="RCVMT_PCPTAX" />				<!-- 수납 본세 -->
		<result property="rcvmtAdamt"			column="RCVMT_ADAMT" />					<!-- 수납 가산금 -->
		<result property="rcvmtInt"				column="RCVMT_INT" />					<!-- 수납 이자 -->
		<result property="rcvmtBankNm"			column="RCVMT_BANK_NM" />				<!-- 수납 은행 명 -->
		<result property="payMthdSeCd"			column="PAY_MTHD_SE_CD" />				<!-- 납부 방법 구분 코드 -->
		<result property="acntgYmd"				column="ACNTG_YMD" />					<!-- 회계 일자 -->
		<result property="pstmrkYmd"			column="PSTMRK_YMD" />					<!-- 소인 일자 -->
		<result property="vractno"				column="VRACTNO" />						<!-- 가상계좌번호 -->
		<result property="epayno"				column="EPAYNO" />						<!-- 전자납부번호 -->
		<result property="rcvmtSeCd"			column="RCVMT_SE_CD" />					<!-- 수납 구분 코드 -->
		<result property="nxrpLevyKey"			column="NXRP_LEVY_KEY" />				<!-- 세외수입 부과 키 -->
		<result property="rcvmtRtrcnYn"			column="RCVMT_RTRCN_YN" />				<!-- 수납 취소 여부 -->
		<result property="rcvmtRtrcnDt"			column="RCVMT_RTRCN_DT" />				<!-- 수납 취소 일시 -->
		<result property="rcvmtRtrcnRsn"		column="RCVMT_RTRCN_RSN" />				<!-- 수납 취소 사유 -->
		<result property="rcvmtSttsCd"			column="RCVMT_STTS_CD" />				<!-- 수납 상태 코드 -->
		<result property="delYn"				column="DEL_YN" />						<!-- 삭제 여부 -->
		<result property="createdAt"			column="REG_DT" />						<!-- 등록 일시 -->
		<result property="createdBy"			column="RGTR" />						<!-- 등록자 -->
		<result property="lastModified"			column="MDFCN_DT" />					<!-- 수정 일시 -->
		<result property="modifiedBy"			column="MDFR" />						<!-- 수정자 -->
		<result property="removedAt"			column="DEL_DT" />						<!-- 삭제 일시 -->
		<result property="removedBy"			column="DLTR" />						<!-- 삭제자 -->
		<result property="delRsn"				column="DEL_RSN" />						<!-- 삭제 사유 -->
	</resultMap>

    <sql id="select">
        SELECT R.RCVMT_ID                                                                                       /* 수납 ID */
             , R.SGG_CD                                                                                         /* 시군구 코드 */
             , R.TASK_SE_CD                                                                                     /* 업무 구분 코드 */
             , R.RCVMT_INPT_SE_CD                                                                               /* 수납 입력 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD) FROM DUAL)          AS RCVMT_INPT_SE_NM     /* 수납 입력 구분 명 */
             , R.SPCL_ACNTG_BIZ_CD                                                                              /* 특별 회계 사업 코드 */
             , R.ACNTG_YR                                                                                       /* 회계 연도 */
             , R.ACNTG_SE                                                                                       /* 회계 구분 */
             , R.TXITM_CD                                                                                       /* 세목 코드 */
             , R.LEVY_NO                                                                                        /* 부과 번호 */
             , R.INSPY_SN                                                                                       /* 분납 일련번호 */
             , R.RCVMT_SN                                                                                       /* 수납 일련번호 */
             , R.RCVMT_YMD                                                                                      /* 수납 일자 */
             , R.RCVMT_PCPTAX                                                                                   /* 수납 본세 */
             , R.RCVMT_ADAMT                                                                                    /* 수납 가산금 */
             , R.RCVMT_INT                                                                                      /* 수납 이자 */
             , R.RCVMT_BANK_NM                                                                                  /* 수납 은행 명 */
             , R.PAY_MTHD_SE_CD                                                                                 /* 납부 방법 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD) FROM DUAL)            AS PAY_MTHD_SE_NM       /* 납부 방법 구분 명 */
             , R.ACNTG_YMD                                                                                      /* 회계 일자 */
             , R.PSTMRK_YMD                                                                                     /* 소인 일자 */
             , R.VRACTNO                                                                                        /* 가상계좌번호 */
             , R.EPAYNO                                                                                         /* 전자납부번호 */
             , R.RCVMT_SE_CD                                                                                    /* 수납 구분 코드 */
             , (SELECT FN_GET_CODE_NM('FIM041', R.RCVMT_SE_CD) FROM DUAL)               AS RCVMT_SE_NM          /* 수납 구분 명 */
             , R.NXRP_LEVY_KEY                                                                                  /* 세외수입 부과 키 */
             , R.RCVMT_RTRCN_YN                                                                                 /* 수납 취소 여부 */
             , (SELECT FN_GET_CODE_NM('CMM005', R.RCVMT_RTRCN_YN) FROM DUAL)            AS RCVMT_RTRCN_YN_NM    /* 수납 취소 여부 명 */
             , R.RCVMT_RTRCN_DT                                                                                 /* 수납 취소 일시 */
             , R.RCVMT_RTRCN_RSN                                                                                /* 수납 취소 사유 */
             , R.RCVMT_STTS_CD                                                                                  /* 수납 상태 코드 */
             , 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 USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR)                 AS DLTR_NM              /* 삭제자 명 */
             , R.DEL_RSN                                                                                        /* 삭제 사유 */
             , L.LEVY_ID                                                                                        /* 부과 ID */
             , C.CRDN_ID                                                                                        /* 단속 ID */
          FROM TB_RCVMT             R
         INNER JOIN TB_LEVY         L   ON (R.LEVY_ID = L.LEVY_ID)
         INNER JOIN TB_CRDN         C   ON (L.CRDN_ID = C.CRDN_ID)
    </sql>

    <select id="selectRcvmtList" parameterType="map" resultType="dataobject">/* 수납 대장 목록 조회(rcvmtMapper.selectRcvmtList) */
        <include refid="utility.paging-prefix" />
        <include refid="select" />
         WHERE R.SGG_CD                 =  #{sggCd}                                                             /* 시군구 코드 */
           AND R.TASK_SE_CD             =  #{taskSeCd}                                                          /* 업무 구분 코드 */
        <include refid="utility.orderBy" />
        <include refid="utility.paging-suffix" />
    </select>

    <select id="selectRcvmts" parameterType="map" resultType="dataobject">/* 수납 대장 객체 가져오기(rcvmtMapper.selectRcvmts) */
        <include refid="select" />
        <where>
            <if test="rcvmtId != null">
           AND R.RCVMT_ID               =  #{rcvmtId}                                                           /* 수납 ID */
            </if>
            <if test="levyId != null">
           AND L.LEVY_ID                =  #{levyId}                                                            /* 부과 ID */
            </if>
            <if test="crdnId != null">
           AND C.CRDN_ID                =  #{crdnId}                                                            /* 단속 ID */
            </if>
            <if test="delYn != null">
           AND R.DEL_YN                 =  #{delYn}                                                             /* 삭제 여부 */
            </if>
        </where>
        <include refid="utility.orderBy" />
    </select>

    <insert id="insertRcvmt" parameterType="map">/* 수납 대장 등록(rcvmtMapper.insertRcvmt) */
        INSERT
          INTO TB_RCVMT (
               RCVMT_ID                                                                                         /* 수납 ID */
             , SGG_CD                                                                                           /* 시군구 코드 */
             , TASK_SE_CD                                                                                       /* 업무 구분 코드 */
             , LEVY_ID                                                                                          /* 부과 ID */
             , RCVMT_INPT_SE_CD                                                                                 /* 수납 입력 구분 코드 */
             , SPCL_ACNTG_BIZ_CD                                                                                /* 특별 회계 사업 코드 */
             , ACNTG_YR                                                                                         /* 회계 연도 */
             , ACNTG_SE                                                                                         /* 회계 구분 */
             , TXITM_CD                                                                                         /* 세목 코드 */
             , LEVY_NO                                                                                          /* 부과 번호 */
             , INSPY_SN                                                                                         /* 분납 일련번호 */
             , RCVMT_SN                                                                                         /* 수납 일련번호 */
             , RCVMT_YMD                                                                                        /* 수납 일자 */
             , RCVMT_PCPTAX                                                                                     /* 수납 본세 */
             , RCVMT_ADAMT                                                                                      /* 수납 가산금 */
             , RCVMT_INT                                                                                        /* 수납 이자 */
             , RCVMT_BANK_NM                                                                                    /* 수납 은행 명 */
             , PAY_MTHD_SE_CD                                                                                   /* 납부 방법 구분 코드 */
             , ACNTG_YMD                                                                                        /* 회계 일자 */
             , PSTMRK_YMD                                                                                       /* 소인 일자 */
             , VRACTNO                                                                                          /* 가상계좌번호 */
             , EPAYNO                                                                                           /* 전자납부번호 */
             , RCVMT_SE_CD                                                                                      /* 수납 구분 코드 */
             , NXRP_LEVY_KEY                                                                                    /* 세외수입 부과 키 */
             , RCVMT_RTRCN_YN                                                                                   /* 수납 취소 여부 */
             , RCVMT_RTRCN_DT                                                                                   /* 수납 취소 일시 */
             , RCVMT_RTRCN_RSN                                                                                  /* 수납 취소 사유 */
             , RCVMT_STTS_CD                                                                                    /* 수납 상태 코드 */
             , DEL_YN                                                                                           /* 삭제 여부 */
             , REG_DT                                                                                           /* 등록 일시 */
             , RGTR                                                                                             /* 등록자 */
             , MDFCN_DT                                                                                         /* 수정 일시 */
             , MDFR                                                                                             /* 수정자 */
        )
        VALUES (
               #{rcvmt.rcvmtId}                                                                                 /* 수납 ID */
             , #{rcvmt.sggCd}                                                                                   /* 시군구 코드 */
             , #{rcvmt.taskSeCd}                                                                                /* 업무 구분 코드 */
             , #{rcvmt.levyId}                                                                                  /* 부과 ID */
             , #{rcvmt.rcvmtInptSeCd}                                                                           /* 수납 입력 구분 코드 */
             , #{rcvmt.spclAcntgBizCd}                                                                          /* 특별 회계 사업 코드 */
             , #{rcvmt.acntgYr}                                                                                 /* 회계 연도 */
             , #{rcvmt.acntgSe}                                                                                 /* 회계 구분 */
             , #{rcvmt.txitmCd}                                                                                 /* 세목 코드 */
             , #{rcvmt.levyNo}                                                                                  /* 부과 번호 */
             , #{rcvmt.inspySn}                                                                                 /* 분납 일련번호 */
             , #{rcvmt.rcvmtSn}                                                                                 /* 수납 일련번호 */
             , #{rcvmt.rcvmtYmd}                                                                                /* 수납 일자 */
             , #{rcvmt.rcvmtPcptax}                                                                             /* 수납 본세 */
             , #{rcvmt.rcvmtAdamt}                                                                              /* 수납 가산금 */
             , #{rcvmt.rcvmtInt}                                                                                /* 수납 이자 */
             , #{rcvmt.rcvmtBankNm}                                                                             /* 수납 은행 명 */
             , #{rcvmt.payMthdSeCd}                                                                             /* 납부 방법 구분 코드 */
             , #{rcvmt.acntgYmd}                                                                                /* 회계 일자 */
             , #{rcvmt.pstmrkYmd}                                                                               /* 소인 일자 */
             , #{rcvmt.vractno}                                                                                 /* 가상계좌번호 */
             , #{rcvmt.epayno}                                                                                  /* 전자납부번호 */
             , #{rcvmt.rcvmtSeCd}                                                                               /* 수납 구분 코드 */
             , #{rcvmt.nxrpLevyKey}                                                                             /* 세외수입 부과 키 */
             , #{rcvmt.rcvmtRtrcnYn}                                                                            /* 수납 취소 여부 */
             , #{rcvmt.rcvmtRtrcnDt}                                                                            /* 수납 취소 일시 */
             , #{rcvmt.rcvmtRtrcnRsn}                                                                           /* 수납 취소 사유 */
             , #{rcvmt.rcvmtSttsCd}                                                                             /* 수납 상태 코드 */
             , 'N'                                                                                              /* 삭제 여부 */
             , #{rcvmt.createdAt}                                                                               /* 등록 일시 */
             , #{rcvmt.createdBy}                                                                               /* 등록자 */
             , #{rcvmt.lastModified}                                                                            /* 수정 일시 */
             , #{rcvmt.modifiedBy}                                                                              /* 수정자 */
        )
    </insert>

    <update id="updateRcvmt" parameterType="map">/* 수납 대장 수정(rcvmtMapper.updateRcvmt) */
        UPDATE TB_RCVMT
           SET LEVY_ID                  = #{rcvmt.levyId}                                                       /* 부과 ID */
             , RCVMT_INPT_SE_CD         = #{rcvmt.rcvmtInptSeCd}                                                /* 수납 입력 구분 코드 */
             , SPCL_ACNTG_BIZ_CD        = #{rcvmt.spclAcntgBizCd}                                               /* 특별 회계 사업 코드 */
             , ACNTG_YR                 = #{rcvmt.acntgYr}                                                      /* 회계 연도 */
             , ACNTG_SE                 = #{rcvmt.acntgSe}                                                      /* 회계 구분 */
             , TXITM_CD                 = #{rcvmt.txitmCd}                                                      /* 세목 코드 */
             , LEVY_NO                  = #{rcvmt.levyNo}                                                       /* 부과 번호 */
             , INSPY_SN                 = #{rcvmt.inspySn}                                                      /* 분납 일련번호 */
             , RCVMT_SN                 = #{rcvmt.rcvmtSn}                                                      /* 수납 일련번호 */
             , RCVMT_YMD                = #{rcvmt.rcvmtYmd}                                                     /* 수납 일자 */
             , RCVMT_PCPTAX             = #{rcvmt.rcvmtPcptax}                                                  /* 수납 본세 */
             , RCVMT_ADAMT              = #{rcvmt.rcvmtAdamt}                                                   /* 수납 가산금 */
             , RCVMT_INT                = #{rcvmt.rcvmtInt}                                                     /* 수납 이자 */
             , RCVMT_BANK_NM            = #{rcvmt.rcvmtBankNm}                                                  /* 수납 은행 명 */
             , PAY_MTHD_SE_CD           = #{rcvmt.payMthdSeCd}                                                  /* 납부 방법 구분 코드 */
             , ACNTG_YMD                = #{rcvmt.acntgYmd}                                                     /* 회계 일자 */
             , PSTMRK_YMD               = #{rcvmt.pstmrkYmd}                                                    /* 소인 일자 */
             , VRACTNO                  = #{rcvmt.vractno}                                                      /* 가상계좌번호 */
             , EPAYNO                   = #{rcvmt.epayno}                                                       /* 전자납부번호 */
             , RCVMT_SE_CD              = #{rcvmt.rcvmtSeCd}                                                    /* 수납 구분 코드 */
             , NXRP_LEVY_KEY            = #{rcvmt.nxrpLevyKey}                                                  /* 세외수입 부과 키 */
             , RCVMT_RTRCN_YN           = #{rcvmt.rcvmtRtrcnYn}                                                 /* 수납 취소 여부 */
             , RCVMT_RTRCN_DT           = #{rcvmt.rcvmtRtrcnDt}                                                 /* 수납 취소 일시 */
             , RCVMT_RTRCN_RSN          = #{rcvmt.rcvmtRtrcnRsn}                                                /* 수납 취소 사유 */
             , RCVMT_STTS_CD            = #{rcvmt.rcvmtSttsCd}                                                  /* 수납 상태 코드 */
             , MDFCN_DT                 = #{rcvmt.lastModified}                                                 /* 수정 일시 */
             , MDFR                     = #{rcvmt.modifiedBy}                                                   /* 수정자 */
         WHERE RCVMT_ID                 = #{rcvmt.rcvmtId}                                                      /* 수납 ID */
    </update>

    <update id="deleteRcvmt" parameterType="map">/* 수납 대장 삭제(rcvmtMapper.deleteRcvmt) */
        UPDATE TB_RCVMT
           SET DEL_YN                   = 'Y'                                                                   /* 삭제 여부 */
             , DEL_DT                   = #{rcvmt.lastModified}                                                 /* 삭제 일시 */
             , DLTR                     = #{rcvmt.modifiedBy}                                                   /* 삭제자 */
             , DEL_RSN                  = #{rcvmt.delRsn}                                                       /* 삭제 사유 */
         WHERE RCVMT_ID                 = #{rcvmt.rcvmtId}                                                      /* 수납 ID */
           AND DEL_YN                   = 'N'                                                                   /* 삭제 여부 */
    </update>

</mapper>
