dbo.api_padrones_pruebas

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

4
Name Data Type Length Description
@p_taxid varchar 500
@name varchar 500
@country_code varchar 2
@max_rows int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: AGB
-- Create date: 2023-06-21
-- Description: Búsqueda de Padrón completo
-- =============================================

/*

api_padrones '20134934864',null,'AR',30

exec api_padrones null,'VAZQUEZ ERNESTO','AR',50
exec api_padrones null,'VILLARROEL',NULL,10

exec api_padrones '22222222','"VILLARROEL"','AR',10

exec api_padrones '336165009','VILLARROEL DIEGO',NULL,10

exec api_padrones null,'SORIA MARIA INES','AR',10
exec api_padrones 'RUEDA FERNANDEZ ALMA PATRICIA',null,null,10

select top 2 * from padrones where identificador = 'CURP'



select * from padrones where identificacion = '336165009'
*/

/*
exec [api_padrones_pruebas] null, 'los grobo agropecuaria','AR',30
exec sp_separo_nombres 'los grobo agropecuaria'
exec [api_padrones] '27208925658',null,'AR',30
exec [api_padrones] '59144*',null,'AR',30

agropecuaria  grobo 

api_padrones '2047546', NULL, 'AR'

exec [api_padrones] '27254098669',null,'AR',30

select * from padrones where identificacion = '27254098669' or cuerpo_clave = '25409866'
exec [api_padrones] 'R',null,'AR',3
*/

CREATE OR ALTER PROCEDURE dbo.api_padrones_pruebas
@p_taxid varchar(500) = null,
@name varchar(500) = null,
@country_code varchar(2) = NULL,
@max_rows int = 30
AS

-- 15/08/2024: LO CAMBIAMOS ASI
BEGIN
 SET NOCOUNT ON;
 declare @busqueda varchar(100) = ''
 
 if (@country_code!='AR') set @country_code = null 

 select @p_taxid = ltrim(rtrim(@p_taxid))
 select @name = ltrim(rtrim(@name))
 
 IF (isnull(@p_taxid,'') != '') --> Prioriza busqueda por lo que viene en el campo taxid
  select @busqueda = @p_taxid 
 IF (isnull(@name,'') != '')
  select @busqueda = @name 

 select @busqueda =  REPLACE(@busqueda,'"','') -- Si hay comillas primero se las sacamos, porque despues se las vamos a agregar, con lo demas que se necesita
 
 if (isnumeric(@busqueda) != 1)
 begin
  if @busqueda not like '% %' and len(@busqueda) > 2 and @busqueda not like '%*' 
   -- Si es una sola palabra (no tiene espacios), es de mas de 2 digitos y no termina es *, se lo agregamos 
   select @busqueda = @busqueda + '*'
  if @busqueda not like '% near %'
  begin
   declare @nombres table (palabra varchar(20), id int identity)
   declare @palabra varchar(100) 
   insert into @nombres(palabra) exec sp_separo_nombres @busqueda
   select * from @nombres
   delete from @nombres where LEN(palabra) <= 3 
   select * from @nombres

   if (select COUNT(*) from @nombres) >= 1 
   begin
   set @busqueda = '' 

   DECLARE C_palabras CURSOR FOR
   select palabra
     from @nombres 
   order by id
    OPEN C_palabras
    FETCH NEXT FROM C_palabras INTO @palabra 
    WHILE @@fetch_status = 0
    BEGIN 
     if  @busqueda = ''
      set @busqueda = @palabra 
     else 
      set @busqueda = ltrim(rtrim(@busqueda)) + ' ' + LTRIM(rtrim(@palabra))
     FETCH NEXT FROM C_palabras INTO @palabra 
    END 
    CLOSE C_palabras
    DEALLOCATE C_Palabras 

    select @busqueda =  '"' + REPLACE(@busqueda,' ','" near "') + '"' 
    --> si solo viene un numero, no tiene espacios asi que solo le agrega las comillas, pero no hace el replace
    --> siempre manda como primer parametro lo que completaron en el buscador de padron, que a veces es el nombre 
   end 

  end 
 end 
 select @busqueda

 if(@country_code='AR') /* SOLO ARGENTINA */
 begin
  -- Para que en los casos que lo va a buscar en Afip, y lo da de alta en la BD
  -- Apenas lo damos de alta, no lo encuentra por fulltext, entonces lo buscamos por identificacion por las dudas....
  SELECT distinct top(@max_rows) PADRONES.id_padron, identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
  ,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,isnull(padrones.ismodified,'1901-01-01') as ismodified ,padrones.apellidos,padrones.nombres--, '1' as tipo_consulta
  from dbo.padrones
   inner join identificadores on identificadores.identificador = padrones.identificador
   left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F'  and visible = 1
   left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
   WHERE @p_taxid is not null and identificacion = @p_taxid and country_code in ('AR') and habilitado = 1
  union
  SELECT distinct top(@max_rows) PADRONES.id_padron, identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
  ,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,isnull(padrones.ismodified,'1901-01-01') as ismodified ,padrones.apellidos,padrones.nombres--, '2' as tipo_consulta
  from dbo.padrones
   inner join identificadores on identificadores.identificador = padrones.identificador
   left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F'  and visible = 1
   left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
