Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
/**
EXEC OBRASSOCIALES_2_DOMICILIOS
SELECT TOP 100 * FROM ObrasSociales
**/
-- =============================================
CREATE OR ALTER PROCEDURE dbo.OBRASSOCIALES_2_DOMICILIOS
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @cuit varchar(50)
declare @calle varchar(150)
declare @nro varchar(50)
declare @piso varchar(50)
declare @dpto varchar(50)
declare @cp varchar(50)
declare @loc varchar(150)
declare @prov varchar(150)
declare @callenro varchar(201)
declare @thisid int
declare @codigo_provincia varchar(2) = null
DECLARE OBRSOC CURSOR FOR
select top 10
cuilRelacionado,
LTRIM(RTRIM(Calle)),
LTRIM(RTRIM(Nro)),
LTRIM(RTRIM(Piso)),
LTRIM(RTRIM(Dpto)),
LTRIM(RTRIM(CodPostal)),
LTRIM(RTRIM(Localidad)),
LTRIM(RTRIM(Provincia))
from ObrasSociales
where isnull(_domicilios_proc, 0) = 0
and iif(LTRIM(RTRIM(Calle)) != '', Calle, NULL) IS NOT NULL
OPEN OBRSOC
FETCH NEXT FROM OBRSOC INTO @cuit, @calle, @nro, @piso, @dpto, @cp, @loc, @prov
WHILE @@FETCH_STATUS = 0 BEGIN
/* depúración */
EXEC sp_depurar_domicilios @cuit
SET @nro = iif(isnumeric(@nro) > 0, iif(convert(int, @nro) > 0, convert(varchar, convert(int, @nro)), NULL), NULL)
SET @callenro = iif(@nro is not null, @calle + ' ' + @nro, @calle)
/* DEBUG
select @cuit as CUIT, @calle + ' ' + @nro as DOMICILIO, @piso as PISO, @dpto as DPTO, @loc AS LOCALIDAD, @prov as PROVINCIA */
/*** procesar domicilios preexistentes depurados y matchear con el de la fuente ***/
declare @w_id int,
@w_domicilio varchar(500),
@w_pai_nombre varchar(100),
@w_prv_nombre varchar(100),
@w_loc_nombre varchar(100),
@w_codpos varchar(100),
@w_tipo_domicilio varchar(100),
@w_created datetime,
@lista_id varchar(max) = null,
@match tinyint = 0,
@hay_match tinyint = 0,
@tiene_tipo_d tinyint = 0
DECLARE DOMIC CURSOR FOR
select top 150 id_domicilio,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
replace(codpos,'.','') as codpos,
tipo_domicilio,
created
from domicilios_todos
where cuit = @cuit
and visible = 1
OPEN DOMIC
FETCH NEXT FROM DOMIC INTO @w_id, @w_domicilio, @w_pai_nombre, @w_prv_nombre, @w_loc_nombre, @w_codpos, @w_tipo_domicilio, @w_created
WHILE @@FETCH_STATUS = 0 BEGIN
/*SELECT @cuit,@loc,@prov,@calle,@nro,@piso,@dpto,@w_id_domicilio as ID,@w_domicilio AS DOMICILIO, @w_loc_nombre AS LOCALIDAD, @w_prv_nombre AS PROVINCIA*/
/* comparo el compuesto de calle y nro de la fuente con el domicilio obtenido */
set @match = 0
exec @match = [sp_comparo_domicilios] @callenro, @w_domicilio
/* DEBUG
SELECT @w_id_domicilio as ID, @resp as MATCH */
if (@match = 1) begin
/* domicilio ya existente (coincidencia): marco el matcheo positivo */
if (@hay_match = 0) begin
set @hay_match = 1
end
end
/* Busco si existe domicilio D o E en todos los resultados */
if (@tiene_tipo_d = 0) begin
if (CHARINDEX('D', @w_tipo_domicilio, 1) > 0 OR CHARINDEX('E', @w_tipo_domicilio, 1) > 0) begin
set @tiene_tipo_d = 1
end
end
FETCH NEXT FROM DOMIC INTO @w_id, @w_domicilio, @w_pai_nombre, @w_prv_nombre, @w_loc_nombre, @w_codpos, @w_tipo_domicilio, @w_created
END
CLOSE DOMIC
DEALLOCATE DOMIC
/* Verificamos si hay que insertar nuevo domicilio */
if (@hay_match = 0) begin
if (@prov is not null)
select @codigo_provincia = convert(varchar(2), codigo_afip)
from provincias
where country_code = 'AR'
and prv_nombre = @prov
/* si es un nuevo domicilio, cuando tiene D o E lo inserto como otro, sino como D */
insert into domicilios_todos
(cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,
created, visible, tipo_domicilio, piso, depto, nombre_fuente, procesado, isLast,
calle, altura)
values
(@cuit, @callenro, 54, 'ARGENTINA', @codigo_provincia, @prov, @loc, @cp,
GETDATE(), 1, iif(@tiene_tipo_d > 0, 'O', 'D'), @piso, @dpto, 'ObrasSociales', 1, 0,
@calle, @nro)
/*select @tiene_tipo_d as TIENE_TIPO_D, iif(@tiene_tipo_d > 0, 'O', 'D') AS TIPO_NUEVO*/
end else
/* En caso de existir un match, sólo lo agrego como D si no existe domicilio con ese tipo */
if (@tiene_tipo_d = 0) begin
if (@prov is not null)
select @codigo_provincia = convert(varchar(2), codigo_afip)
from provincias
where country_code = 'AR'
and prv_nombre = @prov
insert into domicilios_todos
(cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,
created, visible, tipo_domicilio, piso, depto, nombre_fuente, procesado, isLast,
calle, altura)
values
(@cuit, @callenro, 54, 'ARGENTINA', @codigo_provincia, @prov, @loc, @cp,
GETDATE(), 1, 'D', @piso, @dpto, 'ObrasSociales', 1, 0,
@calle, @nro)
/*SELECT @tiene_tipo_d as HAY_MATCH_D*/
end
/*****/
UPDATE ObrasSociales SET _domicilios_proc = 1 WHERE cuilRelacionado = @cuit
FETCH NEXT FROM OBRSOC INTO @cuit, @calle, @nro, @piso, @dpto, @cp, @loc, @prov
END
CLOSE OBRSOC
DEALLOCATE OBRSOC
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
/**
EXEC OBRASSOCIALES_2_DOMICILIOS
SELECT TOP 100 * FROM ObrasSociales
**/
-- =============================================
CREATE OR ALTER PROCEDURE dbo.OBRASSOCIALES_2_DOMICILIOS
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @cuit varchar(50)
declare @calle varchar(150)
declare @nro varchar(50)
declare @piso varchar(50)
declare @dpto varchar(50)
declare @cp varchar(50)
declare @loc varchar(150)
declare @prov varchar(150)
declare @callenro varchar(201)
declare @thisid int
declare @codigo_provincia varchar(2) = null
DECLARE OBRSOC CURSOR FOR
select top 10
cuilRelacionado,
LTRIM(RTRIM(Calle)),
LTRIM(RTRIM(Nro)),
LTRIM(RTRIM(Piso)),
LTRIM(RTRIM(Dpto)),
LTRIM(RTRIM(CodPostal)),
LTRIM(RTRIM(Localidad)),
LTRIM(RTRIM(Provincia))
from ObrasSociales
where isnull(_domicilios_proc, 0) = 0
and iif(LTRIM(RTRIM(Calle)) != '', Calle, NULL) IS NOT NULL
OPEN OBRSOC
FETCH NEXT FROM OBRSOC INTO @cuit, @calle, @nro, @piso, @dpto, @cp, @loc, @prov
WHILE @@FETCH_STATUS = 0 BEGIN
/* depúración */
EXEC sp_depurar_domicilios @cuit
SET @nro = iif(isnumeric(@nro) > 0, iif(convert(int, @nro) > 0, convert(varchar, convert(int, @nro)), NULL), NULL)
SET @callenro = iif(@nro is not null, @calle + ' ' + @nro, @calle)
/* DEBUG
select @cuit as CUIT, @calle + ' ' + @nro as DOMICILIO, @piso as PISO, @dpto as DPTO, @loc AS LOCALIDAD, @prov as PROVINCIA */
/*** procesar domicilios preexistentes depurados y matchear con el de la fuente ***/
declare @w_id int,
@w_domicilio varchar(500),
@w_pai_nombre varchar(100),
@w_prv_nombre varchar(100),
@w_loc_nombre varchar(100),
@w_codpos varchar(100),
@w_tipo_domicilio varchar(100),
@w_created datetime,
@lista_id varchar(max) = null,
@match tinyint = 0,
@hay_match tinyint = 0,
@tiene_tipo_d tinyint = 0
DECLARE DOMIC CURSOR FOR
select top 150 id_domicilio,
replace(domicilio,'?','') as domicilio,
pai_nombre,
prv_nombre,
loc_nombre,
replace(codpos,'.','') as codpos,
tipo_domicilio,
created
from domicilios_todos
where cuit = @cuit
and visible = 1
OPEN DOMIC
FETCH NEXT FROM DOMIC INTO @w_id, @w_domicilio, @w_pai_nombre, @w_prv_nombre, @w_loc_nombre, @w_codpos, @w_tipo_domicilio, @w_created
WHILE @@FETCH_STATUS = 0 BEGIN
/*SELECT @cuit,@loc,@prov,@calle,@nro,@piso,@dpto,@w_id_domicilio as ID,@w_domicilio AS DOMICILIO, @w_loc_nombre AS LOCALIDAD, @w_prv_nombre AS PROVINCIA*/
/* comparo el compuesto de calle y nro de la fuente con el domicilio obtenido */
set @match = 0
exec @match = [sp_comparo_domicilios] @callenro, @w_domicilio
/* DEBUG
SELECT @w_id_domicilio as ID, @resp as MATCH */
if (@match = 1) begin
/* domicilio ya existente (coincidencia): marco el matcheo positivo */
if (@hay_match = 0) begin
set @hay_match = 1
end
end
/* Busco si existe domicilio D o E en todos los resultados */
if (@tiene_tipo_d = 0) begin
if (CHARINDEX('D', @w_tipo_domicilio, 1) > 0 OR CHARINDEX('E', @w_tipo_domicilio, 1) > 0) begin
set @tiene_tipo_d = 1
end
end
FETCH NEXT FROM DOMIC INTO @w_id, @w_domicilio, @w_pai_nombre, @w_prv_nombre, @w_loc_nombre, @w_codpos, @w_tipo_domicilio, @w_created
END
CLOSE DOMIC
DEALLOCATE DOMIC
/* Verificamos si hay que insertar nuevo domicilio */
if (@hay_match = 0) begin
if (@prov is not null)
select @codigo_provincia = convert(varchar(2), codigo_afip)
from provincias
where country_code = 'AR'
and prv_nombre = @prov
/* si es un nuevo domicilio, cuando tiene D o E lo inserto como otro, sino como D */
insert into domicilios_todos
(cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,
created, visible, tipo_domicilio, piso, depto, nombre_fuente, procesado, isLast,
calle, altura)
values
(@cuit, @callenro, 54, 'ARGENTINA', @codigo_provincia, @prov, @loc, @cp,
GETDATE(), 1, iif(@tiene_tipo_d > 0, 'O', 'D'), @piso, @dpto, 'ObrasSociales', 1, 0,
@calle, @nro)
/*select @tiene_tipo_d as TIENE_TIPO_D, iif(@tiene_tipo_d > 0, 'O', 'D') AS TIPO_NUEVO*/
end else
/* En caso de existir un match, sólo lo agrego como D si no existe domicilio con ese tipo */
if (@tiene_tipo_d = 0) begin
if (@prov is not null)
select @codigo_provincia = convert(varchar(2), codigo_afip)
from provincias
where country_code = 'AR'
and prv_nombre = @prov
insert into domicilios_todos
(cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,
created, visible, tipo_domicilio, piso, depto, nombre_fuente, procesado, isLast,
calle, altura)
values
(@cuit, @callenro, 54, 'ARGENTINA', @codigo_provincia, @prov, @loc, @cp,
GETDATE(), 1, 'D', @piso, @dpto, 'ObrasSociales', 1, 0,
@calle, @nro)
/*SELECT @tiene_tipo_d as HAY_MATCH_D*/
end
/*****/
UPDATE ObrasSociales SET _domicilios_proc = 1 WHERE cuilRelacionado = @cuit
FETCH NEXT FROM OBRSOC INTO @cuit, @calle, @nro, @piso, @dpto, @cp, @loc, @prov
END
CLOSE OBRSOC
DEALLOCATE OBRSOC
END
GO
Depends On
5Used By
No items found