dbo.proceso_nomina_mail_

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

Used By

No items found