Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
6| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_contraparte | int | 4 | |
| @p_contratista | int | 4 | |
| @p_puntos | int | 4 | |
| @p_estado | char | 1 | |
| @p_estado_txt | varchar | 500 | |
| @p_color | varchar | 20 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- ===============================================================
-- Author: Marita Soria
-- Create date: 30/09/2021
-- Description: Indicador de Imperium - Cumplimiento último mes : ES EL SCORE DE CUMPLIMIENTO ESPECIAL QUE SOLICITO PAE
-- ===============================================================
/*
select * from led_docs where periodo = '202109' and tipo_doc in (2,1032,1033) and cliente = 2046807993
declare @p_puntos_cum int = null,
@p_estado_cum char(1) = null ,
@p_estado_txt_cum varchar(500) = null ,
@p_color_cum varchar(20) = null
exec [LN_Cumplimiento_ultimo_mes] 182754,
null,
@p_puntos_cum output,
@p_estado_cum output,
@p_estado_txt_cum output,
@p_color_cum output
select @p_puntos_cum ,
@p_estado_cum,
@p_estado_txt_cum,
@p_color_cum
*/
CREATE OR ALTER PROCEDUREdbo.LN_Cumplimiento_ultimo_mes -- Hay que mandar como parametro contraparte, o contratista
@p_contraparte int,
@p_contratista int = null,
@p_puntos int = null output,
@p_estado char(1) = null output,
@p_estado_txt varchar(500) = null output,
@p_color varchar(20) = null output
AS
BEGIN
SET NOCOUNT ON;
declare @p_cliente int
/* 15/10/2021: le resto 1 mes, porque toma en cumplimiento_ultimo_mes, el mes anterior al que se está analizando */
declare @periodo_hasta int = (select dbo.PeriodoVencido())
declare @periodo_hasta1 date = null
set @periodo_hasta1 = convert(date, substring(convert(char,@periodo_hasta),1,4)+'-'+substring(convert(char,@periodo_hasta),5,2)+'-01')
set @periodo_hasta1 = dateadd(m,-1,@periodo_hasta1)
set @periodo_hasta = convert(int,convert(char(6),replace(@periodo_hasta1,'-','')))
set @periodo_hasta = dbo.PeriodoMenosDos()
--select @periodo_hasta
/* */
declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO' and producto = 2066)
/*declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO_MES' and producto = 2066) */
if (@p_contraparte is null)
select @p_contraparte = contraparte,
@p_cliente = cliente
from ln_contrapartes
where id_imperium = @p_contratista
and activo = 1
select @p_contratista = id_imperium,
@p_cliente = cliente
from ln_contrapartes
where contraparte = @p_contraparte
--select @p_contraparte as contraparte, @p_contratista as contratista, @p_cliente as cliente, /* dbo.PeriodoVencido() */ @periodo_hasta as periodo
set @p_puntos = null
-- 20/01/2023: Si no tiene documentos en el periodo, el indicador debe quedar vacio (antes quedaba verde)
IF (select count(*) from led_docs where contratista = @p_contratista and periodo = @periodo_hasta) = 0
begin
set @p_estado = null
set @p_estado_txt = null
set @p_color = null
return
end
-- 1) ROJO: NO PRESENTO NINGUN DOCUMENTO o Presento todo pero no presento el 931
-- (o sea, solo controlo que tenga sin presentar algún documento correspondiente al 931)
if (select count(*) from led_docs where contratista = @p_contratista
and tipo_doc in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) > 0
/*if(DATEPART(d,getdate()) <= 7)
begin
set @p_puntos = 10
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'P'
set @p_estado_txt = 'EN ESPERA - PRINCIPIO DE MES'
set @p_color = 'cccccc'
end
return
end
else
*/
begin
set @p_puntos = 4
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'R'
set @p_estado_txt = 'ROJO'
set @p_color = 'A72B2A'
end
return
end
-- 2) VERDE: Presentación completa de los documentos del periodo, y todos los datos del 931 completos
if ((select count(*) from led_docs where contratista = @p_contratista
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
and not exists (select *
from led_campos_tipo_doc
left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and contratista_1 = @p_contratista
and estado_doc = 'V' and contratista = contratista_1)
and led_campos_tipo_doc.campo_activo = 1
and isnull(led_campos_doc.valor_numerico,0) = 0
and nombre_campo in
('028segurovidaobligatorio',
'301aportessegsoc',
'302aportesoss',
'312riesgotrabajo',
'351contribsegsocial',
'352contribobrasocial','afipnomina')))
begin
set @p_puntos = 1
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'V'
set @p_estado_txt = 'VERDE'
set @p_color = '63b68c'
end
return
end
-- 3) NARANJA: Al 931 le falta completar algún dato
IF ((select count(*) from led_docs where contratista = @p_contratista
and tipo_doc in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
and exists (select *
from led_campos_tipo_doc
left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and contratista_1 = @p_contratista
and estado_doc = 'V' and contratista = contratista_1)
and led_campos_tipo_doc.campo_activo = 1
and isnull(led_campos_doc.valor_numerico,0) = 0
and nombre_campo in
('028segurovidaobligatorio',
'301aportessegsoc',
'302aportesoss',
'312riesgotrabajo',
'351contribsegsocial',
'352contribobrasocial','afipnomina')))
begin
set @p_puntos = 3
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'N'
set @p_estado_txt = 'NARANJA'
set @p_color = 'FF5C1C'
end
return
end
-- 4) Cuando adeuda al menos un requerimiento pero tiene correcto el 100% el F931 --> AMARILLO
if ((select count(*) from led_docs where contratista = @p_contratista
and tipo_doc in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
and
(select count(*) from led_docs where contratista = @p_contratista
and tipo_doc not in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X')and isnull(doc_id_lista,0)=0) > 0
and not exists (select *
from led_campos_tipo_doc
left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and contratista_1 = @p_contratista
and estado_doc = 'V' and contratista = contratista_1)
and led_campos_tipo_doc.campo_activo = 1
and isnull(led_campos_doc.valor_numerico,0) = 0
and nombre_campo in
('028segurovidaobligatorio',
'301aportessegsoc',
'302aportesoss',
'312riesgotrabajo',
'351contribsegsocial',
'352contribobrasocial','afipnomina')))
begin
set @p_puntos = 2
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'A'
set @p_estado_txt = 'AMARILLO'
set @p_color = 'FFB81C'
end
return
end
set @p_estado = null
set @p_estado_txt = null
set @p_color = null
END
GO
GO
-- ===============================================================
-- Author: Marita Soria
-- Create date: 30/09/2021
-- Description: Indicador de Imperium - Cumplimiento último mes : ES EL SCORE DE CUMPLIMIENTO ESPECIAL QUE SOLICITO PAE
-- ===============================================================
/*
select * from led_docs where periodo = '202109' and tipo_doc in (2,1032,1033) and cliente = 2046807993
declare @p_puntos_cum int = null,
@p_estado_cum char(1) = null ,
@p_estado_txt_cum varchar(500) = null ,
@p_color_cum varchar(20) = null
exec [LN_Cumplimiento_ultimo_mes] 182754,
null,
@p_puntos_cum output,
@p_estado_cum output,
@p_estado_txt_cum output,
@p_color_cum output
select @p_puntos_cum ,
@p_estado_cum,
@p_estado_txt_cum,
@p_color_cum
*/
CREATE OR ALTER PROCEDUREdbo.LN_Cumplimiento_ultimo_mes -- Hay que mandar como parametro contraparte, o contratista
@p_contraparte int,
@p_contratista int = null,
@p_puntos int = null output,
@p_estado char(1) = null output,
@p_estado_txt varchar(500) = null output,
@p_color varchar(20) = null output
AS
BEGIN
SET NOCOUNT ON;
declare @p_cliente int
/* 15/10/2021: le resto 1 mes, porque toma en cumplimiento_ultimo_mes, el mes anterior al que se está analizando */
declare @periodo_hasta int = (select dbo.PeriodoVencido())
declare @periodo_hasta1 date = null
set @periodo_hasta1 = convert(date, substring(convert(char,@periodo_hasta),1,4)+'-'+substring(convert(char,@periodo_hasta),5,2)+'-01')
set @periodo_hasta1 = dateadd(m,-1,@periodo_hasta1)
set @periodo_hasta = convert(int,convert(char(6),replace(@periodo_hasta1,'-','')))
set @periodo_hasta = dbo.PeriodoMenosDos()
--select @periodo_hasta
/* */
declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO' and producto = 2066)
/*declare @indicador int = (select indicador from ln_indicadores where clave_indicador = 'CUMPLIMIENTO_ULTIMO_MES' and producto = 2066) */
if (@p_contraparte is null)
select @p_contraparte = contraparte,
@p_cliente = cliente
from ln_contrapartes
where id_imperium = @p_contratista
and activo = 1
select @p_contratista = id_imperium,
@p_cliente = cliente
from ln_contrapartes
where contraparte = @p_contraparte
--select @p_contraparte as contraparte, @p_contratista as contratista, @p_cliente as cliente, /* dbo.PeriodoVencido() */ @periodo_hasta as periodo
set @p_puntos = null
-- 20/01/2023: Si no tiene documentos en el periodo, el indicador debe quedar vacio (antes quedaba verde)
IF (select count(*) from led_docs where contratista = @p_contratista and periodo = @periodo_hasta) = 0
begin
set @p_estado = null
set @p_estado_txt = null
set @p_color = null
return
end
-- 1) ROJO: NO PRESENTO NINGUN DOCUMENTO o Presento todo pero no presento el 931
-- (o sea, solo controlo que tenga sin presentar algún documento correspondiente al 931)
if (select count(*) from led_docs where contratista = @p_contratista
and tipo_doc in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) > 0
/*if(DATEPART(d,getdate()) <= 7)
begin
set @p_puntos = 10
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'P'
set @p_estado_txt = 'EN ESPERA - PRINCIPIO DE MES'
set @p_color = 'cccccc'
end
return
end
else
*/
begin
set @p_puntos = 4
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'R'
set @p_estado_txt = 'ROJO'
set @p_color = 'A72B2A'
end
return
end
-- 2) VERDE: Presentación completa de los documentos del periodo, y todos los datos del 931 completos
if ((select count(*) from led_docs where contratista = @p_contratista
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
and not exists (select *
from led_campos_tipo_doc
left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and contratista_1 = @p_contratista
and estado_doc = 'V' and contratista = contratista_1)
and led_campos_tipo_doc.campo_activo = 1
and isnull(led_campos_doc.valor_numerico,0) = 0
and nombre_campo in
('028segurovidaobligatorio',
'301aportessegsoc',
'302aportesoss',
'312riesgotrabajo',
'351contribsegsocial',
'352contribobrasocial','afipnomina')))
begin
set @p_puntos = 1
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'V'
set @p_estado_txt = 'VERDE'
set @p_color = '63b68c'
end
return
end
-- 3) NARANJA: Al 931 le falta completar algún dato
IF ((select count(*) from led_docs where contratista = @p_contratista
and tipo_doc in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
and exists (select *
from led_campos_tipo_doc
left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and contratista_1 = @p_contratista
and estado_doc = 'V' and contratista = contratista_1)
and led_campos_tipo_doc.campo_activo = 1
and isnull(led_campos_doc.valor_numerico,0) = 0
and nombre_campo in
('028segurovidaobligatorio',
'301aportessegsoc',
'302aportesoss',
'312riesgotrabajo',
'351contribsegsocial',
'352contribobrasocial','afipnomina')))
begin
set @p_puntos = 3
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'N'
set @p_estado_txt = 'NARANJA'
set @p_color = 'FF5C1C'
end
return
end
-- 4) Cuando adeuda al menos un requerimiento pero tiene correcto el 100% el F931 --> AMARILLO
if ((select count(*) from led_docs where contratista = @p_contratista
and tipo_doc in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X') and isnull(doc_id_lista,0)=0) = 0
and
(select count(*) from led_docs where contratista = @p_contratista
and tipo_doc not in (2,1032,1033) and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and estado_doc not in ('V','X')and isnull(doc_id_lista,0)=0) > 0
and not exists (select *
from led_campos_tipo_doc
left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
and periodo = /* dbo.PeriodoVencido() */ @periodo_hasta and contratista_1 = @p_contratista
and estado_doc = 'V' and contratista = contratista_1)
and led_campos_tipo_doc.campo_activo = 1
and isnull(led_campos_doc.valor_numerico,0) = 0
and nombre_campo in
('028segurovidaobligatorio',
'301aportessegsoc',
'302aportesoss',
'312riesgotrabajo',
'351contribsegsocial',
'352contribobrasocial','afipnomina')))
begin
set @p_puntos = 2
select @p_estado = texto, @p_estado_txt = texto_largo, @p_color = color_fondo
from ln_cliente_nivel where indicador = @indicador and cliente = @p_cliente and desde = @p_puntos
if @p_estado is null
begin
set @p_estado = 'A'
set @p_estado_txt = 'AMARILLO'
set @p_color = 'FFB81C'
end
return
end
set @p_estado = null
set @p_estado_txt = null
set @p_color = null
END
GO