Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
7| Name | Data Type | Length | Description |
|---|---|---|---|
| @accion | varchar | 30 | |
| @p_contraparte | int | 4 | |
| @p_id_balance | int | 4 | |
| @p_clave_indicador | varchar | 50 | |
| @p_valor | float | 8 | |
| @p_user_id | int | 4 | |
| @p_valor_fecha | datetime | 8 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_balances
-- Add the parameters for the stored procedure here
@accion varchar(30),
@p_contraparte int,
@p_id_balance int = null,
@p_clave_indicador varchar(50) = null,
@p_valor float = null,
@p_user_id int = null,
@p_valor_fecha datetime = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @gestion int = null
-- Insert statements for procedure here
IF (@accion = 'producto') BEGIN
if (@p_contraparte is not null) begin
select LN_contrapartes.contraparte, LN_productos.producto,
LN_productos.nombre_producto, LN_productos.producto_id,
LN_productos.class_icon, LN_productos.etiqueta,
LN_productos.balance_carga, LN_productos.balance_analisis,
LN_productos.balance_score, LN_productos.balance_valoracion
from LN_contrapartes inner join LN_contraparte_familias
on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
inner join LN_productos on LN_familia_productos.producto = LN_productos.producto
inner join LN_familias on
(LN_familia_productos.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_cliente_productos on
(LN_familia_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
/*inner join LN_producto_tipo_doc on LN_cliente_productos.producto = LN_producto_tipo_doc.producto*/
where LN_contrapartes.contraparte = @p_contraparte
and LN_productos.balance > 0
and LN_contraparte_familias.activo = 1
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_productos.visible = 1
/*and LN_producto_tipo_doc.activo = 1*/
group by LN_contrapartes.contraparte, LN_productos.producto,
LN_productos.nombre_producto, LN_productos.producto_id,
LN_productos.class_icon, LN_productos.etiqueta,
LN_productos.balance_carga, LN_productos.balance_analisis,
LN_productos.balance_score, LN_productos.balance_valoracion
end
END ELSE
IF (@accion = 'ultimo_balance') BEGIN
/* para obtener el ID del balance más nuevo PUBLICADO de una contraparte vinculado
a un documento LED que se encuentre VERIFICADO. De este modo se puede indicar
al API de cálculo de scores de balances sobré qué registro debe calcularse */
if (@p_contraparte is not null) begin
select TOP 1 balances_contables.id_balance
from balances_contables
inner join LN_docs on balances_contables.id_balance = LN_docs.id_externo
inner join LN_tipos_doc on LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
and LN_docs.contraparte = LN_gestiones.contraparte)
where LN_tipos_doc.es_balance > 0
and LN_docs.contraparte = @p_contraparte
and LN_docs.estado_doc = 'V'
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= CONVERT(date, GETDATE())
and balances_contables.estado = 'PUBLICADO'
order by balances_contables.fecha_balance DESC
end
END ELSE
IF (@accion = 'balances_contraparte') BEGIN
/*
para obtener los documentos balances de la gestión activa de la contraparte,
ordenados por fecha de cierre independientemente de su estado de carga.
Se cruza la información existente con balances_contables por fecha y cuit
que se encuentren visibles y en estado PUBLICADO.
De esta manera se sabe si en los balances que se muestran en la solapa de LED
aparece alguno que es provisto por Fidelitas y no por la contraparte. Sería
el caso en el registro se cumple esta condición:
(LN_docs.estado_doc <> 'V' and balances_contables = 'PUBLICADO')
*/
if (@p_contraparte is not null) begin
DECLARE @cuitc varchar(50)
SELECT @cuitc = padrones.identificacion, @gestion = ln_gestiones.gestion
from LN_contrapartes
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
/*select TOP 3 balances_contables.fecha_balance, LN_docs.doc_id, LN_docs.estado_doc,
LN_docs.inicio_ejercicio, LN_docs.fin_ejercicio, balances_contables.estado,
balances_contables.id_balance, Year(balances_contables.fecha_balance) as anio_ejercicio
from balances_contables
left outer join LN_docs on balances_contables.id_balance = LN_docs.id_externo
where balances_contables.cuit = @cuitc
and balances_contables.estado = 'PUBLICADO'
and isnull(balances_contables.visible,0) = 1
and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
order by balances_contables.fecha_balance DESC*/
select top 5 bb.* from
(select balances_contables.fecha_balance, LN_docs.estado_doc,
LN_docs.inicio_ejercicio, LN_docs.fin_ejercicio, balances_contables.estado,
balances_contables.id_balance, Year(balances_contables.fecha_balance) as anio_ejercicio,
substring(convert(varchar,balances_contables.fecha_balance,103),4,7) as cierre_ejercicio
from balances_contables
left outer join LN_docs on ( balances_contables.id_balance = LN_docs.id_externo
and ln_docs.estado_doc !='X' and ln_docs.aplica = 1
and LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gestion)
where balances_contables.cuit = @cuitc
and balances_contables.estado = 'PUBLICADO'
and isnull(balances_contables.visible,0) = 1
--and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
and balances_contables.fecha_balance >= convert(date,dateadd(yy, -6, getdate()))
group by balances_contables.fecha_balance, LN_docs.estado_doc,
LN_docs.inicio_ejercicio, LN_docs.fin_ejercicio, balances_contables.estado,
balances_contables.id_balance) bb
order by bb.fecha_balance DESC
end
END ELSE
/* Consulta por ID balance */
IF (@accion = 'datos_contables') BEGIN
select id_balance, cuit, codigo, fecha_balance, bal_manifestacion, ejercicio, periodo, monedaifx, moneda, ac_cajban, ac_inver, ac_crevta, ac_otrcre, ac_biecam, ac_otract, ac_bietan, ac_total, anc_crevta, anc_otrcre,
anc_inver, anc_actint, anc_otract, anc_bieuso, anc_bieusovo, anc_depacu, anc_total, act_total, pc_ctapag, pc_presta, pc_remune, pc_carfis, pc_antcli, pc_otrpas, pc_total, pnc_cuepag, pnc_previ, pnc_presta,
pnc_otrpas, pnc_deufis, pnc_total, iif(pas_total>0,pas_total,1) as pas_total, capsoc, resacu, res_noasig, patrimonio, res_vtanet, res_compras, res_cosmer, amortiza, res_gascom, res_gasadm, res_gasfin, res_otrosing, res_otrosegr,
res_resfin, res_iva, ganancia, ebitda, ajucap, notas, comentarios, ind_liqcorr, ind_liqseca, ind_endeu, ind_solvencia, ind_endeuact, ind_captra, ind_cappro, ind_invbu, ind_inmact, ind_inmpat, ind_marbru,
ind_utilfin, ind_retpat, ind_rotvta, ind_rotvta_dias, ind_rotact, ind_rotact_dias, ind_rentabilidad, ind_indrot, ind_indrot_dias, ind_rotinv, ind_rotinv_dias, ind_prest_pn, ind_prest_vtas, ind_solvencia_pat,
fecha_act, usuario, idifx, created, created_by, modified, modified_by, visible, estado, id_padron, ind_ebipas, task_id, resacu_ant, res_noasig_ant, ruta_archivo, valoracion
FROM balances_contables
where balances_contables.id_balance = @p_id_balance
END ELSE
/* Dada una contraparte, devuelve la consulta de indicadores (índices) de balances suscriptos
por el cliente, si tiene el producto */
IF (@accion = 'obtener_indicadores') BEGIN
-- Se fija cuantos dias pasaron de la ultima carga o actualizacion de balance
declare @cuit varchar(20) = (select identificacion from padrones where id_padron =
(select id_padron from LN_contrapartes where contraparte = @p_contraparte))
declare @created date = (select MAX(created) from balances_contables where cuit = @cuit)
declare @modified date = (select MAX(modified) from balances_contables where cuit = @cuit)
set @created = isnull(@created,'2018-01-01 00:00:00')
set @modified = isnull(@modified,'2018-01-01 00:00:00')
if ( @created >= @modified ) set @modified = @created
declare @dias_balance int = (datediff(day, @modified, getdate()))
select LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.clave_indicador, LN_indicadores.valoracion,
LN_indicadores.tipo_dato, LN_indicadores.orden,
actualizacion.ultima_actualizacion,
-- Si fue actualizado, despues de la ultima vez que se calculo el indicador, lo tiene le ponemos 100 dias, para que lo calcule.
iif(@dias_balance < isnull(actualizacion.dias_ultima_actualizacion, 100),100,
isnull(actualizacion.dias_ultima_actualizacion, 100)) as dias_ultima_actualizacion
--isnull(actualizacion.dias_ultima_actualizacion, 100) as dias_ultima_actualizacion
from LN_indicadores
inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
inner join LN_familia_productos on LN_cliente_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_cliente_indicadores on (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
and LN_indicadores.indicador = LN_cliente_indicadores.indicador)
left outer join (select LN_contraparte_indicadores.indicador,
isnull(LN_contraparte_indicadores.modified, isnull(LN_contraparte_indicadores.created, '2018-01-01 00:00:00')) as ultima_actualizacion,
datediff(day, isnull(LN_contraparte_indicadores.modified, isnull(LN_contraparte_indicadores.created, '2018-01-01 00:00:00')), getdate()) as dias_ultima_actualizacion
from LN_contraparte_indicadores
inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
where LN_contraparte_indicadores.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()) actualizacion on LN_indicadores.indicador = actualizacion.indicador
where ISNULL(LN_productos.balance, 0) > 0
and LN_contrapartes.contraparte = @p_contraparte
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_contraparte_familias.activo = 1
group by LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.clave_indicador, LN_indicadores.valoracion,
LN_indicadores.tipo_dato, LN_indicadores.orden,
actualizacion.ultima_actualizacion, actualizacion.dias_ultima_actualizacion
order by LN_indicadores.orden
END ELSE
/* Guarda en la tabla contraparte_indicadores el valor de un indicador de balance.
Requiere como parámetros el ID de contraparte, la clave del indicador y el valor numérico del indicador */
IF (@accion = 'actualizar_indicador') BEGIN
if (@p_contraparte > 0 AND @p_clave_indicador is not null) begin
declare @gest int = null
declare @indic int = null
declare @tipo_dato varchar(1) = NULL
select @gest = LN_gestiones.gestion,
@indic = LN_indicadores.indicador,
@tipo_dato = LN_indicadores.tipo_dato
from LN_gestiones inner join LN_contrapartes on LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_indicadores on LN_contrapartes.cliente = LN_cliente_indicadores.cliente
inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
inner join LN_cliente_productos on (LN_indicadores.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_indicadores.producto = LN_familia_productos.producto)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = @p_clave_indicador
and LN_cliente_productos.activo = 1
and LN_contraparte_familias.activo = 1
and LN_familia_productos.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
group by LN_gestiones.gestion, LN_indicadores.indicador, LN_indicadores.tipo_dato
if (@gest is not null AND @indic is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic)
if (@tipo_dato != 'D')
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @indic, @p_valor, GETDATE(), @p_user_id)
else
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_fecha, created, created_by)
values
(@p_contraparte, @gest, @indic, @p_valor_fecha, GETDATE(), @p_user_id)
else
if (@tipo_dato != 'D')
update LN_contraparte_indicadores set
valor_numerico = @p_valor,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic
else
update LN_contraparte_indicadores set
valor_fecha = @p_valor_fecha,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic
end
end
END
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_balances
-- Add the parameters for the stored procedure here
@accion varchar(30),
@p_contraparte int,
@p_id_balance int = null,
@p_clave_indicador varchar(50) = null,
@p_valor float = null,
@p_user_id int = null,
@p_valor_fecha datetime = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @gestion int = null
-- Insert statements for procedure here
IF (@accion = 'producto') BEGIN
if (@p_contraparte is not null) begin
select LN_contrapartes.contraparte, LN_productos.producto,
LN_productos.nombre_producto, LN_productos.producto_id,
LN_productos.class_icon, LN_productos.etiqueta,
LN_productos.balance_carga, LN_productos.balance_analisis,
LN_productos.balance_score, LN_productos.balance_valoracion
from LN_contrapartes inner join LN_contraparte_familias
on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familia_productos on LN_contraparte_familias.familia = LN_familia_productos.familia
inner join LN_productos on LN_familia_productos.producto = LN_productos.producto
inner join LN_familias on
(LN_familia_productos.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_cliente_productos on
(LN_familia_productos.producto = LN_cliente_productos.producto
and LN_contrapartes.cliente = LN_cliente_productos.cliente)
/*inner join LN_producto_tipo_doc on LN_cliente_productos.producto = LN_producto_tipo_doc.producto*/
where LN_contrapartes.contraparte = @p_contraparte
and LN_productos.balance > 0
and LN_contraparte_familias.activo = 1
and LN_cliente_productos.activo = 1
and LN_familias.visible = 1
and LN_familia_productos.activo = 1
and LN_productos.visible = 1
/*and LN_producto_tipo_doc.activo = 1*/
group by LN_contrapartes.contraparte, LN_productos.producto,
LN_productos.nombre_producto, LN_productos.producto_id,
LN_productos.class_icon, LN_productos.etiqueta,
LN_productos.balance_carga, LN_productos.balance_analisis,
LN_productos.balance_score, LN_productos.balance_valoracion
end
END ELSE
IF (@accion = 'ultimo_balance') BEGIN
/* para obtener el ID del balance más nuevo PUBLICADO de una contraparte vinculado
a un documento LED que se encuentre VERIFICADO. De este modo se puede indicar
al API de cálculo de scores de balances sobré qué registro debe calcularse */
if (@p_contraparte is not null) begin
select TOP 1 balances_contables.id_balance
from balances_contables
inner join LN_docs on balances_contables.id_balance = LN_docs.id_externo
inner join LN_tipos_doc on LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
and LN_docs.contraparte = LN_gestiones.contraparte)
where LN_tipos_doc.es_balance > 0
and LN_docs.contraparte = @p_contraparte
and LN_docs.estado_doc = 'V'
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= CONVERT(date, GETDATE())
and balances_contables.estado = 'PUBLICADO'
order by balances_contables.fecha_balance DESC
end
END ELSE
IF (@accion = 'balances_contraparte') BEGIN
/*
para obtener los documentos balances de la gestión activa de la contraparte,
ordenados por fecha de cierre independientemente de su estado de carga.
Se cruza la información existente con balances_contables por fecha y cuit
que se encuentren visibles y en estado PUBLICADO.
De esta manera se sabe si en los balances que se muestran en la solapa de LED
aparece alguno que es provisto por Fidelitas y no por la contraparte. Sería
el caso en el registro se cumple esta condición:
(LN_docs.estado_doc <> 'V' and balances_contables = 'PUBLICADO')
*/
if (@p_contraparte is not null) begin
DECLARE @cuitc varchar(50)
SELECT @cuitc = padrones.identificacion, @gestion = ln_gestiones.gestion
from LN_contrapartes
inner join ln_gestiones on ln_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1
inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
where LN_contrapartes.contraparte = @p_contraparte
/*select TOP 3 balances_contables.fecha_balance, LN_docs.doc_id, LN_docs.estado_doc,
LN_docs.inicio_ejercicio, LN_docs.fin_ejercicio, balances_contables.estado,
balances_contables.id_balance, Year(balances_contables.fecha_balance) as anio_ejercicio
from balances_contables
left outer join LN_docs on balances_contables.id_balance = LN_docs.id_externo
where balances_contables.cuit = @cuitc
and balances_contables.estado = 'PUBLICADO'
and isnull(balances_contables.visible,0) = 1
and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
order by balances_contables.fecha_balance DESC*/
select top 5 bb.* from
(select balances_contables.fecha_balance, LN_docs.estado_doc,
LN_docs.inicio_ejercicio, LN_docs.fin_ejercicio, balances_contables.estado,
balances_contables.id_balance, Year(balances_contables.fecha_balance) as anio_ejercicio,
substring(convert(varchar,balances_contables.fecha_balance,103),4,7) as cierre_ejercicio
from balances_contables
left outer join LN_docs on ( balances_contables.id_balance = LN_docs.id_externo
and ln_docs.estado_doc !='X' and ln_docs.aplica = 1
and LN_docs.contraparte = @p_contraparte
and LN_docs.gestion = @gestion)
where balances_contables.cuit = @cuitc
and balances_contables.estado = 'PUBLICADO'
and isnull(balances_contables.visible,0) = 1
--and datediff(year, balances_contables.fecha_balance, GETDATE()) < 6
and balances_contables.fecha_balance >= convert(date,dateadd(yy, -6, getdate()))
group by balances_contables.fecha_balance, LN_docs.estado_doc,
LN_docs.inicio_ejercicio, LN_docs.fin_ejercicio, balances_contables.estado,
balances_contables.id_balance) bb
order by bb.fecha_balance DESC
end
END ELSE
/* Consulta por ID balance */
IF (@accion = 'datos_contables') BEGIN
select id_balance, cuit, codigo, fecha_balance, bal_manifestacion, ejercicio, periodo, monedaifx, moneda, ac_cajban, ac_inver, ac_crevta, ac_otrcre, ac_biecam, ac_otract, ac_bietan, ac_total, anc_crevta, anc_otrcre,
anc_inver, anc_actint, anc_otract, anc_bieuso, anc_bieusovo, anc_depacu, anc_total, act_total, pc_ctapag, pc_presta, pc_remune, pc_carfis, pc_antcli, pc_otrpas, pc_total, pnc_cuepag, pnc_previ, pnc_presta,
pnc_otrpas, pnc_deufis, pnc_total, iif(pas_total>0,pas_total,1) as pas_total, capsoc, resacu, res_noasig, patrimonio, res_vtanet, res_compras, res_cosmer, amortiza, res_gascom, res_gasadm, res_gasfin, res_otrosing, res_otrosegr,
res_resfin, res_iva, ganancia, ebitda, ajucap, notas, comentarios, ind_liqcorr, ind_liqseca, ind_endeu, ind_solvencia, ind_endeuact, ind_captra, ind_cappro, ind_invbu, ind_inmact, ind_inmpat, ind_marbru,
ind_utilfin, ind_retpat, ind_rotvta, ind_rotvta_dias, ind_rotact, ind_rotact_dias, ind_rentabilidad, ind_indrot, ind_indrot_dias, ind_rotinv, ind_rotinv_dias, ind_prest_pn, ind_prest_vtas, ind_solvencia_pat,
fecha_act, usuario, idifx, created, created_by, modified, modified_by, visible, estado, id_padron, ind_ebipas, task_id, resacu_ant, res_noasig_ant, ruta_archivo, valoracion
FROM balances_contables
where balances_contables.id_balance = @p_id_balance
END ELSE
/* Dada una contraparte, devuelve la consulta de indicadores (índices) de balances suscriptos
por el cliente, si tiene el producto */
IF (@accion = 'obtener_indicadores') BEGIN
-- Se fija cuantos dias pasaron de la ultima carga o actualizacion de balance
declare @cuit varchar(20) = (select identificacion from padrones where id_padron =
(select id_padron from LN_contrapartes where contraparte = @p_contraparte))
declare @created date = (select MAX(created) from balances_contables where cuit = @cuit)
declare @modified date = (select MAX(modified) from balances_contables where cuit = @cuit)
set @created = isnull(@created,'2018-01-01 00:00:00')
set @modified = isnull(@modified,'2018-01-01 00:00:00')
if ( @created >= @modified ) set @modified = @created
declare @dias_balance int = (datediff(day, @modified, getdate()))
select LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.clave_indicador, LN_indicadores.valoracion,
LN_indicadores.tipo_dato, LN_indicadores.orden,
actualizacion.ultima_actualizacion,
-- Si fue actualizado, despues de la ultima vez que se calculo el indicador, lo tiene le ponemos 100 dias, para que lo calcule.
iif(@dias_balance < isnull(actualizacion.dias_ultima_actualizacion, 100),100,
isnull(actualizacion.dias_ultima_actualizacion, 100)) as dias_ultima_actualizacion
--isnull(actualizacion.dias_ultima_actualizacion, 100) as dias_ultima_actualizacion
from LN_indicadores
inner join LN_productos on LN_indicadores.producto = LN_productos.producto
inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
inner join LN_familia_productos on LN_cliente_productos.producto = LN_familia_productos.producto
inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
inner join LN_familias on (LN_contraparte_familias.familia = LN_familias.familia
and LN_contrapartes.cliente = LN_familias.cliente)
inner join LN_cliente_indicadores on (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
and LN_indicadores.indicador = LN_cliente_indicadores.indicador)
left outer join (select LN_contraparte_indicadores.indicador,
isnull(LN_contraparte_indicadores.modified, isnull(LN_contraparte_indicadores.created, '2018-01-01 00:00:00')) as ultima_actualizacion,
datediff(day, isnull(LN_contraparte_indicadores.modified, isnull(LN_contraparte_indicadores.created, '2018-01-01 00:00:00')), getdate()) as dias_ultima_actualizacion
from LN_contraparte_indicadores
inner join LN_gestiones on (LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
where LN_contraparte_indicadores.contraparte = @p_contraparte
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()) actualizacion on LN_indicadores.indicador = actualizacion.indicador
where ISNULL(LN_productos.balance, 0) > 0
and LN_contrapartes.contraparte = @p_contraparte
and LN_cliente_productos.activo = 1
and LN_familia_productos.activo = 1
and LN_contraparte_familias.activo = 1
group by LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.clave_indicador, LN_indicadores.valoracion,
LN_indicadores.tipo_dato, LN_indicadores.orden,
actualizacion.ultima_actualizacion, actualizacion.dias_ultima_actualizacion
order by LN_indicadores.orden
END ELSE
/* Guarda en la tabla contraparte_indicadores el valor de un indicador de balance.
Requiere como parámetros el ID de contraparte, la clave del indicador y el valor numérico del indicador */
IF (@accion = 'actualizar_indicador') BEGIN
if (@p_contraparte > 0 AND @p_clave_indicador is not null) begin
declare @gest int = null
declare @indic int = null
declare @tipo_dato varchar(1) = NULL
select @gest = LN_gestiones.gestion,
@indic = LN_indicadores.indicador,
@tipo_dato = LN_indicadores.tipo_dato
from LN_gestiones inner join LN_contrapartes on LN_gestiones.contraparte = LN_contrapartes.contraparte
inner join LN_cliente_indicadores on LN_contrapartes.cliente = LN_cliente_indicadores.cliente
inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
inner join LN_cliente_productos on (LN_indicadores.producto = LN_cliente_productos.producto
AND LN_contrapartes.cliente = LN_cliente_productos.cliente)
inner join LN_contraparte_familias on LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
inner join LN_familia_productos on (LN_contraparte_familias.familia = LN_familia_productos.familia
AND LN_indicadores.producto = LN_familia_productos.producto)
where LN_contrapartes.contraparte = @p_contraparte
and LN_indicadores.clave_indicador = @p_clave_indicador
and LN_cliente_productos.activo = 1
and LN_contraparte_familias.activo = 1
and LN_familia_productos.activo = 1
and LN_gestiones.desde <= GETDATE()
and LN_gestiones.hasta >= GETDATE()
group by LN_gestiones.gestion, LN_indicadores.indicador, LN_indicadores.tipo_dato
if (@gest is not null AND @indic is not null) begin
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic)
if (@tipo_dato != 'D')
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_numerico, created, created_by)
values
(@p_contraparte, @gest, @indic, @p_valor, GETDATE(), @p_user_id)
else
insert into LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_fecha, created, created_by)
values
(@p_contraparte, @gest, @indic, @p_valor_fecha, GETDATE(), @p_user_id)
else
if (@tipo_dato != 'D')
update LN_contraparte_indicadores set
valor_numerico = @p_valor,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic
else
update LN_contraparte_indicadores set
valor_fecha = @p_valor_fecha,
modified = GETDATE(),
modified_by = @p_user_id
where contraparte = @p_contraparte
and gestion = @gest
and indicador = @indic
end
end
END
END
GO
Depends On
14Used By
No items found