Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
2| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_cuit | varchar | 20 | |
| @p_userid | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
select * from domicilios_todos where cuit = '20225157937' and tipo_domicilio = 'E'
exec [actualizar_datos_con_padron] '20288662682'
select * from domicilios_todos where cuit = '20225157937' and tipo_domicilio = 'E'
select * from padron_electoral where documento = '22515793'
*/
CREATE OR ALTER PROCEDURE dbo.actualizar_datos_con_padron
@p_cuit varchar(20),
@p_userid int = 0
AS
BEGIN
SET NOCOUNT ON;
-- CHANCHADA: AGB - 5/2/2024 Porque es un tax-id extranjero y no queremos que lo pise con los datos de la persona que tiene ese CUIT en argentina
if @p_cuit = '20501961869' return
/*
declare @documento varchar(20),
@apellidos varchar(200),
@nombres varchar(200),
@codigo_provincia int,
@direccion varchar(150),
@comuna varchar(10),
@circuito_electoral varchar(10),
@mesa int,
@identificacion varchar(20),
@nombre varchar(200),
@dni varchar(10),
@anio int,
@cant int,
@id_padron int,
@localidad varchar(100),
@provincia varchar(100),
@cod_provincia varchar(2),
@cp varchar(50),
@respuesta varchar(10) = 'no',
@id_ele int
DECLARE @domicilio varchar(150),
@pai varchar(100),
@prv varchar(100),
@prv_codigo varchar(2),
@loc varchar(150),
@codpos varchar(10),
@id int,
@resp bit,
@domicilio_esta char(1)
DECLARE C_padron CURSOR FOR
select id_padron,
nombre_persona,
cuerpo_clave
from padrones
where identificacion = @p_cuit
and habilitado = 1
and tipo_persona = 'F' -- Solo lo hace para personas físicas.
OPEN C_Padron
FETCH NEXT FROM C_Padron INTO @id_padron, @nombre, @dni
WHILE @@fetch_status = 0
BEGIN
--
-- select 'Padrones', @id_padron, @nombre, @dni
--
DECLARE ProdInfo CURSOR FOR
select documento, apellidos, nombres, provincia, ltrim(rtrim(direccion)) direccion, comuna, circuito_electoral, mesa, anio_nacimiento, id_electoral
from padron_electoral
where documento = @dni
and @nombre like '%'+apellidos+'%'
and procesado is null
-- Si procesado = 1 ya paso por acá.
OPEN ProdInfo
FETCH NEXT FROM ProdInfo INTO @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio, @id_ele
WHILE @@fetch_status = 0
BEGIN
--
-- select 'Padron_Electoral', @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio
--
-- En padrones actualizo los campos apellidos, nombres si alguno esta vacio
if (isnull(@apellidos,'') != '' AND isnull(@nombres,'') != '')
begin
update padrones
set apellidos = @apellidos, nombres = @nombres
where id_padron = @id_padron
and (isnull(apellidos,'') = '' or isnull(nombres,'') = '')
end
--En la tabla datos_personas, actualizo el año de nacimiento
if (isnull(@anio,0) > 0)
begin
set @respuesta = 'ok'
if ((select count(*)
from datos_personas
where c01_cuit = @p_cuit) = 0)
begin
insert into datos_personas (c01_cuit, c02_anio_nac, created, created_by)
values (@p_cuit, @anio, getdate(), @p_userid)
end
else
begin
if ((select isnull(c02_anio_nac,'0') from datos_personas where c01_cuit = @p_cuit) != @anio)
begin
update datos_personas
set c02_anio_nac = @anio, modified = getdate()
--, modified_by = @p_userid
where c01_cuit = @p_cuit
end
end
end
-- En domicilios_todos guardo la dirección del padron electoral, si no tengo un registro con esa dirección
set @provincia = null
set @localidad = null
set @cp = null
set @cod_provincia = null
select @provincia = UPPER(prv_nombre),
@cod_provincia = codigo_afip
from provincias
where codigo_electoral = convert(int,@codigo_provincia)
and (country_code = 'AR'or pai_codigo_ifx = 54)
if (@cod_provincia = '0')
begin
set @localidad = null
end
else
begin
select @localidad = UPPER(localidad),
@cp = cp
from padron_electoral_relacion
where convert(int,distrito) = @codigo_provincia
and right('000'+padron_electoral_relacion.SECCION,3) = right('000'+@comuna,3)
and upper(right('00000'+CIRCUITO,5)) = upper(right('00000'+@circuito_electoral,5))
and @mesa between MESADESDE and MESAHASTA
and visible = 1
end
if (isnull(@direccion,'') != '' and isnull(@provincia, '') != '')
begin
declare wc cursor for
select replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
prv_codigo,
loc_nombre,
replace(codpos,'.','') as codpos,
id_domicilio as id
from domicilios_todos
where cuit = @p_cuit
and tipo_domicilio = 'E'
and visible = 1
open wc
set @domicilio_esta = 'N'
Fetch next from wc INTO @domicilio, @pai, @prv, @prv_codigo, @loc, @codpos, @id
WHILE @@fetch_status = 0
BEGIN
exec @resp = [sp_comparo_domicilios] @domicilio -- el de domicilios_todos
, @direccion -- el de padron
if (@resp = 1) -- son iguales, veo si el de padrón está mejor.
-- Si es así corrige el de domicilios_todos
begin
set @pai = 'ARGENTINA'
set @prv = @provincia
set @prv_codigo = @cod_provincia
if (len(@direccion) > len(@domicilio) or @domicilio is null)
set @domicilio = @direccion
if (len(@localidad) > len(@loc) or @loc is null)
set @loc = @localidad
if ((select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = null
if (@cp is not null)
begin
if ((select isnumeric(@cp)) = 1 and len(@cp) > 4)
set @cp = null
if (len(@cp) > len(@codpos) or @codpos is null)
set @codpos = @cp
end
if (@prv = 'CIUDAD DE BUENOS AIRES' or
@prv = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
@prv = 'CIUDAD AUTONOMA BUENOS AIRES' or
@prv = 'C.A.B.A.' or
@prv = 'CAPITAL FEDERAL' or
@prv = 'CABA' or
@prv_codigo = '0')
begin
set @loc = null
end
if (rtrim(ltrim(@loc)) = '') set @loc = null
if (rtrim(ltrim(@prv)) = '') set @prv = null
if (rtrim(ltrim(@pai)) = '') set @pai = null
set @domicilio_esta = 'S'
update domicilios_todos
set domicilio = @domicilio,
pai_nombre = @pai,
pai_codigo = 54,
loc_nombre = @loc,
prv_codigo = @prv_codigo,
prv_nombre = @prv,
codpos = @codpos,
created = getdate()
where id_domicilio = @id
end
Fetch next from wc INTO @domicilio, @pai, @prv, @prv_codigo, @loc, @codpos, @id
END
CLOSE wc
DEALLOCATE wc
if (@domicilio_esta = 'N')
begin
insert into domicilios_todos (cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,tipo_domicilio,created,created_by)
values (@p_cuit, UPPER(@direccion), '54','ARGENTINA', @prv_codigo, @provincia, @localidad, @cp,'E', GETDATE(), @p_userid)
end
end
update padron_electoral set procesado = 1 where id_electoral = @id_ele
FETCH NEXT FROM ProdInfo INTO @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio, @id_ele
END
CLOSE ProdInfo
DEALLOCATE ProdInfo
FETCH NEXT FROM C_Padron INTO @id_padron, @nombre, @dni
END
CLOSE C_Padron
DEALLOCATE C_Padron
select @respuesta as respuesta -- Si la respuesta es OK, es que encontro año de nacimiento */
END
GO
GO
/*
select * from domicilios_todos where cuit = '20225157937' and tipo_domicilio = 'E'
exec [actualizar_datos_con_padron] '20288662682'
select * from domicilios_todos where cuit = '20225157937' and tipo_domicilio = 'E'
select * from padron_electoral where documento = '22515793'
*/
CREATE OR ALTER PROCEDURE dbo.actualizar_datos_con_padron
@p_cuit varchar(20),
@p_userid int = 0
AS
BEGIN
SET NOCOUNT ON;
-- CHANCHADA: AGB - 5/2/2024 Porque es un tax-id extranjero y no queremos que lo pise con los datos de la persona que tiene ese CUIT en argentina
if @p_cuit = '20501961869' return
/*
declare @documento varchar(20),
@apellidos varchar(200),
@nombres varchar(200),
@codigo_provincia int,
@direccion varchar(150),
@comuna varchar(10),
@circuito_electoral varchar(10),
@mesa int,
@identificacion varchar(20),
@nombre varchar(200),
@dni varchar(10),
@anio int,
@cant int,
@id_padron int,
@localidad varchar(100),
@provincia varchar(100),
@cod_provincia varchar(2),
@cp varchar(50),
@respuesta varchar(10) = 'no',
@id_ele int
DECLARE @domicilio varchar(150),
@pai varchar(100),
@prv varchar(100),
@prv_codigo varchar(2),
@loc varchar(150),
@codpos varchar(10),
@id int,
@resp bit,
@domicilio_esta char(1)
DECLARE C_padron CURSOR FOR
select id_padron,
nombre_persona,
cuerpo_clave
from padrones
where identificacion = @p_cuit
and habilitado = 1
and tipo_persona = 'F' -- Solo lo hace para personas físicas.
OPEN C_Padron
FETCH NEXT FROM C_Padron INTO @id_padron, @nombre, @dni
WHILE @@fetch_status = 0
BEGIN
--
-- select 'Padrones', @id_padron, @nombre, @dni
--
DECLARE ProdInfo CURSOR FOR
select documento, apellidos, nombres, provincia, ltrim(rtrim(direccion)) direccion, comuna, circuito_electoral, mesa, anio_nacimiento, id_electoral
from padron_electoral
where documento = @dni
and @nombre like '%'+apellidos+'%'
and procesado is null
-- Si procesado = 1 ya paso por acá.
OPEN ProdInfo
FETCH NEXT FROM ProdInfo INTO @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio, @id_ele
WHILE @@fetch_status = 0
BEGIN
--
-- select 'Padron_Electoral', @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio
--
-- En padrones actualizo los campos apellidos, nombres si alguno esta vacio
if (isnull(@apellidos,'') != '' AND isnull(@nombres,'') != '')
begin
update padrones
set apellidos = @apellidos, nombres = @nombres
where id_padron = @id_padron
and (isnull(apellidos,'') = '' or isnull(nombres,'') = '')
end
--En la tabla datos_personas, actualizo el año de nacimiento
if (isnull(@anio,0) > 0)
begin
set @respuesta = 'ok'
if ((select count(*)
from datos_personas
where c01_cuit = @p_cuit) = 0)
begin
insert into datos_personas (c01_cuit, c02_anio_nac, created, created_by)
values (@p_cuit, @anio, getdate(), @p_userid)
end
else
begin
if ((select isnull(c02_anio_nac,'0') from datos_personas where c01_cuit = @p_cuit) != @anio)
begin
update datos_personas
set c02_anio_nac = @anio, modified = getdate()
--, modified_by = @p_userid
where c01_cuit = @p_cuit
end
end
end
-- En domicilios_todos guardo la dirección del padron electoral, si no tengo un registro con esa dirección
set @provincia = null
set @localidad = null
set @cp = null
set @cod_provincia = null
select @provincia = UPPER(prv_nombre),
@cod_provincia = codigo_afip
from provincias
where codigo_electoral = convert(int,@codigo_provincia)
and (country_code = 'AR'or pai_codigo_ifx = 54)
if (@cod_provincia = '0')
begin
set @localidad = null
end
else
begin
select @localidad = UPPER(localidad),
@cp = cp
from padron_electoral_relacion
where convert(int,distrito) = @codigo_provincia
and right('000'+padron_electoral_relacion.SECCION,3) = right('000'+@comuna,3)
and upper(right('00000'+CIRCUITO,5)) = upper(right('00000'+@circuito_electoral,5))
and @mesa between MESADESDE and MESAHASTA
and visible = 1
end
if (isnull(@direccion,'') != '' and isnull(@provincia, '') != '')
begin
declare wc cursor for
select replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
prv_codigo,
loc_nombre,
replace(codpos,'.','') as codpos,
id_domicilio as id
from domicilios_todos
where cuit = @p_cuit
and tipo_domicilio = 'E'
and visible = 1
open wc
set @domicilio_esta = 'N'
Fetch next from wc INTO @domicilio, @pai, @prv, @prv_codigo, @loc, @codpos, @id
WHILE @@fetch_status = 0
BEGIN
exec @resp = [sp_comparo_domicilios] @domicilio -- el de domicilios_todos
, @direccion -- el de padron
if (@resp = 1) -- son iguales, veo si el de padrón está mejor.
-- Si es así corrige el de domicilios_todos
begin
set @pai = 'ARGENTINA'
set @prv = @provincia
set @prv_codigo = @cod_provincia
if (len(@direccion) > len(@domicilio) or @domicilio is null)
set @domicilio = @direccion
if (len(@localidad) > len(@loc) or @loc is null)
set @loc = @localidad
if ((select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = null
if (@cp is not null)
begin
if ((select isnumeric(@cp)) = 1 and len(@cp) > 4)
set @cp = null
if (len(@cp) > len(@codpos) or @codpos is null)
set @codpos = @cp
end
if (@prv = 'CIUDAD DE BUENOS AIRES' or
@prv = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
@prv = 'CIUDAD AUTONOMA BUENOS AIRES' or
@prv = 'C.A.B.A.' or
@prv = 'CAPITAL FEDERAL' or
@prv = 'CABA' or
@prv_codigo = '0')
begin
set @loc = null
end
if (rtrim(ltrim(@loc)) = '') set @loc = null
if (rtrim(ltrim(@prv)) = '') set @prv = null
if (rtrim(ltrim(@pai)) = '') set @pai = null
set @domicilio_esta = 'S'
update domicilios_todos
set domicilio = @domicilio,
pai_nombre = @pai,
pai_codigo = 54,
loc_nombre = @loc,
prv_codigo = @prv_codigo,
prv_nombre = @prv,
codpos = @codpos,
created = getdate()
where id_domicilio = @id
end
Fetch next from wc INTO @domicilio, @pai, @prv, @prv_codigo, @loc, @codpos, @id
END
CLOSE wc
DEALLOCATE wc
if (@domicilio_esta = 'N')
begin
insert into domicilios_todos (cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,tipo_domicilio,created,created_by)
values (@p_cuit, UPPER(@direccion), '54','ARGENTINA', @prv_codigo, @provincia, @localidad, @cp,'E', GETDATE(), @p_userid)
end
end
update padron_electoral set procesado = 1 where id_electoral = @id_ele
FETCH NEXT FROM ProdInfo INTO @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio, @id_ele
END
CLOSE ProdInfo
DEALLOCATE ProdInfo
FETCH NEXT FROM C_Padron INTO @id_padron, @nombre, @dni
END
CLOSE C_Padron
DEALLOCATE C_Padron
select @respuesta as respuesta -- Si la respuesta es OK, es que encontro año de nacimiento */
END
GO
Depends On
No items found
Used By
No items found