Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
1| Name | Data Type | Length | Description |
|---|---|---|---|
| @contraparte | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
Indicador clave_indicador
415 Geografía de origen del proveedor - RA_geografia_origen -> Poner el valor según la tabla geografia_proveedor
416 Estructura del proveedor - RA_Estructura_proveedor -> Poner el valor de la gestión anterior
417 Industria (actividad) - RA_Industria -> Poner el valor de la gestión anterior
418 Materialidad del proveedor - RA_Materialidad_proveedor -> Poner el valor según el valor de compras cargado en la tabla LN_dep_econ_compras
495 Clasificación empresa - SOS_CLASIFICACION -> Poner el valor de la gestión anterior
insert into LN_indicadores_autocompletar values (1226057645, 47, 415, 0, 'geografia_proveedor')
insert into LN_indicadores_autocompletar values (1226057645, 47, 416, 1, null)
insert into LN_indicadores_autocompletar values (1226057645, 47, 417, 1, null)
insert into LN_indicadores_autocompletar values (1226057645, 47, 418, 0, 'LN_dep_econ_compras')
insert into LN_indicadores_autocompletar values (1226057645, 47, 495, 1, null)
Geografia del proveedor, Florencia nos informó que Argentina es 38.
Si cambia hay o aparecen otros paises hay que cambiarlo o cargarlo en la tabla geografia_proveedor
insert into geografia_proveedor values (1226057645, 'AR', 38)
[LN_indicadores_autocompletar_] 144853
*/
CREATE OR ALTER PROCEDURE dbo.LN_indicadores_autocompletar_
@contraparte int
AS
BEGIN
SET NOCOUNT ON;
declare @ind int
declare @prod int
declare @clave_indicador varchar(100)
declare @tabla varchar(100)
declare @cliente int
declare @familia int
declare @pais varchar(2)
declare @servicio_contratado int
declare @gestion int = null, @gestion_ant int = null
declare @cuit varchar(100)
declare @valor_numerico float,
@valor_texto varchar(max),
@valor_fecha date,
@valor_memo varchar(max),
@valor int
select @cliente = ln_contrapartes.cliente, @gestion = gestion, @familia = familia,
@cuit = identificacion, @pais = LN_contrapartes.country_code, @servicio_contratado = ln_contrapartes.servicio_contratado
from ln_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_contraparte_familias ON (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte AND
LN_contraparte_familias.activo = 1)
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where ln_contrapartes.contraparte = @contraparte
and LN_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
select @gestion_ant = max(gestion)
from LN_gestiones
where LN_gestiones.contraparte = @contraparte
and gestion < @gestion
DECLARE C_Cursor CURSOR FOR
SELECT LN_indicadores.indicador, LN_indicadores.producto, LN_indicadores.clave_indicador
FROM LN_contrapartes
INNER JOIN LN_cliente_indicadores ON (LN_cliente_indicadores.cliente = LN_contrapartes.cliente AND
LN_cliente_indicadores.activo = 1)
INNER JOIN LN_indicadores ON (LN_indicadores.indicador = LN_cliente_indicadores.indicador)
INNER JOIN LN_cliente_productos ON (LN_cliente_productos.cliente = LN_contrapartes.cliente AND
LN_cliente_productos.producto = LN_indicadores.producto AND
LN_cliente_productos.activo = 1)
INNER JOIN LN_productos ON (LN_productos.producto = LN_cliente_productos.producto AND
LN_productos.visible = 1)
INNER JOIN LN_contraparte_familias ON (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte AND
LN_contraparte_familias.activo = 1)
INNER JOIN LN_familia_productos ON (LN_familia_productos.familia = LN_contraparte_familias.familia and
LN_familia_productos.producto = LN_cliente_productos.producto and
LN_familia_productos.activo = 1)
WHERE LN_contrapartes.contraparte = @contraparte
AND LN_indicadores.indicador in (select indicador from LN_indicadores_autocompletar i where i.cliente = LN_contrapartes.cliente and i.servicio_contratado = @servicio_contratado)
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @ind, @prod, @clave_indicador
WHILE @@fetch_status = 0
BEGIN
/* Si el indicador está vacio o con todos sus valores nulos, busco valor a completar */
if not exists (select * from LN_contraparte_indicadores where contraparte = @contraparte and indicador = @ind and gestion = @gestion
and (valor_texto is not null or valor_numerico is not null or valor_fecha is not null or valor_memo is not null))
begin
set @valor_numerico = null
set @valor_texto = null
set @valor_fecha = null
set @valor_memo = null
-- 1) Completar con gestion anterior
if (select completar_gestion_anterior from LN_indicadores_autocompletar where cliente = @cliente and indicador = @ind) = 1
begin
select @valor_numerico = valor_numerico,
@valor_texto = valor_texto,
@valor_fecha = valor_fecha,
@valor_memo = valor_memo
from LN_contraparte_indicadores
where contraparte = @contraparte and indicador = @ind and gestion = @gestion_ant and visible = 1
end
else
begin
-- 2) Completar según tabla
set @tabla = null
select @tabla = completar_con_tabla from LN_indicadores_autocompletar where cliente = @cliente and indicador = @ind
if (@tabla = 'LN_dep_econ_compras')
begin
declare @mes date,
@compras money,
@cotizacion decimal(20,2) = 1,
@moneda varchar(3)
SELECT top 1 @mes = hasta,
@compras = SUM(ISNULL(total_compras,0)),
@moneda = moneda
FROM LN_dep_econ_compras
where (contraparte = @contraparte or (cliente = @cliente and identificacion = @cuit))
and visible = 1
group by hasta, moneda
order by hasta desc
if (@moneda = 'ARS')
begin
select top 1 @cotizacion = rate_eur
from cotizaciones
where currency_code = 'ARS' and convert(DATE,fecha_cotizacion) <= @mes
order by fecha_cotizacion desc
end
if (@compras is not null)
begin
set @compras = @compras / isnull(@cotizacion,1)
if ( @compras <= 100000 ) set @valor_texto = 'B'
if ( @compras > 100000 and @compras < 5000000) set @valor_texto = 'M'
if ( @compras >= 5000000 ) set @valor_texto = 'A'
EXEC [dbo].[LN_indicadores_opciones] @ind, @valor_texto, @valor_memo output
end
end
if (@tabla = 'geografia_proveedor')
begin
set @valor = null
SELECT top 1 @valor = valor
FROM geografia_proveedor
where cliente = @cliente and country_code = @pais
if (@valor is not null)
begin
if ( @valor <= 35 ) set @valor_texto = 'A'
if ( @valor > 35 and @valor < 50) set @valor_texto = 'M'
if ( @valor >= 50 ) set @valor_texto = 'B'
EXEC [dbo].[LN_indicadores_opciones] @ind, @valor_texto, @valor_memo output
end
end
end
/*
select @ind, @clave_indicador, @valor_numerico,
@valor_texto,
@valor_fecha,
@valor_memo
*/
if (@valor_numerico is not null or
@valor_texto is not null or
@valor_fecha is not null or
@valor_memo is not null )
begin
if exists (select * from LN_contraparte_indicadores where contraparte = @contraparte and indicador = @ind and gestion = @gestion)
begin
update LN_contraparte_indicadores
set valor_numerico = @valor_numerico,
valor_texto = @valor_texto,
valor_fecha = @valor_fecha,
valor_memo = @valor_memo
where contraparte = @contraparte and indicador = @ind and gestion = @gestion
end
else
begin
insert into LN_contraparte_indicadores(contraparte,gestion,indicador,valor_numerico,valor_texto,valor_fecha,valor_memo,familia,visible)
values (@contraparte, @gestion, @ind, @valor_numerico, @valor_texto, @valor_fecha, @valor_memo, @familia, 1)
end
-- Cuando es 495 Clasificación empresa - SOS_CLASIFICACION, tiene que disparar el documento de Sostenibilidad que corresponda
if (@ind = '495' and @valor_texto is not null)
begin
declare @txt varchar(200) = 'SOSTENIBILIDAD-' + @valor_texto
declare @p_user_id int = (select user_id from users where username = 'sistemas')
EXEC LN_contraparte_sub_docs 'ALTA', @contraparte, @p_user_id, 1, @txt, 1
end
end
end
FETCH NEXT FROM C_Cursor INTO @ind, @prod, @clave_indicador
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
END
/*
CREATE TABLE [dbo].[LN_indicadores_autocompletar](
cliente int null,
servicio_contratado int null,
[indicador] [int] NULL,
[completar_gestion_anterior] bit NULL,
[completar_con_tabla] varchar(200) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[geografia_proveedor](
cliente int not null,
country_code varchar(2) null,
valor [int] NULL
) ON [PRIMARY]
*/
GO
GO
/*
Indicador clave_indicador
415 Geografía de origen del proveedor - RA_geografia_origen -> Poner el valor según la tabla geografia_proveedor
416 Estructura del proveedor - RA_Estructura_proveedor -> Poner el valor de la gestión anterior
417 Industria (actividad) - RA_Industria -> Poner el valor de la gestión anterior
418 Materialidad del proveedor - RA_Materialidad_proveedor -> Poner el valor según el valor de compras cargado en la tabla LN_dep_econ_compras
495 Clasificación empresa - SOS_CLASIFICACION -> Poner el valor de la gestión anterior
insert into LN_indicadores_autocompletar values (1226057645, 47, 415, 0, 'geografia_proveedor')
insert into LN_indicadores_autocompletar values (1226057645, 47, 416, 1, null)
insert into LN_indicadores_autocompletar values (1226057645, 47, 417, 1, null)
insert into LN_indicadores_autocompletar values (1226057645, 47, 418, 0, 'LN_dep_econ_compras')
insert into LN_indicadores_autocompletar values (1226057645, 47, 495, 1, null)
Geografia del proveedor, Florencia nos informó que Argentina es 38.
Si cambia hay o aparecen otros paises hay que cambiarlo o cargarlo en la tabla geografia_proveedor
insert into geografia_proveedor values (1226057645, 'AR', 38)
[LN_indicadores_autocompletar_] 144853
*/
CREATE OR ALTER PROCEDURE dbo.LN_indicadores_autocompletar_
@contraparte int
AS
BEGIN
SET NOCOUNT ON;
declare @ind int
declare @prod int
declare @clave_indicador varchar(100)
declare @tabla varchar(100)
declare @cliente int
declare @familia int
declare @pais varchar(2)
declare @servicio_contratado int
declare @gestion int = null, @gestion_ant int = null
declare @cuit varchar(100)
declare @valor_numerico float,
@valor_texto varchar(max),
@valor_fecha date,
@valor_memo varchar(max),
@valor int
select @cliente = ln_contrapartes.cliente, @gestion = gestion, @familia = familia,
@cuit = identificacion, @pais = LN_contrapartes.country_code, @servicio_contratado = ln_contrapartes.servicio_contratado
from ln_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_contraparte_familias ON (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte AND
LN_contraparte_familias.activo = 1)
inner join padrones on padrones.id_padron = LN_contrapartes.id_padron
where ln_contrapartes.contraparte = @contraparte
and LN_gestiones.vigente = 1 and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
select @gestion_ant = max(gestion)
from LN_gestiones
where LN_gestiones.contraparte = @contraparte
and gestion < @gestion
DECLARE C_Cursor CURSOR FOR
SELECT LN_indicadores.indicador, LN_indicadores.producto, LN_indicadores.clave_indicador
FROM LN_contrapartes
INNER JOIN LN_cliente_indicadores ON (LN_cliente_indicadores.cliente = LN_contrapartes.cliente AND
LN_cliente_indicadores.activo = 1)
INNER JOIN LN_indicadores ON (LN_indicadores.indicador = LN_cliente_indicadores.indicador)
INNER JOIN LN_cliente_productos ON (LN_cliente_productos.cliente = LN_contrapartes.cliente AND
LN_cliente_productos.producto = LN_indicadores.producto AND
LN_cliente_productos.activo = 1)
INNER JOIN LN_productos ON (LN_productos.producto = LN_cliente_productos.producto AND
LN_productos.visible = 1)
INNER JOIN LN_contraparte_familias ON (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte AND
LN_contraparte_familias.activo = 1)
INNER JOIN LN_familia_productos ON (LN_familia_productos.familia = LN_contraparte_familias.familia and
LN_familia_productos.producto = LN_cliente_productos.producto and
LN_familia_productos.activo = 1)
WHERE LN_contrapartes.contraparte = @contraparte
AND LN_indicadores.indicador in (select indicador from LN_indicadores_autocompletar i where i.cliente = LN_contrapartes.cliente and i.servicio_contratado = @servicio_contratado)
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @ind, @prod, @clave_indicador
WHILE @@fetch_status = 0
BEGIN
/* Si el indicador está vacio o con todos sus valores nulos, busco valor a completar */
if not exists (select * from LN_contraparte_indicadores where contraparte = @contraparte and indicador = @ind and gestion = @gestion
and (valor_texto is not null or valor_numerico is not null or valor_fecha is not null or valor_memo is not null))
begin
set @valor_numerico = null
set @valor_texto = null
set @valor_fecha = null
set @valor_memo = null
-- 1) Completar con gestion anterior
if (select completar_gestion_anterior from LN_indicadores_autocompletar where cliente = @cliente and indicador = @ind) = 1
begin
select @valor_numerico = valor_numerico,
@valor_texto = valor_texto,
@valor_fecha = valor_fecha,
@valor_memo = valor_memo
from LN_contraparte_indicadores
where contraparte = @contraparte and indicador = @ind and gestion = @gestion_ant and visible = 1
end
else
begin
-- 2) Completar según tabla
set @tabla = null
select @tabla = completar_con_tabla from LN_indicadores_autocompletar where cliente = @cliente and indicador = @ind
if (@tabla = 'LN_dep_econ_compras')
begin
declare @mes date,
@compras money,
@cotizacion decimal(20,2) = 1,
@moneda varchar(3)
SELECT top 1 @mes = hasta,
@compras = SUM(ISNULL(total_compras,0)),
@moneda = moneda
FROM LN_dep_econ_compras
where (contraparte = @contraparte or (cliente = @cliente and identificacion = @cuit))
and visible = 1
group by hasta, moneda
order by hasta desc
if (@moneda = 'ARS')
begin
select top 1 @cotizacion = rate_eur
from cotizaciones
where currency_code = 'ARS' and convert(DATE,fecha_cotizacion) <= @mes
order by fecha_cotizacion desc
end
if (@compras is not null)
begin
set @compras = @compras / isnull(@cotizacion,1)
if ( @compras <= 100000 ) set @valor_texto = 'B'
if ( @compras > 100000 and @compras < 5000000) set @valor_texto = 'M'
if ( @compras >= 5000000 ) set @valor_texto = 'A'
EXEC [dbo].[LN_indicadores_opciones] @ind, @valor_texto, @valor_memo output
end
end
if (@tabla = 'geografia_proveedor')
begin
set @valor = null
SELECT top 1 @valor = valor
FROM geografia_proveedor
where cliente = @cliente and country_code = @pais
if (@valor is not null)
begin
if ( @valor <= 35 ) set @valor_texto = 'A'
if ( @valor > 35 and @valor < 50) set @valor_texto = 'M'
if ( @valor >= 50 ) set @valor_texto = 'B'
EXEC [dbo].[LN_indicadores_opciones] @ind, @valor_texto, @valor_memo output
end
end
end
/*
select @ind, @clave_indicador, @valor_numerico,
@valor_texto,
@valor_fecha,
@valor_memo
*/
if (@valor_numerico is not null or
@valor_texto is not null or
@valor_fecha is not null or
@valor_memo is not null )
begin
if exists (select * from LN_contraparte_indicadores where contraparte = @contraparte and indicador = @ind and gestion = @gestion)
begin
update LN_contraparte_indicadores
set valor_numerico = @valor_numerico,
valor_texto = @valor_texto,
valor_fecha = @valor_fecha,
valor_memo = @valor_memo
where contraparte = @contraparte and indicador = @ind and gestion = @gestion
end
else
begin
insert into LN_contraparte_indicadores(contraparte,gestion,indicador,valor_numerico,valor_texto,valor_fecha,valor_memo,familia,visible)
values (@contraparte, @gestion, @ind, @valor_numerico, @valor_texto, @valor_fecha, @valor_memo, @familia, 1)
end
-- Cuando es 495 Clasificación empresa - SOS_CLASIFICACION, tiene que disparar el documento de Sostenibilidad que corresponda
if (@ind = '495' and @valor_texto is not null)
begin
declare @txt varchar(200) = 'SOSTENIBILIDAD-' + @valor_texto
declare @p_user_id int = (select user_id from users where username = 'sistemas')
EXEC LN_contraparte_sub_docs 'ALTA', @contraparte, @p_user_id, 1, @txt, 1
end
end
end
FETCH NEXT FROM C_Cursor INTO @ind, @prod, @clave_indicador
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
END
/*
CREATE TABLE [dbo].[LN_indicadores_autocompletar](
cliente int null,
servicio_contratado int null,
[indicador] [int] NULL,
[completar_gestion_anterior] bit NULL,
[completar_con_tabla] varchar(200) NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[geografia_proveedor](
cliente int not null,
country_code varchar(2) null,
valor [int] NULL
) ON [PRIMARY]
*/
GO
Depends On
17- dbo.LN_contraparte_sub_docs
- dbo.LN_indicadores_opciones
- dbo.cotizaciones
- dbo.geografia_proveedor
- dbo.LN_cliente_indicadores
- dbo.LN_cliente_productos
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contrapartes
- dbo.LN_dep_econ_compras
- dbo.LN_familia_productos
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.LN_indicadores_autocompletar
- dbo.LN_productos
- dbo.padrones
- dbo.users