IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'[dbo].[CF_TarjetaDiners_TX]') 
                   and type = 'FN')
BEGIN
    DROP FUNCTION [dbo].[CF_TarjetaDiners_TX] 
END
GO

CREATE FUNCTION [dbo].[CF_TarjetaDiners_TX](@pId_Trans INT, @pImporte DECIMAL(12,2), @pId_Tar_Lote INT) 
RETURNS CHAR(128)
AS
BEGIN

/*Variable de Retorno*/
DECLARE @Retorno			CHAR(128)
/*FIN Variable de Retorno*/

/*Variables del Archivo*/
DECLARE @aNroComercio	CHAR(8)/*DESCRIPCI├ôN: N├║mero de Comercio Diners. POS: 1-8. LONG: 8. FORMATO: Num├®rico. OBS: */
DECLARE @Tipo_Registro	CHAR(1)/*DESCRIPCI├ôN: Tipo de Registro POS: 9-9. LONG: 1. FORMATO: Num├®rico. OBS:Indica que es un header valor 1*/
DECLARE @aTar_Nro		CHAR(16)/*DESCRIPCI├ôN: N├║mero de Tarjeta Diners. POS: 010-025. LONG: 16. FORMATO: Num├®rico. OBS: Completar con ceros a la izq el campo tar_nro contiene 14 digitos y se informan 16.*/
DECLARE @aId_Trans		CHAR(12)/*DESCRIPCI├ôN: Descripcion del Archivo para esta campo: Identificaci├│n del socio, PERO EN CLEVER NECESITAMOS EL ID_TRANS PARA PODER IDENTIFICAR LA TRANSACCI├ôN EN EL ARCHIVO DE RESPUESTA. POS: 26-37. LONG: 12. FORMATO: Num├®rico. OBS: N├║mero con el que la Empresa identifica a su cliente/socio.*/
DECLARE @Cuotas			CHAR(3)	/*DESCRIPCI├ôN: Adhesiones nuevas: indica la cuota a partir de la cual comienza el débito automático de las mismas. Se informa 1 (uno) o mayor solo cuando se desee informar el pago de mas de una cuota en el mismo periodo. Adhesiones existentes: indica la cantidad de cuotas que se cancelan. En caso de informarse ceros se cobrará el importe indicado en la novedad pero no se cancelarán cuotas. POS: 38-40. LONG: 3*/
DECLARE @PCuotas		CHAR(3)	/*DESCRIPCI├ôN: Es la cantidad de cuotas del plan al que pertenece la adhesión. Si se trata de un plan ilimitado de cuotas deberá informarse “999” POS:41-43. LONG: 3. FORMATO: Num├®rico*/
DECLARE @FrecuenciDB	CHAR(2)	/*DESCRIPCI├ôN:Indica la periodicidad de debitación de las cuotas. Valor: 01. POS: 44-45. LONG: 2. FORMATO:Num├®rico */
DECLARE @Importe		CHAR(11)/*DESCRIPCI├ôN: Importe del D├®bito. POS: 46-56. LONG: 11. FORMATO: Num├®rico. OBS: Formato: 9 enteros con 2 decimales, sin usar separador decimal.*/
DECLARE @Periodo		CHAR(5)	/*DESCRIPCI├ôN: Corresponde al periodo de la cuota. POS: 57-61. LONG: 5. FORMATO: Alfanum├®rico. OBS: Formato:MM/AA*/
DECLARE @FillerD		CHAR(1) /*DESCRIPCI├ôN: Se completara con espacios en blanco POS: 62-62. LONG: 1. FORMATO:Alfanum├®rico */
DECLARE @aFechaVtoPago	CHAR(6)	/*DESCRIPCI├ôN: Indicar fecha de vencimiento de la obligación de pago del débito automático que se está informando. Formato DDMMAA. POS: 63-68. LONG: 6. FORMATO: Num├®rico. OBS: Formato: DDMMAA.*/
DECLARE @Datos_Aux		CHAR(40)/*DESCRIPCI├ôN: Se informarán los datos auxiliares enviados por el comercio para la novedad.POS: 69-108. LONG: 40*/
DECLARE @FillerDB		CHAR(20)/*DESCRIPCI├ôN: Se completara con espacios en blanco POS: 109-128. LONG: 20. FORMATO:Alfanum├®rico */

