dbo.LN_Alta_Masiva_47_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

3
Name Data Type Length Description
@clienteproceso int 4
@familiaproceso int 4
@no_proceados bit 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [LN_Alta_Masiva_47_] 891593585 , 831
*/

/*
select created as ddd,familia,* from ln_altas_masivas_47 where procesado = 0 order by created desc
select * from clientes where cliente = 861672084
*/


CREATE OR ALTER PROCEDURE dbo.LN_Alta_Masiva_47_ 
@clienteproceso int,
@familiaproceso int = null, 
@no_proceados bit = 0 

AS
BEGIN
 SET NOCOUNT ON;

 declare @FECHA_VIG_DESDE date = getdate()
 declare @FECHA_VIG_HASTA date = '2099-12-31'
 declare @idpadron int 
 declare @cliente int 
 declare @nombre varchar(150) 
 declare @eMAIL varchar(150) 
 declare @TE varchar(150) 
 declare @clave varchar(10) = 'JHSYTRFS12'
 declare @Userid int = 15342812
 declare @MODALIDAD varchar(10) 
 declare @p_contraparte int = null
 declare @idContra int = null
 declare @familia int 
 declare @gestion int = null 
 declare @idAlta int 
 declare @paisservicio varchar(2)
 declare @contra int
 declare @inf int
 declare @solicitante int 
 declare @idtipo int 
 declare @datam int =5546717
 declare @itemcontrato int = 382
 declare @productoblue int = 4
 declare @prioridad int = 5
 declare @fechalimite varchar(10)='2022-09-30'
 declare @productolcs int
 declare @monedalcs varchar(10)
 declare @fechalcs date
 declare @montoLCS decimal(15,2)=null
    
 declare @paisTaxid varchar(3)
 declare @TaxID varchar(50)
 declare @servicio_contratado int = 47
 declare @idImperium int
 declare @tipo_contratista_imperium int
 declare @estado_contratista_imperium  varchar(1)
 declare @id_referencia varchar(100) 
 declare @idSectorPriv int

/*
select * from ln_altas_masivas_47 order by created desc 
select * from ln_contrapartes where contraparte = 221623
update ln_contrapartes set id_referencia='001552',idSectorPriv=112 where contraparte = 221623
*/




 if (@no_proceados = 1)
 begin

/*declare @familiaproceso int = 857 */
 SELECT  
    cliente,
    familia,
    razon_social,
    pais_taxid,
    taxid,
    nombre_contacto,
    apellido_contacto,
    te_contacto,
    email_contacto,
    tipo_pago,
    idioma,
    paisservicio,
    servicio_contratado,
    id_referencia,
    solicitado_por,
    idSectorPriv,
    producto_monto,
    fecha_monto,
    moneda_monto,
    monto
    FROM ln_altas_masivas_47 ln_altas_masivas 
    where (procesado = 0 and contraparte is null)
    and ln_altas_masivas.cliente = @clienteproceso 
    and ln_altas_masivas.familia = isnull(@familiaproceso,ln_altas_masivas.familia)
  order by razon_social

  return
 end 



 declare @total_duplicados int = 0


-- 1) Completa los id_padron de los que no lo tienen

 update ln_altas_masivas_47 set ln_altas_masivas_47.id_padron = 
 (select id_padron from padrones 
  where padrones.identificacion = ln_altas_masivas_47.taxid 
  and padrones.habilitado = 1
  and padrones.identificador in (select identificador from identificadores where identificadores.country_code = ln_altas_masivas_47.pais_taxid))
 
 where ln_altas_masivas_47.cliente    = @clienteproceso 
   and ln_altas_masivas_47.id_padron  is null 
   and ln_altas_masivas_47.procesado  = 0 
   and ln_altas_masivas_47.contraparte is null

