<?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.carga.transaccion.daos.CargaTransaccionesDAO">
	
	<resultMap id="cargaTransacciones" type="CargaTransaccionesDTO">
		<result property="origen"			column="ORIGEN"/>
		<result property="pais"				column="PAIS"/>
		<result property="filial"			column="FILIAL"/>
		<result property="transacciones"	column="TRANSACCIONES"/>
		<result property="monto"			column="MONTO"/>
		<result property="pago"				column="PAGO"/>
		<result property="asociacion"		column="ASOCIACION"/>
	</resultMap>
	
	<select id="obtenCargaTransacciones" resultMap="cargaTransacciones">
		SELECT 
		        ORIGEN,
		        PAIS, 
		        FILIAL, 
		        TRANSACCIONES, 
		        ROUND(MONTO, 2) AS MONTO, 
		        ROUND(PAGO, 2) AS PAGO,
		        CASE
		              WHEN ORIGEN IS NULL THEN ROUND(ID_BV_OK * 100 / T_FILIAL, 2)
		              WHEN PAIS IS NULL THEN  ROUND(ID_BV_OK * 100 / T_FILIAL, 2)
		              ELSE ROUND(ID_BV_OK * 100 / T_FILIAL, 2)
		        END || ' %'AS ASOCIACION
		FROM(
				SELECT 
				          cf.ORIGEN_TRANS as ORIGEN,
				          pv.DESCRIPCION AS PAIS, 
				          NVL(cf.DESC_FILIAL, CASE WHEN cf.ORIGEN_TRANS IS NULL THEN 'TOTAL' ELSE 'SUBTOTAL' END) AS FILIAL,
				          SUM(ctt.CANTIDAD) AS TRANSACCIONES,
				          SUM(ctt.CANTIDAD * ctt.PRECIO) AS MONTO,
				          SUM(ctt.PAGO_MENSUAL) AS PAGO,
				          SUM(CASE WHEN ctt.ID_ERROR IS NULL THEN 1 ELSE 0 END) as ID_BV_OK,
				          COUNT(ctt.ID_FILIAL) AS T_FILIAL
				FROM 
				          DDA_T_CARGA_TRANSACCION ct,
				          DDA_T_CARGA_TRANSACCION_TITULO ctt,
				          DDA_C_FILIAL cf,
				          DDA_C_EMPRESA_VENTA ev,
				          DDA_C_PAIS_VENTA pv
				WHERE     ct.MES = TO_DATE(#{mes}, 'DD/MM/YYYY')
				AND       ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
				AND       ctt.ID_FILIAL = cf.ID_FILIAL
				AND       cf.ID_EMPRESA = ev.ID_EMPRESA
				AND       ev.ID_PAIS = pv.ID_PAIS
				GROUP BY
				          GROUPING SETS((cf.ORIGEN_TRANS, pv.DESCRIPCION, cf.DESC_FILIAL),(cf.ORIGEN_TRANS),())
				ORDER BY ORIGEN, PAIS
			)
	</select>
	
	
	<resultMap id="principalCargaTransacciones" type="PrincipalCargaTransaccionesDTO">
		<id property="idCarga"	column="ID_CARGA_TRANS"/>
		<result property="mes"		column="MES"/>
		<result property="mesStr"	column="MES_STR"/>
		<result property="vobo"		column="FECHA_VOBO"/>
		<result property="voboStr"	column="VOBO_STR"/>
		<result property="estatus"	column="ESTATUS_CARGA"/>
	</resultMap>
	
	<select id="obtenerPrincipalCargaTransacciones" resultMap="principalCargaTransacciones" parameterType="PrincipalCargaTransaccionesDTO">
		SELECT  MAX(ct.ID_CARGA_TRANS) AS ID_CARGA_TRANS, 
		        ct.MES,
		        TO_CHAR(ct.MES, 'DD/MM/YYYY') AS MES_STR,
		        ct.FECHA_VOBO,
		        TO_CHAR(ct.FECHA_VOBO, 'DD/MM/YYYY') AS VOBO_STR,
		        ct.ESTATUS_CARGA 
		FROM 
		        DDA_T_CARGA_TRANSACCION ct 
		WHERE   ct.MES = TO_DATE(#{mesStr}, 'DD/MM/YYYY')
		GROUP BY  ct.MES,
		          TO_CHAR(ct.MES, 'DD/MM/YYYY'),
		          ct.FECHA_VOBO,
		          TO_CHAR(ct.FECHA_VOBO, 'DD/MM/YYYY'),
		          ct.ESTATUS_CARGA 	
	</select>
	
	<insert id="registrarPrincipalCarga" parameterType="PrincipalCargaTransaccionesDTO" useGeneratedKeys="true" keyProperty="idCarga">
		
		<selectKey keyProperty="idCarga" resultType="long" order="BEFORE">
    	 		   select DDA_SQT_CARGA_TRANSACCION.nextVal from DUAL
  		</selectKey>
	
		INSERT INTO DDA_T_CARGA_TRANSACCION (ID_CARGA_TRANS, MES, FECHA_VOBO, ESTATUS_CARGA) 
		VALUES (#{idCarga}, TO_DATE(#{mesStr}, 'DD/MM/YYYY'), null, null)
		
	</insert>
	
	<select id="obtenListaPaises" resultType="String">
		SELECT DISTINCT DESCRIPCION FROM DDA_C_PAIS_VENTA ORDER BY DESCRIPCION
	</select>
	
	<resultMap id="rowReporteErrAsocTitulos" type="RowRepErrAsocTitulosDTO">
	    <result property="idCarga"			column="ID_CARGA_TRANS"/>
		<result property="desc_filial"		column="DESC_FILIAL"/>
		<result property="id_bv"			column="ID_BV"/>
		<result property="nombre_estandar"	column="NOMBRE_ESTANDAR"/>		
		<result property="abono"			column="ABONO"/>
		<result property="medio_pago"		column="MEDIO_PAGO"/>
		<result property="precio"			column="PRECIO"/>
		<result property="cantidad"			column="CANTIDAD"/>
		<result property="formato"			column="FORMATO"/>
		<result property="desc_error"		column="DESC_ERROR"/>		
	</resultMap>
	
	
	<select id="obtenRowReporteErrAsocTitulos" resultMap="rowReporteErrAsocTitulos">
	             SELECT  FIL.DESC_FILIAL 
	             		,CTT.ID_BV 
	             		,CTT.NOMBRE_ESTANDAR
	             		,CTT.MEDIO_PAGO
                        ,CTT.TYPE_ABONO AS ABONO
	             		,CTT.PRECIO
	             		,CTT.CANTIDAD
                        ,CF.DESCRIPCION AS FORMATO
	             		,TERR.DESC_ERROR                         
				FROM DDA_T_CARGA_TRANSACCION_TITULO CTT
    				JOIN DDA_C_FILIAL FIL 
      					ON FIL.ID_FILIAL = CTT.ID_FILIAL
    				JOIN DDA_C_TRANSACCION_ERROR TERR
      					ON TERR.ID_ERROR = CTT.ID_ERROR
                    JOIN DDA_C_FORMATO CF
                        ON CF.ID_FORMATO = CTT.ID_FORMATO
				WHERE     CTT.ID_CARGA_TRANS=#{idCarga}
      				  AND CTT.ID_ERROR IS NOT NULL
      				
	</select>
	
	<resultMap id="rowReporteResumenCarga" type="RowRepErrResumenCargaDTO">
		<!-- result property="mes"		column="MES"/ -->
	    <result property="idCarga"		column="ID_CARGA"/>
		<result property="FILIAL"		column="FILIAL"/>
		<result property="ID_PROGRAM"	column="ID_PROGRAM"/>
		<result property="TITULO"	column="TITULO"/>		
		<result property="MEDIO_PAGO"		column="MEDIO_PAGO"/>
		<result property="ABONO"		column="ABONO"/>
		<result property="PRECIO"		column="PRECIO"/>
		<result property="CANTIDAD"		column="CANTIDAD"/>
		<result property="FORMATO"		column="FORMATO"/>
		<result property="COMENTARIOS"		column="COMENTARIOS"/>		
	</resultMap>
	
	<select id="obtenRowReporteResumenCarga" resultMap="rowReporteResumenCarga">
	       
	       SELECT FILIAL, 
	       		  ID_PROGRAM, 
	       		  TITULO, 
	       		  MEDIO_PAGO, 
	       		  ABONO, PRECIO, 
	       		  CANTIDAD, 
	       		  FORMATO, 
	       		  COMENTARIOS 
		        FROM DDA_T_CARGAPN_DETALLE_LDR PN INNER JOIN 
                (SELECT cga.ID_CARGA_TRANS, MAX ( tit.ID_CARGA ) AS ID_CARGA        
        		 from DDA_T_CARGA_TRANSACCION cga INNER JOIN DDA_T_CARGA_TRANSACCION_TITULO tit        
        		      on    cga.ID_CARGA_TRANS = tit.ID_CARGA_TRANS 
             		  where      TO_DATE( TO_CHAR( MES,'mm-yyyy'),'mm-yyyy') = TO_DATE(TO_CHAR(TO_DATE(#{mes},'mm/dd/yyyy'),'mm-yyyy'),'mm-yyyy')        
        			  group by cga.ID_CARGA_TRANS) sub
		   ON PN.ID_CARGA = sub.ID_CARGA WHERE COMENTARIOS != 'OK'
	 
	             	
	</select>
	
	<resultMap id="rowReporteCarga" type="RowReporteCargaDTO">
		<result property="tipo"		column="TIPO"/>
		<result property="concepto"	column="CONCEPTO"/>
		<result property="estilo"	column="ESTILO"/>
		<result property="p1"		column="P1"/>
		<result property="p2"		column="P2"/>
		<result property="p3"		column="P3"/>
		<result property="p4"		column="P4"/>
		<result property="p5"		column="P5"/>
		<result property="p6"		column="P6"/>
		<result property="p7"		column="P7"/>
		<result property="p8"		column="P8"/>
		<result property="p9"		column="P9"/>
		<result property="p10"		column="P10"/>
		<result property="p11"		column="P11"/>
		<result property="p12"		column="P12"/>
		<result property="p13"		column="P13"/>
		<result property="p14"		column="P14"/>
		<result property="p26"		column="P26"/>
		<result property="total"	column="TOTAL"/>
	</resultMap>
	
	<select id="obtenRowReporte" resultType="java.util.LinkedHashMap" parameterType="map"> <!--  resultMap="rowReporteCarga" -->
		SELECT 
		         
		          NVL(TYPEA, NVL(ESTUDIO, 'TOTAL')) AS CONCEPTO, 
		          ${pivot_select}, TOTAL  
		FROM (
		     
		SELECT
		          NVL(pv.DESCRIPCION, 'TOTAL') AS PAIS,
		          ce.DESC_ESTUDIO AS ESTUDIO,
		          ctt.TYPE_ABONO AS TYPEA,
		          SUM(ctt.PAGO_MENSUAL) AS MONTO --SUM(ctt.CANTIDAD * ctt.PRECIO) AS MONTO
		          
		FROM 
		          DDA_T_CARGA_TRANSACCION ct,
		          DDA_T_CARGA_TRANSACCION_TITULO ctt,
		          DDA_C_FILIAL cf,
		          DDA_C_EMPRESA_VENTA ev,
		          DDA_C_PAIS_VENTA pv,
		          DDA_C_ESTUDIO ce
		WHERE     ct.ID_CARGA_TRANS = #{idCargaTrans}
		AND       ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
		AND       ctt.ID_FILIAL = cf.ID_FILIAL
		AND       cf.ID_EMPRESA = ev.ID_EMPRESA
		AND       ev.ID_PAIS = pv.ID_PAIS
		AND       ctt.ID_ESTUDIO = ce.ID_ESTUDIO
		GROUP BY 
		        GROUPING SETS((),
		                      (ce.DESC_ESTUDIO),
		                      (pv.DESCRIPCION),
		                      (ce.DESC_ESTUDIO, pv.DESCRIPCION),
		                      (ce.DESC_ESTUDIO, ctt.TYPE_ABONO),
		                      (pv.DESCRIPCION, ce.DESC_ESTUDIO, ctt.TYPE_ABONO)) 
		) PIVOT(SUM(MONTO) FOR PAIS 
    			IN (${pivot_paises}, 'TOTAL' AS TOTAL)
    )
		ORDER BY ESTUDIO NULLS FIRST, TYPEA NULLS FIRST
		
	</select>
	
	<select id="obtenReporteVistaPrevia" resultType="java.util.LinkedHashMap" parameterType="map"> <!--  resultMap="rowReporteCarga" -->
		SELECT 
		          CASE
		              WHEN ESTUDIO IS NULL THEN 'total'
		              WHEN TYPEA IS NULL THEN 'papa'
		              ELSE ESTUDIO
		          END AS aaTIPO,
		          CASE
		              WHEN ESTUDIO IS NULL THEN 'amarillo'
		              WHEN TYPEA IS NULL THEN 'blanco'
		              ELSE 'rosa'
		          END AS aaaESTILO,
		          NVL(TYPEA, NVL(ESTUDIO, 'TOTAL')) AS aaaCONCEPTO, 
		          ${pivot_select}, TOTAL as xTOTAL  
		FROM (
		     
		SELECT
		          NVL(pv.DESCRIPCION, 'TOTAL') AS PAIS,
		          ce.DESC_ESTUDIO AS ESTUDIO,
		          ctt.TYPE_ABONO AS TYPEA,
		          SUM(ctt.PAGO_MENSUAL) AS MONTO --SUM(ctt.CANTIDAD * ctt.PRECIO) AS MONTO
		          
		FROM 
		          DDA_T_CARGA_TRANSACCION ct,
		          DDA_T_CARGA_TRANSACCION_TITULO ctt,
		          DDA_C_FILIAL cf,
		          DDA_C_EMPRESA_VENTA ev,
		          DDA_C_PAIS_VENTA pv,
		          DDA_C_ESTUDIO ce
		WHERE     ct.ID_CARGA_TRANS = #{idCargaTrans}
		AND       ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
		AND       ctt.ID_FILIAL = cf.ID_FILIAL
		AND       cf.ID_EMPRESA = ev.ID_EMPRESA
		AND       ev.ID_PAIS = pv.ID_PAIS
		AND       ctt.ID_ESTUDIO = ce.ID_ESTUDIO
		GROUP BY 
		        GROUPING SETS((),
		                      (ce.DESC_ESTUDIO),
		                      (pv.DESCRIPCION),
		                      (ce.DESC_ESTUDIO, pv.DESCRIPCION),
		                      (ce.DESC_ESTUDIO, ctt.TYPE_ABONO),
		                      (pv.DESCRIPCION, ce.DESC_ESTUDIO, ctt.TYPE_ABONO)) 
		) PIVOT(SUM(MONTO) FOR PAIS 
    			IN (${pivot_paises}, 'TOTAL' AS TOTAL)
    )
		ORDER BY ESTUDIO NULLS FIRST, TYPEA NULLS FIRST
		
	</select>
	
	
	<resultMap id="titulosdelaCarga" type="TitulosCargaTransaccionesDTO">
		<result property="idBv"	column="ID_BV"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="mes"	column="MES"/>
	</resultMap>
	
	<select id="titulosdelaCarga" resultMap="titulosdelaCarga">
	       SELECT TT.ID_BV,
	              TT.NOMBRE_ESTANDAR	              
           FROM DDA_T_CNT_TITULO TT
              INNER JOIN DDA_T_CONTRATO TC ON TC.ID_CONTRATO = TT.ID_CONTRATO
           WHERE                 
                    TO_DATE(#{mes}, 'MM/DD/YYYY') BETWEEN TRUNC(TT.FECHA_INICIO) AND TRUNC(TT.FECHA_FIN)
                AND TC.ID_ESTATUS ='5'
                AND TT.ID_BV NOT IN(SELECT CTT.ID_BV FROM DDA_T_CARGA_TRANSACCION_TITULO CTT WHERE TT.ID_BV = CTT.ID_BV)                
	
	</select>
	
	<resultMap id="obtenerResumenCarga" type="PrincipalCargaTransaccionesDTO">
		<result property="idCarga"	column="ID_CARGA_TRANS"/>
		<result property="mes"	column="MES"/>
		<result property="vobo"	column="FECHA_VOBO"/>
		<result property="TOTAL_REGISTROS"	column="TOTAL_REGISTROS"/>
		<result property="TOTAL_CARGADOS"	column="TOTAL_CARGADOS"/>
		<result property="TOTAL_ERROR"	column="TOTAL_ERROR"/>
	</resultMap>
	
	<update id="validaCarga" parameterType="PrincipalCargaTransaccionesDTO">		 
			UPDATE DDA_T_CARGA_TRANSACCION 
			     SET FECHA_VOBO=SYSDATE, ESTATUS_CARGA='OK' 
			WHERE ID_CARGA_TRANS=#{idCarga}
	</update>
	
	<select id="obtenerResumenCarga" resultMap="obtenerResumenCarga">
      SELECT  
              CT.ID_CARGA_TRANS,    
         			CT.MES,     
       				CT.FECHA_VOBO,  
       				CT.ESTATUS_CARGA,    
       				CP.TOTAL_REGISTROS,    
       				CP.TOTAL_CARGADOS,    
       				CP.TOTAL_ERROR
			FROM (SELECT ID_CARGA_TRANS, MAX(ID_CARGA) AS ID_CARGA FROM DDA_T_CARGAPN_PRINCIPAL GROUP BY ID_CARGA_TRANS) CPM
      INNER JOIN DDA_T_CARGAPN_PRINCIPAL CP ON CP.ID_CARGA = CPM.ID_CARGA
      INNER JOIN (SELECT TO_DATE( TO_CHAR( MES,'mm-yyyy'),'mm-yyyy') MES, MAX(ID_CARGA_TRANS) AS ID_CARGA_TRANS
                  FROM DDA_T_CARGA_TRANSACCION 
                  WHERE TO_DATE( TO_CHAR( MES,'mm-yyyy'),'mm-yyyy') = TO_DATE(TO_CHAR(TO_DATE(#{mes},'mm/dd/yyyy'),'mm-yyyy'),'mm-yyyy')
                  GROUP BY TO_DATE( TO_CHAR( MES,'mm-yyyy'),'mm-yyyy')
                  ) CTM ON CTM.ID_CARGA_TRANS = CP.ID_CARGA_TRANS
      INNER JOIN DDA_T_CARGA_TRANSACCION CT ON CT.ID_CARGA_TRANS = CTM.ID_CARGA_TRANS 
    </select>	
	
	<select id="obtenerResumenCargaIdCarga" resultMap="obtenerResumenCarga">
						
			SELECT  CT.ID_CARGA_TRANS,    
               		CT.FECHA_VOBO,
       				CPN.TOTAL_REGISTROS,    
       				CPN.TOTAL_CARGADOS,    
       				CPN.TOTAL_ERROR
			FROM DDA_T_CARGAPN_PRINCIPAL CPN, DDA_T_CARGA_TRANSACCION CT,    
      			(select MAX ( ID_CARGA ) AS ID_CARGA        
        		 from DDA_T_CARGAPN_PRINCIPAL       
        		 where ID_CARGA_TRANS = #{idCarga}
                      ORDER BY ID_CARGA DESC) sub 
		    WHERE    CT.ID_CARGA_TRANS = CPN.ID_CARGA_TRANS
                 AND CPN.ID_CARGA = sub.ID_CARGA
			
	</select>
	
	<resultMap id="sinIdBroadView" type="TitulosCargaTransaccionesDTO">
		<result property="idBv"	column="ID_BV"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="id_carga_titulo"	column="ID_CARGA_TITULO"/>
		<result property="id_bv_dda"	column="ID_BV_DDA"/>
	</resultMap>
	
	<select id="sinIdBroadView" resultMap="sinIdBroadView">
	
	        SELECT 
       ctt.ID_CARGA_TITULO,ctt.ID_BV,ctt.ID_BV_DDA,ctt.NOMBRE_ESTANDAR
    FROM 
        DDA_T_CARGA_TRANSACCION ct,
        DDA_T_CARGA_TRANSACCION_TITULO ctt
        JOIN DDA_C_TRANSACCION_ERROR ERR ON ERR.ID_ERROR = ctt.ID_ERROR
    WHERE 
           ctt.ID_ERROR = '1'
    AND    ctt.ID_CARGA_TRANS = #{idCarga}
    AND    ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
	
	</select>
	
	<!-- To call stored procedure. -->	 
   <update id="actualizarIdBv" parameterType="map" statementType="CALLABLE">
      { CALL DDA_UPD_IDBV_ASOCIACIONTITULOS( #{idBv, mode=IN, javaType=String, jdbcType=VARCHAR},#{id_carga_titulo, mode=IN, javaType=INTEGER, jdbcType=NUMERIC},#{nombreEstandar, mode=IN, javaType=String, jdbcType=VARCHAR} ) } 
   </update>
   
   <select id="calculaOverage" parameterType="map" statementType="CALLABLE">
      { CALL DDA_CNT_CALCULAR_OVERAGE( #{idCarga, mode=IN, javaType=LONG, jdbcType=NUMERIC} ) } 
   </select>
	
	<resultMap id="idBroadViewNoExiste" type="TitulosCargaTransaccionesDTO">
		<result property="idBv"	column="ID_BV"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="id_carga_titulo"	column="ID_CARGA_TITULO"/>
		<result property="id_bv_dda"	column="ID_BV_DDA"/>
	</resultMap>
	
	<select id="idBroadViewNoExiste" resultMap="idBroadViewNoExiste">
	
	       SELECT 
       ctt.ID_CARGA_TITULO,ctt.ID_BV,ctt.ID_BV_DDA,ctt.NOMBRE_ESTANDAR
    FROM 
        DDA_T_CARGA_TRANSACCION ct,
        DDA_T_CARGA_TRANSACCION_TITULO ctt
        JOIN DDA_C_TRANSACCION_ERROR ERR ON ERR.ID_ERROR = ctt.ID_ERROR
    WHERE 
           ctt.ID_ERROR = '2'
    AND    ctt.ID_CARGA_TRANS = #{idCarga}
    AND    ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
	       	
	</select>
	
	<resultMap id="tituloyFilialNoExiste" type="TitulosCargaTransaccionesDTO">
		<result property="idBv"	column="ID_BV"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="id_carga_titulo"	column="ID_CARGA_TITULO"/>
		<result property="id_bv_dda"	column="ID_BV_DDA"/>
		<result property="desc_filial"	column="DESC_FILIAL"/>
	</resultMap>
	
	<select id="tituloyFilialNoExiste" resultMap="tituloyFilialNoExiste">
	
	       SELECT 
       ctt.ID_CARGA_TITULO,ctt.ID_BV,ctt.ID_BV_DDA,ctt.NOMBRE_ESTANDAR,FIL.DESC_FILIAL
    FROM 
        DDA_T_CARGA_TRANSACCION ct,
        DDA_T_CARGA_TRANSACCION_TITULO ctt
        JOIN DDA_C_TRANSACCION_ERROR ERR ON ERR.ID_ERROR = ctt.ID_ERROR
        JOIN DDA_C_FILIAL FIL ON FIL.ID_FILIAL = ctt.ID_FILIAL
    WHERE 
           ctt.ID_ERROR = '3'
    AND    ctt.ID_CARGA_TRANS = #{idCarga}
    AND    ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
    
	       	
	</select>
	
	<resultMap id="tituloFueradePeriodo" type="TitulosCargaTransaccionesDTO">
		<result property="idBv"	column="ID_BV"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="id_carga_titulo"	column="ID_CARGA_TITULO"/>
		<result property="id_bv_dda"	column="ID_BV_DDA"/>
		<result property="desc_filial"	column="DESC_FILIAL"/>
	</resultMap>
	
	<select id="tituloFueradePeriodo" resultMap="tituloFueradePeriodo">
	
	       SELECT 
       ctt.ID_CARGA_TITULO,ctt.ID_BV,ctt.ID_BV_DDA,ctt.NOMBRE_ESTANDAR,FIL.DESC_FILIAL
    FROM 
        DDA_T_CARGA_TRANSACCION ct,
        DDA_T_CARGA_TRANSACCION_TITULO ctt
        JOIN DDA_C_TRANSACCION_ERROR ERR ON ERR.ID_ERROR = ctt.ID_ERROR
        JOIN DDA_C_FILIAL FIL ON FIL.ID_FILIAL = ctt.ID_FILIAL
    WHERE 
           ctt.ID_ERROR = '4'
    AND    ctt.ID_CARGA_TRANS = #{idCarga}
    AND    ctt.ID_CARGA_TRANS = ct.ID_CARGA_TRANS
	       	
	</select>
	
	<select id="ejecutaSP" parameterType="map" statementType="CALLABLE">
	      { CALL DDA_BLOQUEO_CIERRE_SAP( #{fecha, mode=IN, javaType=String, jdbcType=VARCHAR} ) } 
	</select>
	
	
	<select id="ejecutaSP_porcR" parameterType="map" statementType="CALLABLE">
	      { CALL DDA_BLOQUEO_CIERRE_SAP( #{fecha, mode=IN, javaType=String, jdbcType=VARCHAR} ) } 
	</select>
	
	
	<select id="ejecutaSP_MarcaCont" parameterType="map" statementType="CALLABLE">
	      { CALL DDA_MARCA_CONTINGENCIA( 
	      #{in_Contrato, mode=IN, javaType=String, jdbcType=VARCHAR},
	      #{in_Estudio, mode=IN, javaType=String, jdbcType=VARCHAR} ) } 
	</select>
	
	<resultMap id="fecha" type="FechaBloqueoDTO">
		<result property="anio"	column="ANIO"/>
		<result property="mes"	column="MES"/>
		<result property="dia"	column="DIA"/>
	</resultMap>
	
	<select id="consultarFechaActual"  parameterType="map" resultMap="fecha">
		SELECT EXTRACT(DAY  FROM FECHA) AS DIA, EXTRACT(MONTH  FROM FECHA) AS MES, EXTRACT(YEAR  FROM FECHA) AS ANIO 
		FROM DDA_T_BLOQUEO_CIERRESAP
    	WHERE  EXTRACT(MONTH  FROM FECHA)= #{mes} AND EXTRACT(YEAR  FROM FECHA)=#{anio}
	</select>
	
	
	
	<!-- Queries de la version anterior de carga de transacciones 
	<select id="obtenCargaTransacciones" resultMap="cargaTransacciones">
		SELECT 
		         tct.ID_CARGA,
		         tct.ID_EMPRESA,
		         tct.TIPO_CARGA, 
		         tct.MES,
		         tct.FECHA_VOBO,
		         tct.ESTATUS_CARGA,
		         tctt.ID_CARGA_TITULO,
		         tctt.ID_TIPO_SERVICIO,
		         cs.DESC_SERVICIO,
		         tctt.ID_FORMATO,
		         cf.DESCRIPCION AS DESCRIPCION_FORMATO,
		         tctt.ID_BV,
		         tctt.NOMBRE_ESTANDAR,
		         tctt.TRANSACCIONES,
		         tctt.PRECIO,
		         tctt.ID_BV_DDA
		FROM 
		          DDA_T_CARGA_TRANSACCION tct,
		          DDA_T_CARGA_TRANSACCION_TITULO tctt,
		          DDA_C_SERVICIO_TIPO cs,
		          DDA_C_FORMATO cf
		WHERE tct.ID_CARGA = tctt.ID_CARGA 
		AND tct.MES = TO_DATE(#{mes}, 'DD/MM/YYYY') 
		AND tct.ID_EMPRESA = #{idEmpresa}
		AND tct.TIPO_CARGA = #{tipoCarga}
		AND cs.ID_TIPO_SERVICIO = tctt.ID_TIPO_SERVICIO
		AND cf.ID_FORMATO = tctt.ID_FORMATO
		ORDER BY tctt.NOMBRE_ESTANDAR, cs.DESC_SERVICIO, cf.DESCRIPCION
	</select>
	
	<resultMap id="resumenCarga" type="ResumenCargaDTO">
		<result property="servicio"			column="SERVICIO"/>
		<result property="formato"			column="FORMATO"/>
		<result property="transacciones"	column="TRANSACCIONES"/>
	</resultMap>
	
	<select id="obtenResumenCarga" resultMap="resumenCarga">
		SELECT 
		          cst.DESC_SERVICIO AS SERVICIO,
		          cf.DESCRIPCION AS FORMATO,
		          SUM(tctt.TRANSACCIONES) AS TRANSACCIONES
		FROM
		          DDA_T_CARGA_TRANSACCION_TITULO tctt,
		          DDA_C_SERVICIO_TIPO cst,
		          DDA_C_FORMATO cf
		WHERE     ID_CARGA = #{idCarga}
		AND       cst.ID_TIPO_SERVICIO = tctt.ID_TIPO_SERVICIO
		AND       cf.ID_FORMATO = tctt.ID_FORMATO
		AND       tctt.ID_BV_DDA IS <if test="validos == true">NOT</if> NULL
		GROUP BY  cst.DESC_SERVICIO, cf.DESCRIPCION
		ORDER BY  cst.DESC_SERVICIO, cf.DESCRIPCION
	</select>
	
	<resultMap id="tituloEnContrato" type="TituloEnContratoDTO">
		<result property="idBv"				column="ID_BV"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="fechaInicio"		column="FECHA_INICIO"/>
		<result property="fechaFin"			column="FECHA_FIN"/>
		<result property="fi"				column="FI"/>
		<result property="ff"				column="FF"/>
		<result property="categoria"		column="DESC_CATEGORIA"/>
		<result property="enFecha"			column="EN_FECHA"/>
		<result property="estilo"			column="ESTILO"/>
	</resultMap>
	
	<select id="obtenerTitulosEnContratos" resultMap="tituloEnContrato">
		SELECT 
		          DISTINCT
		          tct.ID_BV,
		          tct.NOMBRE_ESTANDAR,
		          TO_CHAR(tct.FECHA_INICIO, 'MON-YY') AS FECHA_INICIO,
		          TO_CHAR(tct.FECHA_FIN, 'MON-YY') AS FECHA_FIN,
		          TO_CHAR(tct.FECHA_INICIO, 'MM/DD/YYYY') AS FI,
              	  TO_CHAR(tct.FECHA_FIN, 'MM/DD/YYYY') AS FF,
		          ct.DESC_CATEGORIA,
		          CASE
		              WHEN tct.ID_BV IN ( SELECT DISTINCT ID_BV 
		                                  FROM DDA_T_CARGA_TRANSACCION_TITULO 
		                                  WHERE ID_BV_DDA IS NOT NULL
		                                  AND ID_CARGA = #{idCarga}) THEN 1
		              WHEN TO_DATE(#{mes}, 'DD/MM/YYYY') BETWEEN tct.FECHA_INICIO AND tct.FECHA_FIN THEN 2
		              ELSE 3
		          END AS EN_FECHA,
              	  CASE
		              WHEN tct.ID_BV IN ( SELECT DISTINCT ID_BV 
		                                  FROM DDA_T_CARGA_TRANSACCION_TITULO 
		                                  WHERE ID_BV_DDA IS NOT NULL
		                                  AND ID_CARGA = #{idCarga}) THEN 'enFecha'
		              WHEN TO_DATE(#{mes}, 'DD/MM/YYYY') BETWEEN tct.FECHA_INICIO AND tct.FECHA_FIN THEN 'disponible'
		              ELSE 'noEnFecha'
		          END AS ESTILO
		FROM 
		          DDA_C_FILIAL cf,
		          DDA_T_CONTRATO_DEAL_FILIAL tcdf,
		          DDA_T_CONTRATO tc,
		          DDA_T_CNT_TITULO tct,
		          DDA_C_CATEGORIA ct
		WHERE     cf.ID_EMPRESA = #{idEmpresa}
		AND       cf.ID_FILIAL = tcdf.ID_FILIAL
		AND       tc.ID_CONTRATO = tcdf.ID_CONTRATO
		AND       ct.ID_CATEGORIA = tct.ID_CATEGORIA
		AND       tc.ID_TIPO_CONTRATO = 2
		AND       tc.ID_CONTRATO = tct.ID_CONTRATO
		AND       tct.ID_BV IS NOT NULL
		ORDER BY  EN_FECHA, tct.NOMBRE_ESTANDAR
	</select>
	
	<resultMap id="enCargaNoValido" type="EnCargaNoValidoDTO">
		<result property="idBV"				column="ID_BV"/>
		<result property="nombreStandar"	column="NOMBRE_ESTANDAR"/>
		<result property="validos"			column="VALIDOS"/>
		<result property="estilo"			column="ESTILO"/>
		<result property="habilitado"		column="HABILITADO"/>
		<result property="idBVPrevio"		column="ID_BV_ANTERIOR"/>
	</resultMap>
	
	<select id="obtenerEnCargaNoValidos" resultMap="enCargaNoValido">
		SELECT 
		          DISTINCT ID_BV, 
		          NOMBRE_ESTANDAR,
		          CASE
		                WHEN ID_BV_DDA IS NULL THEN 2
		                ELSE 1
		          END AS VALIDOS,
              	  CASE
		                WHEN ID_BV_DDA IS NULL THEN 'disponible'
		                ELSE 'enFecha'
		          END AS ESTILO,
		          CASE
		                WHEN ID_BV_DDA IS NULL THEN 'seVeSiempre'
		                ELSE 'seVeOpcion'
		          END AS HABILITADO,
		          ID_BV AS ID_BV_ANTERIOR 
		FROM DDA_T_CARGA_TRANSACCION_TITULO
		WHERE ID_CARGA = #{idCarga}
		ORDER BY VALIDOS, NOMBRE_ESTANDAR
	</select>
	
	<resultMap id="cargaTransaccionesBasico" type="CargaTransaccionesBasicoDTO">
		<id property="idCarga"			column="ID_CARGA"/>
		<result property="idEmpresa"	column="ID_EMPRESA"/>
		<result property="tipoCarga"	column="TIPO_CARGA"/>
		<result property="mes"			column="MES"/>
	</resultMap>
	
	
	<insert id="crearRegistroCargaTransaccion" parameterType="CargaTransaccionesBasicoDTO" useGeneratedKeys="true" keyProperty="idCarga">
		
		<selectKey keyProperty="idCarga" resultType="long" order="BEFORE">
    	 		   select DDA_SQT_CARGA_TRANSACCION.nextVal from DUAL
  		</selectKey>
	
		INSERT INTO DDA_T_CARGA_TRANSACCION (ID_CARGA,ID_EMPRESA,TIPO_CARGA,MES) 
		VALUES (#{idCarga}, #{idEmpresa}, #{tipoCarga}, TO_DATE(#{mes}, 'DD/MM/YYYY'))
		
	</insert>
	
	<delete id="eliminarRegistroCargaTransaccion">
		DELETE FROM DDA_T_CARGA_TRANSACCION WHERE ID_CARGA = #{idCarga}
	</delete>
	
	<select id="consultarRegistroCargaTransaccion"  parameterType="CargaTransaccionesBasicoDTO" resultMap="cargaTransaccionesBasico">
			SELECT ID_CARGA, ID_EMPRESA, TIPO_CARGA, MES 
 		  	FROM DDA_T_CARGA_TRANSACCION 
 			WHERE MES = TO_DATE(#{mes}, 'DD/MM/YYYY') 
 			AND ID_EMPRESA = #{idEmpresa}
 			AND TIPO_CARGA = #{tipoCarga}
	</select>
	
	<resultMap id="cargaAsociacion" type="CargaAsociacionDTO">
		<id property="idAsociacion"			column="ID_ASOCIACION"/>
		<result property="idEmpresa"		column="ID_EMPRESA"/>
		<result property="nombreEstandar"	column="NOMBRE_ESTANDAR"/>
		<result property="idBvDda"			column="ID_BV_DDA"/>
	</resultMap>
	
	<select id="consultarAsoacicion" parameterType="CargaAsociacionDTO" resultMap="cargaAsociacion">
		SELECT ID_ASOCIACION, ID_EMPRESA, NOMBRE_ESTANDAR, ID_BV_DDA
		FROM DDA_T_ASOCIACION_TRANSACCION
		WHERE ID_EMPRESA = #{idEmpresa}
		AND NOMBRE_ESTANDAR = #{nombreEstandar}
		AND ID_BV_DDA = #{idBvDda}
	</select>
	
	
	
	<insert id="crearCargaAsocicion" parameterType="CargaAsociacionDTO" useGeneratedKeys="true" keyProperty="idAsociacion">
		
		<selectKey keyProperty="idAsociacion" resultType="long" order="BEFORE">
    	 		   select DDA_SQT_ASOCIACION_TRANSACCION.nextVal from DUAL
  		</selectKey>
	
		INSERT INTO DDA_T_ASOCIACION_TRANSACCION (ID_ASOCIACION, ID_EMPRESA, NOMBRE_ESTANDAR,ID_BV_DDA) 
		VALUES (#{idAsociacion}, #{idEmpresa}, #{nombreEstandar}, #{idBvDda})
		
	</insert>
	
	<update id="actulizaTituloCarga" parameterType="EnCargaNoValidoDTO">
		UPDATE DDA_T_CARGA_TRANSACCION_TITULO SET ID_BV = #{idBV}, ID_BV_DDA = #{idBV} 
		WHERE NOMBRE_ESTANDAR = #{nombreStandar}
	</update>
	 -->
	
	  
</mapper>