<?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.ncredito.general.daos.NotaCreditoDAO">
 
	<resultMap id="resultadoTitulos" type="ContratoTitulo">		
		<result property="idTituloCnt" column="ID_TITULO_CNT" />		
		<result property="descTitulo" column="DESC_TITULO" />
 		<result property="estatus" column="ESTATUS" /> 		
        <result property="bajaPerdida" column="BAJA_PERDIDA" />
		<result property="costo" column="COSTO" />
 	    <result property="idContrato" column="ID_CONTRATO" />  
		<result property="numeroContrato" column="NUMERO_CONTRATO" />
		<result property="idEstudio" column="ID_ESTUDIO" />	
		<result property="idSap" column="ID_SAP" />
		<result property="claveIva" column="CLAVE_IVA" />
		<result property="monto" column="MONTO" />			
   		<result property="tipoTitulo" column="TIPO_TITULO" />		
	</resultMap>
	
	<resultMap id="resultadoNotaCredito" type="NotaCredito">		
		<result property="idNota" column="ID_NOTA" />		
		<result property="idEstudio" column="ID_ESTUDIO" />
 		<result property="noFactura" column="NO_FACTURA" /> 		
        <result property="fecha" column="FECHA" />
		<result property="approved" column="APPROVED" />
 	    <result property="idSapRegistro" column="ID_SAP_REGISTRO" />  
		<result property="comentario" column="COMENTARIO" />			
 
	</resultMap>
	
	<resultMap id="resultadoNotaCreditoDetalle" type="NotaCreditoDetalle">		
		<result property="idNotaDetalle" column="ID_NOTA_DETALLE" />		
		<result property="idNota" column="ID_NOTA" />
 		<result property="idContrato" column="ID_CONTRATO" /> 		
        <result property="idTituloCnt" column="ID_TITULO_CNT" />
		<result property="monto" column="MONTO" />	
	</resultMap>

	<insert id="guardarNotaCredito" parameterType="NotaCredito" useGeneratedKeys='true'>
	
		<selectKey keyProperty="nota.idNota" resultType="long"
			order="BEFORE">
			select DDA_SQT_NOTA_CREDITO.nextVal from DUAL
		</selectKey>

		INSERT INTO DDA_T_NOTA_CREDITO  
		  (ID_NOTA, ID_ESTUDIO, NO_FACTURA, FECHA, APPROVED, ID_SAP_REGISTRO, COMENTARIO) 
		     values(
		        #{nota.idNota, javaType=Long, jdbcType=NUMERIC},
		        #{nota.idEstudio, javaType=Long, jdbcType=NUMERIC},
		        #{nota.noFactura, javaType=String, jdbcType=VARCHAR},
		        #{nota.fecha, javaType=Date, jdbcType=DATE},
		        #{nota.approved, javaType=Integer, jdbcType=NUMERIC},
		        #{nota.idSapRegistro, javaType=String, jdbcType=VARCHAR},
		        #{nota.comentario, javaType=String, jdbcType=VARCHAR}       
		      )  		        
	</insert>

	<insert id="guardarNotaCreditoDetalle" parameterType="NotaCreditoDetalle" useGeneratedKeys='true'>
	
		<selectKey keyProperty="notaDetalle.idNotaDetalle" resultType="long"
			order="BEFORE">
			select DDA_SQT_NOTA_CREDITO_DETALLE.nextVal from DUAL
		</selectKey>

		INSERT INTO DDA_T_NOTA_CREDITO_DETALLE  
		  (ID_NOTA_DETALLE, ID_NOTA, ID_CONTRATO, ID_TITULO_CNT, MONTO) 
		     values(
		        #{notaDetalle.idNotaDetalle, javaType=Long, jdbcType=NUMERIC},
		        #{notaDetalle.idNota, javaType=Long, jdbcType=NUMERIC},
		        #{notaDetalle.idContrato, javaType=Long, jdbcType=NUMERIC},
		        #{notaDetalle.idTituloCnt, javaType=Long, jdbcType=NUMERIC},
		        #{notaDetalle.monto, javaType=String, jdbcType=VARCHAR}       
		      )  		        
	</insert>

	<update id="actualizarNotaCredito" parameterType="NotaCredito">
		UPDATE DDA_T_NOTA_CREDITO
		SET		   
		   ID_ESTUDIO =       #{nota.idEstudio, javaType=Long, jdbcType=NUMERIC},
		   NO_FACTURA =       #{nota.noFactura, javaType=String, jdbcType=VARCHAR},
		   FECHA =            #{nota.fecha, javaType=Date, jdbcType=DATE},
		   APPROVED =         #{nota.approved, javaType=Integer, jdbcType=NUMERIC},
		   ID_SAP_REGISTRO =  #{nota.idSapRegistro, javaType=String, jdbcType=VARCHAR},
		   COMENTARIO =       #{nota.comentario, javaType=String, jdbcType=VARCHAR}   
		WHERE
		   ID_NOTA =          #{nota.idNota, javaType=Long, jdbcType=NUMERIC}
	</update>
	
	<update id="actualizarNotaCreditoDetalle" parameterType="NotaCreditoDetalle">
		UPDATE DDA_T_NOTA_CREDITO_DETALLE
		SET		   
		   MONTO =            #{notaDetalle.monto, javaType=String, jdbcType=VARCHAR}  
		WHERE
		   ID_NOTA =         #{notaDetalle.idNota, javaType=Long, jdbcType=NUMERIC} AND
		   ID_CONTRATO =     #{notaDetalle.idContrato, javaType=Long, jdbcType=NUMERIC} AND
		   ID_TITULO_CNT =   #{notaDetalle.idTituloCnt, javaType=Long, jdbcType=NUMERIC} AND
		   ID_NOTA_DETALLE = #{notaDetalle.idNotaDetalle, javaType=Long, jdbcType=NUMERIC}
		    
	</update>	
	
	<delete id="eliminarNotaCredito" parameterType="NotaCredito">
		DELETE DDA_T_NOTA_CREDITO
		WHERE
		    ID_NOTA =         #{nota.idNota, javaType=Long, jdbcType=NUMERIC}
	</delete>
	
	<delete id="eliminarNotaCreditoDetalle" parameterType="NotaCreditoDetalle">
		DELETE DDA_T_NOTA_CREDITO_DETALLE
		WHERE
		    ID_NOTA = #{nota.idNota, javaType=Long, jdbcType=NUMERIC}
	</delete>

	<select id="consultaTitulosBajaDisponibles" resultMap="resultadoTitulos"
		parameterType="map">	
		
		SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           ct.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,           
           NULL AS MONTO,
           1 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = ct.ID_CONTRATO
        WHERE 
          c.ID_ESTUDIO = #{idEstudio} AND
          ct.ESTATUS = 'ELIMINADO' AND
          ct.BAJA_PERDIDA = 0 AND
          c.ID_ESTATUS IN (5, 4)
        ORDER BY c.NUMERO_CONTRATO

	</select>
	
	<select id="consultaTitulosBajaUtilizados" resultMap="resultadoTitulos"
		parameterType="map">	
		
	       SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           ct.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,           
           NULL AS MONTO,
           1 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = ct.ID_CONTRATO
        INNER JOIN DDA_T_NOTA_CREDITO_DETALLE ncd ON ct.ID_TITULO_CNT = ncd.ID_TITULO_CNT
        WHERE 
          c.ID_ESTUDIO = #{idEstudio} AND
          c.ID_ESTATUS IN (5, 4) AND
          ct.ESTATUS = 'ELIMINADO' AND
          ct.BAJA_PERDIDA = 0 AND
          ncd.ID_NOTA != #{idNota}
        ORDER BY c.NUMERO_CONTRATO

	</select>
	
	<select id="consultaTitulosDisminucionDisponibles" resultMap="resultadoTitulos"
		parameterType="map">	
		
        SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           cs.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,           
           NULL AS MONTO,
           1 AS TIPO_TITULO 
        FROM DDA_T_CONTRATO_TITULO ct,
                (SELECT 
                    css.ID_CONTRATO,
                    css.ID_TITULO_CNT,
                    SUM(css.DISMINUCION) AS COSTO
                 FROM DDA_T_CONTRATO_SAP_SUBNUM css
                 WHERE DISMINUCION IS NOT NULL
                 GROUP BY css.ID_CONTRATO,
                          css.ID_TITULO_CNT,
                          css.FECHA_SAP) cs, 
             DDA_T_CONTRATO c
        WHERE ct.ID_CONTRATO = cs.ID_CONTRATO AND
          ct.ID_TITULO_CNT =  cs.ID_TITULO_CNT AND
          ct.ID_CONTRATO = c.ID_CONTRATO AND
          c.ID_ESTATUS IN (5, 4) AND
          ct.ID_CONTRATO   = #{idContrato}

	</select>
	
	
		<select id="consultaTitulosDisminucionUtilizados" resultMap="resultadoTitulos"
		parameterType="map">	
		
        SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           cs.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,           
           NULL AS MONTO,
           1 AS TIPO_TITULO 
        FROM DDA_T_CONTRATO_TITULO ct,
                (SELECT 
                    css.ID_CONTRATO,
                    css.ID_TITULO_CNT,
                    SUM(css.DISMINUCION) AS COSTO
                 FROM DDA_T_CONTRATO_SAP_SUBNUM css
                 WHERE DISMINUCION IS NOT NULL
                 GROUP BY css.ID_CONTRATO,
                          css.ID_TITULO_CNT,
                          css.FECHA_SAP) cs, 
             DDA_T_CONTRATO c,
             DDA_T_NOTA_CREDITO_DETALLE ncd 
        WHERE ct.ID_CONTRATO = cs.ID_CONTRATO AND
          ct.ID_TITULO_CNT =  cs.ID_TITULO_CNT AND
          ct.ID_CONTRATO = c.ID_CONTRATO AND 
          ct.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
          ct.ID_CONTRATO   = #{idContrato}  AND
          c.ID_ESTATUS IN (5, 4) AND
          ncd.ID_NOTA !=  #{idNota}

	</select>
	
	<select id="consultaNotaCreditoGeneral" resultMap="resultadoNotaCredito"
		parameterType="map">	
		
        SELECT
           nc.ID_NOTA,
           nc.ID_ESTUDIO,
           nc.NO_FACTURA,
           nc.FECHA,
           nc.APPROVED,
           nc.ID_SAP_REGISTRO,
           nc.COMENTARIO
        FROM DDA_T_NOTA_CREDITO nc
         WHERE
           <if test="idNota != null">
				nc.ID_NOTA = #{idNota}
		   </if>
		   <if test="idNota != null and estudios != null">
				AND
		   </if>
		   <if test="estudios != null">
				nc.ID_ESTUDIO IN 
				<foreach item="idEstudio" index="index" collection="estudios" open="(" separator="," close=")">
		           		  #{idEstudio}
		        </foreach>
		   </if>
		   <if test="(estudios != null or idNota != null) and 
                             (noFactura != null)">
				AND
		   </if>
		   <if test="noFactura != null">
				nc.NO_FACTURA like #{noFactura}
		   </if> 

	</select>
	
	<select id="consultaNotaCreditoDetalle" resultMap="resultadoNotaCreditoDetalle"
		parameterType="map">
		
		SELECT
           ncd.ID_NOTA_DETALLE,
           ncd.ID_NOTA,
           ncd.ID_CONTRATO,
           ncd.ID_TITULO_CNT,
           ncd.MONTO
        FROM DDA_T_NOTA_CREDITO_DETALLE ncd
        WHERE
           <if test="idNotaDetalle != null">
				ncd.ID_NOTA_DETALLE = #{idNotaDetalle}
		   </if>
		   <if test="idNotaDetalle != null and idNota != null">
				AND
		   </if>
		   <if test="idNota != null">
				ncd.ID_NOTA = #{idNota}
		   </if>
		   <if test="(idNota != null or idNotaDetalle != null) and 
		             (idContrato != null)">
				AND
		   </if>
		   <if test="idContrato != null">
				ncd.ID_CONTRATO = #{idContrato}
		   </if>
		   <if test="(idContrato != null or idNota != null or idNotaDetalle != null) and
		             (idTituloCnt != null)">
				AND
		   </if>
		   <if test="idTituloCnt != null">
				ncd.ID_TITULO_CNT = #{idTituloCnt}
		   </if>
	</select>
	
	
	
	
	<select id="obtenContratosConBaja" resultMap="resultadoTitulos" parameterType="map">	
		
    SELECT DISTINCT
           NULL AS ID_TITULO_CNT, 
           NULL AS DESC_TITULO, 
           NULL AS ESTATUS, 
           NULL AS BAJA_PERDIDA, 
           NULL AS COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           NULL AS  MONTO,
           0 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = ct.ID_CONTRATO
        WHERE 
          c.ID_ESTUDIO = #{idEstudio} AND
          ct.ESTATUS = 'ELIMINADO' AND
          ct.BAJA_PERDIDA = 0 AND
          c.ID_ESTATUS IN (5, 4)
        ORDER BY c.ID_CONTRATO

	</select>
	
		<select id="obtenTitulosBajaPorContrato" resultMap="resultadoTitulos" parameterType="map">	
		
      SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           ct.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           NULL AS MONTO,
           0 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = ct.ID_CONTRATO
        WHERE 
          c.ID_ESTUDIO = #{idEstudio} AND
          c.ID_CONTRATO = #{idContrato} AND
          c.ID_ESTATUS IN (5, 4) AND
          ct.ESTATUS = 'ELIMINADO' AND
          ct.BAJA_PERDIDA = 0
        ORDER BY c.ID_CONTRATO

	</select>
	
	<select id="obtenTitulosBajaPorContratoEnNota" resultMap="resultadoTitulos" parameterType="map">	
		
 	       SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           ct.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           ncd.MONTO,
           0 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = ct.ID_CONTRATO
        INNER JOIN DDA_T_NOTA_CREDITO_DETALLE ncd ON ct.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
                                                     ct.ID_CONTRATO = ncd.ID_CONTRATO
        INNER JOIN DDA_T_NOTA_CREDITO nc ON nc.ID_NOTA = ncd.ID_NOTA
        WHERE 
          c.ID_ESTUDIO = #{idEstudio} AND
          c.ID_CONTRATO = #{idContrato}  AND
          c.ID_ESTATUS IN (5, 4) AND
          ncd.ID_NOTA =  #{idNota} AND
          ct.ESTATUS = 'ELIMINADO' AND
          ct.BAJA_PERDIDA = 0 
        ORDER BY c.ID_CONTRATO
	</select>
	
	<select id="obtenTitulosBajaPorContratoNoEnNota" resultMap="resultadoTitulos" parameterType="map">	
		
        
        SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           ct.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           ncd.MONTO,
           0 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = ct.ID_CONTRATO
        INNER JOIN DDA_T_NOTA_CREDITO_DETALLE ncd ON ct.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
                                                     ct.ID_CONTRATO = ncd.ID_CONTRATO
        INNER JOIN DDA_T_NOTA_CREDITO nc ON nc.ID_NOTA = ncd.ID_NOTA
        WHERE 
          c.ID_ESTUDIO = #{idEstudio} AND
          c.ID_CONTRATO = #{idContrato}  AND
          c.ID_ESTATUS IN (5, 4) AND
          ncd.ID_NOTA !=  #{idNota} AND
          ct.ESTATUS = 'ELIMINADO' AND
          ct.BAJA_PERDIDA = 0 
        ORDER BY c.ID_CONTRATO
	</select>
	
		
	<select id="obtenContratosConDisminucion" resultMap="resultadoTitulos" parameterType="map">	
		
        
        SELECT DISTINCT
           NULL AS ID_TITULO_CNT, 
           NULL AS DESC_TITULO, 
           NULL AS ESTATUS, 
           NULL AS BAJA_PERDIDA, 
           NULL AS COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           NULL AS  MONTO,
           1 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_SAP_SUBNUM css
        INNER JOIN DDA_T_CONTRATO c ON c.ID_CONTRATO = css.ID_CONTRATO
        WHERE css.DISMINUCION IS NOT NULL AND
              c.ID_ESTUDIO = #{idEstudio}  AND
              c.ID_ESTATUS IN (5, 4)
        ORDER BY c.ID_CONTRATO
	</select>
	
	<select id="obtenTitulosDisminucionPorContrato" resultMap="resultadoTitulos" parameterType="map">	
        SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           cs.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,           
           NULL AS MONTO,
           1 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct,
                (SELECT 
                    css.ID_CONTRATO,
                    css.ID_TITULO_CNT,
                    SUM(css.DISMINUCION) AS COSTO
                 FROM DDA_T_CONTRATO_SAP_SUBNUM css
                 WHERE DISMINUCION IS NOT NULL
                 GROUP BY css.ID_CONTRATO,
                          css.ID_TITULO_CNT,
                          css.FECHA_SAP) cs, 
             DDA_T_CONTRATO c
        WHERE ct.ID_CONTRATO = cs.ID_CONTRATO AND
          ct.ID_TITULO_CNT =  cs.ID_TITULO_CNT AND
          ct.ID_CONTRATO = c.ID_CONTRATO AND 
          c.ID_CONTRATO   = #{idContrato} AND
          c.ID_ESTUDIO   = #{idEstudio} AND
          c.ID_ESTATUS IN (5, 4)
        ORDER BY c.ID_CONTRATO
	</select>
	
	
    <select id="obtenTitulosDisminucionPorContratoEnNota" resultMap="resultadoTitulos" parameterType="map">	
		
         SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           cs.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           ncd.MONTO,
           1 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct,
                (SELECT 
                    css.ID_CONTRATO,
                    css.ID_TITULO_CNT,
                    SUM(css.DISMINUCION) AS COSTO
                 FROM DDA_T_CONTRATO_SAP_SUBNUM css
                 WHERE DISMINUCION IS NOT NULL
                 GROUP BY css.ID_CONTRATO,
                          css.ID_TITULO_CNT,
                          css.FECHA_SAP) cs, 
             DDA_T_CONTRATO c,
             DDA_T_NOTA_CREDITO_DETALLE ncd,
             DDA_T_NOTA_CREDITO nc
        WHERE ct.ID_CONTRATO = cs.ID_CONTRATO AND
          ct.ID_TITULO_CNT =  cs.ID_TITULO_CNT AND
          ct.ID_CONTRATO = c.ID_CONTRATO AND 
          ct.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
          ct.ID_CONTRATO = ncd.ID_CONTRATO AND
          cs.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
          cs.ID_CONTRATO = ncd.ID_CONTRATO AND
          nc.ID_NOTA = ncd.ID_NOTA AND
          c.ID_CONTRATO   = #{idContrato} AND
          c.ID_ESTUDIO   = #{idEstudio} AND
          ncd.ID_NOTA =   #{idNota} AND
          c.ID_ESTATUS IN (5, 4)
        ORDER BY c.ID_CONTRATO
 	</select>
	
	
	<select id="obtenTitulosDisminucionPorContratoNoEnNota" resultMap="resultadoTitulos" parameterType="map">	
		
        SELECT 
           ct.ID_TITULO_CNT, 
           ct.DESC_TITULO, 
           ct.ESTATUS, 
           ct.BAJA_PERDIDA, 
           cs.COSTO, 
           c.ID_CONTRATO, 
           c.NUMERO_CONTRATO, 
           c.ID_ESTUDIO,
           c.ID_SAP,
           c.CLAVE_IVA,
           ncd.MONTO,
           1 AS TIPO_TITULO
        FROM DDA_T_CONTRATO_TITULO ct,
                (SELECT 
                    css.ID_CONTRATO,
                    css.ID_TITULO_CNT,
                    SUM(css.DISMINUCION) AS COSTO
                 FROM DDA_T_CONTRATO_SAP_SUBNUM css
                 WHERE DISMINUCION IS NOT NULL
                 GROUP BY css.ID_CONTRATO,
                          css.ID_TITULO_CNT,
                          css.FECHA_SAP) cs, 
             DDA_T_CONTRATO c,
             DDA_T_NOTA_CREDITO_DETALLE ncd,
             DDA_T_NOTA_CREDITO nc
        WHERE 
          ct.ID_CONTRATO = cs.ID_CONTRATO AND
          ct.ID_TITULO_CNT =  cs.ID_TITULO_CNT AND
          ct.ID_CONTRATO = c.ID_CONTRATO AND 
          ct.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
          ct.ID_CONTRATO = ncd.ID_CONTRATO AND
          cs.ID_TITULO_CNT = ncd.ID_TITULO_CNT AND
          cs.ID_CONTRATO = ncd.ID_CONTRATO AND
          nc.ID_NOTA = ncd.ID_NOTA AND
          c.ID_CONTRATO   = #{idContrato} AND
          c.ID_ESTUDIO   = #{idEstudio} AND
          ncd.ID_NOTA !=  #{idNota} AND
          c.ID_ESTATUS IN (5, 4)
        ORDER BY c.ID_CONTRATO
	</select>

</mapper>