-- 2) Recorre los no procesados 

 DECLARE LEDALTAMASIVA Cursor FOR
   SELECT distinct 
   id_alta,
   id_padron,
   isnull(nombre_contacto,'') + ' ' + ISNULL(apellido_contacto,'') as contacto, 
   te_contacto,
   email_contacto,
   ln_altas_masivas.cliente,
   ln_altas_masivas.familia,
   tipo_pago,
   paisservicio,
   taxid,
   ln_altas_masivas.servicio_contratado,
   fecha_monto, 
   moneda_monto, 
   producto_monto,
   monto, 
   id_referencia, 
   idSectorPriv


   FROM ln_altas_masivas_47 ln_altas_masivas 
   where procesado = 0
   and id_padron is not null 
   and contraparte is null
   and ln_altas_masivas.cliente = @clienteproceso 
   and ln_altas_masivas.familia = isnull(@familiaproceso,ln_altas_masivas.familia)
   order by ln_altas_masivas.familia

 declare @total_procesado int = 0
 Open LEDALTAMASIVA
 Fetch NEXT FROM LEDALTAMASIVA INTO  @idAlta,  @idpadron, 
          @nombre,  @eMAIL, @TE,
          @cliente, @familia, @MODALIDAD,
          @paisservicio, @TaxID, @servicio_contratado,
          @fechalcs, @monedalcs,@productolcs, @montoLCS, @id_referencia, @idSectorPriv

 While @@FETCH_STATUS = 0
 BEGIN

  BEGIN TRY

  /* 1 – ALTA CONOCIENDO EL ID PADRON */
  set @idContra = null 
  set @gestion = null 

  -- Si ya esta procesado un registro para el mismo cliente/id_padron/familia lo marca como duplicado = 1, procesado = 1, pero sin nro de contraparte
  if exists (select top 1 * from ln_altas_masivas_47 where cliente = @cliente and id_padron = @idpadron and familia = @familia and  id_alta != @idAlta and procesado = 1) 
  begin
   set @total_duplicados = @total_duplicados + 1
   update ln_altas_masivas_47 set procesado = 1, duplicado = 1 where id_alta=@idAlta
  end 
  else 
  begin
   
   EXEC LN_contrapartes_  'insert_desde_otro_sp', @idContra OUTPUT, @idpadron, @cliente, null,1, @nombre, @eMAIL, @TE, NULL, NULL, @clave, @FECHA_VIG_DESDE, @FECHA_VIG_HASTA, @Userid, 0, NULL, @MODALIDAD,null,null,@paisservicio
   if (@id_referencia is not null and @idContra is not null)
   begin
    update LN_contrapartes set id_referencia = @id_referencia where contraparte = @idContra
   end

            if (isnull(@idSectorPriv,0) >0 and isnull(@idContra,0) >0 )
   begin
    update LN_contrapartes set idSectorPriv = @idSectorPriv where contraparte = @idContra
   end


   if (@idContra is not null) 
   begin

    /* 2 – INSERT EN FAMILIAS */

    EXEC LN_contraparte_familias_ 'INSERT', @idContra, @familia, NULL, 'N', 1, @Userid

    /* 3- INSERT EN GESTIONES */
 
    EXEC LN_gestiones_ 'insert_desde_otro_sp', @gestion OUTPUT, NULL, @idContra, @FECHA_VIG_DESDE, @FECHA_VIG_HASTA, NULL, @Userid
   
   end 

   if (@idContra is not null and @gestion is not null ) 
   begin
    /* 4 - ACTUALIZAR EL LEGAJO */

    EXEC LN_actualizar_legajo @idContra, @gestion, @Userid 

    /* 5 – COLOCAR EN CARGA INICIAL */

    if exists (select TOP 1 * from LN_docs where contraparte = @idContra and gestion = @gestion and aplica = 1 and estado_doc != 'X')
    begin
     UPDATE LN_contrapartes SET carga_inicial = 1 where contraparte = @idContra
    end

    /* 6- VERIFICACION DE BALANCES */
    -- EXEC LN_verificar_balance_contraparte @idContra

    /* 7- PREPAGOS */
    if (@MODALIDAD = 'PP')
    begin
     EXEC LN_contrapartes_ 'generar_prepagos', @idContra, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @Userid
    end

    if (@montoLCS is not null)
    begin
     /*
      Producto
      2024 Dependencia Económica
      2035 Dependencia Económica - Balances
      2034 Límite de Crédito
      2053 Múltiples Límites de Crédito
      */

     IF (@productolcs in (2034,2053)) -- Limite de credito
     begin
     insert into LN_dep_econ_compras (cliente, identificacion, id_padron, contraparte, producto, fecha_solicitud, moneda, monto_credito_solicitado, cotizacion, visible, created)
     values(@cliente,@TaxID,@idpadron,@idContra,@productolcs,@fechalcs,@monedalcs,@montoLCS,1,1,getdate())
     end
     else  -- Dependencia Económica
     begin
     insert into LN_dep_econ_compras (cliente, identificacion, id_padron, contraparte, producto, desde, hasta, moneda, total_compras, valor_cliente, cotizacion, visible, created)
     values(@cliente,@TaxID,@idpadron,@idContra,@productolcs,dateadd(dd,-364,@fechalcs),@fechalcs,@monedalcs,@montoLCS,@montoLCS,1,1,getdate())
     end
    end

    /* 8 – COLOCAR EN QUEUE */
    EXEC LN_contrapartes_queue_ 'INSERT', NULL, @idContra

    /* 9 – TRAZABILIDAD */

    EXEC insertar_trazabilidad 'Alta de Contraparte', @cliente, 'ALTA_CONTRAPARTE_BACKEND', 'BACK', @idContra, @Userid
   
    /**/
    update ln_altas_masivas_47 set procesado = 1,contraparte = @idContra where id_padron=@idpadron and id_alta=@idAlta

    set @total_procesado = @total_procesado + 1


   end
  end

  END TRY
  BEGIN CATCH

  END CATCH

  Fetch NEXT FROM LEDALTAMASIVA INTO  @idAlta,  @idpadron, 
           @nombre,  @eMAIL, @TE,
           @cliente, @familia, @MODALIDAD,
           @paisservicio, @TaxID, @servicio_contratado,
           @fechalcs, @monedalcs,@productolcs, @montoLCS, @id_referencia, @idSectorPriv
 END 

 CLOSE LEDALTAMASIVA
 DEALLOCATE LEDALTAMASIVA

 declare @total_no_procesados int = (select count(*) FROM ln_altas_masivas_47 ln_altas_masivas 
   where (procesado = 0 or contraparte is null)
   and ln_altas_masivas.cliente = @clienteproceso 
   and ln_altas_masivas.familia = isnull(@familiaproceso,ln_altas_masivas.familia))
 if (@total_no_procesados > 0)
  SELECT  @total_procesado as total_procesado, @total_no_procesados as total_no_procesado, @total_duplicados as total_duplicados,
    cliente,
    familia,
    razon_social,
    pais_taxid,
    taxid,
    nombre_contacto,
    apellido_contacto,
    te_contacto,
    email_contacto,
    tipo_pago,
    idioma,
    paisservicio,
    servicio_contratado,
    id_referencia,
    solicitado_por,
    idSectorPriv,
    producto_monto,
    fecha_monto,
    moneda_monto,
    monto
    FROM ln_altas_masivas_47 ln_altas_masivas 
    where (procesado = 0 or contraparte is null)
    and ln_altas_masivas.cliente = @clienteproceso 
    and ln_altas_masivas.familia = isnull(@familiaproceso,ln_altas_masivas.familia)
  order by razon_social
 else 
  SELECT  @total_procesado as total_procesado, @total_no_procesados as total_no_procesado, @total_duplicados as total_duplicados,
    null as cliente,
    null as familia,
    null as razon_social,
    null as pais_taxid,
    null as taxid,
    null as nombre_contacto,
    null as apellido_contacto,
    null as te_contacto,
    null as email_contacto,
    null as tipo_pago,
    null as idioma,
    null as paisservicio,
    null as servicio_contratado,
    null as id_referencia,
    null as solicitado_por,
    null as idSectorPriv,
    null as producto_monto,
    null as fecha_monto,
    null as moneda_monto,
    null as monto
  
 
END

GO

Used By

No items found