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

CREATE FUNCTION [dbo].[CF_Banco_OCA_UY_TX](@pId_Trans INT, @pImporte DECIMAL(12,2), @pId_Tar_Lote INT, @pPeriodo DATETIME) 
RETURNS CHAR(106)
AS
BEGIN

/*Variables Archivo*/
DECLARE @Retorno					CHAR(106)
DECLARE @aNro_Socio_Institucion		CHAR(50)		/*Formato: Alfanumerico (50).	Desde: 001. Hasta: 050. Nota: Nro de Socio de la Institucion.*/
DECLARE @aDoc_Nro_Titular			CHAR(7)			/*Formato: Alfanumerico (7).	Desde: 051. Hasta: 057. Nota: Cedula del Tarjeta Habiente*/
DECLARE @aMoneda					CHAR(3)			/*Formato: Numerico (3).		Desde: 058. Hasta: 060. Nota: Moneda $: 858, U$S: 840.*/
DECLARE @aImporte					CHAR(7)			/*Formato: Numerico (5,2).		Desde: 061. Hasta: 067. Nota: Monto correspondiente al valor del débito automático cobrado o del cupón crédito devuelto por el Establecimiento al usuario, se encuentra formado por una parte entera y otra decimal. El monto no incluye punto ni coma decimal, como tampoco signo; simplemente deberá informarse alineado a la derecha, con ceros a la izquierda.*/
DECLARE @aAplicaDevolucionIVA		CHAR(1)			/*Formato: Numerico (1).		Desde: 068.	Hasta: 068	Nota: No aplica=0, Aplica Dev. Iva Ley 19210=6*/
DECLARE @aNumeroFactura				CHAR(20)		/*Formato: Alfanumerico(20)		Desde: 069.	Hasta: 088	Nota: Numero de Factura*/
DECLARE @ImporteGravado				CHAR(9)			/*Formato: Numerico (7,2).		Desde: 089. Hasta: 097. Nota: Importe Gravado Sin IVA, se encuentra formado por una parte entera y otra decimal. El monto no incluye punto ni coma decimal, como tampoco signo; simplemente deberá informarse alineado a la derecha, con ceros a la izquierda.*/
DECLARE @ImporteRetenido			CHAR(9)			/*Formato: Numerico (7,2).		Desde: 098. Hasta: 106. Nota: Importe Retenido, se encuentra formado por una parte entera y otra decimal. El monto no incluye punto ni coma decimal, como tampoco signo; simplemente deberá informarse alineado a la derecha, con ceros a la izquierda.*/
/*FIN Variables Archivo*/

/*Variable Locales*/
DECLARE @Id_Tarjeta				VARCHAR(10)
DECLARE @Fecha_Presentacion		DATETIME
DECLARE @Comercio_Nro			VARCHAR(50)
DECLARE @Tar_Nro				VARCHAR(22)
DECLARE @Id_Contrato			INT
DECLARE @Tar_Fecha_Vence		DATETIME
DECLARE @Fecha_Cbte				DATETIME
DECLARE @Mes_Periodo			SMALLINT
DECLARE @Mes_Periodo_VC			VARCHAR(3)
DECLARE @Id_Cliente				INT
DECLARE @Id_Cliente_Externo		INT
DECLARE @Comprobante_Nro		INT
DECLARE @Id_Cliente_Ref			INT
DECLARE @Doc_Nro				BIGINT
DECLARE @Doc_Nro_Titular		BIGINT
/*FIN Variable Locales*/

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

/*Seteo Variables Locales*/
SELECT	
@Id_Tarjeta				= ISNULL(Id_Tarjeta, ''),
@Fecha_Presentacion		= ISNULL(Fecha_Presentacion, '19000101')
FROM Val_Tarjetas_Lotes
WHERE
Id_Tar_Lote = @pId_Tar_Lote

SELECT
@Comercio_Nro			= ISNULL(Comercio_Nro, '')
FROM Valores_Tarjetas_Cred
WHERE
ISNULL(Id_Tarjeta, '') = @Id_Tarjeta

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


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

SELECT 
@Id_Cliente_Externo		= ISNULL(Id_Cliente_Externo, Id_Cliente),
@Id_Cliente_Ref			= ISNULL(Id_Cliente_Ref, 0),
@Doc_Nro				= ISNULL(Doc_Nro, 0)
FROM Clientes
WHERE
Id_Cliente = @Id_Cliente

SELECT
@Doc_Nro_Titular		= ISNULL(Doc_Nro, 0)
FROM Clientes
WHERE
Id_Cliente = @Id_Cliente_Ref

SELECT
@Tar_Fecha_Vence		= ISNULL(Tar_Fecha_Vence, DATEADD(YEAR, 1, GETDATE()))
FROM Contratos
WHERE
Id_Contrato = @Id_Contrato

SET @Mes_Periodo = DATEPART(MONTH, @pPeriodo)

SELECT
@Mes_Periodo_VC =	CASE @Mes_Periodo
						WHEN 1	THEN 'ENE'
						WHEN 2	THEN 'FEB'
						WHEN 3	THEN 'MAR'
						WHEN 4	THEN 'ABR'
						WHEN 5	THEN 'MAY'
						WHEN 6	THEN 'JUN'
						WHEN 7	THEN 'JUL'
						WHEN 8	THEN 'AGO'
						WHEN 9	THEN 'SEP'
						WHEN 10 THEN 'OCT'
						WHEN 11 THEN 'NOV'
						WHEN 12 THEN 'DIC'
					END


/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

SET @aNro_Socio_Institucion		= (RIGHT('                                                  ' + CAST(@Id_Cliente_Externo AS VARCHAR), 50))

SET @aDoc_Nro_Titular			= (RIGHT('0000000' + @Tar_Nro, 7))

SET @aMoneda					= '858' /*Pesos Uruguayos*/

SET @aImporte					= RIGHT('0000000' + CAST(CAST(@pImporte * 100 AS INT) AS VARCHAR), 7)

SET @aAplicaDevolucionIVA		= '0'

SET @aNumeroFactura				= (RIGHT('                    ' + CAST(@pId_Trans AS VARCHAR), 20))

SET @ImporteGravado				= '000000000'

SET @ImporteRetenido			= '000000000'

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

SET @Retorno =	@aNro_Socio_Institucion +
				@aDoc_Nro_Titular +
				@aMoneda +
				@aImporte +
				@aAplicaDevolucionIVA +
				@aNumeroFactura + 
				@ImporteGravado +
				@ImporteRetenido

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

RETURN ISNULL(@Retorno, '                                                                    ')
END