<?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.rdca.dao.RdamtMapper">

<!-- 감액 대장 정보 매퍼
 ========== 변경 이력 ==========
 2024-02-01	JoJH 최초 작성
 ============================ -->

    <resultMap id="rdamtRow" type="cokr.xit.fims.rdca.Rdamt"> <!-- 감액 대장 -->
        <result property="rdamtId"          column="RDAMT_ID" />        <!-- 감액 ID -->
        <result property="levyId"           column="LEVY_ID" />         <!-- 부과 ID -->
        <result property="rdamtYmd"         column="RDAMT_YMD" />       <!-- 감액 일자 -->
        <result property="rdamtSeCd"        column="RDAMT_SE_CD" />     <!-- 감액 구분 코드 -->
        <result property="rdamtRsnCd"       column="RDAMT_RSN_CD" />    <!-- 감액 사유 코드 -->
        <result property="lastPcptax"       column="LAST_PCPTAX" />     <!-- 최종 본세 -->
        <result property="lastAdamt"        column="LAST_ADAMT" />      <!-- 최종 가산금 -->
        <result property="rdamtPcptax"      column="RDAMT_PCPTAX" />    <!-- 감액 본세 -->
        <result property="rdamtAdamt"       column="RDAMT_ADAMT" />     <!-- 감액 가산금 -->
        <result property="rdamtRtrcnYn"     column="RDAMT_RTRCN_YN" />  <!-- 감액 취소 여부 -->
        <result property="rdamtRtrcnYmd"    column="RDAMT_RTRCN_YMD" /> <!-- 감액 취소 일자 -->
        <result property="rdamtRtrcnRsn"    column="RDAMT_RTRCN_RSN" /> <!-- 감액 취소 사유 -->
        <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="selectList">
        SELECT R.RDAMT_ID           <!-- 감액 ID -->
             , R.LEVY_ID            <!-- 부과 ID -->
             , R.LAST_PCPTAX        <!-- 최종 본세 -->
             , R.LAST_ADAMT         <!-- 최종 가산금 -->
             , R.RDAMT_YMD          <!-- 감액 일자 -->
             , R.RDAMT_SE_CD        <!-- 감액 구분 코드 -->
             , R.RDAMT_RSN_CD       <!-- 감액 사유 코드 -->
             , R.RDAMT_PCPTAX       <!-- 감액 본세 -->
             , R.RDAMT_ADAMT        <!-- 감액 가산금 -->
             , R.RDAMT_RTRCN_YN     <!-- 감액 취소 여부 -->
             , R.RDAMT_RTRCN_YMD    <!-- 감액 취소 일자 -->
             , R.RDAMT_RTRCN_RSN    <!-- 감액 취소 사유 -->
             , R.DEL_YN             <!-- 삭제 여부 -->
             , R.REG_DT             <!-- 등록 일시 -->
             , R.RGTR               <!-- 등록자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM      <!-- 등록자 명 -->
             , R.MDFCN_DT           <!-- 수정 일시 -->
             , R.MDFR               <!-- 수정자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM      <!-- 수정자 명 -->
          FROM TB_RDAMT     R
         INNER JOIN TB_LEVY L   ON (R.LEVY_ID = L.LEVY_ID)
    </sql>

    <sql id="select">
        SELECT R.RDAMT_ID           <!-- 감액 ID -->
             , R.LEVY_ID            <!-- 부과 ID -->
             , R.LAST_PCPTAX        <!-- 최종 본세 -->
             , R.LAST_ADAMT         <!-- 최종 가산금 -->
             , R.RDAMT_YMD          <!-- 감액 일자 -->
             , R.RDAMT_SE_CD        <!-- 감액 구분 코드 -->
             , R.RDAMT_RSN_CD       <!-- 감액 사유 코드 -->
             , R.RDAMT_PCPTAX       <!-- 감액 본세 -->
             , R.RDAMT_ADAMT        <!-- 감액 가산금 -->
             , R.RDAMT_RTRCN_YN     <!-- 감액 취소 여부 -->
             , R.RDAMT_RTRCN_YMD    <!-- 감액 취소 일자 -->
             , R.RDAMT_RTRCN_RSN    <!-- 감액 취소 사유 -->
             , R.DEL_YN             <!-- 삭제 여부 -->
             , R.REG_DT             <!-- 등록 일시 -->
             , R.RGTR               <!-- 등록자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM      <!-- 등록자 명 -->
             , R.MDFCN_DT           <!-- 수정 일시 -->
             , R.MDFR               <!-- 수정자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM      <!-- 수정자 명 -->
             , R.DEL_DT             <!-- 삭제 일시 -->
             , R.DLTR               <!-- 삭제자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.DLTR) AS DLTR_NM      <!-- 삭제자 명 -->
             , R.DEL_RSN            <!-- 삭제 사유 -->
          FROM TB_RDAMT
    </sql>

    <select id="selectRdamtList" parameterType="map" resultType="dataobject">/* 감액 대장 목록 조회(rdcamtMapper.selectRdamtList) */
        <include refid="utility.paging-prefix" />
        <include refid="selectList" />
        <where></where>
        <include refid="utility.orderBy" />
        <include refid="utility.paging-suffix" />
    </select>

    <select id="selectRdamts" parameterType="map" resultType="dataobject">/* 감액 대장 객체 가져오기(rdcamtMapper.selectRdamts) */
        <include refid="select" />
        <where></where>
        <include refid="utility.orderBy" />
    </select>

    <insert id="insertRdamt" parameterType="map">/* 감액 대장 등록(rdcamtMapper.insertRdamt) */
        <selectKey resultType="string" keyProperty="rdamt.rdamtId" keyColumn="NEW_ID" order="BEFORE">
            SELECT CONCAT(#{rdamt.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(RDAMT_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
              FROM TB_RDAMT
             WHERE RDAMT_ID LIKE CONCAT(#{rdamt.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
        </selectKey>
        INSERT
          INTO TB_RDAMT (
               RDAMT_ID         <!-- 감액 ID -->
             , LEVY_ID          <!-- 부과 ID -->
             , LAST_PCPTAX      <!-- 최종 본세 -->
             , LAST_ADAMT       <!-- 최종 가산금 -->
             , RDAMT_YMD        <!-- 감액 일자 -->
             , RDAMT_SE_CD      <!-- 감액 구분 코드 -->
             , RDAMT_RSN_CD     <!-- 감액 사유 코드 -->
             , RDAMT_PCPTAX     <!-- 감액 본세 -->
             , RDAMT_ADAMT      <!-- 감액 가산금 -->
             , RDAMT_RTRCN_YN   <!-- 감액 취소 여부 -->
             , RDAMT_RTRCN_YMD  <!-- 감액 취소 일자 -->
             , RDAMT_RTRCN_RSN  <!-- 감액 취소 사유 -->
             , DEL_YN           <!-- 삭제 여부 -->
             , REG_DT           <!-- 등록 일시 -->
             , RGTR             <!-- 등록자 -->
             , MDFCN_DT         <!-- 수정 일시 -->
             , MDFR             <!-- 수정자 -->
        )
        VALUES (
               #{rdamt.rdamtId}         <!-- 감액 ID -->
             , #{rdamt.levyId}          <!-- 부과 ID -->
             , #{rdamt.lastPcptax}      <!-- 최종 본세 -->
             , #{rdamt.lastAdamt}       <!-- 최종 가산금 -->
             , #{rdamt.rdamtYmd}        <!-- 감액 일자 -->
             , #{rdamt.rdamtSeCd}       <!-- 감액 구분 코드 -->
             , #{rdamt.rdamtRsnCd}      <!-- 감액 사유 코드 -->
             , #{rdamt.rdamtPcptax}     <!-- 감액 본세 -->
             , #{rdamt.rdamtAdamt}      <!-- 감액 가산금 -->
             , 'N'                      <!-- 감액 취소 여부 -->
             , #{rdamt.rdamtRtrcnYmd}   <!-- 감액 취소 일자 -->
             , #{rdamt.rdamtRtrcnRsn}   <!-- 감액 취소 사유 -->
             , 'N'                      <!-- 삭제 여부 -->
             , <include refid="utility.now" />  <!-- 등록 일시 -->
             , #{rdamt.createdBy}       <!-- 등록자 -->
             , <include refid="utility.now" />  <!-- 수정 일시 -->
             , #{rdamt.modifiedBy}      <!-- 수정자 -->
        )
    </insert>

    <update id="updateRdamt" parameterType="map">/* 감액 대장 수정(rdamtMapper.updateRdamt) */
        UPDATE TB_RDAMT
           SET LAST_PCPTAX      = #{rdamt.lastPcptax}      <!-- 최종 본세 -->
             , LAST_ADAMT       = #{rdamt.lastAdamt}       <!-- 최종 가산금 -->
             , RDAMT_YMD        = #{rdamt.rdamtYmd}        <!-- 감액 일자 -->
             , RDAMT_SE_CD      = #{rdamt.rdamtSeCd}       <!-- 감액 구분 코드 -->
             , RDAMT_RSN_CD     = #{rdamt.rdamtRsnCd}      <!-- 감액 사유 코드 -->
             , RDAMT_PCPTAX     = #{rdamt.rdamtPcptax}     <!-- 감액 본세 -->
             , RDAMT_ADAMT      = #{rdamt.rdamtAdamt}      <!-- 감액 가산금 -->
             , RDAMT_RTRCN_YN   = #{rdamt.rdamtRtrcnYn}    <!-- 감액 취소 여부 -->
             , RDAMT_RTRCN_YMD  = #{rdamt.rdamtRtrcnYmd}   <!-- 감액 취소 일자 -->
             , RDAMT_RTRCN_RSN  = #{rdamt.rdamtRtrcnRsn}   <!-- 감액 취소 사유 -->
             , MDFCN_DT         = <include refid="utility.now" />   <!-- 수정 일시 -->
             , MDFR             = #{rdamt.modifiedBy}      <!-- 수정자 -->
         WHERE RDAMT_ID         = #{rdamt.rdamtId}         <!-- 감액 ID -->
           AND DEL_YN           = 'N'                      <!-- 삭제 여부 -->
    </update>

    <update id="deleteRdamt" parameterType="map">/* 감액 대장 삭제(rdamtMapper.deleteRdamt) */
        UPDATE TB_RDAMT
           SET DEL_YN       = 'Y'
             , DEL_DT       = <include refid="utility.now" />   <!-- 삭제 일시 -->
             , DLTR         = #{rdamt.modifiedBy}   <!-- 삭제자 -->
             , DEL_RSN      = #{rdamt.delRsn}       <!-- 삭제 사유 -->
         WHERE RDAMT_ID     = #{rdamt.rdamtId}      <!-- 감액 ID -->
           AND DEL_YN       = 'N'
    </update>

</mapper>
