Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
2| Name | Data Type | Length | Description |
|---|---|---|---|
| @borrar | bit | 1 | |
| @cuit1 | varchar | 50 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE OR ALTER PROCEDURE dbo.proceso_nomina_mail_
@borrar bit = 1,
@cuit1 varchar(50) = '' -- donde arrancar
AS
BEGIN
SET NOCOUNT ON;
declare @cant int = 0
declare @periodo int
declare @cuit varchar(50)
declare @empresa varchar(500)
declare @cuil varchar(50)
declare @empleado varchar(500)
declare @email varchar(500)
declare @domicilios table (id int, domicilio varchar(200), pai_nombre varchar(50), prv_nombre varchar(100), loc_nombre varchar(100), codpos varchar(10), tipo_domicilio varchar(10), created datetime)
declare @domicilio varchar(200),
@localidad varchar(100),
@provincia varchar(100),
@codpos varchar(10) ,
@tipo_domicilio varchar(10)
if (@borrar = 1)
delete from proceso_nomina_mail
DECLARE C_padron CURSOR FOR
select p.identificacion, p.nombre_persona
from procesos_cuit
inner join padrones p on (p.identificacion = procesos_cuit.cuit and p.identificador in (select identificador from identificadores where country_code = 'AR') and p.habilitado = 1)
where fecha = '2023-03-07' and cliente = 9999
and cuit > @cuit1
--and cuit = '20113317362'
order by cuit
OPEN C_Padron
FETCH NEXT FROM C_Padron INTO @cuit, @empresa
WHILE @@fetch_status = 0
BEGIN
--- domicilio de la empresa
set @domicilio = null
set @localidad = null
set @provincia = null
set @codpos = null
set @tipo_domicilio = null
insert into @domicilios
exec sp_obtener_domicilios @cuit, '1' -- 1 quiere decir que busque domicilios afip
if ((select count(*) from @domicilios d where isnull(d.domicilio,'') != '' and d.domicilio not like 'RESIDE EN'
and d.domicilio not like 'DOMICILIADA EN' and len(d.prv_nombre) > 3 ) = 0)
begin
-- Si no encontro domicilios de AFIP busca otros
insert into @domicilios
exec sp_obtener_domicilios @cuit, 0
end
-- Toma uno, si tenemos el fiscal (F), sino el legal (L), sino el real (D), sino el electoral (E), sino otro...
SELECT top 1
@domicilio =
isnull(d.domicilio,''),
@localidad =
isnull(d.loc_nombre,''),
@provincia =
isnull(d.prv_nombre,''),
@codpos =
isnull(d.codpos,''),
@tipo_domicilio = isnull(d.tipo_domicilio,'')
from @domicilios d
where
d.domicilio not like 'RESIDE EN'
and d.domicilio not like 'DOMICILIADA EN'
and len(d.prv_nombre) > 3
order by (case
when (d.tipo_domicilio LIKE '%F%' and isnull(d.codpos,'') != '') then '1'
when (d.tipo_domicilio LIKE '%F%' and isnull(d.codpos,'') = '') then '2'
when (d.tipo_domicilio LIKE '%L%' and isnull(d.codpos,'') != '') then '3'
when (d.tipo_domicilio LIKE '%L%' and isnull(d.codpos,'') = '') then '4'
when (d.tipo_domicilio LIKE '%D%' and isnull(d.codpos,'') != '') then '5'
WHEN (d.tipo_domicilio LIKE '%O%' and isnull(d.codpos,'') != '') then '6'
WHEN (d.tipo_domicilio LIKE '%E%' and isnull(d.codpos,'') != '') then '7'
when (d.tipo_domicilio LIKE '%D%' and isnull(d.codpos,'') = '') then '8'
WHEN (d.tipo_domicilio LIKE '%O%' and isnull(d.codpos,'') = '') then '9'
WHEN (d.tipo_domicilio LIKE '%E%' and isnull(d.codpos,'') = '') then '10'
else '11'
end)
delete from @domicilios
----- 3 empleados con direccion de email
DECLARE C_mail CURSOR FOR
select distinct top 3 cuil, p2.nombre_persona, email
from NominasDiciembre2022 N
inner join padrones p2 on (p2.identificacion = N.cuil and p2.identificador in (select identificador from identificadores where country_code = 'AR') and p2.habilitado = 1)
where cuit = @cuit and isnull(email,'') != ''
set @cant = 0
OPEN C_mail
FETCH NEXT FROM C_mail INTO @cuil, @empleado, @email
WHILE @@fetch_status = 0
BEGIN
set @cant = @cant + 1
insert into proceso_nomina_mail values (@cuit, @empresa, @domicilio,@localidad, @provincia, @codpos, @cuil,@empleado, @email)
if @cant >= 3 break
FETCH NEXT FROM C_mail INTO @cuil, @empleado, @email
END
CLOSE C_mail
DEALLOCATE C_mail
if @cant = 0
insert into proceso_nomina_mail values (@cuit, @empresa, @domicilio, @localidad, @provincia, @codpos, null,null,null)
FETCH NEXT FROM C_Padron INTO @cuit, @empresa
END
CLOSE C_Padron
DEALLOCATE C_Padron
select * from proceso_nomina_mail
END
GO
GO
CREATE OR ALTER PROCEDURE dbo.proceso_nomina_mail_
@borrar bit = 1,
@cuit1 varchar(50) = '' -- donde arrancar
AS
BEGIN
SET NOCOUNT ON;
declare @cant int = 0
declare @periodo int
declare @cuit varchar(50)
declare @empresa varchar(500)
declare @cuil varchar(50)
declare @empleado varchar(500)
declare @email varchar(500)
declare @domicilios table (id int, domicilio varchar(200), pai_nombre varchar(50), prv_nombre varchar(100), loc_nombre varchar(100), codpos varchar(10), tipo_domicilio varchar(10), created datetime)
declare @domicilio varchar(200),
@localidad varchar(100),
@provincia varchar(100),
@codpos varchar(10) ,
@tipo_domicilio varchar(10)
if (@borrar = 1)
delete from proceso_nomina_mail
DECLARE C_padron CURSOR FOR
select p.identificacion, p.nombre_persona
from procesos_cuit
inner join padrones p on (p.identificacion = procesos_cuit.cuit and p.identificador in (select identificador from identificadores where country_code = 'AR') and p.habilitado = 1)
where fecha = '2023-03-07' and cliente = 9999
and cuit > @cuit1
--and cuit = '20113317362'
order by cuit
OPEN C_Padron
FETCH NEXT FROM C_Padron INTO @cuit, @empresa
WHILE @@fetch_status = 0
BEGIN
--- domicilio de la empresa
set @domicilio = null
set @localidad = null
set @provincia = null
set @codpos = null
set @tipo_domicilio = null
insert into @domicilios
exec sp_obtener_domicilios @cuit, '1' -- 1 quiere decir que busque domicilios afip
if ((select count(*) from @domicilios d where isnull(d.domicilio,'') != '' and d.domicilio not like 'RESIDE EN'
and d.domicilio not like 'DOMICILIADA EN' and len(d.prv_nombre) > 3 ) = 0)
begin
-- Si no encontro domicilios de AFIP busca otros
insert into @domicilios
exec sp_obtener_domicilios @cuit, 0
end
-- Toma uno, si tenemos el fiscal (F), sino el legal (L), sino el real (D), sino el electoral (E), sino otro...
SELECT top 1
@domicilio =
isnull(d.domicilio,''),
@localidad =
isnull(d.loc_nombre,''),
@provincia =
isnull(d.prv_nombre,''),
@codpos =
isnull(d.codpos,''),
@tipo_domicilio = isnull(d.tipo_domicilio,'')
from @domicilios d
where
d.domicilio not like 'RESIDE EN'
and d.domicilio not like 'DOMICILIADA EN'
and len(d.prv_nombre) > 3
order by (case
when (d.tipo_domicilio LIKE '%F%' and isnull(d.codpos,'') != '') then '1'
when (d.tipo_domicilio LIKE '%F%' and isnull(d.codpos,'') = '') then '2'
when (d.tipo_domicilio LIKE '%L%' and isnull(d.codpos,'') != '') then '3'
when (d.tipo_domicilio LIKE '%L%' and isnull(d.codpos,'') = '') then '4'
when (d.tipo_domicilio LIKE '%D%' and isnull(d.codpos,'') != '') then '5'
WHEN (d.tipo_domicilio LIKE '%O%' and isnull(d.codpos,'') != '') then '6'
WHEN (d.tipo_domicilio LIKE '%E%' and isnull(d.codpos,'') != '') then '7'
when (d.tipo_domicilio LIKE '%D%' and isnull(d.codpos,'') = '') then '8'
WHEN (d.tipo_domicilio LIKE '%O%' and isnull(d.codpos,'') = '') then '9'
WHEN (d.tipo_domicilio LIKE '%E%' and isnull(d.codpos,'') = '') then '10'
else '11'
end)
delete from @domicilios
----- 3 empleados con direccion de email
DECLARE C_mail CURSOR FOR
select distinct top 3 cuil, p2.nombre_persona, email
from NominasDiciembre2022 N
inner join padrones p2 on (p2.identificacion = N.cuil and p2.identificador in (select identificador from identificadores where country_code = 'AR') and p2.habilitado = 1)
where cuit = @cuit and isnull(email,'') != ''
set @cant = 0
OPEN C_mail
FETCH NEXT FROM C_mail INTO @cuil, @empleado, @email
WHILE @@fetch_status = 0
BEGIN
set @cant = @cant + 1
insert into proceso_nomina_mail values (@cuit, @empresa, @domicilio,@localidad, @provincia, @codpos, @cuil,@empleado, @email)
if @cant >= 3 break
FETCH NEXT FROM C_mail INTO @cuil, @empleado, @email
END
CLOSE C_mail
DEALLOCATE C_mail
if @cant = 0
insert into proceso_nomina_mail values (@cuit, @empresa, @domicilio, @localidad, @provincia, @codpos, null,null,null)
FETCH NEXT FROM C_Padron INTO @cuit, @empresa
END
CLOSE C_Padron
DEALLOCATE C_Padron
select * from proceso_nomina_mail
END
GO
Depends On
6Used By
No items found