<?xml version="1.0" encoding="UTF-8"?>
<!-- Es un archivo de mapeo -->
<!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.titulo.daos.TituloDAO">


	<insert id="insertarTitulo" parameterType="Titulo">

		<selectKey keyProperty="idTituloCnt" resultType="long"
			order="BEFORE">
			select DDA_SQT_CONTRATO_TITULO.nextVal from DUAL
		</selectKey>

		insert into DDA_T_CONTRATO_TITULO
		(ID_TITULO_CNT,DESC_TITULO,ID_CONTRATO,ID_LISTA,ID_TITULO,
		<if test="categoria != null">
			ID_CATEGORIA,
		</if>
		<if test="release != null">
			ID_RELEASE,
		</if>
		<if test="pagoCateg != null">
			ID_PAGO_CATEG,
		</if>
		<if test="categoriaTit != null">
			ID_CATEGORIA_TIT,
		</if>
		FECHA_INICIO,FECHA_FIN,BRIEFCASE,DTO,DTR,COSTO,VIDA_UTIL,ID_SAP,ESTATUS,ID_TITULO_CNTNVO,HVRD,ID_TERRITORIO,ID_TITULO_CNTORIG,
		FECHA_NOTIFSAP,ID_SAP_ANT,ID_TITULO_CNTANT,NOTA_CREDITO,FACTURA_CREDITO,AJUSTO_TITULO,AJUSTO_VALOR,AJUSTO_VU,BAJA_PERDIDA,
		FECHA_AJUSTOTITULO,FECHA_AJUSTOVALOR,FECHA_AJUSTOVU,FECHA_BAJA,FECHA_WS,TIPO_TITULO,PRECIO_ANUAL,NOMBRE_UNICO,EPISODIO,TEMPORADA,ID_BV,MESES_VU
		,PJE_EXCLUSIVO,MESES_EXCLUSIVO, FLGCALCULO_PRECIO)
		values (
		#{idTituloCnt},#{descTitulo},#{idContrato},#{idLista},#{idTitulo},
		<if test="categoria != null">
			#{categoria.value},
		</if>
		<if test="release != null">
			#{release.value},
		</if>
		<if test="pagoCateg != null">
			#{pagoCateg.value},
		</if>
		<if test="categoriaTit != null">
			#{categoriaTit.value},
		</if>
		#{fechaInicio},#{fechaFin},#{briefcase},#{dto},#{dtr},#{costo},#{vidaUtil},#{idSap},#{estatus},#{idTituloCntnvo},#{hvrd},#{idTerritorio},#{idTituloCnt},
		#{fechaNotifsap},#{idSapAnt},#{idTituloCntant},#{notaCredito},#{facturaCredito},#{ajustoTitulo},#{ajustoValor},#{ajustoVu},#{bajaPerdida},#{fechaAjustotitulo},
		#{fechaAjustovalor},#{fechaAjustovu},#{fechaBaja},#{fechaWS},#{tipoTitulo},#{precioAnual},#{nombreUnico},#{episodio},#{temporada},#{idBv},#{mesesvu}
		,#{pjeExclusivo},#{mesesExclusivo}, #{flgcalculoPrecio})
	</insert>

	<insert id="insertarCatTitulo" parameterType="com.mx.dla.dda.contrato.titulos.dtos.CatTitulo">

		<selectKey keyProperty="idTitulo" resultType="long" order="BEFORE">
			select DDA_SQC_TITULO.nextVal from DUAL
		</selectKey>
		insert into DDA_C_TITULO (ID_TITULO,ID_ESTUDIO,DESC_TITULO,ESTATUS)
		values (#{idTitulo},#{idEstudio},#{descTitulo},1)
	</insert>

	<update id="actualizarTitulo" parameterType="Titulo">
		UPDATE DDA_T_CONTRATO_TITULO set
			DESC_TITULO = #{descTitulo},
			ID_CONTRATO = #{idContrato},
			ID_LISTA = #{idLista},
			ID_TITULO = #{idTitulo},
			<if test="categoria != null">
				ID_CATEGORIA = #{categoria.value},
			</if>
			<if test="release != null">
				ID_RELEASE = #{release.value},
			</if>
			<if test="pagoCateg != null">
				ID_PAGO_CATEG = #{pagoCateg.value},
			</if>
			<if test="categoriaTit != null">
				ID_CATEGORIA_TIT = #{categoriaTit.value},
			</if>
			FECHA_INICIO = #{fechaInicio},
			FECHA_FIN = #{fechaFin},
			BRIEFCASE = #{briefcase},
			DTO = #{dto},
			DTR = #{dtr},
			COSTO = #{costo},
			VIDA_UTIL = #{vidaUtil},
			ID_SAP = #{idSap},
			ESTATUS = #{estatus},
			ID_TITULO_CNTNVO = #{idTituloCntnvo},
			HVRD = #{hvrd},
			ID_TERRITORIO = #{idTerritorio},
			ID_TITULO_CNTORIG = #{idTituloCntorig},
			FECHA_NOTIFSAP = #{fechaNotifsap},
			ID_SAP_ANT = #{idSapAnt},
			ID_TITULO_CNTANT = #{idTituloCntant},
			NOTA_CREDITO = #{notaCredito},
			FACTURA_CREDITO = #{facturaCredito},
			AJUSTO_TITULO = #{ajustoTitulo},
			AJUSTO_VALOR = #{ajustoValor},
			AJUSTO_VU = #{ajustoVu},
			BAJA_PERDIDA = #{bajaPerdida},
			FECHA_AJUSTOTITULO = #{fechaAjustotitulo},
			FECHA_AJUSTOVALOR = #{fechaAjustovalor},
			FECHA_AJUSTOVU = #{fechaAjustovu},
			FECHA_BAJA = #{fechaBaja},
			FECHA_WS = #{fechaWS},
			TIPO_TITULO = #{tipoTitulo},
			PRECIO_ANUAL = #{precioAnual},
			NOMBRE_UNICO = #{nombreUnico},
			EPISODIO = #{episodio},
			TEMPORADA = #{temporada},
			ID_BV = #{idBv},
			MESES_VU = #{mesesvu},
			PJE_EXCLUSIVO = #{pjeExclusivo},
			MESES_EXCLUSIVO = #{mesesExclusivo}, 
			FLGCALCULO_PRECIO = #{flgcalculoPrecio}
		WHERE
			ID_TITULO_CNT=#{idTituloCnt}
	</update>
	
	<update id="actualizarEstatusSapTitulo" >
		UPDATE DDA_T_CONTRATO_TITULO SET ESTATUS_SAP = #{estatus} WHERE ID_CONTRATO = #{idContrato}
	</update>

	<delete id="borrarTitulo">
		delete DDA_T_CONTRATO_TITULO where
		ID_TITULO_CNT=#{idTituloCnt}
	</delete>
	
	<delete id="borrarTitulosPorLista">
		delete DDA_T_CONTRATO_TITULO where
		ID_LISTA=#{idLista}
	</delete>

	<delete id="borrarTitulosPorContrato">
		delete DDA_T_CONTRATO_TITULO where
		ID_CONTRATO=#{idContrato}
	</delete>

	<resultMap id="titulo" type="Titulo">
		<id property="idTituloCnt"            column="ID_TITULO_CNT" />
		<result property="descTitulo"         column="DESC_TITULO" />
		<result property="idContrato"         column="ID_CONTRATO" />
		<result property="idLista"            column="ID_LISTA" />
		<result property="idTitulo"           column="ID_TITULO" />
		<result property="categoria.value"    column="ID_CATEGORIA" />
		<result property="categoria.desc"     column="CAT_DESC" />
		<result property="categoriaTit.value" column="ID_CATEGORIA_TIT" />
		<result property="categoriaTit.desc"  column="CAT_DESC_TIT" />
		<result property="pagoCateg.value"    column="ID_PAGO_CATEG" />
		<result property="pagoCateg.desc"     column="PAGO_CATEG_DESC" />
		<result property="fechaInicio"        column="FECHA_INICIO" />
		<result property="fechaFin"           column="FECHA_FIN" />
		<result property="briefcase"          column="BRIEFCASE" />
		<result property="dto"                column="DTO" />
		<result property="dtr"                column="DTR" />
		<result property="costo"              column="COSTO" />
		<result property="vidaUtil"           column="VIDA_UTIL" />
		<result property="idSap"              column="ID_SAP" />
		<result property="estatus"            column="ESTATUS" />
		<result property="idTituloCntnvo"     column="ID_TITULO_CNTNVO" />
		<result property="hvrd"               column="HVRD" />
		<result property="idTerritorio"       column="ID_TERRITORIO" />
		<result property="release.value"      column="ID_RELEASE" />
		<result property="release.desc"       column="REL_DESC" />
		<result property="idTituloCntorig"    column="ID_TITULO_CNTORIG" />
		<result property="fechaNotifsap"      column="FECHA_NOTIFSAP" />
		<result property="idSapAnt"           column="ID_SAP_ANT" />
		<result property="idTituloCntant"     column="ID_TITULO_CNTANT" />
		<result property="notaCredito"        column="NOTA_CREDITO" />
		<result property="facturaCredito"     column="FACTURA_CREDITO" />
		<result property="ajustoTitulo"       column="AJUSTO_TITULO" />
		<result property="ajustoValor"        column="AJUSTO_VALOR" />
		<result property="ajustoVu"           column="AJUSTO_VU" />
		<result property="bajaPerdida"        column="BAJA_PERDIDA" />
		<result property="fechaAjustotitulo"  column="FECHA_AJUSTOTITULO" />
		<result property="fechaAjustovalor"   column="FECHA_AJUSTOVALOR" />
		<result property="fechaAjustovu"      column="FECHA_AJUSTOVU" />
		<result property="fechaBaja"          column="FECHA_BAJA" />
		<result property="fechaWS"            column="FECHA_WS" />
		<result property="tipoTitulo"         column="TIPO_TITULO" />
		<result property="precioAnual"        column="PRECIO_ANUAL" />
		<result property="nombreUnico"        column="NOMBRE_UNICO" />
		<result property="episodio"           column="EPISODIO" />
		<result property="idBv"               column="ID_BV" />
		<result property="mesesvu"            column="MESES_VU" />
		<result property="temporada"          column="TEMPORADA" />
		<result property="agrupable"          column="AGRUPABLE" />
		<result property="pjeExclusivo"       column="PJE_EXCLUSIVO" />
		<result property="mesesExclusivo"     column="MESES_EXCLUSIVO" />
		<result property="flgcalculoPrecioS"  column="FLGCALCULO_PRECIOS" />
		

		<collection property="amortizaciones"  column="ID_TITULO_CNTORIG"
			select="buscarAmortizaciones" />

	</resultMap>
	
	<resultMap id="tituloAgrupable" type="Titulo">
		<id property="nombreUnico" column="NOMBRE_UNICO" />
		<result property="categoriaTit.value" column="ID_CATEGORIA_TIT" />
		<result property="categoriaTit.desc" column="CAT_DESC_TIT" />
	</resultMap>

	<resultMap id="catTitulo"
		type="com.mx.dla.dda.contrato.titulos.dtos.CatTitulo">
		<result property="idTitulo" column="ID_TITULO" />
		<result property="idEstudio" column="ID_ESTUDIO" />
		<result property="descTitulo" column="DESC_TITULO" />
		<result property="estatus" column="ESTATUS" />
		<result property="idBv" column="ID_BV" />
	</resultMap>
	
	<resultMap id="tituloContratoSAP"
		type="com.mx.dla.dda.contrato.titulo.dtos.TitulosContratoSap">
		<result property="contratoDda" column="NUMERO_CONTRATO" />
		<result property="estatusContrato" column="DESC_ESTATUS" />
		<result property="nombreUnico" column="NOMBRE_UNICO" />
		<result property="nombreTitulo" column="DESC_TITULO" />
		<result property="idSap" column="ID_SAP" />
		<result property="subnumero" column="SUBNUMERO" />
		<result property="notificado" column="NOTIFICADO" />
		<result property="estatusTitulo" column="ESTATUS" />
		<result property="estatusSap" column="ESTATUS_SAP" />
	</resultMap>
	
	<select id="recuperarTitulosContrato" resultMap="tituloContratoSAP"
		parameterType="long">
		SELECT B.NUMERO_CONTRATO, C.DESC_ESTATUS, A.NOMBRE_UNICO, 
		A.DESC_TITULO, A.ID_SAP, A.SUBNUMERO, 
		CASE WHEN A.FECHA_NOTIFSAP IS NULL THEN 'NO' ELSE 'SI' END NOTIFICADO, 
		A.ESTATUS, A.ESTATUS_SAP 
		FROM DDA_T_CONTRATO_TITULO A 
		JOIN DDA_T_CONTRATO B ON A.ID_CONTRATO = B.ID_CONTRATO 
		JOIN DDA_C_CONTRATO_ESTATUS C ON B.ID_ESTATUS = C.ID_ESTATUS 
		WHERE B.ID_CONTRATO = #{idContrato}
	</select>

	<select id="buscarTitulosPorLista" resultMap="titulo"
		parameterType="long">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC, p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT 
		where
			t.ID_LISTA = #{idLista}
			and t.ESTATUS = 'ACTIVO'
		order by
			t.DESC_TITULO asc
	</select>

	<select id="buscarTitulosActivosEliminadosPorLista" resultMap="titulo"
		parameterType="long">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC, p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT
		where
			t.ID_LISTA = #{idLista}
		order by
			t.DESC_TITULO asc
	</select>

	<select id="buscarTotalCostoTitulos" resultType="double"
		parameterType="long">
		select
			sum(ct.COSTO)
		from DDA_T_CONTRATO_TITULO ct
		where
			ct.ID_CONTRATO = #{idContrato}
			and ct.ESTATUS = 'ACTIVO'
	</select>

	<select id="buscarTitulosPorIdTituloOrig" resultMap="titulo"
		parameterType="long">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC, p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT
		where
			t.ID_TITULO_CNTORIG = #{idTituloCntOrig}
			and t.ESTATUS = 'ACTIVO'
		order by t.DESC_TITULO asc
	</select>


	<select id="buscarTitulo" resultMap="titulo" parameterType="long">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC , p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT
		where 
			t.ID_TITULO_CNT = #{idTituloCnt}
			and t.ESTATUS = 'ACTIVO'
		order by t.DESC_TITULO asc
	</select>

	<select id="buscarTitulosPorDescripcionEnLista" resultMap="titulo">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC, p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT
		where
			t.ID_LISTA = #{idLista}
			and t.DESC_TITULO = #{descTitulo}
			<if test="episodio == null"> and t.EPISODIO is null </if>
			<if test="episodio != null"> and t.EPISODIO = #{episodio} </if>
			<if test="temporada == null "> and t.TEMPORADA is null </if>
			<if test="temporada != null "> and t.TEMPORADA = #{temporada} </if>
			and t.ESTATUS = 'ACTIVO'
		order by t.ID_TITULO_CNT asc
	</select>

	<select id="buscarTituloFiltro" resultMap="titulo"
		parameterType="Titulo">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC, p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT
		<if test="sd">
			inner join DDA_T_CONTRATO_TITULO_FTO sdf on t.ID_TITULO_CNT =  sdf.ID_TITULO_CNT and   sdf.ID_FORMATO=1
		</if>
		<if test="hd">
			inner join DDA_T_CONTRATO_TITULO_FTO hdf on t.ID_TITULO_CNT =  hdf.ID_TITULO_CNT and hdf.ID_FORMATO=2
		</if>
		<if test="threed">
			inner join DDA_T_CONTRATO_TITULO_FTO tf on t.ID_TITULO_CNT = tf.ID_TITULO_CNT and tf.ID_FORMATO=3
		</if>
		
		where
		t.ID_LISTA = #{idLista}
		<if test="descTitulo != null">
			and t.DESC_TITULO=#{descTitulo}
		</if>
		<if test="categoriaTit != null">
			<if test="categoriaTit.value != null">
				and t.ID_CATEGORIA_TIT=#{categoriaTit.value}
			</if>
			<if test="categoriaTit.value == null">
				and t.ID_CATEGORIA_TIT is null
			</if>
		</if>
		<if test="categoria != null">
			and t.ID_CATEGORIA=#{categoria.value}
		</if>
		<if test="pagoCateg != null">
			<if test="pagoCateg.value != null">
				and t.ID_PAGO_CATEG=#{pagoCateg.value}
			</if>
			<if test="pagoCateg.desc != null">
				and  p.DESC_CATEGORIA=#{pagoCateg.desc}
			</if>
		</if>
		<if test="nombreUnico != null">
			and t.NOMBRE_UNICO=#{nombreUnico}
		</if>
		<if test="release != null">
			and t.ID_RELEASE=#{release.value}
		</if>
		<if test="hvrd != null">
			and t.HVRD=#{hvrd}
		</if>
		<if test="tipoTitulo != null">
			and t.TIPO_TITULO=#{tipoTitulo}
		</if>
		<if test="fechaInicio != null">
			and t.FECHA_INICIO &lt;= #{fechaInicio}
			and t.FECHA_FIN
			&gt;= #{fechaInicio}
		</if>
		<if test="briefcase">
			and t.BRIEFCASE = 1
		</if>
		<if test="dto">
			and t.DTO =1
		</if>
		<if test="dtr">
			and t.DTR =1
		</if>
		and t.ESTATUS = 'ACTIVO'
		order 	by t.ID_TITULO_CNT asc
	</select>
	
	<select id="buscarTituloFiltroPaginado" resultMap="titulo"
		parameterType="Titulo">
		select
			t.*,c.DESCRIPCION as CAT_DESC, r.DESCRIPCION as
			REL_DESC, p.DESC_CATEGORIA as PAGO_CATEG_DESC , cct.DESC_CATEGORIA as CAT_DESC_TIT, cct.SE_AGRUPA as AGRUPABLE ,  ROUND (TO_NUMBER(t.costo),2)  as COSTOF
		from DDA_T_CONTRATO_TITULO t
		left join DDA_C_CATEGORIA_MG c on  c.ID_CATEGORIA = t. ID_CATEGORIA
		left join DDA_C_RELEASE_DATE r on r.ID_RELEASE = t.ID_RELEASE
        left join DDA_T_CONTRATO_PAGO_CATEG p on p.ID_PAGO_CATEG = t.ID_PAGO_CATEG
        left join DDA_C_CATEGORIA cct on cct.ID_CATEGORIA = t.ID_CATEGORIA_TIT
		where
		t.ID_LISTA = #{idLista}
		<if test="descTitulo != null">
			and t.DESC_TITULO like '%'||#{descTitulo}||'%'
		</if>
		<if test="nombreUnico != null">
			and t.NOMBRE_UNICO like '%'||#{nombreUnico}||'%'
		</if>
		<if test="categoriaTit != null">
			<if test="categoriaTit.value != null">
				and t.ID_CATEGORIA_TIT like '%'||#{categoriaTit.value}||'%'
			</if>
			<if test="categoriaTit.value == null">
				and t.ID_CATEGORIA_TIT is null
			</if>
		</if>
		<if test="categoria != null">
			and t.ID_CATEGORIA=#{categoria.value}
		</if>
		<if test="pagoCateg != null">
			<if test="pagoCateg.value != null">
				and t.ID_PAGO_CATEG like '%'||#{pagoCateg.value}||'%'
			</if>
			<if test="pagoCateg.desc != null">
				and  p.DESC_CATEGORIA=#{pagoCateg.desc}
			</if>
		</if>
		<if test="release != null">
			and t.ID_RELEASE=#{release.value}
		</if>
		<if test="hvrd != null">
			and t.HVRD=#{hvrd}
		</if>
		<if test="tipoTitulo != null">
			and t.TIPO_TITULO=#{tipoTitulo}
		</if>
		<if test="fechaInicio != null">
			and t.FECHA_INICIO &lt;= #{fechaInicio}
			and t.FECHA_FIN
			&gt;= #{fechaInicio}
		</if>
		<if test="briefcase">
			and t.BRIEFCASE = 1
		</if>
		and t.ESTATUS = 'ACTIVO'
		<if test="from =! null and to != null">
			and ROWNUM BETWEEN #{from} AND #{to}
		</if>
		ORDER BY cct.SE_AGRUPA asc, t.NOMBRE_UNICO asc
	</select>
	
	<select id="buscarTituloAgrupableFiltro" resultMap="tituloAgrupable"
		parameterType="Titulo">
		select
			t.NOMBRE_UNICO  
		from DDA_T_CONTRATO_TITULO t
		<if test="sd">
			inner join DDA_T_CONTRATO_TITULO_FTO sdf on t.ID_TITULO_CNT =  sdf.ID_TITULO_CNT and   sdf.ID_FORMATO=1
		</if>
		<if test="hd">
			inner join DDA_T_CONTRATO_TITULO_FTO hdf on t.ID_TITULO_CNT =  hdf.ID_TITULO_CNT and hdf.ID_FORMATO=2
		</if>
		<if test="threed">
			inner join DDA_T_CONTRATO_TITULO_FTO tf on t.ID_TITULO_CNT = tf.ID_TITULO_CNT and tf.ID_FORMATO=3
		</if>
		where
		t.ID_LISTA = #{idLista}
		<if test="descTitulo != null">
			and t.DESC_TITULO=#{descTitulo}
		</if>
		<if test="pagoCateg != null">
			<if test="pagoCateg.value != null">
				and t.ID_PAGO_CATEG=#{pagoCateg.value}
			</if>
			<if test="pagoCateg.desc != null">
				and  p.DESC_CATEGORIA=#{pagoCateg.desc}
			</if>
		</if>
		<if test="categoriaTit != null">
			<if test="categoriaTit.value != null">
				and t.ID_CATEGORIA_TIT=#{categoriaTit.value}
			</if>
			<if test="categoriaTit.value == null">
				and t.ID_CATEGORIA_TIT is null
			</if>
		</if>
		<if test="categoria != null">
			and t.ID_CATEGORIA=#{categoria.value}
		</if>
		<if test="nombreUnico != null">
			and t.NOMBRE_UNICO=#{nombreUnico}
		</if>
		and t.NOMBRE_UNICO is not null
		<if test="release != null">
			and t.ID_RELEASE=#{release.value}
		</if>
		<if test="hvrd != null">
			and t.HVRD=#{hvrd}
		</if>
		<if test="tipoTitulo != null">
			and t.TIPO_TITULO=#{tipoTitulo}
		</if>
		<if test="fechaInicio != null">
			and t.FECHA_INICIO &lt;= #{fechaInicio}
			and t.FECHA_FIN
			&gt;= #{fechaInicio}
		</if>
		<if test="briefcase">
			and t.BRIEFCASE = 1
		</if>
		<if test="dto">
			and t.DTO =1
		</if>
		<if test="dtr">
			and t.DTR =1
		</if>
		and t.ESTATUS = 'ACTIVO'
		group by (t.NOMBRE_UNICO  )
		order  by t.NOMBRE_UNICO asc
	</select>

	<select id="cuentaTitulosPorListaYDescTitulo" resultType="long">
		select
		count (*)
		from DDA_T_CONTRATO_TITULO
		where
		ID_LISTA = #{idLista}
		AND
		DESC_TITULO = #{descTitulo}
		AND ESTATUS = 'ACTIVO'
	</select>

	<select id="buscarFormatos" resultType="string" parameterType="long">
		select f.DESCRIPCION
		from DDA_T_CONTRATO_TITULO_FTO tf
		inner join DDA_C_FORMATO f on f.ID_FORMATO = tf.ID_FORMATO
		where tf.ID_TITULO_CNT =#{ID_TITULO_CNT}
	</select>

	<select id="buscarCatalogoTituloPorDesc" resultMap="catTitulo">
		select * from
		DDA_C_TITULO where ESTATUS=1 AND ID_ESTUDIO=#{idEstudio} AND
		DESC_TITULO=#{descTitulo}
	</select>

	<select id="buscarTitulosContrato"  resultMap="titulo">
        SELECT
           ct.ID_TITULO_CNT,
           ct.ID_BV, 
           ct.ID_TITULO, 
           ct.DESC_TITULO, 
           ct.ID_CONTRATO
        FROM DDA_T_CONTRATO_TITULO ct 
           INNER JOIN DDA_T_CONTRATO_LISTA ctl 
               ON ctl.ID_CONTRATO = ct.ID_CONTRATO AND
                  ctl.ID_LISTA = ct.ID_LISTA AND 
                  ctl.FECHA_FIN is null
        WHERE ct.ID_CONTRATO = #{idContrato} AND 
              ct.ESTATUS = 'ACTIVO'
        ORDER BY ct.DESC_TITULO
    </select>
    
    <update id="actualizarTitulosContrato"
		parameterType="Titulo">
		UPDATE DDA_T_CONTRATO_TITULO 
		SET
			ID_BV =     #{idBv, javaType=String, jdbcType=VARCHAR}
		WHERE
			ID_CONTRATO=  #{idContrato, javaType=Long, jdbcType=NUMERIC} AND
			ID_TITULO= #{idTitulo, javaType=Long, jdbcType=NUMERIC}
	</update>


	<select id="buscarTituloEnOtrosContratos"  resultType="long" >
		select count(*) from DDA_T_CONTRATO_TITULO t 
		inner join DDA_T_CONTRATO_LISTA l on l.ID_CONTRATO = t.ID_CONTRATO and l.FECHA_FIN is null
		where t.ESTATUS = 'ACTIVO'
		and t.ID_CONTRATO in 
			 <foreach item="idContrato" index="index" collection="idContratos"
		             open="(" separator="," close=")">
		        #{idContrato.desc}
		    </foreach>
		and  ( t.FECHA_INICIO BETWEEN #{fechaInicio} and #{fechaFin}
			 or t.FECHA_FIN BETWEEN #{fechaInicio} and #{fechaFin} )
		and t.DESC_TITULO = #{descTitulo}
		<if test="episodio == null"> and EPISODIO is null </if>
			<if test="episodio != null"> and t.EPISODIO = #{episodio} </if>
			<if test="temporada == null "> and t.TEMPORADA is null </if>
			<if test="temporada != null "> and t.TEMPORADA = #{temporada} </if>
	</select>
	
	<select id="buscarTitulosOtrosContratosXBV"  resultType="long" >	
		select count(*)
	    	from DDA_M_CONTRATO_TITULO t 		
			where t.ID_BV = #{idBV}
			and   t.ID_LISTA != #{idLista}
			and   t.ESTATUS = 'ACTIVO'		
			and  ( #{fechaInicio} BETWEEN t.FECHA_INICIO and t.FECHA_FIN or #{fechaFin} BETWEEN t.FECHA_INICIO and t.FECHA_FIN or 
			      (#{fechaInicio} &lt; t.FECHA_INICIO and t.FECHA_FIN &lt; #{fechaFin}) )			 			
	</select>

	<select id="buscarTitulosListaXBV"  resultType="long" >
		select count(*) 
		    from DDA_M_CONTRATO_TITULO t 		
			where  t.ID_LISTA = #{idLista}
		    and    t.ID_BV    = #{idBV}
		    and    t.ESTATUS = 'ACTIVO'				
		    and  ( #{fechaInicio} BETWEEN t.FECHA_INICIO and t.FECHA_FIN or #{fechaFin} BETWEEN t.FECHA_INICIO and t.FECHA_FIN or 
			      (#{fechaInicio} &lt; t.FECHA_INICIO and t.FECHA_FIN &lt; #{fechaFin})  )
			<if test="idTituloCnt != null"> and ID_TITULO_CNT != #{idTituloCnt} </if>		    		
	</select>
		
	<select id="buscarTituloEnOtrosContratosXBV"  resultType="long" >
		select count(*) from DDA_T_CONTRATO_TITULO t 
		inner join DDA_T_CONTRATO_LISTA l on l.ID_CONTRATO = t.ID_CONTRATO and l.FECHA_FIN is null
		where t.ESTATUS = 'ACTIVO'

		and t.ID_CONTRATO in 
			 <foreach item="idContrato" index="index" collection="idContratos"
		             open="(" separator="," close=")">
		        #{idContrato.desc}
		    </foreach>

		and  ( (#{fechaInicio} BETWEEN t.FECHA_INICIO and t.FECHA_FIN) or (#{fechaFin} BETWEEN t.FECHA_INICIO and t.FECHA_FIN) or
		       (#{fechaInicio} &lt; t.FECHA_INICIO and t.FECHA_FIN &lt; #{fechaFin}) ) 
		and    t.ID_BV = #{idBV}		
	</select>
				
	<resultMap id="catalogo"
		type="com.mx.dla.dda.catalogos.dtos.CatalogoDTO">
		<id property="value" column="ID" />
		<result property="desc" column="DESCRIP" />
	</resultMap>
	
	<select id="buscarAmortizaciones" resultMap="catalogo" parameterType="long">
		select ANIO as ID , TOTAL as DESCRIP from DDA_T_AMORTIZACION_TITULO where ID_TITULO_CNTORIG=#{ID_TITULO_CNTORIG}
	</select>
	
	<select id="findCategoria" resultType="int" parameterType="long">
		select DDA_C_CATEGORIA .SE_AGRUPA from DDA_C_CATEGORIA WHERE ID_CATEGORIA = #{idCate}
	</select>
	
	<select id="findSerie" resultType="int" parameterType="String">
		select COUNT(*) from DDA_M_CONTRATO_TITULO WHERE NOMBRE_UNICO = #{nombre}
	</select>
	
	<select id="findSerieSeason" resultType="int" parameterType="Map">
		select COUNT(*) from DDA_M_CONTRATO_TITULO WHERE NOMBRE_UNICO = #{nombre} AND TEMPORADA = #{temporada}
	</select>	
	
	<select id="calcularVidaUtil" parameterType="map" statementType="CALLABLE" resultType="String"> 
    	SELECT DDA_CALCULARVU( #{fechaInicial, mode=IN, javaType=Date, jdbcType=DATE},
    					#{fechaFinal, mode=IN, javaType=Date, jdbcType=DATE},
    					#{tipo, mode=IN, javaType=String, jdbcType=VARCHAR}
    				  )
    	FROM DUAL
	</select>
	
</mapper>
