<?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.PoblarGeneralesDAO">

	<resultMap id="estudio" type="EstudioDTO">
		<id property="idEstudio" column="ID_ESTUDIO" />
		<result property="descripcionEstudio" column="DESC_ESTUDIO" />
		<result property="sigla" column="SIGLA_DDA" />
	</resultMap>
	
	<resultMap id="categoria" type="CategoriaDTO">
		<id property="id" column="ID_CATEGORIA" />
		<result property="descripcion" column="DESC_CATEGORIA" />
		<result property="estatus" column="ESTATUS" />
		<result property="seAgrupa" column="SE_AGRUPA" />
	</resultMap>

	<resultMap id="servicio" type="ServicioDTO">
		<id property="id" column="ID_TIPO_SERVICIO" />
		<result property="descripcion" column="DESC_SERVICIO" />
	</resultMap>

	<resultMap id="territorio" type="TerritorioDTO">
		<id property="id" column="ID_TERRITORIO" />
		<result property="descripcion" column="DESC_TERRITORIO" />
	</resultMap>
	
	<resultMap id="medioEntrega" type="MedioEntregaDTO">
		<id property="id" column="ID_MEDIO_ENTREGA" />
		<result property="descripcion" column="DESC_MEDIO_ENTREGA" />
	</resultMap>
	
	<resultMap id="filial" type="FilialesDTO">
		<id property="id" column="ID_FILIAL" />
		<result property="descripcion" column="DESC_FILIAL" />
	</resultMap>
	
	<resultMap id="type" type="TypesDTO">
		<id property="id" column="ID_TYPE" />
		<result property="descripcion" column="DESC_TYPE" />
	</resultMap>
	
	<resultMap id="boton" type="BotonDTO">
		<id property="idBoton" column="ID_BOTON" />
		<result property="bclass" column="CLASS" />
		<result property="bid" column="ID" />
		<result property="bname" column="NAME" />
		<result property="btype" column="TYPE" />
		<result property="bformaction" column="ACTION" />
		<result property="bvalue" column="VALUE" />
		<result property="bonclick" column="ONCLICK" />
	</resultMap>
	
	<resultMap id="autoriza" type="AutorizaDTO">
		<id property="idArea" column="ID_AREA" />
		<result property="area" column="DESC_AREA" />
		<result property="fecha" column="FECHA_AUTORIZACION" />
		<result property="nombre" column="NOMBRE" />
		<result property="paterno" column="PATERNO" />
		<result property="permisoAutoriza" column="AUTORIZA_CONTRATO" />
	</resultMap>
	
	<resultMap id="apartado" type="ApartadoDTO">
		<result property="idApartado"	column="ID_APARTADO"/>
		<result property="descripcion"	column="DESC_APARTADO"/>
		<result property="idSap"		column="ID_SAP"/>
		<result property="amortizable"	column="AMORTIZABLE"/>		
	</resultMap>
	
	<resultMap id="fechas" type="FechasDTO">
		<id property="inicio" column="FECHA_INICIO" />
		<result property="fin" column="FECHA_FIN" />
	</resultMap>
	
	<resultMap id="areaAutorizador" type="AreaAutorizadorDTO">
		<result property="idArea" 				column="ID_AREA" />
		<result property="descripcionArea" 		column="DESC_AREA" />
		<result property="autorizaContrato" 	column="AUTORIZA_CONTRATO" />
		<result property="orden" 				column="ORDEN" />
		<result property="enviaExterno" 		column="ENVIA_EXTERNO" />
		<result property="idEstatus" 			column="ID_ESTATUS_AUTORIZA" />
		<result property="nombre" 				column="NOMBRE" />
		<result property="paterno" 				column="PATERNO" />
		<result property="expediente" 			column="EXPEDIENTE" />
		<result property="fechaAutorizacion"	column="FECHA_AUTORIZACION" />
	</resultMap>

	<!-- Catalogos -->
	

	<select id="obtenerEstudiosAddons" resultMap="estudio">
		<!-- SELECT ID_ESTUDIO, DESC_ESTUDIO, DECODE( NVL( SIGLA_DDA, ''), '', 'ETV', SIGLA_DDA ) AS SIGLA_DDA FROM DDA_C_ESTUDIO ORDER BY DESC_ESTUDIO -->
		SELECT 
		          ID_ESTUDIO, 
		          ID_SAP, DESC_ESTUDIO, 
		          SIGLA_DDA 
		FROM 
		          DDA_C_ESTUDIO 
		WHERE     es_add_on = 1  
		AND       add_on IS NOT NULL
		ORDER BY DESC_ESTUDIO																	
	</select>

	<select id="obtenerEstudios" resultMap="estudio">
		<!-- SELECT ID_ESTUDIO, DESC_ESTUDIO, DECODE( NVL( SIGLA_DDA, ''), '', 'ETV', SIGLA_DDA ) AS SIGLA_DDA FROM DDA_C_ESTUDIO ORDER BY DESC_ESTUDIO -->
		(SELECT 
		          ID_ESTUDIO, 
		          ID_SAP, DESC_ESTUDIO, 
		          SIGLA_DDA 
		FROM 
		          DDA_C_ESTUDIO 
		WHERE     ID_SAP IS NOT NULL 
		AND       SIGLA_DDA IS NOT NULL)
		UNION
		(SELECT 
		          ID_ESTUDIO, 
		          ID_SAP, 
		          DESC_ESTUDIO, DECODE(NVL(SIGLA_DDA, ''), '', 'ETV', SIGLA_DDA) AS SIGLA_DDA 
		FROM 
		          DDA_C_ESTUDIO 
		WHERE     ID_SAP IS NULL) 
		ORDER BY DESC_ESTUDIO																	
	</select>
	
	<select id="obtenerCategorias" resultMap="categoria">
		SELECT ID_CATEGORIA, DESC_CATEGORIA FROM DDA_C_CATEGORIA ORDER BY DESC_CATEGORIA
	</select>
	
	<select id="obtenerServiciosPorTipo" resultMap="servicio">
		SELECT DDA_C_SERVICIO_TIPO.ID_TIPO_SERVICIO, DDA_C_SERVICIO_TIPO.DESC_SERVICIO 
		FROM DDA_C_SERVICIO_CONTRATO  JOIN DDA_C_SERVICIO_TIPO ON (DDA_C_SERVICIO_CONTRATO.ID_TIPO_SERVICIO = DDA_C_SERVICIO_TIPO.ID_TIPO_SERVICIO)
		WHERE DDA_C_SERVICIO_CONTRATO.ID_TIPO_CONTRATO = #{tipoContrato} ORDER BY DDA_C_SERVICIO_TIPO.DESC_SERVICIO
	</select>
	
	<select id="obtenerTerritorios" resultMap="territorio">
		SELECT ID_TERRITORIO, DESC_TERRITORIO FROM DDA_C_TERRITORIO ORDER BY DESC_TERRITORIO
	</select>
	
	<select id="obtenerMediosEntrega" resultMap="medioEntrega">
		SELECT ID_MEDIO_ENTREGA, DESC_MEDIO_ENTREGA FROM DDA_C_MEDIO_ENTREGA ORDER BY DESC_MEDIO_ENTREGA
	</select>	

	<select id="obtenerFiliales" resultMap="filial">
		SELECT ID_FILIAL, DESC_FILIAL FROM DDA_C_FILIAL ORDER BY DESC_FILIAL
	</select>
	
	<select id="obtenerTypesPorTipo" resultMap="type">
		SELECT DDA_C_TYPE.ID_TYPE, DDA_C_TYPE.DESC_TYPE FROM DDA_C_TYPE JOIN DDA_C_TYPE_CONTRATO ON (DDA_C_TYPE.ID_TYPE = DDA_C_TYPE_CONTRATO.ID_TYPE) 
		WHERE DDA_C_TYPE_CONTRATO.ID_TIPO_CONTRATO = #{tipoContrato} ORDER BY DDA_C_TYPE.DESC_TYPE
	</select>
	
	<!-- Catalogos Actuales-->
	
	<select id="obtenerCategoriasActuales" resultMap="categoria">
		SELECT ccat.*
		FROM DDA_T_CONTRATO_CATEGORIA tcat, DDA_C_CATEGORIA ccat
		WHERE tcat.ID_CATEGORIA = ccat.ID_CATEGORIA AND tcat.ID_CONTRATO=#{idContrato} ORDER BY ccat.DESC_CATEGORIA
	</select>	
	
	<select id="obtenerServiciosActuales" resultMap="servicio">
		SELECT tser.ID_TIPO_SERVICIO, cser.DESC_SERVICIO
		FROM DDA_T_CONTRATO_SERVICIO tser, DDA_C_SERVICIO_TIPO cser
		WHERE tser.ID_TIPO_SERVICIO = cser.ID_TIPO_SERVICIO AND tser.ID_CONTRATO=#{idContrato} ORDER BY cser.DESC_SERVICIO
	</select>
	
	<select id="obtenerTerritoriosActuales" resultMap="territorio">
		SELECT tter.ID_TERRITORIO, cter.DESC_TERRITORIO
		FROM DDA_T_CONTRATO_TERRITORIO tter, DDA_C_TERRITORIO cter
		WHERE tter.ID_TERRITORIO = cter.ID_TERRITORIO AND tter.ID_CONTRATO=#{idContrato} ORDER BY cter.DESC_TERRITORIO
	</select>	
	
	<select id="obtenerMediosEntregaActuales" resultMap="medioEntrega">
		SELECT tmed.ID_MEDIO_ENTREGA, cmed.DESC_MEDIO_ENTREGA
		FROM DDA_T_CONTRATO_MEDIO_ENTREGA tmed, DDA_C_MEDIO_ENTREGA cmed
		WHERE tmed.ID_MEDIO_ENTREGA = cmed.ID_MEDIO_ENTREGA AND tmed.ID_CONTRATO=#{idContrato} ORDER BY cmed.DESC_MEDIO_ENTREGA
	</select>
	
	<select id="obtenerFilialesActuales" resultMap="filial">
		SELECT DDA_C_FILIAL.ID_FILIAL, DDA_C_FILIAL.DESC_FILIAL FROM DDA_C_FILIAL JOIN DDA_T_CONTRATO_DEAL_FILIAL 
		ON (DDA_C_FILIAL.ID_FILIAL = DDA_T_CONTRATO_DEAL_FILIAL.ID_FILIAL) 
		WHERE DDA_T_CONTRATO_DEAL_FILIAL.ID_CONTRATO = #{idContrato} ORDER BY DDA_C_FILIAL.DESC_FILIAL
	</select>
	
	<select id="obtenerTypesActuales" resultMap="type">
		SELECT DDA_C_TYPE.ID_TYPE, DDA_C_TYPE.DESC_TYPE FROM DDA_C_TYPE JOIN DDA_T_CONTRATO_DEAL_TYPE 
		ON (DDA_C_TYPE.ID_TYPE = DDA_T_CONTRATO_DEAL_TYPE.ID_TYPE)
		WHERE DDA_T_CONTRATO_DEAL_TYPE.ID_CONTRATO = #{idContrato} ORDER BY DDA_C_TYPE.DESC_TYPE
	</select>
	
	<select id="obtenerDescripcionEstatus" resultType="String">
		SELECT DESC_ESTATUS FROM DDA_C_CONTRATO_ESTATUS WHERE ID_ESTATUS=#{idEstatus}
	</select>
	
	<select id="obtenerBotones" resultMap="boton" parameterType="map">
		SELECT cbot.ID_BOTON, cbot.CLASS, cbot.ID, cbot.NAME, cbot.TYPE, cbot.ACTION, cbot.VALUE, cbot.ONCLICK
		FROM DDA_C_CONTRATO_BOTON tbot, DDA_C_BOTON cbot
		WHERE cbot.ID_BOTON = tbot.ID_BOTON and tbot.ID_ESTATUS=#{idEstatus} ORDER BY tbot.ORDEN
	</select>
	
	<select id="obtenerDescripcionMovimiento" resultType="String">
		SELECT DESC_MOVIMIENTO FROM DDA_C_MOVIMIENTO_TIPO WHERE ID_TIPO_MOVIMIENTO=#{idMovimiento}
	</select>
	
	<select id="obtenerFechaMinContratoTitulo" resultType="Date">
		SELECT MIN(FECHA_INICIO) AS FECHA_MIN FROM DDA_T_CONTRATO_TITULO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<select id="obtenerFechaMaxContratoTitulo" resultType="Date">
		SELECT MAX(FECHA_INICIO) AS FECHA_MAX FROM DDA_T_CONTRATO_TITULO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	<select id="obtenContratoConVirtual" resultType="long">
		SELECT ID_CONTRATO FROM DDA_T_CONTRATO WHERE ID_ESTUDIO=#{idEstudio} AND ID_CONTRATO != #{idContrato}
	</select>
	
	<select id="obtenerEstudioOficial" resultMap="estudio" parameterType="map">
		SELECT ID_ESTUDIO, DESC_ESTUDIO, SIGLA_DDA FROM DDA_C_ESTUDIO WHERE ID_SAP IS NOT NULL AND TRIM(SIGLA_DDA) IS NOT NULL ORDER BY DESC_ESTUDIO
	</select>
	
	<select id="obtenerApartados" resultMap="apartado" parameterType="map">
		SELECT ID_APARTADO, DESC_APARTADO, ID_SAP, AMORTIZABLE FROM DDA_T_APARTADO ORDER BY DESC_APARTADO ASC
	</select>
	
	<select id="obtenFechasContrato" resultMap="fechas">
		SELECT FECHA_INICIO, FECHA_FIN FROM DDA_T_CONTRATO WHERE ID_CONTRATO = #{idContrato}
	</select>
	
	
	<select id="obtenerEstudioActual" resultMap="estudio" parameterType="map">
		SELECT tcon.ID_ESTUDIO, cest.DESC_ESTUDIO, DECODE( NVL( cest.SIGLA_DDA , ''), '', 'ETV', cest.SIGLA_DDA) AS SIGLA_DDA
		FROM DDA_T_CONTRATO tcon, DDA_C_ESTUDIO cest	
		WHERE tcon.ID_ESTUDIO=cest.ID_ESTUDIO AND ID_CONTRATO=#{idContrato}
	</select>
	
	<select id="obtenerAreaAutorizador" resultMap="areaAutorizador">
	<!-- 	SELECT * FROM DDA_C_AREA CA LEFT OUTER JOIN 
		  (SELECT TCA.ID_AREA, CU.NOMBRE, CU.PATERNO, TCA.EXPEDIENTE, TCA.FECHA_AUTORIZACION  
		    FROM DDA_T_CONTRATO_AREA TCA JOIN DLA_C_USUARIO CU ON (TCA.EXPEDIENTE = CU.EXPEDIENTE) 
		    WHERE ID_CONTRATO = #{idContrato}) RTCA ON (CA.ID_AREA = RTCA.ID_AREA) WHERE CA.ORDEN IS NOT NULL ORDER BY CA.ORDEN -->
		    
		    SELECT * 
			FROM
			       (
			          SELECT 
			                  cwfa.ID_PASO_WF, 
			                  ca.DESC_AREA, 
			                  cwfa.ORDEN, 
			                  cwfa.ENVIA_EXTERNO, 
			                  cwfa.ID_ESTATUS_AUTORIZA 
			          FROM DDA_C_WF_AUTORIZACION cwfa 
			          JOIN DDA_C_AREA ca 
			          ON (cwfa.ID_AREA = ca.ID_AREA)
			        ) wfa 
			        LEFT OUTER JOIN
			        (
			            SELECT 
			                    tcwf.ID_PASO_WF, 
			                    cu.NOMBRE, 
			                    cu.PATERNO, 
			                    tcwf.EXPEDIENTE, 
			                    tcwf.FECHA_AUTORIZACION 
			            FROM DDA_T_CONTRATO_WF tcwf 
			            JOIN DLA_C_USUARIO cu ON 
			            (tcwf.EXPEDIENTE = cu.EXPEDIENTE)
			            WHERE ID_CONTRATO = #{idContrato}
			          ) wfu 
			          ON (wfa.ID_PASO_WF = wfu.ID_PASO_WF) 
			ORDER BY wfa.ORDEN
		    
		   <!--  SELECT * 
			FROM (
			        SELECT 
			              ca.ID_AREA, 
			              ca.DESC_AREA, 
			              ca.AUTORIZA_CONTRATO, 
			              cwf.ORDEN, 
			              cwf.ENVIA_EXTERNO, 
			              cwf.ID_ESTATUS_AUTORIZA 
			        FROM 
			              DDA_C_WF_AUTORIZACION cwf 
			              JOIN DDA_C_AREA ca 
			              ON (cwf.ID_AREA = ca.ID_AREA)
			      ) cawf LEFT OUTER JOIN 
			      (
			        SELECT 
			              tca.ID_AREA, 
			              cu.NOMBRE, 
			              cu.PATERNO, 
			              tca.EXPEDIENTE, 
			              tca.FECHA_AUTORIZACION  
			        FROM 
			              DDA_T_CONTRATO_AREA tca 
			              JOIN DLA_C_USUARIO cu 
			              ON (tca.EXPEDIENTE = cu.EXPEDIENTE) 
			        WHERE ID_CONTRATO = #{idContrato}
			      ) rtca ON (cawf.ID_AREA = rtca.ID_AREA) 
			WHERE cawf.ORDEN IS NOT NULL 
			ORDER BY cawf.ORDEN -->
	</select>
	
	<select id="obtenNoCategoriaEnContratoTitulo" resultType="Integer">
		SELECT COUNT(ID_TITULO_CNT) AS NO_CATEGORIAS FROM DDA_T_CONTRATO_TITULO WHERE ID_CATEGORIA = #{idCategoria} AND ID_CONTRATO = #{idContrato}
	</select>
	
	<select id="obtenNoServiciosEnContratoServicio" resultType="Integer">
<!-- 	SELECT COUNT(ID_TIPO_SERVICIO) AS NO_SERVICIOS 
		FROM DDA_T_CONTRATO_SERVICIO 
		WHERE ID_TIPO_SERVICIO = #{idServicio} AND ID_CONTRATO = #{idContrato} AND CANTIDAD_TITULOS IS NOT NULL
		SELECT COUNT(ID_TIPO_SERVICIO) AS NO_SERVICIOS 
		FROM DDA_T_CONTRATO_SERVICIO 
		WHERE ID_TIPO_SERVICIO = #{idServicio} AND ID_CONTRATO = #{idContrato} AND (CANTIDAD_TITULOS IS NOT NULL AND CANTIDAD_TITULOS > 0) -->
		SELECT COUNT(ID_TIPO_SERVICIO) AS NO_SERVICIOS 
		FROM DDA_T_CONTRATO_SERVICIO 
		WHERE ID_TIPO_SERVICIO = #{idServicio} AND ID_CONTRATO = #{idContrato} AND (PORCENTAJE_TITULOS IS NOT NULL AND PORCENTAJE_TITULOS > 0)
	</select>
	
	<resultMap id="indicador" type="IndicadorDTO">
		<result property="claveIva" 	column="CLAVE_IVA" />
		<result property="descripcion" 	column="DESCRIPCION" />
		<result property="orden" 		column="ORDEN" />
	</resultMap>
	
	<select id="obtenerIndicadores" resultMap="indicador">
		SELECT 
		          cii.CLAVE_IVA, 
		          cii.DESCRIPCION, 
		          cii.ORDEN 
		FROM 
				  DDA_C_INDICADOR_IVA cii 
		ORDER BY cii.ORDEN
	</select>
	
	<select id="numeroTitulosEnContratoTL" resultType="Integer">
		SELECT 
        			COUNT(tctit.ID_TITULO_CNT) AS NO_TITULOS
        FROM 
        			DDA_T_CONTRATO_TITULO tctit 
        WHERE 
        			tctit.ID_CONTRATO = #{idContrato}
        			AND tctit.ESTATUS = 'ACTIVO'		
	</select>
	
	<resultMap id="numeroTitulosTrans" type="NumeroTitulosTransDTO">
		<id property="idContrato"		column="ID_CONTRATO" />
		<result property="contratados"	column="CONTRATADOS" />
		<result property="recibidos"	column="RECIBIDOS" />
		<result property="pendientes"	column="PENDIENTES" />
	</resultMap>
	
	<select id="numeroTitulosEnContratoTrans" resultMap="numeroTitulosTrans">
		SELECT  
		        stermino.ID_CONTRATO, 
		        CONTRATADOS, 
		        RECIBIDOS,
		        CONTRATADOS - RECIBIDOS AS PENDIENTES
		FROM (
		          SELECT 
		                    tc.ID_CONTRATO,
		                    TO_NUMBER(NVL(tcter.TOTAL_TITULOS, '0')) AS CONTRATADOS
		          FROM 
		                    DDA_T_CONTRATO tc,
		                    DDA_T_CONTRATO_TERMINO tcter      
		          WHERE 
		                   
		                    tc.ID_CONTRATO = tcter.ID_CONTRATO
		                    AND tc.ID_CONTRATO = #{idContrato}
		  	)  stermino 
		JOIN(
		         
		        SELECT 
		                  tc.ID_CONTRATO,
		                  NO_TITULOS AS RECIBIDOS
		        FROM 
		                DDA_T_CONTRATO tc, 
		                (
		                	SELECT 
		                        COUNT(tctit.ID_TITULO_CNT) AS NO_TITULOS
		                 	FROM 
		                        DDA_T_CNT_TITULO tctit 
		                 	WHERE 
		                        tctit.ID_CONTRATO = #{idContrato}
		                )
		        WHERE 
		                tc.ID_CONTRATO = #{idContrato}
			) stitulo 
		ON stermino.ID_CONTRATO = stitulo.ID_CONTRATO
	</select>
	

		
	
</mapper>
