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

create FUNCTION [dbo].[CF_Percep_IIBB_Salta_TX](@pId_Trans INT) 
RETURNS CHAR(140)
AS
BEGIN

DECLARE @Retorno			CHAR(140)
/*Formato segun ticket 17499*/
DECLARE @aFecha				CHAR(8)		/*Formato: ddmmaaaa*/
DECLARE @aTipoCbte			CHAR(4)		/*Formato: Ver lista abajo*/
DECLARE @aNroCbte			CHAR(20)	/*Formato: Ceros a la izquierda*/
DECLARE @aNombre			CHAR(60)	/*Formato: Blancos a la derecha*/
DECLARE @aCUIT				CHAR(11)	/*Formato: 99999999999*/
DECLARE @aMonto				CHAR(16)	/*Formato: -999999999999.99 (no se aclara para este campo pero se supone que puede ser negativo sino no seria 16*/
DECLARE @aAlicuota			CHAR(5)		/*Formato: 99.99*/
DECLARE @aImporte			CHAR(16)	/*Formato: -999999999999.99 (Signo negativo a la izq en caso de indicar un Comprobante tipo Nota de Credito*/

DECLARE @Id_Tipo_Cbte		CHAR(4)
DECLARE @Fecha				DATETIME
DECLARE @Comprobante_Nro	INT
DECLARE @Destinatario		VARCHAR(100)
DECLARE @Compromete_Factura	SMALLINT
DECLARE @Letra				CHAR(1)
DECLARE @Id_Triburario		VARCHAR(4)
DECLARE @Cuit				VARCHAR(19)
DECLARE @Imp_Total			DECIMAL(12,2)
DECLARE @Importe			DECIMAL(13,2)
DECLARE @Porc				DECIMAL(7,4)
DECLARE @Id_Cliente			INT
/*Tipos de Comprobantes*/
/*
 * FA_A: Factura A
 * FA_B: Factura B
 * FA_C: Factura C
 * FA_P: Factura Publica
 * NC_A: Nota de Credito A
 * NC_B: Nota de Credito B
 * NC_C: Nota de Credito C
 * NC_P: Nota de Credito Publica
 * ND_A: Nota de Debito A
 * ND_B: Nota de Debito B
 * ND_C: Nota de Debito C
 * ND_P: Nota de Debito Publica
*/

SELECT	@Id_Tipo_Cbte		= ISNULL(Id_Tipo_Cbte, ''),
		@Fecha				= Fecha,
		@Comprobante_Nro	= ISNULL(Comprobante_Nro, 0),
		@Destinatario		= ISNULL(Destinatario, ''),
		@Id_Cliente			= ISNULL(Id_Cliente, 0),
		@Imp_Total			= ISNULL(Imp_Total, 0)
FROM Cbtes
WHERE
Id_Trans = @pId_Trans
AND Id_Estado_Cbte <> 3

SELECT	@Compromete_Factura = ISNULL(Compromete_Factura, 0),
		@Letra				= ISNULL(Letra, ''),
		@Id_Triburario		= ISNULL(Id_Tributario, '')
FROM Cbtes_Tipos
WHERE
Id_Tipo_Cbte = @Id_Tipo_Cbte

SET @Cuit = (SELECT ISNULL(Cuit, '') FROM Clientes WHERE Id_Cliente = @Id_Cliente)

SELECT	@Importe = ISNULL(CR.Importe, 0),
		@Porc = ISNULL(CR.Porc, 0)
FROM Cbtes_Reten CR, Cbtes_Reten_Tipos CRT
WHERE
CR.Id_Tipo_Reten = CRT.Id_Tipo_Reten
AND CR.Id_Trans = @pId_Trans
AND ISNULL(CRT.Tipo, '') = 'P'
AND ISNULL(CRT.Tipo_Imp, '') = 'B'
AND ISNULL(CR.Importe, 0) <> 0


IF(@Id_Tipo_Cbte = '' OR @Id_Triburario = '' OR @Importe = 0)
BEGIN
	SET @Retorno = '                                                                                                                                            '
	RETURN @Retorno
END

/*Tipo Cbte*/
IF(@Id_Triburario = '01')
	SET @aTipoCbte = 'FA_A'

IF(@Id_Triburario = '06')
	SET @aTipoCbte = 'FA_B'
	
IF(@Id_Triburario = '11')
	SET @aTipoCbte = 'FA_C'

IF(@Id_Triburario = '03')
	SET @aTipoCbte = 'NC_A'

IF(@Id_Triburario = '08')
	SET @aTipoCbte = 'NC_B'
	
IF(@Id_Triburario = '13')
	SET @aTipoCbte = 'NC_C'
	
IF(@Id_Triburario = '02')
	SET @aTipoCbte = 'ND_A'

IF(@Id_Triburario = '07')
	SET @aTipoCbte = 'ND_B'
	
IF(@Id_Triburario = '12')
	SET @aTipoCbte = 'ND_C'

--------------SE AGREGAN NUEVOS TIPOS DE CBTES--------------

IF(@Id_Triburario = '201')
	SET @aTipoCbte = 'FA_A'
		
IF(@Id_Triburario = '206')
	SET @aTipoCbte = 'FA_B'
	
IF(@Id_Triburario = '211')
	SET @aTipoCbte = 'FA_C'
	
IF(@Id_Triburario = '203')
	SET @aTipoCbte = 'NC_A'
	
IF(@Id_Triburario = '208')
	SET @aTipoCbte = 'NC_B'
	
IF(@Id_Triburario = '213')
	SET @aTipoCbte = 'NC_C'
	
IF(@Id_Triburario = '202')
	SET @aTipoCbte = 'ND_A'
	
IF(@Id_Triburario = '207')
	SET @aTipoCbte = 'ND_B'
	
IF(@Id_Triburario = '212')
	SET @aTipoCbte = 'ND_C'

/*FIN Tipo Cbte*/	

SET @aFecha = RIGHT('00' + CAST(DAY(@Fecha) AS VARCHAR),2) + RIGHT('00' + CAST(MONTH(@Fecha) AS VARCHAR),2) + CAST(DATEPART(YY, @Fecha) AS CHAR(4))

SET @aNroCbte	= RIGHT('00000000000000000000' + CAST(@Comprobante_Nro AS VARCHAR), 20)
SET @aNombre	= @Destinatario
SET @aCUIT		= @Cuit

IF(@aTipoCbte IN ('NC_A', 'NC_B', 'NC_C'))
BEGIN
	SET @aMonto		= '-' + RIGHT('000000000000000' + CAST(@Imp_Total AS VARCHAR), 15)
	SET @aImporte	= '-' + RIGHT('000000000000000' + CAST(@Importe AS VARCHAR), 15)
END
ELSE
BEGIN
	SET @aMonto		= RIGHT('0000000000000000' + CAST(@Imp_Total AS VARCHAR), 16)
	SET @aImporte	= RIGHT('0000000000000000' + CAST(@Importe AS VARCHAR), 16)
END

IF(@Porc >= 0.01)
BEGIN
	SET @aAlicuota = RIGHT('00000' + CAST(CONVERT(DECIMAL(7,2), @Porc) AS VARCHAR), 5)
END
ELSE
BEGIN
	SET @aAlicuota = '00.01'
END

SET @Retorno	=	@aFecha +
					@aTipoCbte +
					@aNroCbte +
					@aNombre +
					@aCUIT +
					@aMonto +
					@aAlicuota +
					@aImporte
					
RETURN ISNULL(@Retorno, '                                                                                                                                            ')
END
