<?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}, THIS_YEAR, LPAD(CAST(IFNULL(MAX(SUBSTRING(RDAMT_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
  FROM (SELECT DATE_FORMAT(CURRENT_DATE, '%Y') THIS_YEAR FROM DUAL) A
  LEFT OUTER JOIN TB_RDAMT B ON RDAMT_ID LIKE CONCAT(#{rdamt.sggCd}, THIS_YEAR, '%')
</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>