/* WHERE CONTAINS((PADRONES.*),@busqueda)and country_code in ('AR') and habilitado = 1*/
   WHERE CONTAINS(padrones.*,@busqueda)and country_code in ('AR') and habilitado = 1
            RETURN

 end

    if(@country_code IS NULL) /*  EXCEPTO ARGENTINA */
 begin
  -- Para que en los casos que lo va a buscar en Afip y lo trae
  -- Apenas lo damos de alta, no lo encuentra por fulltext, entonces lo buscamos por identificacion por las dudas....

  SELECT distinct top(@max_rows) PADRONES.id_padron, identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
  ,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,isnull(padrones.ismodified,'1901-01-01') as ismodified ,padrones.apellidos,padrones.nombres--, '3' as tipo_consulta
  from dbo.padrones
   inner join identificadores on identificadores.identificador = padrones.identificador
   left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F'  and visible = 1
   left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
   WHERE @p_taxid is not null and identificacion = @p_taxid and country_code not in ('AR') and habilitado = 1
  union 
  SELECT distinct top(@max_rows) PADRONES.id_padron, identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
  ,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,isnull(padrones.ismodified,'1901-01-01') as ismodified ,padrones.apellidos,padrones.nombres--, '4' as tipo_consulta
  from dbo.padrones
   inner join identificadores on identificadores.identificador = padrones.identificador
   left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F'  and visible = 1
   left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
   WHERE CONTAINS((PADRONES.*),@busqueda) and country_code NOT in ('AR') and habilitado = 1
            RETURN

 end

END

 
/*
--- 15/08/2024: ANTES ERA ASI ---
BEGIN
SET NOCOUNT ON;
if (@country_code!='AR') set @country_code = null 

if(@p_taxid is not null and @country_code='AR') -- POR DNI O TAX ID SOLO ARGENTINA  
begin
if (len(@p_taxid)=11 and ISNUMERIC(@p_taxid)=1)
begin
SELECT distinct top(@max_rows) padrones.id_padron,  identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
identificadores.identificador as identificador,padrones.ismodified,padrones.apellidos,padrones.nombres, '0' as tipo_consulta
from dbo.padrones
 inner join identificadores on identificadores.identificador = padrones.identificador
 left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F' and visible = 1
 left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
WHERE identificacion =  @p_taxid
and country_code in ('AR') and habilitado = 1 order by padrones.id_padron desc
end
else 
begin
SELECT distinct top(@max_rows) padrones.id_padron,  identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
identificadores.identificador as identificador,padrones.ismodified,padrones.apellidos,padrones.nombres, '1' as tipo_consulta
from dbo.padrones
 inner join identificadores on identificadores.identificador = padrones.identificador
 left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F' and visible = 1
 left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
WHERE contains(padrones.*, @p_taxid)
and country_code in ('AR') and habilitado = 1 order by padrones.id_padron desc
end
        return
end


if(@p_taxid is not null and @country_code IS NULL) -- POR DNI O TAX ID EXCEPTO ARGENTINA 
begin

SELECT distinct top(@max_rows) padrones.id_padron,  identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,padrones.ismodified,padrones.apellidos,padrones.nombres, '2' as tipo_consulta
from dbo.padrones
 inner join identificadores on identificadores.identificador = padrones.identificador
 left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F' and visible = 1
 left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
WHERE contains(padrones.*, @p_taxid) and habilitado = 1 and country_code NOT in ('AR') 
        return
end

if(@p_taxid IS NULL and @country_code='AR') -- POR NOMBRE O RAZÓNSOCIAL SOLO ARGENTINA  
begin
        --SET @name = '"' + @name + '"'
if @name is not null and @name not like '% near %'
select @name =  '"' + REPLACE(@name,' ','" near "') + '"'

SELECT distinct top(@max_rows) PADRONES.id_padron, identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,padrones.ismodified ,padrones.apellidos,padrones.nombres, '3' as tipo_consulta
from dbo.padrones
 inner join identificadores on identificadores.identificador = padrones.identificador
 left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F'  and visible = 1
 left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
WHERE CONTAINS((PADRONES.*),@name) and country_code in ('AR') and habilitado = 1
            RETURN

end

    if(@p_taxid IS NULL and @country_code IS NULL) -- POR NOMBRE O RAZÓNSOCIAL EXCEPTO ARGENTINA  
begin

--SET @name = '"' + @name + '"'
if @name is not null and @name not like '% near %'
select @name =  '"' + REPLACE(@name,' ','" near "') + '"'

SELECT distinct top(@max_rows) PADRONES.id_padron, identificacion,nombre_persona,iif(tipo_persona='F','FISICA','JURIDICA') AS tipo_persona,sexo
,c02_fecha_nac as fecha_nacimiento,fecha_defuncion,cuerpo_clave,prv_nombre as provincia,loc_nombre as localidad,identificadores.country_code,
        identificadores.identificador as identificador,padrones.ismodified ,padrones.apellidos,padrones.nombres--, '4' as tipo_consulta
from dbo.padrones
 inner join identificadores on identificadores.identificador = padrones.identificador
 left join  domicilios_todos on domicilios_todos.cuit = padrones.identificacion and tipo_domicilio = 'F'  and visible = 1
 left join datos_personas on datos_personas.c01_cuit = padrones.identificacion
WHERE CONTAINS(PADRONES.*,@name) and country_code NOT in ('AR') and habilitado = 1
            RETURN

end

END
--- 15/08/2024: ANTES ERA ASI ---
*/

GO

Used By

No items found