<?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.generales.daos.OpcionesContratoDAO">

	<resultMap id="procesoPendiente" type="ProcesoPendienteDTO">
		<id property="idProceso" 		column="ID_PROCESO" />
		<result property="clave" 		column="CLAVE" />
		<result property="fechaCierre" 	column="FECHA_CIERRE" />
		<result property="estatus"		column="ESTATUS" />
		<result property="idContrato" 	column="ID_CONTRATO" />
	</resultMap>

	<insert id="insertarCategoria">
		INSERT INTO DDA_T_CONTRATO_CATEGORIA (ID_CONTRATO, ID_CATEGORIA) 
		VALUES (#{idContrato ,javaType=long, jdbcType=NUMERIC}, #{idCategoria,javaType=long, jdbcType=NUMERIC})
	</insert>
	
	<select id="verificaPorcentajeTitulosEnServicio" resultType="Integer">
		<!-- SELECT CANTIDAD_TITULOS FROM DDA_T_CONTRATO_SERVICIO WHERE ID_CONTRATO = #{idContrato} AND ID_TIPO_SERVICIO = #{idServicio} -->
		SELECT PORCENTAJE_TITULOS FROM DDA_T_CONTRATO_SERVICIO WHERE ID_CONTRATO = #{idContrato} AND ID_TIPO_SERVICIO = #{idServicio}
	</select>
		
	<insert id="insertarServicio">
		INSERT INTO DDA_T_CONTRATO_SERVICIO (ID_CONTRATO, ID_TIPO_SERVICIO)
		VALUES (#{idContrato, javaType=long, jdbcType=NUMERIC}, #{idServicio, javaType=long, jdbcType=NUMERIC} )
	</insert>
	
	<insert id="insertarTerritorio">
		INSERT INTO DDA_T_CONTRATO_TERRITORIO (ID_CONTRATO, ID_TERRITORIO)
		VALUES (#{idContrato, javaType=long, jdbcType=NUMERIC}, #{idTerritorio, javaType=long, jdbcType=NUMERIC} )
	</insert>

	<insert id="insertarMedioEntrega">
		INSERT INTO DDA_T_CONTRATO_MEDIO_ENTREGA (ID_CONTRATO, ID_MEDIO_ENTREGA)
		VALUES (#{idContrato, javaType=long, jdbcType=NUMERIC}, #{idMedioEntrega ,javaType=long, jdbcType=NUMERIC} )
	</insert>
	
	<insert id="insertarFilial">
		INSERT INTO DDA_T_CONTRATO_DEAL_FILIAL (ID_CONTRATO, ID_FILIAL)
		VALUES (#{idContrato ,javaType=long, jdbcType=NUMERIC}, #{idFilial,javaType=long, jdbcType=NUMERIC})
	</insert>
	
	<insert id="insertarType">
		INSERT INTO DDA_T_CONTRATO_DEAL_TYPE (ID_CONTRATO, ID_TYPE)
		VALUES (#{idContrato ,javaType=long, jdbcType=NUMERIC}, #{idType,javaType=long, jdbcType=NUMERIC})
	</insert>
	
	<insert id="registraTipoAmortizacion">
		INSERT INTO DDA_T_CONTRATO_AMORTIZACION(ID_CONTRATO, TIPO_AMORTIZACION, MESES, PORCENTAJE_EXCLUSIVO) VALUES(#{idContrato}, #{tipoAmortizacion}, 0, 0)
	</insert>
	
	<delete id="eliminarCategorias" parameterType="long">	
		DELETE FROM DDA_T_CONTRATO_CATEGORIA WHERE ID_CONTRATO=#{idContrato}
	</delete>

	<delete id="eliminarServicios" parameterType="long">
		<!-- DELETE FROM DDA_T_CONTRATO_SERVICIO WHERE ID_CONTRATO=#{idContrato}  AND CANTIDAD_TITULOS IS NULL -->
		DELETE FROM DDA_T_CONTRATO_SERVICIO WHERE ID_CONTRATO=#{idContrato} AND (PORCENTAJE_TITULOS IS NULL OR PORCENTAJE_TITULOS = 0)
	</delete>

	<delete id="eliminarTerritorios" parameterType="long">
		DELETE FROM DDA_T_CONTRATO_TERRITORIO WHERE ID_CONTRATO=#{idContrato}
	</delete>

	<delete id="eliminarMediosEntrega" parameterType="long">
		DELETE FROM DDA_T_CONTRATO_MEDIO_ENTREGA WHERE ID_CONTRATO=#{idContrato}
	</delete>
	
	<delete id="eliminarFiliales" parameterType="long">
		DELETE FROM DDA_T_CONTRATO_DEAL_FILIAL WHERE ID_CONTRATO=#{idContrato}
	</delete>
	
	<delete id="eliminarTypes" parameterType="long">
		DELETE FROM DDA_T_CONTRATO_DEAL_TYPE WHERE ID_CONTRATO=#{idContrato}
	</delete>
	
	<delete id="eliminarContratoArea" parameterType="long">
		DELETE FROM DDA_T_CONTRATO_AREA WHERE ID_CONTRATO=#{idContrato}
	</delete>
	
	<update id="actualizaTipoAmortizacion">
		UPDATE DDA_T_CONTRATO SET TIPO_AMORTIZACION = #{tipoAmortizacion} WHERE ID_CONTRATO = #{idContrato}
	</update>
	
	<update id="actualizaEstatus">
		UPDATE DDA_T_CONTRATO SET ID_ESTATUS=#{idEstatus}
		WHERE ID_CONTRATO=#{idContrato}	
	</update>
	
	<insert id="registraCambioEstatus" parameterType="CambioEstatusDTO" useGeneratedKeys="true" keyProperty="idContratoEstatus">

		<selectKey keyProperty="idContratoEstatus" resultType="long" order="BEFORE">
			select DDA_SQT_CONTRATO_ESTATUS.nextVal from DUAL
		</selectKey>
		
		INSERT INTO DDA_T_CONTRATO_ESTATUS (ID_CONTRATO_ESTATUS, ID_CONTRATO, ID_ESTATUS, EXPEDIENTE, FECHA_ESTATUS)
		VALUES (#{idContratoEstatus ,javaType=long, jdbcType=NUMERIC}, 
				#{idContrato ,javaType=long, jdbcType=NUMERIC}, 
				#{idEstatus ,javaType=long, jdbcType=NUMERIC}, 
				#{expediente ,javaType=String, jdbcType=VARCHAR}, 
				#{fechaEstatus})
		
	</insert>
	
	<select id="obtenerFechaAutorizacion" resultType="Date">
		SELECT FECHA_AUTORIZACION FROM DDA_T_CONTRATO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<update id="actualizaFechaAutorizacion">
		UPDATE DDA_T_CONTRATO SET FECHA_AUTORIZACION = #{fechaAutorizacion} WHERE ID_CONTRATO = #{idContrato}
	</update>
	
	<update id="ponEnNullMesesPjeExclusivo">
		UPDATE DDA_T_CONTRATO_TITULO SET PJE_EXCLUSIVO = NULL, MESES_EXCLUSIVO = NULL WHERE ID_CONTRATO = #{idContrato}
	</update>
	
	<select id="obtenerIdPadreContrato" resultType="Long">
		SELECT ID_CONTRATO_ORIGINAL FROM DDA_T_CONTRATO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<select id="obtenerEstatusPadreContrato" resultType="Long">
		SELECT ID_ESTATUS FROM DDA_T_CONTRATO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<insert id="registraProcesoPendiente"  parameterType="ProcesoPendienteDTO" useGeneratedKeys="true" keyProperty="idProceso">
		
		<selectKey keyProperty="idProceso" resultType="long" order="BEFORE">
			select DDA_SQT_PROCESO_PDTE.nextVal from DUAL
		</selectKey>
		
		INSERT INTO DDA_T_PROCESO_PDTE (ID_PROCESO, CLAVE, FECHA_CIERRE, ESTATUS, ID_CONTRATO) VALUES 
		(#{idProceso, javaType=long, jdbcType=NUMERIC}, 
		#{clave, javaType=String, jdbcType=VARCHAR}, 
		#{fechaCierre}, 
		#{estatus, javaType=int, jdbcType=NUMERIC}, 
		#{idContrato,javaType=long, jdbcType=NUMERIC})
		
	</insert>
	
	<select id="obtenerValorAmortizable" resultType="String">
		SELECT AMORTIZABLE FROM DDA_T_CONTRATO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<select id="obtenerNumeroContrato" resultType="String">
		SELECT NUMERO_CONTRATO FROM DDA_T_CONTRATO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<update id="llamarAjustaAddendum" parameterType="map" statementType="CALLABLE">
		{ CALL DDA_AJUSTARADDENDUM(#{idContrato, mode=IN, javaType=long, jdbcType=NUMERIC}) }
	</update>
	
	<update id="llamarReportePagos" parameterType="map" statementType="CALLABLE">
		{ CALL DDA_REPORTEPAGOS(#{idContrato, mode=IN, javaType=long, jdbcType=NUMERIC}) }
	</update>
	
	<update id="llamarAmortizacionInicial" parameterType="map" statementType="CALLABLE">
		{ CALL DDA_AMORTIZACIONINICIAL(#{idContrato, mode=IN, javaType=long, jdbcType=NUMERIC}) }
	</update>

	<update id="llamarAmortizacionCpv" parameterType="map" statementType="CALLABLE">
		{ CALL DDA_AMORTIZACIONCPV(#{idContrato, mode=IN, javaType=long, jdbcType=NUMERIC}) }
	</update>	
	
	<select id="obtenerIdFacturas" resultType="Long">
		SELECT
				ID_FACTURA 
		FROM 
				DDA_T_FACTURA_DETALLE 
		WHERE MES > #{fechaCancelacion}
		AND ID_CONTRATO_ORIGINAL = #{idContrato}
	</select>
	
	<delete id="eliminaDespuesFechaCancelacion">
		DELETE FROM DDA_T_REPORTE_PAGO 
		WHERE MES_PAGO > #{fechaCancelacion}
		AND ID_CONTRATO = #{idContrato}
	</delete>
	
	<update id="actualizafechaCancelacion">
		UPDATE DDA_T_CONTRATO_ESTATUS 
		SET  FECHA_CANCELACION = #{fechaCancelacion}
		WHERE ID_CONTRATO = #{idContrato}
		AND ID_ESTATUS = 9
	</update>
	
	<insert id="insertaTotalTitulos">
		INSERT INTO DDA_T_CONTRATO_TERMINO (ID_CONTRATO,ANTICIPO_MONTO,ANTICIPO_FECHA,ANTICIPO_COMENTARIO,TIPO_PAGO,TIPO_PREDEFINIDO,COMENTARIO_GRAL,TOTAL_TITULOS,COSTO_CONTRATO) 
		VALUES (#{idContrato}, null, null, null, null, null, null, #{totalTitulos},null)
	</insert>
	
	<select id="validaTotalTitulos" resultType="Long">
		SELECT ID_CONTRATO 
		FROM DDA_T_CONTRATO_TERMINO 
		WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<update id="actulizaTotalTitulos">
		UPDATE DDA_T_CONTRATO_TERMINO tct 
		SET TOTAL_TITULOS = #{totalTitulos} 
		WHERE tct.ID_CONTRATO = #{idContrato}
	</update>	
	
	<insert id="completaWorkflowContrato" parameterType="map">	
	    INSERT INTO DDA_T_CONTRATO_WF
            SELECT #{idContrato}, ID_PASO_WF, #{expediente} as EXPEDIENTE, sysdate as FECHA_AUTORIZACION 
            FROM DDA_C_WF_AUTORIZACION 
	 </insert>
	 

	
</mapper>
