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

CREATE FUNCTION [dbo].[CF_SCA_Id_Cliente]		(@pTipo_Validacion	CHAR(1),
											@pTag				VARCHAR(30),	/*Credencial MiFare / Wiegand*/
											@pDoc				BIGINT,			/*Documento*/
											@pHue				VARCHAR(5000),	/*Huella Dactilar*/
											@pCba				VARCHAR(20),	/*Codigo de Barra*/
											@pDma				VARCHAR(5000)	/*Data Matrix*/)
RETURNS INT
AS
BEGIN
DECLARE @Id_Cliente	INT

DECLARE @Evento VARCHAR(5)
DECLARE @Ticket VARCHAR(8)

IF(@pTipo_Validacion = 'T')
BEGIN
	SET @Id_Cliente = ISNULL((SELECT MAX(Id_Cliente) FROM Clientes WHERE Credencial_Nro = @pTag), 0)	
	RETURN @Id_Cliente
END

IF(@pTipo_Validacion = 'D')
BEGIN
	SET @Id_Cliente = ISNULL((SELECT MAX(Id_Cliente) FROM Clientes WHERE Doc_Nro = @pDoc), 0)	
	RETURN @Id_Cliente
END

IF(@pTipo_Validacion = 'H')
BEGIN
	SET @Id_Cliente = ISNULL((SELECT MAX(Id_Cliente) FROM Clientes_HD WHERE Huella = CONVERT(VARBINARY(2000), @pHue)), 0)	
	RETURN @Id_Cliente
END

IF(@pTipo_Validacion = 'B')
BEGIN

	SET @Evento = SUBSTRING(@pCba, 1, 4)
	SET @Ticket = SUBSTRING(@pCba, 8, 7)

	SET @Id_Cliente = ISNULL(	(SELECT CI.Id_Cliente 
								FROM Cbtes CB, Cbtes_Items CI, Cbtes_Tipos CT
								WHERE
								CB.Id_Trans = CI.Id_Trans
								AND CB.Id_Tipo_Cbte = CT.Id_Tipo_Cbte
								AND CT.Compromete_Pedido = 1
								AND CB.Id_Lista = @Evento
								AND CI.Lote = @Ticket)
							, 0)
	RETURN @Id_Cliente
END

IF(@pTipo_Validacion = 'M')
BEGIN
	SET @Id_Cliente = 0 /*No implementado*/	
	RETURN @Id_Cliente
END

RETURN ISNULL(@Id_Cliente, 0)

END