Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
2| Name | Data Type | Length | Description |
|---|---|---|---|
| @cuit | varchar | 20 | |
| @afip | bit | 1 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
select domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio
select * from domicilios_todos
where cuit = '30708209941'
and visible = 1
order by created desc
exec [sp_obtener_domicilios_ant] '30548083156'
exec [sp_obtener_domicilios2] '30650309835'
select cuit, count(*) from domicilios_todos
group by cuit
having count(*) > 100
declare @resp smallint
exec @resp = [sp_comparo_domicilios] 'av. CORDOBA 3280 3 A', 'CORDOBA ,AV. 3280'
select @resp
sp_obtener_domicilios '30546689979'
select max(id_domicilio) as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
max(replace(codpos,'.','')) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = '30546689979'
and visible = 1
group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
order by created desc
*/
/*
exec [sp_obtener_domicilios_afip] '30661031146', 0
exec [sp_obtener_domicilios_afip] '30661031146', 1
exec [sp_obtener_domicilios_afip] '27183787662', 1
*/
CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_afip
@cuit varchar(20),
@afip bit = 0
AS
BEGIN
declare @domicilios table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @domicilios_ok table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @id int,
@domicilio varchar(500),
@pai_nombre varchar(100),
@prv_nombre varchar(100),
@loc_nombre varchar(100),
@codpos varchar(100),
@tipo_domicilio varchar(100),
@created datetime
declare @id2 int,
@domicilio2 varchar(500),
@pai_nombre2 varchar(100),
@prv_nombre2 varchar(100),
@loc_nombre2 varchar(100),
@codpos2 varchar(100),
@tipo_domicilio2 varchar(100),
@created2 datetime
declare @resp int, @total int = 0
select @total = count(distinct domicilio)
from domicilios_todos
where cuit = @cuit
and visible = 1
if (@total > 150)
begin
/*
select id_domicilio as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
replace(codpos,'.','') as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
group by id_domicilio, domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
order by created desc
*/
if (@afip = 0)
begin
select max(id_domicilio) as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
max(ltrim(rtrim(replace(codpos,'.','')))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
order by created desc
end
else
begin
select max(id_domicilio) as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
max(ltrim(rtrim(replace(codpos,'.','')))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
and nombre_fuente = 'AFIP'
AND tipo_domicilio IN ('F','L')
group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
order by created desc
end
end
else
begin
if (@afip = 0)
begin
insert into @domicilios (domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
created)
select top 150 replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
ltrim(rtrim(replace(codpos,'.',''))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
group by domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
order by tipo_domicilio, len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
end
else
begin
insert into @domicilios (domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
created)
select top 150 replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
ltrim(rtrim(replace(codpos,'.',''))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
and nombre_fuente = 'AFIP'
AND tipo_domicilio IN ('F','L')
group by domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
order by tipo_domicilio, len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
end
declare wc cursor for
select * from @domicilios
order by id
open wc
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
if ((select count(*) from @domicilios where id = @id) = 0)
begin
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
continue
end
declare wc2 cursor for
select * from @domicilios
where id > @id
order by id
open wc2
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
exec @resp = [sp_comparo_domicilios] @domicilio, @domicilio2
if (@resp = 1) -- son iguales
begin
if (@prv_nombre like 'NO INFORM%') set @prv_nombre = null
if (@prv_nombre2 like 'NO INFORM%') set @prv_nombre2 = null
if (@loc_nombre like 'NO INFORM%') set @loc_nombre = null
if (@loc_nombre2 like 'NO INFORM%') set @loc_nombre2 = null
if (@created2 > @created)
set @created = @created2
if (len(@domicilio2) > len(@domicilio) or isnull(@domicilio,'') = '')
set @domicilio = @domicilio2
if (len(@prv_nombre2) > len(@prv_nombre) or isnull(@prv_nombre,'') = '') begin
--if exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre2)
set @prv_nombre = @prv_nombre2
end
/*
if exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre2)
and
not exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre)
set @prv_nombre = @prv_nombre2
*/
if (len(@loc_nombre2) > len(@loc_nombre) or isnull(@loc_nombre,'') = '')
set @loc_nombre = @loc_nombre2
if (len(@pai_nombre2) > len(@pai_nombre) or isnull(@pai_nombre,'') = '')
set @pai_nombre = @pai_nombre2
--select @domicilio2 as dom2, @codpos2 as codpos2, @domicilio as dom, @codpos as codpos
if (isnull(@pai_nombre2,'ARGENTINA') = 'ARGENTINA' and (select isnumeric(@codpos2)) = 1 and len(@codpos2) > 4)
set @codpos2 = ''
if (isnull(@pai_nombre,'ARGENTINA') = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = ''
-- select @domicilio2 as dom2, @codpos2 as codpos2, @domicilio as dom, @codpos as codpos
--select @codpos2, len(@codpos2),isnumeric(@codpos2), @codpos, len(@codpos)
if (len(@codpos2) > len(@codpos) or isnull(@codpos,'') = '')
set @codpos = @codpos2
if (@tipo_domicilio is null) set @tipo_domicilio = ''
if (select CHARINDEX(@tipo_domicilio2,@tipo_domicilio)) = 0
begin
set @tipo_domicilio = @tipo_domicilio + @tipo_domicilio2
end
delete from @domicilios
where id = @id2
end
if (@prv_nombre = 'CIUDAD DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES' or
@prv_nombre = 'C.A.B.A.' or
@prv_nombre = 'CABA')
set @loc_nombre = null
if (@pai_nombre = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = ''
if (rtrim(ltrim(@loc_nombre)) = '') set @loc_nombre = null
if (rtrim(ltrim(@prv_nombre)) = '') set @prv_nombre = null
if (rtrim(ltrim(@pai_nombre)) = '') set @pai_nombre = null
--select @domicilio as dom, @codpos as codpos
update @domicilios
set domicilio = @domicilio,
loc_nombre = @loc_nombre,
prv_nombre = @prv_nombre,
pai_nombre = @pai_nombre,
codpos = @codpos,
tipo_domicilio = @tipo_domicilio,
created = @created
where id = @id
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
end
CLOSE wc2
DEALLOCATE wc2
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
END
CLOSE wc
DEALLOCATE wc
select * from @domicilios
order by created desc
--where id is not null
--order by id
end
END
GO
GO
/*
select domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio
select * from domicilios_todos
where cuit = '30708209941'
and visible = 1
order by created desc
exec [sp_obtener_domicilios_ant] '30548083156'
exec [sp_obtener_domicilios2] '30650309835'
select cuit, count(*) from domicilios_todos
group by cuit
having count(*) > 100
declare @resp smallint
exec @resp = [sp_comparo_domicilios] 'av. CORDOBA 3280 3 A', 'CORDOBA ,AV. 3280'
select @resp
sp_obtener_domicilios '30546689979'
select max(id_domicilio) as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
max(replace(codpos,'.','')) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = '30546689979'
and visible = 1
group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
order by created desc
*/
/*
exec [sp_obtener_domicilios_afip] '30661031146', 0
exec [sp_obtener_domicilios_afip] '30661031146', 1
exec [sp_obtener_domicilios_afip] '27183787662', 1
*/
CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_afip
@cuit varchar(20),
@afip bit = 0
AS
BEGIN
declare @domicilios table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @domicilios_ok table
(id int identity,
domicilio varchar(500),
pai_nombre varchar(100),
prv_nombre varchar(100),
loc_nombre varchar(100),
codpos varchar(100),
tipo_domicilio varchar(100),
created datetime)
declare @id int,
@domicilio varchar(500),
@pai_nombre varchar(100),
@prv_nombre varchar(100),
@loc_nombre varchar(100),
@codpos varchar(100),
@tipo_domicilio varchar(100),
@created datetime
declare @id2 int,
@domicilio2 varchar(500),
@pai_nombre2 varchar(100),
@prv_nombre2 varchar(100),
@loc_nombre2 varchar(100),
@codpos2 varchar(100),
@tipo_domicilio2 varchar(100),
@created2 datetime
declare @resp int, @total int = 0
select @total = count(distinct domicilio)
from domicilios_todos
where cuit = @cuit
and visible = 1
if (@total > 150)
begin
/*
select id_domicilio as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
replace(codpos,'.','') as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
group by id_domicilio, domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
order by created desc
*/
if (@afip = 0)
begin
select max(id_domicilio) as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
max(ltrim(rtrim(replace(codpos,'.','')))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
order by created desc
end
else
begin
select max(id_domicilio) as id,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
max(ltrim(rtrim(replace(codpos,'.','')))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
and nombre_fuente = 'AFIP'
AND tipo_domicilio IN ('F','L')
group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
order by created desc
end
end
else
begin
if (@afip = 0)
begin
insert into @domicilios (domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
created)
select top 150 replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
ltrim(rtrim(replace(codpos,'.',''))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
group by domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
order by tipo_domicilio, len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
end
else
begin
insert into @domicilios (domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
codpos,
tipo_domicilio,
created)
select top 150 replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
ltrim(rtrim(replace(codpos,'.',''))) as codpos,
tipo_domicilio,
max(isnull(created,'1901-01-01')) as created
from domicilios_todos
where cuit = @cuit
and visible = 1
and nombre_fuente = 'AFIP'
AND tipo_domicilio IN ('F','L')
group by domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
order by tipo_domicilio, len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre)
end
declare wc cursor for
select * from @domicilios
order by id
open wc
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
if ((select count(*) from @domicilios where id = @id) = 0)
begin
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
continue
end
declare wc2 cursor for
select * from @domicilios
where id > @id
order by id
open wc2
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
WHILE (@@FETCH_STATUS <> -1 )
BEGIN
exec @resp = [sp_comparo_domicilios] @domicilio, @domicilio2
if (@resp = 1) -- son iguales
begin
if (@prv_nombre like 'NO INFORM%') set @prv_nombre = null
if (@prv_nombre2 like 'NO INFORM%') set @prv_nombre2 = null
if (@loc_nombre like 'NO INFORM%') set @loc_nombre = null
if (@loc_nombre2 like 'NO INFORM%') set @loc_nombre2 = null
if (@created2 > @created)
set @created = @created2
if (len(@domicilio2) > len(@domicilio) or isnull(@domicilio,'') = '')
set @domicilio = @domicilio2
if (len(@prv_nombre2) > len(@prv_nombre) or isnull(@prv_nombre,'') = '') begin
--if exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre2)
set @prv_nombre = @prv_nombre2
end
/*
if exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre2)
and
not exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre)
set @prv_nombre = @prv_nombre2
*/
if (len(@loc_nombre2) > len(@loc_nombre) or isnull(@loc_nombre,'') = '')
set @loc_nombre = @loc_nombre2
if (len(@pai_nombre2) > len(@pai_nombre) or isnull(@pai_nombre,'') = '')
set @pai_nombre = @pai_nombre2
--select @domicilio2 as dom2, @codpos2 as codpos2, @domicilio as dom, @codpos as codpos
if (isnull(@pai_nombre2,'ARGENTINA') = 'ARGENTINA' and (select isnumeric(@codpos2)) = 1 and len(@codpos2) > 4)
set @codpos2 = ''
if (isnull(@pai_nombre,'ARGENTINA') = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = ''
-- select @domicilio2 as dom2, @codpos2 as codpos2, @domicilio as dom, @codpos as codpos
--select @codpos2, len(@codpos2),isnumeric(@codpos2), @codpos, len(@codpos)
if (len(@codpos2) > len(@codpos) or isnull(@codpos,'') = '')
set @codpos = @codpos2
if (@tipo_domicilio is null) set @tipo_domicilio = ''
if (select CHARINDEX(@tipo_domicilio2,@tipo_domicilio)) = 0
begin
set @tipo_domicilio = @tipo_domicilio + @tipo_domicilio2
end
delete from @domicilios
where id = @id2
end
if (@prv_nombre = 'CIUDAD DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
@prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES' or
@prv_nombre = 'C.A.B.A.' or
@prv_nombre = 'CABA')
set @loc_nombre = null
if (@pai_nombre = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
set @codpos = ''
if (rtrim(ltrim(@loc_nombre)) = '') set @loc_nombre = null
if (rtrim(ltrim(@prv_nombre)) = '') set @prv_nombre = null
if (rtrim(ltrim(@pai_nombre)) = '') set @pai_nombre = null
--select @domicilio as dom, @codpos as codpos
update @domicilios
set domicilio = @domicilio,
loc_nombre = @loc_nombre,
prv_nombre = @prv_nombre,
pai_nombre = @pai_nombre,
codpos = @codpos,
tipo_domicilio = @tipo_domicilio,
created = @created
where id = @id
Fetch next from wc2 INTO
@id2,
@domicilio2,
@pai_nombre2,
@prv_nombre2,
@loc_nombre2,
@codpos2,
@tipo_domicilio2,
@created2
end
CLOSE wc2
DEALLOCATE wc2
Fetch next from wc INTO
@id,
@domicilio,
@pai_nombre,
@prv_nombre,
@loc_nombre,
@codpos,
@tipo_domicilio,
@created
END
CLOSE wc
DEALLOCATE wc
select * from @domicilios
order by created desc
--where id is not null
--order by id
end
END
GO
Depends On
2Used By
No items found