<?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.admin.catalogos.transacciones.daos.TransaccionesDAO">

	<resultMap id="excepciones" type="ExcepcionesTransDTO">
		<id property="idExcepcion" 		column="ID_EXCEPCION" />
		<result property="estudio" 		column="NOMBRE" />
		<result property="titulo" 		column="NOMBRE_TITULO" />
		<result property="revenueShare" column="REVENUE_SHARE" />
		<result property="fechaInicio" 	column="FECHA_INICIO" />
		<result property="fechaFin" 	column="FECHA_FIN" />
	</resultMap>
	
	<resultMap id="categorias" type="CategoriasDTO">	
		<id property="idCategoria" 		column="ID_CATEGORIA" />
		<result property="nombre" 		column="NOMBRE" />
	</resultMap>
	
	<resultMap id="configuraciones" type="ConfiguracionesDTO">	
		<id property="id" 		column="ID" />
		<result property="valor" 		column="VALOR" />
		<result property="tipo" 		column="TIPO" />
	</resultMap>
	
	<resultMap id="estudios" type="EstudiosTransDTO">
		<id property="idEstudio" 		column="ID_ESTUDIO" />
		<result property="nombre" 		column="NOMBRE" />
		<result property="revenueShare" column="REVENUE_SHARE" />
	</resultMap>
	
	<resultMap id="reporteGral" type="ReporteGeneralDTO">
		<id property="pais" 			column="PAIS" />
		<result property="titulo" 		column="TITULO" />
		<result property="precio" 		column="PRECIO" />
		<result property="precioNeto"	column="PRECIO_NETO" />
		<result property="cantidad" 	column="CANTIDAD" />
		<result property="precioTotal" 	column="PRECIO_TOTAL" />
		<result property="precioUsd" 	column="PRECIO_USD" />
		<result property="precioUsdRv" 	column="PRECIO_USD_RV" />
	</resultMap>
	

	<select id="getExcepciones" resultMap="excepciones">
		SELECT ID_EXCEPCION, ET.NOMBRE, NOMBRE_TITULO, E.REVENUE_SHARE, TO_CHAR(FECHA_INICIO, 'yyyy/mm/dd') AS FECHA_INICIO, 
		TO_CHAR(FECHA_FIN, 'yyyy/mm/dd') AS FECHA_FIN 
		FROM DDA_C_EXCEPCIONES E INNER JOIN DDA_C_ESTUDIO_TRANS ET ON E.ID_ESTUDIO_TRANS = ET.ID_ESTUDIO WHERE E.BORRADO = 1
	</select>
	
	<select id="getExcepcionesById" resultMap="excepciones">
		SELECT ID_EXCEPCION, ID_ESTUDIO_TRANS AS NOMBRE, NOMBRE_TITULO, E.REVENUE_SHARE, TO_CHAR(FECHA_INICIO, 'yyyy/mm/dd') AS FECHA_INICIO, 
		TO_CHAR(FECHA_FIN, 'yyyy/mm/dd') AS FECHA_FIN 
		FROM DDA_C_EXCEPCIONES E INNER JOIN DDA_C_ESTUDIO_TRANS ET ON E.ID_ESTUDIO_TRANS = ET.ID_ESTUDIO
		WHERE ID_EXCEPCION = #{idExcepcion}
	</select>
	
	<select id="reporteGeneral" resultMap="reporteGral">
		SELECT PAIS, TITULO, PRECIO, ROUND(PRECIO_NETO,4), CANTIDAD, ROUND((PRECIO_NETO * CANTIDAD),4) AS PRECIO_TOTAL, 
		ROUND((PRECIO_NETO * CANTIDAD)/TIPO_CAMBIO,4) AS PRECIO_USD, ROUND(((PRECIO_NETO * CANTIDAD)/TIPO_CAMBIO) * (REVENUE_SHARE/100),4) AS PRECIO_USD_RV, ESTUDIO 
		FROM DDA_T_REPORTE_GENERAL_TRANS WHERE EXTRACT(MONTH FROM MES) = #{mes} AND EXTRACT(YEAR FROM MES) = #{anio} AND ESTUDIO = #{estudio} 
	</select>
	
	<select id="getCategorias" resultMap="categorias">
		SELECT ID_CATEGORIA, NOMBRE FROM DDA_C_CATEGORIAS WHERE BORRADO = 1
	</select>
	
	<select id="getCategoriaById" resultMap="categorias">
		SELECT ID_CATEGORIA, NOMBRE FROM DDA_C_CATEGORIAS WHERE ID_CATEGORIA = #{idCategoria}
	</select>
	
	<select id="getEstudiosTrans" resultMap="estudios">
		SELECT ID_ESTUDIO, NOMBRE, REVENUE_SHARE FROM DDA_C_ESTUDIO_TRANS WHERE BORRADO = 1
	</select>
	
	<select id="getEstudioTransById" resultMap="estudios">
		SELECT ID_ESTUDIO, NOMBRE, REVENUE_SHARE FROM DDA_C_ESTUDIO_TRANS WHERE ID_ESTUDIO = #{idEstudio}
	</select>
	
	<select id="validaExcepcionExistente" resultMap="excepciones" parameterType="ExcepcionesTransDTO">
		SELECT ID_EXCEPCION, ID_ESTUDIO_TRANS, NOMBRE_TITULO, REVENUE_SHARE, FECHA_INICIO, FECHA_FIN 
		FROM DDA_C_EXCEPCIONES WHERE ID_ESTUDIO_TRANS = #{estudio} AND NOMBRE_TITULO =#{titulo}
		AND EXTRACT(MONTH FROM FECHA_INICIO) = EXTRACT(MONTH FROM TO_DATE(#{fechaInicio},'yyyy-mm-dd'))
		AND EXTRACT(YEAR FROM FECHA_INICIO) = EXTRACT(YEAR FROM TO_DATE(#{fechaInicio},'yyyy-mm-dd'))
	</select>
	
	<select id="validaMesCerrado" resultMap="configuraciones" parameterType="ExcepcionesTransDTO">
		SELECT ID, VALOR, TIPO FROM DDA_CONFIGURATION WHERE TIPO = 'FECHA_CIERRE_TRANS' 
		AND EXTRACT(MONTH FROM TO_DATE(VALOR,'yyyy-mm-dd')) = EXTRACT(MONTH FROM TO_DATE(#{fechaInicio},'yyyy-mm-dd'))
		AND EXTRACT(YEAR FROM TO_DATE(VALOR,'yyyy-mm-dd')) = EXTRACT(YEAR FROM TO_DATE(#{fechaInicio},'yyyy-mm-dd'))
	</select>
	
	<insert id="agregarExcepcion" parameterType="ExcepcionesTransDTO"> 	
		INSERT INTO DDA_C_EXCEPCIONES (ID_EXCEPCION, ID_ESTUDIO_TRANS, NOMBRE_TITULO, REVENUE_SHARE, FECHA_INICIO, FECHA_FIN) 
		VALUES(DDA_SQC_TRANSACCIONES.NEXTVAL, #{estudio}, #{titulo}, #{revenueShare}, TO_DATE(#{fechaInicio},'yyyy-mm-dd'), TO_DATE(#{fechaFin},'yyyy-mm-dd'))
  	</insert>
  	
  	<insert id="agregarCategoria" parameterType="CategoriasDTO"> 	
		INSERT INTO DDA_C_CATEGORIAS (ID_CATEGORIA, NOMBRE) VALUES(DDA_SQC_TRANSACCIONES.NEXTVAL, #{nombre})
  	</insert>
  	
  	<insert id="agregarEstudioTrans" parameterType="EstudiosTransDTO"> 	
		INSERT INTO DDA_C_ESTUDIO_TRANS (ID_ESTUDIO, NOMBRE, REVENUE_SHARE) VALUES(DDA_SQC_TRANSACCIONES.NEXTVAL, #{nombre},#{revenueShare})
  	</insert>

	<update id="eliminarExcepcion" parameterType="ExcepcionesTransDTO">
		UPDATE DDA_C_EXCEPCIONES SET BORRADO = #{borrado}, FECHA_L_UPDATE = SYSDATE WHERE ID_EXCEPCION = #{idExcepcion}
  	</update>
  	
  	<update id="eliminarCategoria" parameterType="CatalogoAddOnDTO">
		UPDATE DDA_C_CATEGORIAS SET BORRADO = #{borrado}, FECHA_L_UPDATE = SYSDATE WHERE ID_CATEGORIA = #{idCategoria}
  	</update>
  	
  	<update id="eliminarEstudio" parameterType="EstudiosTransDTO">
		UPDATE DDA_C_ESTUDIO_TRANS SET BORRADO = #{borrado} WHERE ID_ESTUDIO = #{idEstudio}
  	</update>
  	
  	<update id="eliminarEstudioByName" parameterType="EstudiosTransDTO">
		UPDATE DDA_C_ESTUDIO_TRANS SET BORRADO = #{borrado} WHERE NOMBRE = #{nombre}
  	</update>
  	
  	<update id="updateCategoria" parameterType="CatalogoAddOnDTO">
		UPDATE DDA_C_CATEGORIAS SET NOMBRE = #{nombre}, FECHA_L_UPDATE = SYSDATE WHERE ID_CATEGORIA = #{idCategoria}
  	</update>
  	
  	<update id="updateEstudioTrans" parameterType="EstudiosTransDTO">
		UPDATE DDA_C_ESTUDIO_TRANS SET NOMBRE = #{nombre}, REVENUE_SHARE = #{revenueShare}, FECHA_L_UPDATE = SYSDATE WHERE ID_ESTUDIO = #{idEstudio}
  	</update>
  	
  	<update id="updateExcepcion" parameterType="ExcepcionesTransDTO">
		UPDATE DDA_C_EXCEPCIONES SET ID_ESTUDIO_TRANS = #{estudio}, NOMBRE_TITULO = #{titulo}, REVENUE_SHARE = #{revenueShare}, FECHA_INICIO = TO_DATE(#{fechaInicio},'yyyy-mm-dd'), 
		FECHA_FIN = TO_DATE(#{fechaFin},'yyyy-mm-dd'), FECHA_L_UPDATE = SYSDATE WHERE ID_EXCEPCION = #{idExcepcion}
  	</update>
  	
  	<update id="cerrarReporte">
  		INSERT INTO DDA_CONFIGURATION (ID, VALOR, TIPO) VALUES(DDA_SQC_TRANSACCIONES.NEXTVAL, #{valor}, #{tipo})
  	</update>
  	
  	<update id="reabrirReporte">
  		<selectKey keyProperty="id" resultType="long" order="BEFORE">
			SELECT MAX(ID) FROM DDA_CONFIGURATION WHERE TIPO = 'FECHA_CIERRE_TRANS'
			AND EXTRACT(MONTH FROM TO_DATE(VALOR,'yyyy-mm-dd')) = #{mes}
			AND EXTRACT(YEAR FROM TO_DATE(VALOR,'yyyy-mm-dd')) = #{anio}
		</selectKey>
  		DELETE FROM DDA_CONFIGURATION WHERE ID=#{id}
  	</update>
  	
</mapper>
