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
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
Depends On
10Used By
No items found