<?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.reporte.pagosTransaccion.daos.PagoTransacionDAO">
	<resultMap id="pago" type="com.mx.dla.dda.reporte.pagosTransaccion.dtos.PagoTransaccion">
		<id property="idCalculoCosto" column="ID_CALCULO_COSTO" />
		<result property="idContrato" column="ID_CONTRATO" />
		<result property="idLista" column="ID_LISTA" />
		<result property="idTituloCnt" column="ID_TITULO_CNT" />
		<result property="categoria" column="CATEGORIA" />
		<result property="minimo" column="MINIMO" />
		<result property="rsEstudio" column="RS_ESTUDIO" />
		<result property="precio" column="PRECIO" />
		<result property="rentas" column="RENTAS" />
		<result property="costo" column="COSTO" />
		<result property="descEstudio" column="DESC_ESTUDIO" />
		<result property="tipoTitulo" column="TIPO_TITULO" />
		<result property="month" column="MONTH" />
		<result property="descTitulo" column="DESC_TITULO" />
		<result property="acumulado" column="acumulado" />
		<result property="docMaterial" column="DOC_MATERIAL" />
	</resultMap>


	<resultMap id="pagoHistorico" type="com.mx.dla.dda.reporte.pagosTransaccion.dtos.PagoTransaccion">
		<id property="idCalculoCosto" column="ID_CALCULO_COSTO" />
		<result property="descTitulo" column="DESC_TITULO" />
		<result property="idContrato" column="ID_CONTRATO" />
		<result property="idLista" column="ID_LISTA" />
		<result property="idTituloCnt" column="ID_TITULO_CNT" />
		<result property="categoria" column="CATEGORIA" />
		<result property="minimo" column="MINIMO" />
		<result property="inicioVentana" column="FECHA_INICIO" />
		<result property="month" column="MONTH" />
		
		 <collection property="detallesMes" 
            column="{idTituloCnt=ID_TITULO_CNT,fecha=FECHA_AUX}" select="buscarPagosTransaccionConFechaMayor" />
	</resultMap>

	<resultMap id="historico" type="com.mx.dla.dda.reporte.pagosTransaccion.dtos.DetalleHistorico">
		<id property="idCalculoCosto" column="ID_CALCULO_COSTO" />
		<result property="mes" column="MES" />
		<result property="costo" column="COSTO" />
	</resultMap>

	<select id="buscarPagosTransaccion" resultMap="pago"  >
		select 
			t.ID_CONTRATO,t.ID_LISTA,cc.ID_CALCULO_COSTO,t.ID_TITULO_CNT, cm.DESCRIPCION as categoria ,t.DESC_TITULO,
			cc.MINIMO,cc.RS_ESTUDIO,cc.PRECIO,cc.RENTAS,cc.COSTO , e.DESC_ESTUDIO , t.TIPO_TITULO , 
			to_char(cc.MES,'mm-yyyy') as month , sap.DOC_MATERIAL ,(select sum(COSTO)  from DDA_T_CALCULO_COSTO 
                                                   where ID_TITULO_CNTORIG = t.ID_TITULO_CNTORIG and mes &lt;=   cc.MES ) as acumulado
		from 
			DDA_T_CALCULO_COSTO cc
			inner join DDA_T_CONTRATO c on c.ID_CONTRATO = cc.ID_CONTRATO
			inner join DDA_T_CONTRATO_TITULO t on t.ID_CONTRATO = c.ID_CONTRATO and t.ID_TITULO_CNTORIG = cc.ID_TITULO_CNTORIG and t.ESTATUS='ACTIVO'
			inner join DDA_C_CATEGORIA_MG cm  on cm.ID_CATEGORIA =  t.ID_CATEGORIA 
			inner join DDA_T_CONTRATO_LISTA l on l.ID_CONTRATO =  c.ID_CONTRATO and  l.ID_LISTA = t.ID_LISTA and l.FECHA_FIN is null
			inner join DDA_C_ESTUDIO e on e.ID_ESTUDIO = c.ID_ESTUDIO
			left  join DDA_T_TRANSACCION_SAP  sap on sap.id_contrato =  t.ID_CONTRATO and to_char(sap.mes,'mm-yyyy') = to_char(cc.MES,'mm-yyyy')
		where 
			c.ID_ESTUDIO = #{idEstudio}
		<if test="tipoTitulo != null">
			and t.TIPO_TITULO = #{tipoTitulo}
		</if>
		<if test="mes != null">
			and to_char(cc.MES,'mm-yyyy') = #{mes}
		</if>
		<if test="mes == null">
			and to_char(cc.MES,'mm-yyyy') = to_char(SYSDATE,'mm-yyyy') 
		</if>
	</select>
	
	<select id="cuentaContratosCalculoCostoPorEstudioMes" resultType="long">
		
		select 
			DISTINCT (t.ID_CONTRATO)
		from 
			DDA_T_CALCULO_COSTO cc
			inner join DDA_T_CONTRATO c on c.ID_CONTRATO = cc.ID_CONTRATO
			inner join DDA_T_CONTRATO_TITULO t on t.ID_CONTRATO = c.ID_CONTRATO and t.ID_TITULO_CNTORIG = cc.ID_TITULO_CNTORIG and t.ESTATUS='ACTIVO'
			inner join DDA_C_CATEGORIA_MG cm  on cm.ID_CATEGORIA =  t.ID_CATEGORIA 
			inner join DDA_T_CONTRATO_LISTA l on l.ID_CONTRATO =  c.ID_CONTRATO and  l.ID_LISTA = t.ID_LISTA and l.FECHA_FIN is null
			inner join DDA_C_ESTUDIO e on e.ID_ESTUDIO = c.ID_ESTUDIO
		where 
			c.ID_ESTUDIO = #{idEstudio}
            and to_char(cc.MES,'mm-yyyy') = #{mes}
	</select>
	
	<select id="calculaCostoContratoMes" resultType="long" >
		select 
			sum(cc.COSTO)
		from 
			DDA_T_CALCULO_COSTO cc
			inner join DDA_T_CONTRATO c on c.ID_CONTRATO = cc.ID_CONTRATO
			inner join DDA_T_CONTRATO_TITULO t on t.ID_CONTRATO = c.ID_CONTRATO and t.ID_TITULO_CNTORIG = cc.ID_TITULO_CNTORIG and t.ESTATUS='ACTIVO'
			inner join DDA_C_CATEGORIA_MG cm  on cm.ID_CATEGORIA =  t.ID_CATEGORIA 
			inner join DDA_T_CONTRATO_LISTA l on l.ID_CONTRATO =  c.ID_CONTRATO and  l.ID_LISTA = t.ID_LISTA and l.FECHA_FIN is null
			inner join DDA_C_ESTUDIO e on e.ID_ESTUDIO = c.ID_ESTUDIO
		where 
			t.ID_CONTRATO = #{idContrato}
            and to_char(cc.MES,'mm-yyyy') = #{mes}
	
	</select>
	
	<select id="buscarPagosTransaccionHistorico" resultMap="pagoHistorico">
		select 
				t.ID_CONTRATO,t.ID_LISTA,t.ID_TITULO_CNT, cm.DESCRIPCION as categoria ,t.DESC_TITULO,
				cc.MINIMO,t.FECHA_INICIO , #{fecha} as FECHA_AUX
			from 
				DDA_T_CALCULO_COSTO cc
				inner join DDA_T_CONTRATO c on c.ID_CONTRATO = cc.ID_CONTRATO
				inner join DDA_T_CONTRATO_TITULO t on t.ID_CONTRATO = c.ID_CONTRATO and t.ID_TITULO_CNTORIG = cc.ID_TITULO_CNTORIG and t.ESTATUS='ACTIVO'
				inner join DDA_C_CATEGORIA_MG cm  on cm.ID_CATEGORIA =  t.ID_CATEGORIA 
				inner join DDA_T_CONTRATO_LISTA l on l.ID_CONTRATO =  c.ID_CONTRATO and  l.ID_LISTA = t.ID_LISTA and l.FECHA_FIN is null
				inner join DDA_C_ESTUDIO e on e.ID_ESTUDIO = c.ID_ESTUDIO
			where 
				c.ID_ESTUDIO = #{idEstudio}
				and cc.MES &lt;= #{fecha}
				 <if test="tipoTitulo != null">
					and t.TIPO_TITULO = #{tipoTitulo}
				</if>
	                GROUP BY t.ID_CONTRATO,t.ID_LISTA,t.ID_TITULO_CNT, cm.DESCRIPCION ,t.DESC_TITULO,
				cc.MINIMO,t.FECHA_INICIO
	                ORDER BY t.ID_TITULO_CNT desc
	</select>
	<select id="buscarPagosTransaccionConFechaMayor"  resultMap="historico" >
		select 
			c.* , to_char(c.MES,'MON-yyyy') as  MONTH
		from DDA_T_CALCULO_COSTO c
		where 
			c.ID_TITULO_CNTORIG= #{idTituloCnt}
			and c.MES &lt;= #{fecha}
		ORDER BY c.MES desc
	</select>
	
</mapper>
