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

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

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

/*Variables del Archivo*/
DECLARE @aTipo_Reg		CHAR(1)  /*DESCRIPCION: Tipo de registro Valor="2". POS:01-01 - Longitud(1)*/
DECLARE @aTransaccion	CHAR(4)  /*DESCRIPCION: Código de Transacción de la entidad por defecto: Orden de débito el valor="3700". POS:02-05 - Longitud(4)*/	
DECLARE @aCBU				CHAR(8)  /*DESCRIPCION: Bloque 1 de CBU. POS:06-13 - Longitud(8) */
DECLARE @aCBU_2			CHAR(14) /*DESCRIPCION: Bloque 2 de CBU. POS:14-27 - Longitud(24)*/
DECLARE @aId_Cliente		CHAR(22) /*DESCRIPCION: Identificador del cliente pasamos Id_cliente. POS:28-49 - Longitud(22) */
DECLARE @aImporte			CHAR(10) /*DESCRIPCION: Importe del Débito. POS:50-59 - Longitud(10). OBS: Formato: 8 enteros con 2 decimales, sin usar separador decimal. */
DECLARE @aId_Trans			CHAR(15) /*DESCRIPCION: Referencia únivoca del Debito.Id_Trans. POS:60-74 - Longitud(15)*/
DECLARE @aFechaVenc		CHAR(8)   /*DESCRIPCION: Fecha de Vencimiento.Se completa con cero si no viene explícita. POS:75-82 - Longitud(8)*/
DECLARE @aFiller				CHAR(18) /*DESCRIPCION: Libre. POS: 83-100. Longitud(18). FORMATO: Alfanumérico. OBS: Completar con espacios.*/

/*FIN Variables del Archivo*/

/*Variables Intermedias*/
DECLARE @Tar_Nro						VARCHAR(22)
DECLARE @Fecha_Cbte					DATETIME
DECLARE @Fecha_Venc					DATETIME
DECLARE @Anio_Periodo					VARCHAR(4)
DECLARE @Mes_Periodo					VARCHAR(2)
DECLARE @Id_Tarjeta					VARCHAR(10)
DECLARE @Item								INT
DECLARE @Id_Cliente						INT
/*FIN Variables Intermedias*/

/*Calculos intermerdios*/

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


SELECT  @Fecha_Cbte		= ISNULL(Fecha, '19000101'),
			 @Fecha_Venc		= ISNULL(Fecha_Venc, '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)

/*FIN Calculos intermerdios*/

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

/*Grabacion de los campos de la fila*/

SET @aTipo_Reg		= '2'
SET @aTransaccion	=	'3700'
SET @aCBU				= RIGHT('00000000' + SUBSTRING(@Tar_Nro ,1,8),8) 
SET @aCBU_2			= RIGHT('00000000000000' + SUBSTRING(@Tar_Nro,10,22),14)
SET @aId_Cliente		= RIGHT('0000000000000000000000' + CAST(@Id_Cliente  AS VARCHAR), 22)
SET @aImporte		    = RIGHT('0000000000' + CAST(CAST(@pImporte * 100 AS INT) AS VARCHAR), 10)
SET @aId_Trans		= RIGHT('000000000000000' + CAST(@pId_Trans AS VARCHAR), 15)
SET @aFechaVenc		= CAST(DATEPART(YY, @Fecha_Venc) AS CHAR(4))  +  RIGHT('00' + CAST(MONTH(@Fecha_Venc) AS VARCHAR),2) + RIGHT('00' + CAST(DAY(@Fecha_Venc) AS VARCHAR),2)
SET @aFiller				=  '                  ' 

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

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

/*Grabación de la Fila Completa*/
SET @Retorno			=	@aTipo_Reg	+
									@aTransaccion	+
									@aCBU	+
									@aCBU_2	+
									@aId_Cliente	 +
									@aImporte +
									@aId_Trans	+
									@aFechaVenc +
									@aFiller				
									
/*FIN Grabación de la Fila Completa*/

RETURN ISNULL(@Retorno, '')
END
