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


CREATE FUNCTION [dbo].[CF_SCA_IdentifIdCliente](@pDato VARCHAR(100))
RETURNS INT
AS

BEGIN
DECLARE @Id_Cliente					INT
DECLARE @Doc_Nro					BIGINT
DECLARE @Flag_Tipo_DNI				TINYINT
DECLARE @Flag_Formato_Valido_Doc	INT
DECLARE @Doc_Escaneado				VARCHAR(20)

IF(ISNULL(@pDato, '') = '')
BEGIN
	SET @Id_Cliente = 0
	RETURN @Id_Cliente
END


IF(LEN(@pDato) = 8 AND dbo.CF_ISNUMERIC(@pDato) = 0)
BEGIN

    /* cmabio el 30/1/22   se saca el isnull del where  RTRIM(LTRIM(ISNULL(Credencial_Nro, ''))) sino no usa el indice  */
    SET @pDato = RTRIM(LTRIM(@pDato))
	/*Credencial de Socio*/
	SET @Id_Cliente = ISNULL(  (SELECT MAX(ISNULL(Id_Cliente, 0)) FROM Clientes WHERE Credencial_Nro = @pDato ), 0)

	IF(@Id_Cliente = 0)
	BEGIN
		/*Credencial de Abono*/
		SET @Id_Cliente = ISNULL((SELECT MAX(ISNULL(Id_Cliente, 0)) FROM Cbtes_Items WHERE Serie = @pDato), 0)
	END

	RETURN @Id_Cliente
END

IF(LEN(@pDato) < 10)
BEGIN
	SET @pDato = REPLACE(@pDato, '.', '')
	SET @pDato = REPLACE(@pDato, ',', '')

	IF(dbo.CF_ISNUMERIC(@pDato) = 1)
	BEGIN
		/*Nro. Documento*/
		SET @Id_Cliente = ISNULL((SELECT MAX(ISNULL(Id_Cliente, 0)) FROM Clientes WHERE Doc_Nro = CONVERT(BIGINT, RTRIM(LTRIM(@pDato)))), 0)
		RETURN @Id_Cliente
	END
	ELSE
	BEGIN
		SET @Id_Cliente = 0
		RETURN @Id_Cliente
	END
END

IF(LEN(@pDato) > 15)
BEGIN
	IF(ISNULL(dbo.SF_CortarCadena(@pDato, '"', 4), '') IN ('F', 'M') OR ISNULL(dbo.SF_CortarCadena(@pDato, '"', 9), '') IN ('F', 'M'))
	BEGIN
		IF(ISNULL(dbo.SF_CortarCadena(@pDato, '"', 4), '') IN ('F', 'M'))
		BEGIN
			SET @Flag_Tipo_DNI = 1 /*Formato Nuevo*/
		END
		ELSE
		BEGIN
			SET @Flag_Tipo_DNI = 2 /*Formato Viejo*/
		END
	END
	ELSE
	BEGIN
		/*Formato NO valido*/
		SET @Flag_Tipo_DNI = 0
	END

	/*Formato Nuevo*/
	IF(@Flag_Tipo_DNI = 1) 
	BEGIN
		SET @Doc_Escaneado				= (SELECT dbo.SF_CortarCadena(@pDato, '"', 5))
		SET @Doc_Escaneado				= REPLACE(@Doc_Escaneado, 'M', '')
		SET @Doc_Escaneado				= REPLACE(@Doc_Escaneado, 'F', '')
		SET @Flag_Formato_Valido_Doc	= (SELECT dbo.CF_ISNUMERIC(@Doc_Escaneado))

		IF(@Flag_Formato_Valido_Doc = 1)
		BEGIN
			SET @Doc_Nro					= @Doc_Escaneado
			SET @Id_Cliente					= (SELECT MAX(ISNULL(Id_Cliente, 0)) FROM Clientes WHERE Doc_Nro = @Doc_Nro)
		END
		ELSE
		BEGIN
			SET @Id_Cliente = 0
		END
	END

	/*Formato Viejo*/
	IF(@Flag_Tipo_DNI = 2) 
	BEGIN
		SET @Doc_Escaneado				= (SELECT dbo.SF_CortarCadena(@pDato, '"', 2))
		SET @Doc_Escaneado				= REPLACE(@Doc_Escaneado, 'M', '')
		SET @Doc_Escaneado				= REPLACE(@Doc_Escaneado, 'F', '')
		SET @Flag_Formato_Valido_Doc	= (SELECT dbo.CF_ISNUMERIC(@Doc_Escaneado))

		IF(@Flag_Formato_Valido_Doc = 1)
		BEGIN
			SET @Doc_Nro					= @Doc_Escaneado
			SET @Id_Cliente					= (SELECT MAX(ISNULL(Id_Cliente, 0)) FROM Clientes WHERE Doc_Nro = @Doc_Nro)
		END
		ELSE
		BEGIN
			SET @Id_Cliente = 0
		END
	END

	/*Formato NO valido*/
	IF(@Flag_Tipo_DNI = 0) 
	BEGIN
		SET @Id_Cliente = 0
	END

END


RETURN ISNULL(@Id_Cliente, 0)

END