/*FIN Variables del Archivo*/

/*Variables Intermedias*/
DECLARE @Tar_Nro				VARCHAR(22)
DECLARE @Fecha_Cbte				DATETIME
DECLARE @Anio_Periodo			VARCHAR(4)
DECLARE @Mes_Periodo			VARCHAR(2)
DECLARE @Fecha_Presentacion		DATETIME
DECLARE @Id_Tarjeta				VARCHAR(10)
DECLARE @Comercio_Nro			VARCHAR(50)
DECLARE @Item					INT
DECLARE @Cantidad				INT
DECLARE @Imp_Total				DECIMAL(12,2) --Importe de Val_Tarjeta_Lotes

/*FIN Variables Intermedias*/

/*=============================================================================*/

/*Calculos intermerdios*/
SELECT	@Fecha_Presentacion = ISNULL(Fecha_Presentacion, '19000101'),
		@Id_Tarjeta			= ISNULL(Id_Tarjeta, '')
FROM Val_Tarjetas_Lotes
WHERE
Id_Tar_Lote = @pId_Tar_Lote

SELECT	@Tar_Nro		= ISNULL(Nro, ''),
		@Item			= ISNULL(Item, 0)
FROM Val_Tarjetas_Lotes_Items 
WHERE
Id_Tar_Lote = @pId_Tar_Lote
AND Id_Trans = @pId_Trans

SELECT  @Fecha_Cbte		= ISNULL(Fecha, '19000101')
FROM Cbtes
WHERE 
Id_Trans = @pId_Trans

SET @Anio_Periodo = CAST(DATEPART(YY,@Fecha_Cbte) AS CHAR(4))
SET @Mes_Periodo = RIGHT('00' + CAST(MONTH(@Fecha_Cbte) AS VARCHAR),2)

SELECT @Comercio_Nro = ISNULL(Comercio_Nro, '')
FROM Valores_Tarjetas_Cred
WHERE
Id_Tarjeta = @Id_Tarjeta
/*FIN Calculos intermerdios*/

/*=============================================================================*/

/*Grabacion de los campos de la fila*/
SET @aNroComercio	= RIGHT('00000000' + CAST(@Comercio_Nro AS VARCHAR), 8)
SET @Tipo_Registro	= 2
SET @aTar_Nro		= RIGHT('0000000000000000000000' + @Tar_Nro, 16)
SET @aId_Trans		= RIGHT('000000000000' + CAST(@pId_Trans AS VARCHAR), 12)
--Hardcodeado
SET @Cuotas			= '001'
SET @PCuotas		= '999'
SET @FrecuenciDB	= '01'
--Fin Hardcodeado
SET @Importe		= RIGHT('00000000000' + CAST(CAST(@pImporte * 100 AS INT) AS VARCHAR), 11)
SET @Periodo		= RIGHT('00' + CAST(MONTH(@Fecha_Presentacion) AS VARCHAR),2)+ '/' + SUBSTRING(CAST(DATEPART(YY, @Fecha_Presentacion) AS CHAR(4)),3,2)
SET @FillerD		= ' '
SET @aFechaVtoPago	= RIGHT('00' + CAST(DAY(@Fecha_Presentacion) AS VARCHAR),2) + RIGHT('00' + CAST(MONTH(@Fecha_Presentacion) AS VARCHAR),2) + SUBSTRING(CAST(DATEPART(YY, @Fecha_Presentacion) AS CHAR(4)),3,2)
SET @Datos_Aux		='                                        '
SET @FillerDB		= '                    '

/*FIN Grabacion de los campos de la fila*/

/*=============================================================================*/

/*Grabaci├│n de la Fila Completa*/
SET @Retorno			=	@aNroComercio	+
							@Tipo_Registro	+
							@aTar_Nro		+
							@aId_Trans		+
							@Cuotas			+
							@PCuotas		+
							@FrecuenciDB	+
							@Importe		+
							@Periodo		+
							@FillerD		+
							@aFechaVtoPago	+
							@Datos_Aux		+
							@FillerDB		
/*FIN Grabaci├│n de la Fila Completa*/

RETURN ISNULL(@Retorno, '')
END
