Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
4| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_cliente | int | 4 | |
| @p_contraparte | int | 4 | |
| @p_clave_indicador | varchar | 50 | |
| @p_user_id | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 14/07/2020
-- Description: Calcula y guarda los indicadores del producto_id misaportes
-- =============================================
/*
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_ss', null
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_os', null
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_patronal', null
*/
CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_misportes
@p_cliente int,
@p_contraparte int,
@p_clave_indicador varchar(50),
@p_user_id int = null
AS
BEGIN
declare @gest int = 0
declare @cuit varchar(20) = null
declare @indic int = null
declare @texto varchar(50) = null
declare @fecha date = null
declare @valor decimal(10,2) = null
declare @mis_aportes_empresa table (
periodo int,
ddjj varchar(50),
aportes_ss varchar(50),
aportes_os varchar(50),
contr_patronal varchar(50),
periodo2 int,
cuit_empleador varchar(20),
nombre_empleador varchar(500),
periodo_str varchar(10),
cuit varchar(20))
if (@p_cliente is null or @p_cliente = 0)
begin
select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
end
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
select @indic = LN_indicadores.indicador
from LN_indicadores
where clave_indicador = @p_clave_indicador
--select @cuit as cuit, @indic as indicador, @gest as gestion
if (@indic is not null and isnull(@gest,0) > 0) begin
insert into @mis_aportes_empresa
EXEC mis_aportes_empresa @cuit, 720
-- gana el NO
if (@p_clave_indicador = 'aportes_ddjj')
begin
if (exists (select TOP 1 * from @mis_aportes_empresa a where a.ddjj like 'NO%' and
not exists (select TOP 1 * from @mis_aportes_empresa b where b.periodo = a.periodo and b.ddjj like 'SI%')))
set @texto = 'NO'
else
if (exists (select TOP 1 * from @mis_aportes_empresa where ddjj like 'SI%'))
set @texto = 'SI'
end
if (@p_clave_indicador = 'aportes_periodo')
begin
set @texto = (select max(periodo) from @mis_aportes_empresa)
if (@texto is not null)
begin
set @texto = SUBSTRING(@texto,1,4) + '-' + SUBSTRING(@texto,5,2) + '-01'
set @fecha = convert(date,@texto)
set @texto = null
end
end
-- Eliminamos los periodos vacíos o No presentó
-- De cada uno de los periodos tomo el mejor
-- De los datos que quedan en todos los periodos que quedan: Gana el peor
-- las posibilidades que quedan son IMPAGO - PAGO PARCIAL - PAGO TOTAL
-- ( al ordenarlos toma el peor )
if (@p_clave_indicador = 'aportes_ss')
begin
update @mis_aportes_empresa set aportes_ss = 'PAGO TOTAL' where aportes_ss like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
delete from @mis_aportes_empresa
where isnull(aportes_ss,'') in ('-','',' ') or aportes_ss like 'NO PRESENT%' -- No tomar en cuenta los vacíos
set @texto = (select top 1 aportes_ss
from @mis_aportes_empresa a
-- De cada uno de los periodos tomo el mejor
where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.aportes_ss > a.aportes_ss)
--
order by a.aportes_ss)
end
if (@p_clave_indicador = 'aportes_os')
begin
update @mis_aportes_empresa set aportes_os = 'PAGO TOTAL' where aportes_os like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
delete from @mis_aportes_empresa
where isnull(aportes_os,'') in ('-','',' ') or aportes_os like 'NO PRESENT%' -- No tomar en cuenta los vacíos
set @texto = (select top 1 aportes_os
from @mis_aportes_empresa a
-- De cada uno de los periodos tomo el mejor
where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.aportes_os > a.aportes_os)
--
order by a.aportes_os)
end
if (@p_clave_indicador = 'aportes_patronal')
begin
update @mis_aportes_empresa set contr_patronal = 'PAGO TOTAL' where contr_patronal like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
delete from @mis_aportes_empresa
where isnull(contr_patronal,'') in ('-','',' ') or contr_patronal like 'NO PRESENT%' -- No tomar en cuenta los vacíos
set @texto = (select top 1 contr_patronal
from @mis_aportes_empresa a
-- De cada uno de los periodos tomo el mejor
where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.contr_patronal > a.contr_patronal)
--
order by a.contr_patronal)
end
if (@texto = 'PAGO TOTAL') set @texto = 'PAGO'
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and visible = 1
and indicador = @indic)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto,valor_fecha,created, created_by)
VALUES
(@p_contraparte, @gest, @indic, @texto, @fecha, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @texto,
valor_fecha = @fecha,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic
and visible = 1
end
select @texto as texto, @fecha as fecha
END
GO
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 14/07/2020
-- Description: Calcula y guarda los indicadores del producto_id misaportes
-- =============================================
/*
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_ss', null
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_os', null
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_patronal', null
*/
CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_misportes
@p_cliente int,
@p_contraparte int,
@p_clave_indicador varchar(50),
@p_user_id int = null
AS
BEGIN
declare @gest int = 0
declare @cuit varchar(20) = null
declare @indic int = null
declare @texto varchar(50) = null
declare @fecha date = null
declare @valor decimal(10,2) = null
declare @mis_aportes_empresa table (
periodo int,
ddjj varchar(50),
aportes_ss varchar(50),
aportes_os varchar(50),
contr_patronal varchar(50),
periodo2 int,
cuit_empleador varchar(20),
nombre_empleador varchar(500),
periodo_str varchar(10),
cuit varchar(20))
if (@p_cliente is null or @p_cliente = 0)
begin
select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
end
SELECT @gest = LN_gestiones.gestion,
@cuit = padrones.identificacion
FROM LN_gestiones INNER JOIN LN_contrapartes
ON LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
WHERE LN_gestiones.desde <= GETDATE()
AND LN_gestiones.hasta >= GETDATE()
AND LN_contrapartes.activo = 1
AND LN_contrapartes.contraparte = @p_contraparte
select @indic = LN_indicadores.indicador
from LN_indicadores
where clave_indicador = @p_clave_indicador
--select @cuit as cuit, @indic as indicador, @gest as gestion
if (@indic is not null and isnull(@gest,0) > 0) begin
insert into @mis_aportes_empresa
EXEC mis_aportes_empresa @cuit, 720
-- gana el NO
if (@p_clave_indicador = 'aportes_ddjj')
begin
if (exists (select TOP 1 * from @mis_aportes_empresa a where a.ddjj like 'NO%' and
not exists (select TOP 1 * from @mis_aportes_empresa b where b.periodo = a.periodo and b.ddjj like 'SI%')))
set @texto = 'NO'
else
if (exists (select TOP 1 * from @mis_aportes_empresa where ddjj like 'SI%'))
set @texto = 'SI'
end
if (@p_clave_indicador = 'aportes_periodo')
begin
set @texto = (select max(periodo) from @mis_aportes_empresa)
if (@texto is not null)
begin
set @texto = SUBSTRING(@texto,1,4) + '-' + SUBSTRING(@texto,5,2) + '-01'
set @fecha = convert(date,@texto)
set @texto = null
end
end
-- Eliminamos los periodos vacíos o No presentó
-- De cada uno de los periodos tomo el mejor
-- De los datos que quedan en todos los periodos que quedan: Gana el peor
-- las posibilidades que quedan son IMPAGO - PAGO PARCIAL - PAGO TOTAL
-- ( al ordenarlos toma el peor )
if (@p_clave_indicador = 'aportes_ss')
begin
update @mis_aportes_empresa set aportes_ss = 'PAGO TOTAL' where aportes_ss like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
delete from @mis_aportes_empresa
where isnull(aportes_ss,'') in ('-','',' ') or aportes_ss like 'NO PRESENT%' -- No tomar en cuenta los vacíos
set @texto = (select top 1 aportes_ss
from @mis_aportes_empresa a
-- De cada uno de los periodos tomo el mejor
where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.aportes_ss > a.aportes_ss)
--
order by a.aportes_ss)
end
if (@p_clave_indicador = 'aportes_os')
begin
update @mis_aportes_empresa set aportes_os = 'PAGO TOTAL' where aportes_os like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
delete from @mis_aportes_empresa
where isnull(aportes_os,'') in ('-','',' ') or aportes_os like 'NO PRESENT%' -- No tomar en cuenta los vacíos
set @texto = (select top 1 aportes_os
from @mis_aportes_empresa a
-- De cada uno de los periodos tomo el mejor
where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.aportes_os > a.aportes_os)
--
order by a.aportes_os)
end
if (@p_clave_indicador = 'aportes_patronal')
begin
update @mis_aportes_empresa set contr_patronal = 'PAGO TOTAL' where contr_patronal like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
delete from @mis_aportes_empresa
where isnull(contr_patronal,'') in ('-','',' ') or contr_patronal like 'NO PRESENT%' -- No tomar en cuenta los vacíos
set @texto = (select top 1 contr_patronal
from @mis_aportes_empresa a
-- De cada uno de los periodos tomo el mejor
where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.contr_patronal > a.contr_patronal)
--
order by a.contr_patronal)
end
if (@texto = 'PAGO TOTAL') set @texto = 'PAGO'
if not exists (select contraparte, gestion, indicador
from LN_contraparte_indicadores
where contraparte = @p_contraparte
and gestion = @gest
and visible = 1
and indicador = @indic)
INSERT INTO LN_contraparte_indicadores
(contraparte, gestion, indicador, valor_texto,valor_fecha,created, created_by)
VALUES
(@p_contraparte, @gest, @indic, @texto, @fecha, GETDATE(), @p_user_id)
else
UPDATE LN_contraparte_indicadores SET
valor_texto = @texto,
valor_fecha = @fecha,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contraparte = @p_contraparte
AND gestion = @gest
AND indicador = @indic
and visible = 1
end
select @texto as texto, @fecha as fecha
END
GO
Depends On
6Used By
No items found