<?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="com.mx.dla.dda.contrato.terminos.daos.TerminosDAO">

	<resultMap id="terminoCtoBD" type="TerminoBD">
		<result property="idContrato"          column="ID_CONTRATO" />
		<result property="anticipoMonto"       column="ANTICIPO_MONTO" />
		<result property="anticipoFecha"       column="ANTICIPO_FECHA" />
		<result property="anticipoComentario"  column="ANTICIPO_COMENTARIO" />				
 	    <result property="tipoPago"            column="TIPO_PAGO" />  
		<result property="tipoPredefinido"     column="TIPO_PREDEFINIDO" />
		<result property="comentarioGeneral"   column="COMENTARIO_GRAL" />				
		<result property="totalTitulos"        column="TOTAL_TITULOS" />		
		<result property="idPagoPeriodico"     column="ID_PAGO_PERIODICO" />
		<result property="monto"               column="MONTO" />				
		<result property="fecha"               column="FECHA" />
		<result property="comentario"          column="COMENTARIO" /> 	     	    				
	</resultMap>
	
	<resultMap id="servicioTerminoBD" type="TerminoServicioBD">		
		<result property="idServicio"          column="ID_TIPO_SERVICIO" />
		<result property="cantidadTitulos"     column="CANTIDAD_TITULOS" />
		<result property="porcentajeTitulos"   column="PORCENTAJE_TITULOS" />
		<result property="descripcion"         column="DESC_SERVICIO" />								 	     	     	    			
	</resultMap>
	
	<select id="getTermino" resultMap="terminoCtoBD" parameterType="long">
		SELECT ANTICIPO_MONTO, ANTICIPO_FECHA, ANTICIPO_COMENTARIO, TIPO_PAGO, TIPO_PREDEFINIDO, COMENTARIO_GRAL, TOTAL_TITULOS
       		   FROM DDA_T_CONTRATO_TERMINO              		   
               WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<select id="getTerminoPeriodicos" resultMap="terminoCtoBD" parameterType="long">
		SELECT ID_PAGO_PERIODICO, MONTO, FECHA, COMENTARIO
       		   FROM DDA_T_CONTRATO_TERMINO_PAGO        		   
               WHERE ID_CONTRATO = #{idContrato} ORDER BY FECHA ASC 
	</select>
	
	<select id="getTerminoTitulos" resultMap="servicioTerminoBD" parameterType="long">
		SELECT DDA_T_CONTRATO_SERVICIO.ID_TIPO_SERVICIO, CANTIDAD_TITULOS, PORCENTAJE_TITULOS, DDA_C_SERVICIO_TIPO.DESC_SERVICIO
       		   FROM DDA_T_CONTRATO_SERVICIO  
       		   INNER JOIN DDA_C_SERVICIO_TIPO ON DDA_C_SERVICIO_TIPO.ID_TIPO_SERVICIO  = DDA_T_CONTRATO_SERVICIO.ID_TIPO_SERVICIO	   		   		   
               WHERE ID_CONTRATO = #{idContrato}
	</select>		
	
	<insert id="guardarTermino"  parameterType="TerminoBD">
		INSERT INTO DDA_T_CONTRATO_TERMINO
           (ID_CONTRATO, ANTICIPO_MONTO, ANTICIPO_FECHA, ANTICIPO_COMENTARIO, TIPO_PAGO, TIPO_PREDEFINIDO, COMENTARIO_GRAL, TOTAL_TITULOS)
        VALUES
 		   (#{idContrato}, #{anticipoMonto}, #{anticipoFecha}, #{anticipoComentario}, #{tipoPago}, #{tipoPredefinido}, #{comentarioGeneral}, #{totalTitulos})			
	</insert>
	
	<insert id="guardarTerminoPago" parameterType="java.util.List">		
		 INSERT ALL								
		   <foreach item="p" collection="pagos"  separator=" ">
				 INTO DDA_T_CONTRATO_TERMINO_PAGO
		            (ID_CONTRATO, ID_PAGO_PERIODICO, MONTO, FECHA, COMENTARIO)
		         VALUES                                                           
		            (#{p.idContrato}, extractvalue(dbms_xmlgen.getxmltype('select DDA_SQT_CONTRATO_TERMINO_PAGO.nextval from dual'),'//text()'), #{p.monto}, #{p.fecha}, #{p.comentario})		
		   </foreach> 
		SELECT * FROM DUAL               
	</insert>
	
	<insert id="guardarServicioTitulo" parameterType="map" >						                                      
        INSERT ALL								
		   <foreach item="s" collection="servicios"  separator=" ">
				INTO DDA_T_CONTRATO_SERVICIO
		       		( ID_CONTRATO, ID_TIPO_SERVICIO, CANTIDAD_TITULOS, PORCENTAJE_TITULOS )
        		VALUES
               		( #{idContrato}, #{s.idServicio}, #{s.cantidadTitulos}, #{s.porcentajeTitulos} )		
		   </foreach> 
		SELECT * FROM DUAL                     
	</insert>				
	
	<delete id="eliminarTermino"  parameterType="long">
		DELETE DDA_T_CONTRATO_TERMINO WHERE ID_CONTRATO = #{idContrato}									
	</delete>	
	
	<delete id="eliminarTerminoPago"  parameterType="long">
		DELETE DDA_T_CONTRATO_TERMINO_PAGO WHERE ID_CONTRATO = #{idContrato}									
	</delete>
	
	<delete id="eliminarServicio"  parameterType="long">
		DELETE DDA_T_CONTRATO_SERVICIO WHERE ID_CONTRATO = #{idContrato}									
	</delete>
	
	<select id="getNumTitulos" resultType="Integer" parameterType="long">
		SELECT  COUNT(*) FROM DDA_T_CONTRATO_TITULO WHERE ID_CONTRATO =  #{idContrato}
	</select>
</mapper>