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_accion | varchar | 100 | |
| @p_cliente | int | 4 | |
| @p_servicio | int | 4 | |
| @p_contraparte | int | 4 | |
| @p_es_subcontratista | int | 4 | |
| @p_proceso_completo | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [PANEL_CONTROL_EXCEL_] 'TITULOS',5546348,47,null,0,0
select * from PANEL_CONTROL_EXCEL_TITULOS WHERE cliente = 5546348
exec [PANEL_CONTROL_EXCEL_] 'DATOS',null,null,167,null,1
select * from PANEL_CONTROL_EXCEL_DATOS WHERE contraparte = 167
*/
CREATE OR ALTER PROCEDURE dbo.PANEL_CONTROL_EXCEL_2_
@p_accion varchar(100) = 'TITULOS',
@p_cliente int = 5546348,
@p_servicio int = 47,
@p_contraparte int = null,
@p_es_subcontratista int = 0,
@p_proceso_completo int = 0
AS
BEGIN
SET NOCOUNT ON;
declare @producto int,
@nombre_producto varchar(500),
@indicador int,
@etiqueta_indicador varchar(500),
@tipo_dato char(1),
@clave_indicador varchar(500),
@tiene_dias_gestion char(1) = 'N',
@nro_columna int
declare @columnas_excel table (nro int identity, producto int, nombre_producto varchar(500), indicador int, etiqueta varchar(500), tipo_dato char(1), clave_indicador varchar(500))
declare @titulo_score varchar(500) = null
declare @datos table (servicio_contratado int, contraparte int, indicador int, clave_indicador varchar(100), valor varchar(max), valor_sin_formato varchar(max), texto varchar(max), valor_memo varchar(max))
declare @d_servicio_contratado int,
@d_contraparte int,
@d_indicador int,
@d_clave_indicador varchar(500),
@d_valor varchar(max),
@d_valor_sin_formato varchar(max),
@d_texto varchar(max),
@d_valor_memo varchar(max)
declare @personal table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico float, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
if @p_accion = 'TITULOS'
begin
SELECT top 1 @titulo_score = titulo from ln_cliente_nivel where titulo is not null and cliente = @p_cliente
declare @cant_ps int = (select count(distinct isnull(pais_servicio,''))
FROM LN_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia and LN_familias.cliente = ln_contrapartes.cliente
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
and LN_contrapartes.subcontratista = 0
AND LN_familias.visible = 1
and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
and LN_contrapartes.servicio_contratado = @p_servicio)
if (@cant_ps > 1 )
begin
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','PAIS DE SERVICIO','T','0_PAIS_SERVICIO')
end
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','PAIS','T','0_PAIS')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','FAMILIA','T','0_FAMILIA')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','RAZON SOCIAL','T','0_RAZON_SOCIAL')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','IDENTIFICADOR','T','0_IDENTIFICADOR')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','IDENTIFICACION','T','0_IDENTIFICACION')
if (@tiene_dias_gestion = 'S')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','DIAS GESTION','T','0_DIAS_GESTION')
if (@p_cliente=5546348)
begin
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','DATOS COMERCALES','T','0_DATOS_COMERCIALES')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','EMAIL CONTACTO','T','0_EMAIL_CONTACTO')
declare @etiqueta_personal varchar(max) = null
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PLANTILLA'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores en Plantilla (Rel. Dependencia)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PLANTILLA')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PROFESIONALES'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores profesionales (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PROFESIONALES')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_ADMINISTRATIVOS'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_ADMINISTRATIVOS')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_NO_CALIFICADOS'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_NO_CALIFICADOS')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PLANTILLA_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PLANTILLA_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PROFESIONALES_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PROFESIONALES_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_ADMINISTRATIVOS_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_ADMINISTRATIVOS_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_NO_CALIFICADOS_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_NO_CALIFICADOS_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'NA_TRABAJADORES'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_NA_TRABAJADORES')
end
declare C_Cursor CURSOR FOR
SELECT producto, nombre_producto, indicador, etiqueta_indicador, tipo_dato, clave_indicador FROM
(SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon,
ISNULL(LN_productos.balance, 0) AS balance,
ISNULL(LN_productos.dossier, 0) AS dossier,
ISNULL(LN_productos.suscribe_indicadores, 0) AS suscribe_indicadores,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador AS indicador_susc,
show_panel = CASE
WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
ELSE 1 END
FROM LN_productos
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_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
WHERE cliente = @p_cliente) SUSC
ON (LN_cliente_productos.cliente = SUSC.cliente AND LN_indicadores.indicador = SUSC.indicador)
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = @p_es_subcontratista
AND LN_indicadores.visible = 1
AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))
AND (@p_servicio is null or ln_familias.servicio_contratado in (0,@p_servicio))
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance, LN_productos.dossier, LN_productos.suscribe_indicadores,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador
) DATA
WHERE DATA.show_panel = 1
ORDER BY DATA.orden_producto, DATA.orden
OPEN C_Cursor
fetch next from C_Cursor into @producto, @nombre_producto, @indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
WHILE @@FETCH_STATUS=0
BEGIN
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, @indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador)
if (@clave_indicador = 'INICIO_GESTION')
begin
set @tiene_dias_gestion = 'S'
end
if (@indicador = 37)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9990', 'Datos Informe Exterior', 'T', @clave_indicador)
end
if (@clave_indicador = 'CTRL_ETICO')
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9993', @etiqueta_indicador + ' Cruce con Base de Personas no autorizadas', 'I', @clave_indicador)
end
if (@clave_indicador = 'CTRL_CALIDAD')
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9994', @etiqueta_indicador + ' Cruce con Base de Proveedores no autorizados', 'I', @clave_indicador)
end
if (@clave_indicador = 'SCORE_FINAL' and @titulo_score is not null)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9995', @titulo_score, 'T', @clave_indicador)
end
if (@clave_indicador = 'CUMPL_DOC')
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9996', 'Verificados', 'I', 'V')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9997', 'Pendientes de Verificar', 'I', 'I')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9998', 'Rechazados', 'I', 'R')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9999', 'Pendientes de Ingreso', 'I', 'N')
end
fetch next from C_Cursor into @producto, @nombre_producto, @indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
if (@p_servicio = 47)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','Detalle Rechazos','T','0_Detalle_Rechazos')
end
if (@p_cliente = 1226057645 and @p_servicio = 47)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','PACTO MUNDIAL','T','0_PACTO_MUNDIAL')
end
if (@p_cliente = 2046807993 and @p_servicio = 73)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','Meses Deuda Aportes','T','0_Meses_Deuda_Aportes')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','Meses Deuda Contribuciones','T','0_Meses_Deuda_Contribuciones')
end
if (select COUNT(*) from PANEL_CONTROL_EXCEL_TITULOS where servicio = @p_servicio and cliente = @p_cliente and es_subcontratista = @p_es_subcontratista) > 0
begin
update PANEL_CONTROL_EXCEL_TITULOS set visible = 0 where servicio = @p_servicio and cliente = @p_cliente and es_subcontratista = @p_es_subcontratista and visible = 1
end
/*select * from @columnas_excel order by nro
return
*/
declare PC_titulos CURSOR FOR
select nro, producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador
from @columnas_excel order by nro
open PC_titulos
FETCH NEXT FROM PC_titulos into @nro_columna, @producto, @nombre_producto,
@indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
WHILE @@FETCH_STATUS = 0 BEGIN
if (select count(*) from PANEL_CONTROL_EXCEL_TITULOS
where servicio = @p_servicio and cliente = @p_cliente and indicador = @indicador and clave_indicador = @clave_indicador and es_subcontratista = @p_es_subcontratista) -- porque indicador = 0, para todas las primeras columnas
> 0
begin
update PANEL_CONTROL_EXCEL_TITULOS
set nro_columna = @nro_columna,
producto = @producto,
nombre_producto = @nombre_producto,
etiqueta = @etiqueta_indicador,
tipo_dato = @tipo_dato,
modified = GETDATE(),
visible = 1
where servicio = @p_servicio and cliente = @p_cliente and indicador = @indicador and clave_indicador = @clave_indicador and es_subcontratista = @p_es_subcontratista
end
else
begin
insert into PANEL_CONTROL_EXCEL_TITULOS (servicio,
cliente,
es_subcontratista,
nro_columna,
producto,
nombre_producto,
indicador,
etiqueta,
tipo_dato,
clave_indicador)
values (@p_servicio, @p_cliente, @p_es_subcontratista, @nro_columna,
@producto, @nombre_producto,
@indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador)
end
FETCH NEXT FROM PC_titulos into @nro_columna, @producto, @nombre_producto,
@indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
END
CLOSE PC_titulos
DEALLOCATE PC_titulos
/*
select * from PANEL_CONTROL_EXCEL_TITULOS
where servicio = @p_servicio and cliente = @p_cliente and visible = 1 and es_subcontratista = @p_es_subcontratista
order by nro_columna
*/
end
if (@p_accion = 'DATOS')
begin
declare @pais_servicio varchar(10) = null
declare @familia int = null
select @p_cliente = cliente, @p_servicio = servicio_contratado, @p_es_subcontratista = subcontratista, @pais_servicio = pais_servicio
from ln_contrapartes where contraparte = @p_contraparte
select @familia = familia from ln_contraparte_familias where contraparte = @p_contraparte
-- Si no tiene el registro de titulos, para el cliente, lo genera
if (select COUNT(*) from PANEL_CONTROL_EXCEL_TITULOS where servicio = @p_servicio and cliente = @p_cliente and es_subcontratista = @p_es_subcontratista) = 0
begin
exec [PANEL_CONTROL_EXCEL_] 'TITULOS',@p_cliente,@p_servicio,null,@p_es_subcontratista
end
if (@p_proceso_completo = 1)
begin
insert into @datos
SELECT LN_Contrapartes.servicio_contratado, LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.clave_indicador,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null,
REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'),
null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null,
format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
null)
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
when LN_indicadores.tipo_dato = 'F' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor_sin_formato,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select LN_cliente_nivel.texto_largo
from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
where LN_cliente_nivel.cliente = @p_cliente
and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico
and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
and LN_indicadores.clave_indicador = 'SCORE_FINAL')
WHEN LN_indicadores.clave_indicador = 'SCORE_VRM' THEN
(select LN_cliente_nivel.texto_largo
from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
where LN_cliente_nivel.cliente = @p_cliente
and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico
and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
and LN_indicadores.clave_indicador = 'SCORE_VRM')
ELSE NULL
END AS texto,
ln_contraparte_indicadores.valor_memo
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
inner join ln_productos on ln_productos.producto = ln_indicadores.producto
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)
LEFT OUTER JOIN
(SELECT LN_docs.contraparte, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion
INNER JOIN
(select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
from LN_docs
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
AND LN_docs.contraparte = LN_gestiones.contraparte)
where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones
ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc
AND ln_docs.contraparte = ultimas_versiones.contraparte
AND LN_docs.doc_version = ultimas_versiones.ultima)
WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_docs.estado_doc = 'I'
GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte
LEFT OUTER JOIN
(select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion, LN_excepciones.gestion
from LN_contrapartes inner join LN_excepciones
on LN_contrapartes.contraparte = LN_excepciones.contraparte
where LN_contrapartes.cliente = @p_cliente
and LN_excepciones.estado = 1
and LN_excepciones.vigencia >= GETDATE()) excepciones ON
(LN_contrapartes.contraparte = excepciones.contraparte
--and excepciones.gestion = ln_gestiones.gestion
)
WHERE LN_contrapartes.cliente = @p_cliente
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and LN_gestiones.vigente = 1
AND LN_indicadores.visible = 1
AND LN_contrapartes.activo = 1
--and LN_contrapartes.servicio_contratado = isnull(@p_servicio,LN_contrapartes.servicio_contratado)
and LN_contrapartes.contraparte = isnull(@p_contraparte,LN_contrapartes.contraparte)
--and LN_contrapartes.subcontratista = isnull(@p_es_subcontratista,subcontratista)
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
and LN_contraparte_indicadores.visible = 1
and ln_productos.servicio_contratado in (0,ln_contrapartes.servicio_contratado)
end
-- Datos generales
declare @ln_pais_servicio varchar(max) = null
declare @ln_pais_contraparte varchar(max) = null
declare @ln_familia varchar(max) = null
declare @ln_nombre_persona varchar(max) = null
declare @ln_identificador varchar(max) = null
declare @ln_identificacion varchar(max) = null
declare @ln_inicio_gestion varchar(max) = null
declare @ln_dias_gestion varchar(max) = null
declare @ln_detalle_killer varchar(max) = null
declare @ln_nombre_contacto varchar(max) = null
declare @ln_email_contacto varchar(max) = null
declare @ln_telefono_contacto varchar(max) = null
declare @ln_datos_comerciales varchar(max) = null
SELECT
@ln_pais_servicio = isnull(pais_serv.country_name,''),
@ln_pais_contraparte = country.country_name,
@ln_familia = LN_familias.nombre_familia,
@ln_nombre_persona = padrones.nombre_persona,
@ln_identificador = identificadores.abreviatura,
@ln_identificacion = padrones.identificacion,
@ln_inicio_gestion = ln_gestiones.desde,
@ln_dias_gestion = datediff(dd,ln_gestiones.desde,convert(date,getdate())),
@ln_detalle_killer = dd.detalle,
@ln_nombre_contacto = LN_contrapartes.nombre_contacto,
@ln_email_contacto = LN_contrapartes.email_contacto,
@ln_telefono_contacto = LN_contrapartes.telefono_contacto,
@ln_datos_comerciales = replace(convert(varchar(max),LN_contrapartes.datos_comerciales),'<br>',' - ')
FROM LN_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
LEFT OUTER JOIN country pais_serv ON ln_contrapartes.pais_servicio = pais_serv.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia and LN_familias.cliente = ln_contrapartes.cliente
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
left join (SELECT contraparte, gestion, detalle=STUFF(
(SELECT distinct '; ' + detalle_killer AS [text()]
FROM ln_score_detalle_killer XT
WHERE XT.contraparte = T.contraparte and XT.visible = 1 and XT.gestion = T.gestion
FOR XML PATH('')), 1, 2, '')
FROM ln_score_detalle_killer T where T.visible = 1
GROUP BY contraparte,gestion) dd on (dd.contraparte = ln_contrapartes.contraparte and dd.gestion = LN_gestiones.gestion)
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
AND LN_familias.visible = 1
AND LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
and LN_contrapartes.contraparte = @p_contraparte
--
-- Borro los datos que tenemos en la tabla PANEL_CONTROL_EXCEL_DATOS
if (@p_proceso_completo = 1)
begin
if (select COUNT(*) from PANEL_CONTROL_EXCEL_DATOS where contraparte = @p_contraparte) > 0
update PANEL_CONTROL_EXCEL_DATOS set visible = 0 where contraparte = @p_contraparte
declare C1_titulos CURSOR FOR
select nro_columna,
indicador,
tipo_dato,
clave_indicador
from PANEL_CONTROL_EXCEL_TITULOS
where cliente = @p_cliente and visible = 1 and servicio = @p_servicio and es_subcontratista = @p_es_subcontratista
order by nro_columna
end
else
begin
if (select COUNT(*) from PANEL_CONTROL_EXCEL_DATOS where contraparte = @p_contraparte and (indicador = 0 or indicador between 9990 and 9999)) > 0
update PANEL_CONTROL_EXCEL_DATOS set visible = 0
where contraparte = @p_contraparte
and (indicador = 0 or indicador between 9990 and 9999)
declare C1_titulos CURSOR FOR
select nro_columna,
indicador,
tipo_dato,
clave_indicador
from PANEL_CONTROL_EXCEL_TITULOS
where cliente = @p_cliente and visible = 1 and servicio = @p_servicio and es_subcontratista = @p_es_subcontratista
and (indicador = 0 or indicador between 9990 and 9999)
order by nro_columna
end
-- Busco las columnas a completar, para la contraparte, de acuerdo a las columnas indicadas en PANEL_CONTROL_JSON_TITULOS
-- completo las columnas del indicador = 0, que son los datos de la contraparte
-- completo las columnas de los indicadores que no son indicadores reales
-- completo las columnas de los indicadores que son indicadores reales
open C1_titulos
FETCH NEXT FROM C1_titulos into @nro_columna, @indicador,
@tipo_dato,
@clave_indicador
WHILE @@FETCH_STATUS = 0 BEGIN
SET @d_valor = NULL
SET @d_valor_sin_formato = NULL
SET @d_texto = NULL
if (select COUNT(*) from PANEL_CONTROL_EXCEL_DATOS
where contraparte = @p_contraparte
and indicador = @indicador
and clave_indicador = @clave_indicador) > 0
begin
update PANEL_CONTROL_EXCEL_DATOS
set servicio = @p_servicio,
cliente = @p_cliente,
pais_servicio = @pais_servicio, familia = @familia,
visible = 1,
modified = GETDATE()
where contraparte = @p_contraparte
and indicador = @indicador
and clave_indicador = @clave_indicador
end
else
begin
insert into PANEL_CONTROL_EXCEL_DATOS (servicio, cliente, es_subcontratista, contraparte, pais_servicio, familia, indicador, clave_indicador, visible)
values (@p_servicio, @p_cliente, @p_es_subcontratista, @p_contraparte, @pais_servicio, @familia, @indicador, @clave_indicador, 1)
end
IF (@indicador = 0)
BEGIN
set @d_valor = null
if @clave_indicador = '0_PAIS_SERVICIO' begin set @d_valor = @ln_pais_servicio end
if @clave_indicador = '0_PAIS' begin set @d_valor = @ln_pais_contraparte end
if @clave_indicador = '0_FAMILIA' begin set @d_valor = @ln_familia end
if @clave_indicador = '0_RAZON_SOCIAL' begin set @d_valor = @ln_nombre_persona end
if @clave_indicador = '0_IDENTIFICADOR' begin set @d_valor = @ln_identificador end
if @clave_indicador = '0_IDENTIFICACION' begin set @d_valor = @ln_identificacion end
if @clave_indicador = '0_NOMBRE_CONTACTO' begin set @d_valor = @ln_nombre_contacto end
if @clave_indicador = '0_EMAIL_CONTACTO' begin set @d_valor = @ln_email_contacto end
if @clave_indicador = '0_TELEFONO_CONTACTO' begin set @d_valor = @ln_telefono_contacto end
if @clave_indicador = '0_Detalle_Rechazos' begin set @d_valor = @ln_detalle_killer end
if @clave_indicador = '0_DATOS_COMERCIALES' begin set @d_valor = @ln_datos_comerciales end
if @clave_indicador = '0_PACTO_MUNDIAL' begin
declare @valores table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico float, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
insert into @valores exec ln_docs_valores @p_contraparte, 'PACTO_MUNDIAL'
select @d_valor = case
when valor_numerico = 1 then 'SI'
when valor_numerico = 0 then 'NO'
else ''
end
from @valores
end
if @clave_indicador = '0_Meses_Deuda_Aportes' begin
select @d_valor = STUFF((
SELECT '-' + SUBSTRING(convert(varchar,periodo),5,2) + '/' + SUBSTRING(convert(varchar,periodo),1,4)
from deuda_previsional
inner join padrones on (identificacion = cuit and habilitado = 1)
where cuit = @ln_identificacion and codigo = 301 and periodo is not null
and visible = 1
order by periodo
FOR XML PATH('')
), 1, 1, '')
end
if @clave_indicador = '0_Meses_Deuda_Contribuciones' begin
select @d_valor = STUFF((
SELECT '-' + SUBSTRING(convert(varchar,periodo),5,2) + '/' + SUBSTRING(convert(varchar,periodo),1,4)
from deuda_previsional
inner join padrones on (identificacion = cuit and habilitado = 1)
where cuit = @ln_identificacion and codigo = 351 and periodo is not null
and visible = 1
order by periodo
FOR XML PATH('')
), 1, 1, '')
end
declare @clave_indicador2 varchar(100) = ''
if @clave_indicador like '0_TRABAJADORES_%' or @clave_indicador like '0_NA_TRABAJADORES'
begin
delete from @personal
set @clave_indicador2 = replace(@clave_indicador,'0_','')
insert into @personal exec ln_docs_valores @p_contraparte, @clave_indicador2
set @d_valor = (select top 1 iif(valor_texto is null, convert(varchar,isnull(valor_numerico,'0')), 'X') from @personal)
end
END
IF (@indicador = 9990)
BEGIN
if exists (select valor_memo from @datos where contraparte = @p_contraparte and indicador = 37)
begin
set @d_valor = (select top 1 valor_memo from @datos where contraparte = @p_contraparte and indicador = 37)
end
END
IF (@indicador = 9995)
BEGIN
if exists (select texto from @datos where contraparte = @p_contraparte and indicador = 4)
begin
set @d_valor = (select top 1 isnull(texto,'') from @datos where contraparte = @p_contraparte and indicador = 4)
end
END
declare @datos_cruce varchar(max) = ''
declare @cuit varchar(20), @nombre varchar(500), @cargo varchar(100), @relacion varchar(100), @empleado_cuit varchar(20), @empleado_nombre varchar(500)
IF (@indicador = 9993)
BEGIN
declare @control_etica table (cuit varchar(20), nombre varchar(500), cargo varchar(100), relacion varchar(100), empleado_cuit varchar(20), empleado_nombre varchar(500))
insert into @control_etica exec LN_control_etica @p_contraparte
declare C_etica CURSOR FOR
select cuit, nombre, cargo, relacion, empleado_cuit, empleado_nombre
from @control_etica
OPEN C_etica
FETCH NEXT FROM C_etica INTO @cuit, @nombre, @cargo, @relacion, @empleado_cuit, @empleado_nombre
WHILE @@FETCH_STATUS = 0 BEGIN
if @datos_cruce = ''
set @datos_cruce = isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
else
set @datos_cruce = @datos_cruce + '<br>' + isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
FETCH NEXT FROM C_etica INTO @cuit, @nombre, @cargo, @relacion, @empleado_cuit, @empleado_nombre
END
CLOSE C_etica
DEALLOCATE C_etica
SET @d_valor = @datos_cruce
if @d_valor = '' set @d_valor = null
END
IF (@indicador = 9994)
BEGIN
declare @control_calidad table (cuit varchar(20), nombre varchar(500), cargo varchar(100))
insert into @control_calidad exec LN_control_calidad @p_contraparte
declare C_calidad CURSOR FOR
select cuit, nombre, cargo
from @control_calidad
OPEN C_calidad
FETCH NEXT FROM C_calidad INTO @cuit, @nombre, @cargo
WHILE @@FETCH_STATUS = 0 BEGIN
if @datos_cruce = ''
set @datos_cruce = isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
else
set @datos_cruce = @datos_cruce + '<br>' + isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
FETCH NEXT FROM C_calidad INTO @cuit, @nombre, @cargo
END
CLOSE C_calidad
DEALLOCATE C_calidad
SET @d_valor = @datos_cruce
if @d_valor = '' set @d_valor = null
END
IF (@indicador in (9999,9998,9997,9996))
BEGIN
declare @estado_doc char(1) = ''
set @d_valor = null
if @indicador = 9996 set @estado_doc = 'V'
if @indicador = 9997 set @estado_doc = 'I'
if @indicador = 9998 set @estado_doc = 'R'
if @indicador = 9999 set @estado_doc = 'N'
declare C_documentos CURSOR FOR
SELECT DISTINCT nombre_tipo_doc
FROM ln_docs
INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
INNER JOIN LN_gestiones ON (ln_docs.contraparte = LN_gestiones.contraparte AND LN_docs.gestion = LN_gestiones.gestion)
INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
AND LN_tipos_doc.tipo_doc = LN_set_tipo_doc.tipo_doc
AND LN_set_tipo_doc.activo = 1)
WHERE LN_docs.contraparte = @p_contraparte
and ln_gestiones.vigente = 1 and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate()
and estado_doc = @estado_doc
order by nombre_tipo_doc
declare @documentos varchar(max) = '';
declare @documento varchar(max) = '';
OPEN C_documentos
FETCH NEXT FROM C_documentos INTO @documento
WHILE @@FETCH_STATUS = 0 BEGIN
if @documentos = ''
set @documentos = @documento
else
set @documentos = @documentos + '<br>' + @documento
FETCH NEXT FROM C_documentos INTO @documento
END
CLOSE C_documentos
DEALLOCATE C_documentos
SET @d_valor = @documentos
if @d_valor = '' set @d_valor = null
END
if (@indicador != 0 and @indicador not between 9990 and 9999 and @p_proceso_completo = 1)
begin
select @d_valor = valor,
@d_valor_sin_formato = valor_sin_formato,
@d_texto = texto,
@d_valor_memo = valor_memo
from @datos
where contraparte = @p_contraparte and indicador = @indicador and clave_indicador = @clave_indicador
if(@indicador = 361 or @indicador = 360)
begin
set @d_valor = @d_valor_memo
end
if (@indicador = 6 and @d_valor is null)
BEGIN
if exists (select valor from @datos where contraparte = @p_contraparte and indicador = 37)
begin
select @d_valor = isnull(valor,''),
@d_valor_sin_formato = valor_sin_formato,
@d_texto = texto
from @datos where contraparte = @p_contraparte and indicador = 37
end
END
if (@indicador = 37 and exists (select valor from @datos where contraparte = @p_contraparte and indicador = 6))
begin
update PANEL_CONTROL_EXCEL_DATOS set visible = 0
where contraparte = @d_contraparte and indicador = @d_indicador and clave_indicador = @d_clave_indicador
end
if (@d_valor = '-100') set @d_valor = 'N/A'
end
if (@indicador = 0 or @indicador between 9990 and 9999 or @p_proceso_completo = 1)
begin
update PANEL_CONTROL_EXCEL_DATOS
set valor = @d_valor,
valor_sin_formato = @d_valor_sin_formato,
texto = @d_texto,
visible = 1
where contraparte = @d_contraparte and indicador = @d_indicador and clave_indicador = @d_clave_indicador
end
FETCH NEXT FROM C1_titulos into @nro_columna, @indicador,
@tipo_dato,
@clave_indicador
END
CLOSE C1_titulos
DEALLOCATE C1_titulos
/*
select T.nro_columna,T.clave_indicador, T.nombre_producto, T.etiqueta,
D.valor, D.valor_sin_formato, D.texto
from PANEL_CONTROL_EXCEL_DATOS D
inner join PANEL_CONTROL_EXCEL_TITULOS T on (T.clave_indicador = D.clave_indicador and T.indicador = D.indicador and T.cliente = D.cliente and T.servicio = D.servicio and T.es_subcontratista = D.es_subcontratista)
where D.contraparte = @p_contraparte and D.visible = 1 and T.visible = 1
order by T.nro_columna
*/
end
END
--select * from PANEL_CONTROL_EXCEL_TITULOS where cliente = 5546348
--LN_panel_control_excel_datos_comerciales 55456348,107,47
GO
GO
/*
exec [PANEL_CONTROL_EXCEL_] 'TITULOS',5546348,47,null,0,0
select * from PANEL_CONTROL_EXCEL_TITULOS WHERE cliente = 5546348
exec [PANEL_CONTROL_EXCEL_] 'DATOS',null,null,167,null,1
select * from PANEL_CONTROL_EXCEL_DATOS WHERE contraparte = 167
*/
CREATE OR ALTER PROCEDURE dbo.PANEL_CONTROL_EXCEL_2_
@p_accion varchar(100) = 'TITULOS',
@p_cliente int = 5546348,
@p_servicio int = 47,
@p_contraparte int = null,
@p_es_subcontratista int = 0,
@p_proceso_completo int = 0
AS
BEGIN
SET NOCOUNT ON;
declare @producto int,
@nombre_producto varchar(500),
@indicador int,
@etiqueta_indicador varchar(500),
@tipo_dato char(1),
@clave_indicador varchar(500),
@tiene_dias_gestion char(1) = 'N',
@nro_columna int
declare @columnas_excel table (nro int identity, producto int, nombre_producto varchar(500), indicador int, etiqueta varchar(500), tipo_dato char(1), clave_indicador varchar(500))
declare @titulo_score varchar(500) = null
declare @datos table (servicio_contratado int, contraparte int, indicador int, clave_indicador varchar(100), valor varchar(max), valor_sin_formato varchar(max), texto varchar(max), valor_memo varchar(max))
declare @d_servicio_contratado int,
@d_contraparte int,
@d_indicador int,
@d_clave_indicador varchar(500),
@d_valor varchar(max),
@d_valor_sin_formato varchar(max),
@d_texto varchar(max),
@d_valor_memo varchar(max)
declare @personal table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico float, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
if @p_accion = 'TITULOS'
begin
SELECT top 1 @titulo_score = titulo from ln_cliente_nivel where titulo is not null and cliente = @p_cliente
declare @cant_ps int = (select count(distinct isnull(pais_servicio,''))
FROM LN_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia and LN_familias.cliente = ln_contrapartes.cliente
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
and LN_contrapartes.subcontratista = 0
AND LN_familias.visible = 1
and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE()
and LN_contrapartes.servicio_contratado = @p_servicio)
if (@cant_ps > 1 )
begin
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','PAIS DE SERVICIO','T','0_PAIS_SERVICIO')
end
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','PAIS','T','0_PAIS')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','FAMILIA','T','0_FAMILIA')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','RAZON SOCIAL','T','0_RAZON_SOCIAL')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','IDENTIFICADOR','T','0_IDENTIFICADOR')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','IDENTIFICACION','T','0_IDENTIFICACION')
if (@tiene_dias_gestion = 'S')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','DIAS GESTION','T','0_DIAS_GESTION')
if (@p_cliente=5546348)
begin
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','DATOS COMERCALES','T','0_DATOS_COMERCIALES')
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','EMAIL CONTACTO','T','0_EMAIL_CONTACTO')
declare @etiqueta_personal varchar(max) = null
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PLANTILLA'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores en Plantilla (Rel. Dependencia)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PLANTILLA')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PROFESIONALES'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores profesionales (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PROFESIONALES')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_ADMINISTRATIVOS'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_ADMINISTRATIVOS')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_NO_CALIFICADOS'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_NO_CALIFICADOS')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PLANTILLA_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PLANTILLA_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_PROFESIONALES_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_PROFESIONALES_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_ADMINISTRATIVOS_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_ADMINISTRATIVOS_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'TRABAJADORES_NO_CALIFICADOS_TEMP'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_TRABAJADORES_NO_CALIFICADOS_TEMP')
set @etiqueta_personal = null
set @etiqueta_personal = (select distinct top 1 etiqueta from LN_campos where campo in (select campo from LN_tipo_doc_campos where campo_id = 'NA_TRABAJADORES'))
if @etiqueta_personal is null set @etiqueta_personal = 'Total de trabajadores administrativos (Rel. Dep.)'
insert into @columnas_excel (producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0',@etiqueta_personal,'T','0_NA_TRABAJADORES')
end
declare C_Cursor CURSOR FOR
SELECT producto, nombre_producto, indicador, etiqueta_indicador, tipo_dato, clave_indicador FROM
(SELECT LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon,
ISNULL(LN_productos.balance, 0) AS balance,
ISNULL(LN_productos.dossier, 0) AS dossier,
ISNULL(LN_productos.suscribe_indicadores, 0) AS suscribe_indicadores,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador AS indicador_susc,
show_panel = CASE
WHEN ISNULL(LN_productos.suscribe_indicadores, 0) > 0 THEN iif(SUSC.indicador IS NOT NULL, 1, 0)
ELSE 1 END
FROM LN_productos
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_familias ON (LN_familia_productos.familia = LN_familias.familia
AND LN_cliente_productos.cliente = LN_familias.cliente)
INNER join LN_indicadores ON LN_productos.producto = LN_indicadores.producto
LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
WHERE cliente = @p_cliente) SUSC
ON (LN_cliente_productos.cliente = SUSC.cliente AND LN_indicadores.indicador = SUSC.indicador)
LEFT OUTER JOIN country ON LN_productos.country_code = country.country_code
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_productos.visible = 1
AND LN_cliente_productos.activo = 1
AND LN_familia_productos.activo = 1
AND LN_familias.visible = 1
AND ISNULL(LN_familias.subfamilia, 0) = @p_es_subcontratista
AND LN_indicadores.visible = 1
AND (@p_servicio is null or LN_productos.servicio_contratado in (0,@p_servicio))
AND (@p_servicio is null or ln_familias.servicio_contratado in (0,@p_servicio))
GROUP BY LN_productos.producto, LN_productos.nombre_producto, LN_cliente_productos.activo,
LN_cliente_productos.visibilidad_default, LN_productos.visible,
country.country_code, country.country_name,
LN_productos.etiqueta, LN_productos.class_icon, LN_productos.balance, LN_productos.dossier, LN_productos.suscribe_indicadores,
LN_productos.producto_id, LN_indicadores.indicador, LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta, LN_indicadores.tipo_dato,
LN_indicadores.rango_inferior, LN_indicadores.rango_superior, LN_indicadores.opciones,
LN_indicadores.clave_indicador,
LN_cliente_productos.orden_producto, LN_indicadores.orden,
SUSC.indicador
) DATA
WHERE DATA.show_panel = 1
ORDER BY DATA.orden_producto, DATA.orden
OPEN C_Cursor
fetch next from C_Cursor into @producto, @nombre_producto, @indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
WHILE @@FETCH_STATUS=0
BEGIN
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, @indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador)
if (@clave_indicador = 'INICIO_GESTION')
begin
set @tiene_dias_gestion = 'S'
end
if (@indicador = 37)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9990', 'Datos Informe Exterior', 'T', @clave_indicador)
end
if (@clave_indicador = 'CTRL_ETICO')
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9993', @etiqueta_indicador + ' Cruce con Base de Personas no autorizadas', 'I', @clave_indicador)
end
if (@clave_indicador = 'CTRL_CALIDAD')
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9994', @etiqueta_indicador + ' Cruce con Base de Proveedores no autorizados', 'I', @clave_indicador)
end
if (@clave_indicador = 'SCORE_FINAL' and @titulo_score is not null)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9995', @titulo_score, 'T', @clave_indicador)
end
if (@clave_indicador = 'CUMPL_DOC')
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9996', 'Verificados', 'I', 'V')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9997', 'Pendientes de Verificar', 'I', 'I')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9998', 'Rechazados', 'I', 'R')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values (@producto, @nombre_producto, '9999', 'Pendientes de Ingreso', 'I', 'N')
end
fetch next from C_Cursor into @producto, @nombre_producto, @indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
if (@p_servicio = 47)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','Detalle Rechazos','T','0_Detalle_Rechazos')
end
if (@p_cliente = 1226057645 and @p_servicio = 47)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','PACTO MUNDIAL','T','0_PACTO_MUNDIAL')
end
if (@p_cliente = 2046807993 and @p_servicio = 73)
begin
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','Meses Deuda Aportes','T','0_Meses_Deuda_Aportes')
insert into @columnas_excel(producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador) values ('0',null,'0','Meses Deuda Contribuciones','T','0_Meses_Deuda_Contribuciones')
end
if (select COUNT(*) from PANEL_CONTROL_EXCEL_TITULOS where servicio = @p_servicio and cliente = @p_cliente and es_subcontratista = @p_es_subcontratista) > 0
begin
update PANEL_CONTROL_EXCEL_TITULOS set visible = 0 where servicio = @p_servicio and cliente = @p_cliente and es_subcontratista = @p_es_subcontratista and visible = 1
end
/*select * from @columnas_excel order by nro
return
*/
declare PC_titulos CURSOR FOR
select nro, producto, nombre_producto, indicador, etiqueta, tipo_dato, clave_indicador
from @columnas_excel order by nro
open PC_titulos
FETCH NEXT FROM PC_titulos into @nro_columna, @producto, @nombre_producto,
@indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
WHILE @@FETCH_STATUS = 0 BEGIN
if (select count(*) from PANEL_CONTROL_EXCEL_TITULOS
where servicio = @p_servicio and cliente = @p_cliente and indicador = @indicador and clave_indicador = @clave_indicador and es_subcontratista = @p_es_subcontratista) -- porque indicador = 0, para todas las primeras columnas
> 0
begin
update PANEL_CONTROL_EXCEL_TITULOS
set nro_columna = @nro_columna,
producto = @producto,
nombre_producto = @nombre_producto,
etiqueta = @etiqueta_indicador,
tipo_dato = @tipo_dato,
modified = GETDATE(),
visible = 1
where servicio = @p_servicio and cliente = @p_cliente and indicador = @indicador and clave_indicador = @clave_indicador and es_subcontratista = @p_es_subcontratista
end
else
begin
insert into PANEL_CONTROL_EXCEL_TITULOS (servicio,
cliente,
es_subcontratista,
nro_columna,
producto,
nombre_producto,
indicador,
etiqueta,
tipo_dato,
clave_indicador)
values (@p_servicio, @p_cliente, @p_es_subcontratista, @nro_columna,
@producto, @nombre_producto,
@indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador)
end
FETCH NEXT FROM PC_titulos into @nro_columna, @producto, @nombre_producto,
@indicador, @etiqueta_indicador, @tipo_dato, @clave_indicador
END
CLOSE PC_titulos
DEALLOCATE PC_titulos
/*
select * from PANEL_CONTROL_EXCEL_TITULOS
where servicio = @p_servicio and cliente = @p_cliente and visible = 1 and es_subcontratista = @p_es_subcontratista
order by nro_columna
*/
end
if (@p_accion = 'DATOS')
begin
declare @pais_servicio varchar(10) = null
declare @familia int = null
select @p_cliente = cliente, @p_servicio = servicio_contratado, @p_es_subcontratista = subcontratista, @pais_servicio = pais_servicio
from ln_contrapartes where contraparte = @p_contraparte
select @familia = familia from ln_contraparte_familias where contraparte = @p_contraparte
-- Si no tiene el registro de titulos, para el cliente, lo genera
if (select COUNT(*) from PANEL_CONTROL_EXCEL_TITULOS where servicio = @p_servicio and cliente = @p_cliente and es_subcontratista = @p_es_subcontratista) = 0
begin
exec [PANEL_CONTROL_EXCEL_] 'TITULOS',@p_cliente,@p_servicio,null,@p_es_subcontratista
end
if (@p_proceso_completo = 1)
begin
insert into @datos
SELECT LN_Contrapartes.servicio_contratado, LN_contrapartes.contraparte, LN_contraparte_indicadores.indicador,
LN_indicadores.clave_indicador,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then iif(LN_contraparte_indicadores.valor_numerico is not null,
REPLACE(replace(convert(varchar,convert(Money, ROUND(LN_contraparte_indicadores.valor_numerico,0)),1),'.00',''), ',', '.'),
null)
when LN_indicadores.tipo_dato = 'F' then iif(LN_contraparte_indicadores.valor_numerico is not null,
format(LN_contraparte_indicadores.valor_numerico, '#############.##'),
null)
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor,
case
when LN_indicadores.tipo_dato = 'S' then LN_contraparte_indicadores.valor_texto
when LN_indicadores.tipo_dato = 'M' then LN_contraparte_indicadores.valor_memo
when LN_indicadores.tipo_dato = 'I' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
when LN_indicadores.tipo_dato = 'F' then convert(varchar,convert(bigint,LN_contraparte_indicadores.valor_numerico))
when LN_indicadores.tipo_dato = 'D' then iif(LN_contraparte_indicadores.valor_fecha is not null, convert(varchar, LN_contraparte_indicadores.valor_fecha, 103), NULL)
when LN_indicadores.tipo_dato = 'B' then iif(LN_contraparte_indicadores.valor_numerico > 0, 'SI', 'NO')
else null
end as valor_sin_formato,
CASE
WHEN LN_indicadores.clave_indicador = 'SCORE_FINAL' THEN
(select LN_cliente_nivel.texto_largo
from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
where LN_cliente_nivel.cliente = @p_cliente
and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico
and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
and LN_indicadores.clave_indicador = 'SCORE_FINAL')
WHEN LN_indicadores.clave_indicador = 'SCORE_VRM' THEN
(select LN_cliente_nivel.texto_largo
from LN_cliente_nivel inner join LN_indicadores ON LN_cliente_nivel.indicador = LN_indicadores.indicador
where LN_cliente_nivel.cliente = @p_cliente
and LN_cliente_nivel.desde <= LN_contraparte_indicadores.valor_numerico
and LN_cliente_nivel.hasta > LN_contraparte_indicadores.valor_numerico
and LN_indicadores.clave_indicador = 'SCORE_VRM')
ELSE NULL
END AS texto,
ln_contraparte_indicadores.valor_memo
FROM LN_contrapartes
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
and LN_contraparte_indicadores.gestion = LN_gestiones.gestion)
INNER JOIN LN_indicadores ON LN_contraparte_indicadores.indicador = LN_indicadores.indicador
inner join ln_productos on ln_productos.producto = ln_indicadores.producto
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)
LEFT OUTER JOIN
(SELECT LN_docs.contraparte, COUNT(*) AS ingresados
FROM LN_docs
INNER JOIN LN_gestiones ON LN_docs.gestion = LN_gestiones.gestion
INNER JOIN
(select LN_docs.contraparte, LN_docs.tipo_doc, max(doc_version) as ultima
from LN_docs
inner join LN_gestiones on (LN_docs.gestion = LN_gestiones.gestion
AND LN_docs.contraparte = LN_gestiones.contraparte)
where LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
group by LN_docs.contraparte, LN_docs.tipo_doc) ultimas_versiones
ON (LN_docs.tipo_doc = ultimas_versiones.tipo_doc
AND ln_docs.contraparte = ultimas_versiones.contraparte
AND LN_docs.doc_version = ultimas_versiones.ultima)
WHERE LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()
AND LN_docs.estado_doc = 'I'
GROUP BY LN_docs.contraparte) PENDIENTES_VERIFICAR ON LN_contrapartes.contraparte = PENDIENTES_VERIFICAR.contraparte
LEFT OUTER JOIN
(select LN_excepciones.contraparte, LN_excepciones.tipo_excepcion, LN_excepciones.gestion
from LN_contrapartes inner join LN_excepciones
on LN_contrapartes.contraparte = LN_excepciones.contraparte
where LN_contrapartes.cliente = @p_cliente
and LN_excepciones.estado = 1
and LN_excepciones.vigencia >= GETDATE()) excepciones ON
(LN_contrapartes.contraparte = excepciones.contraparte
--and excepciones.gestion = ln_gestiones.gestion
)
WHERE LN_contrapartes.cliente = @p_cliente
AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and LN_gestiones.vigente = 1
AND LN_indicadores.visible = 1
AND LN_contrapartes.activo = 1
--and LN_contrapartes.servicio_contratado = isnull(@p_servicio,LN_contrapartes.servicio_contratado)
and LN_contrapartes.contraparte = isnull(@p_contraparte,LN_contrapartes.contraparte)
--and LN_contrapartes.subcontratista = isnull(@p_es_subcontratista,subcontratista)
AND LN_contraparte_familias.activo = 1
AND LN_familia_productos.activo = 1
and LN_contraparte_indicadores.visible = 1
and ln_productos.servicio_contratado in (0,ln_contrapartes.servicio_contratado)
end
-- Datos generales
declare @ln_pais_servicio varchar(max) = null
declare @ln_pais_contraparte varchar(max) = null
declare @ln_familia varchar(max) = null
declare @ln_nombre_persona varchar(max) = null
declare @ln_identificador varchar(max) = null
declare @ln_identificacion varchar(max) = null
declare @ln_inicio_gestion varchar(max) = null
declare @ln_dias_gestion varchar(max) = null
declare @ln_detalle_killer varchar(max) = null
declare @ln_nombre_contacto varchar(max) = null
declare @ln_email_contacto varchar(max) = null
declare @ln_telefono_contacto varchar(max) = null
declare @ln_datos_comerciales varchar(max) = null
SELECT
@ln_pais_servicio = isnull(pais_serv.country_name,''),
@ln_pais_contraparte = country.country_name,
@ln_familia = LN_familias.nombre_familia,
@ln_nombre_persona = padrones.nombre_persona,
@ln_identificador = identificadores.abreviatura,
@ln_identificacion = padrones.identificacion,
@ln_inicio_gestion = ln_gestiones.desde,
@ln_dias_gestion = datediff(dd,ln_gestiones.desde,convert(date,getdate())),
@ln_detalle_killer = dd.detalle,
@ln_nombre_contacto = LN_contrapartes.nombre_contacto,
@ln_email_contacto = LN_contrapartes.email_contacto,
@ln_telefono_contacto = LN_contrapartes.telefono_contacto,
@ln_datos_comerciales = replace(convert(varchar(max),LN_contrapartes.datos_comerciales),'<br>',' - ')
FROM LN_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
LEFT OUTER JOIN country pais_serv ON ln_contrapartes.pais_servicio = pais_serv.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia and LN_familias.cliente = ln_contrapartes.cliente
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
left join (SELECT contraparte, gestion, detalle=STUFF(
(SELECT distinct '; ' + detalle_killer AS [text()]
FROM ln_score_detalle_killer XT
WHERE XT.contraparte = T.contraparte and XT.visible = 1 and XT.gestion = T.gestion
FOR XML PATH('')), 1, 2, '')
FROM ln_score_detalle_killer T where T.visible = 1
GROUP BY contraparte,gestion) dd on (dd.contraparte = ln_contrapartes.contraparte and dd.gestion = LN_gestiones.gestion)
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
AND LN_familias.visible = 1
AND LN_contraparte_familias.activo = 1
and LN_gestiones.desde <= GETDATE() and LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
and LN_contrapartes.contraparte = @p_contraparte
--
-- Borro los datos que tenemos en la tabla PANEL_CONTROL_EXCEL_DATOS
if (@p_proceso_completo = 1)
begin
if (select COUNT(*) from PANEL_CONTROL_EXCEL_DATOS where contraparte = @p_contraparte) > 0
update PANEL_CONTROL_EXCEL_DATOS set visible = 0 where contraparte = @p_contraparte
declare C1_titulos CURSOR FOR
select nro_columna,
indicador,
tipo_dato,
clave_indicador
from PANEL_CONTROL_EXCEL_TITULOS
where cliente = @p_cliente and visible = 1 and servicio = @p_servicio and es_subcontratista = @p_es_subcontratista
order by nro_columna
end
else
begin
if (select COUNT(*) from PANEL_CONTROL_EXCEL_DATOS where contraparte = @p_contraparte and (indicador = 0 or indicador between 9990 and 9999)) > 0
update PANEL_CONTROL_EXCEL_DATOS set visible = 0
where contraparte = @p_contraparte
and (indicador = 0 or indicador between 9990 and 9999)
declare C1_titulos CURSOR FOR
select nro_columna,
indicador,
tipo_dato,
clave_indicador
from PANEL_CONTROL_EXCEL_TITULOS
where cliente = @p_cliente and visible = 1 and servicio = @p_servicio and es_subcontratista = @p_es_subcontratista
and (indicador = 0 or indicador between 9990 and 9999)
order by nro_columna
end
-- Busco las columnas a completar, para la contraparte, de acuerdo a las columnas indicadas en PANEL_CONTROL_JSON_TITULOS
-- completo las columnas del indicador = 0, que son los datos de la contraparte
-- completo las columnas de los indicadores que no son indicadores reales
-- completo las columnas de los indicadores que son indicadores reales
open C1_titulos
FETCH NEXT FROM C1_titulos into @nro_columna, @indicador,
@tipo_dato,
@clave_indicador
WHILE @@FETCH_STATUS = 0 BEGIN
SET @d_valor = NULL
SET @d_valor_sin_formato = NULL
SET @d_texto = NULL
if (select COUNT(*) from PANEL_CONTROL_EXCEL_DATOS
where contraparte = @p_contraparte
and indicador = @indicador
and clave_indicador = @clave_indicador) > 0
begin
update PANEL_CONTROL_EXCEL_DATOS
set servicio = @p_servicio,
cliente = @p_cliente,
pais_servicio = @pais_servicio, familia = @familia,
visible = 1,
modified = GETDATE()
where contraparte = @p_contraparte
and indicador = @indicador
and clave_indicador = @clave_indicador
end
else
begin
insert into PANEL_CONTROL_EXCEL_DATOS (servicio, cliente, es_subcontratista, contraparte, pais_servicio, familia, indicador, clave_indicador, visible)
values (@p_servicio, @p_cliente, @p_es_subcontratista, @p_contraparte, @pais_servicio, @familia, @indicador, @clave_indicador, 1)
end
IF (@indicador = 0)
BEGIN
set @d_valor = null
if @clave_indicador = '0_PAIS_SERVICIO' begin set @d_valor = @ln_pais_servicio end
if @clave_indicador = '0_PAIS' begin set @d_valor = @ln_pais_contraparte end
if @clave_indicador = '0_FAMILIA' begin set @d_valor = @ln_familia end
if @clave_indicador = '0_RAZON_SOCIAL' begin set @d_valor = @ln_nombre_persona end
if @clave_indicador = '0_IDENTIFICADOR' begin set @d_valor = @ln_identificador end
if @clave_indicador = '0_IDENTIFICACION' begin set @d_valor = @ln_identificacion end
if @clave_indicador = '0_NOMBRE_CONTACTO' begin set @d_valor = @ln_nombre_contacto end
if @clave_indicador = '0_EMAIL_CONTACTO' begin set @d_valor = @ln_email_contacto end
if @clave_indicador = '0_TELEFONO_CONTACTO' begin set @d_valor = @ln_telefono_contacto end
if @clave_indicador = '0_Detalle_Rechazos' begin set @d_valor = @ln_detalle_killer end
if @clave_indicador = '0_DATOS_COMERCIALES' begin set @d_valor = @ln_datos_comerciales end
if @clave_indicador = '0_PACTO_MUNDIAL' begin
declare @valores table (contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico float, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
insert into @valores exec ln_docs_valores @p_contraparte, 'PACTO_MUNDIAL'
select @d_valor = case
when valor_numerico = 1 then 'SI'
when valor_numerico = 0 then 'NO'
else ''
end
from @valores
end
if @clave_indicador = '0_Meses_Deuda_Aportes' begin
select @d_valor = STUFF((
SELECT '-' + SUBSTRING(convert(varchar,periodo),5,2) + '/' + SUBSTRING(convert(varchar,periodo),1,4)
from deuda_previsional
inner join padrones on (identificacion = cuit and habilitado = 1)
where cuit = @ln_identificacion and codigo = 301 and periodo is not null
and visible = 1
order by periodo
FOR XML PATH('')
), 1, 1, '')
end
if @clave_indicador = '0_Meses_Deuda_Contribuciones' begin
select @d_valor = STUFF((
SELECT '-' + SUBSTRING(convert(varchar,periodo),5,2) + '/' + SUBSTRING(convert(varchar,periodo),1,4)
from deuda_previsional
inner join padrones on (identificacion = cuit and habilitado = 1)
where cuit = @ln_identificacion and codigo = 351 and periodo is not null
and visible = 1
order by periodo
FOR XML PATH('')
), 1, 1, '')
end
declare @clave_indicador2 varchar(100) = ''
if @clave_indicador like '0_TRABAJADORES_%' or @clave_indicador like '0_NA_TRABAJADORES'
begin
delete from @personal
set @clave_indicador2 = replace(@clave_indicador,'0_','')
insert into @personal exec ln_docs_valores @p_contraparte, @clave_indicador2
set @d_valor = (select top 1 iif(valor_texto is null, convert(varchar,isnull(valor_numerico,'0')), 'X') from @personal)
end
END
IF (@indicador = 9990)
BEGIN
if exists (select valor_memo from @datos where contraparte = @p_contraparte and indicador = 37)
begin
set @d_valor = (select top 1 valor_memo from @datos where contraparte = @p_contraparte and indicador = 37)
end
END
IF (@indicador = 9995)
BEGIN
if exists (select texto from @datos where contraparte = @p_contraparte and indicador = 4)
begin
set @d_valor = (select top 1 isnull(texto,'') from @datos where contraparte = @p_contraparte and indicador = 4)
end
END
declare @datos_cruce varchar(max) = ''
declare @cuit varchar(20), @nombre varchar(500), @cargo varchar(100), @relacion varchar(100), @empleado_cuit varchar(20), @empleado_nombre varchar(500)
IF (@indicador = 9993)
BEGIN
declare @control_etica table (cuit varchar(20), nombre varchar(500), cargo varchar(100), relacion varchar(100), empleado_cuit varchar(20), empleado_nombre varchar(500))
insert into @control_etica exec LN_control_etica @p_contraparte
declare C_etica CURSOR FOR
select cuit, nombre, cargo, relacion, empleado_cuit, empleado_nombre
from @control_etica
OPEN C_etica
FETCH NEXT FROM C_etica INTO @cuit, @nombre, @cargo, @relacion, @empleado_cuit, @empleado_nombre
WHILE @@FETCH_STATUS = 0 BEGIN
if @datos_cruce = ''
set @datos_cruce = isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
else
set @datos_cruce = @datos_cruce + '<br>' + isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
FETCH NEXT FROM C_etica INTO @cuit, @nombre, @cargo, @relacion, @empleado_cuit, @empleado_nombre
END
CLOSE C_etica
DEALLOCATE C_etica
SET @d_valor = @datos_cruce
if @d_valor = '' set @d_valor = null
END
IF (@indicador = 9994)
BEGIN
declare @control_calidad table (cuit varchar(20), nombre varchar(500), cargo varchar(100))
insert into @control_calidad exec LN_control_calidad @p_contraparte
declare C_calidad CURSOR FOR
select cuit, nombre, cargo
from @control_calidad
OPEN C_calidad
FETCH NEXT FROM C_calidad INTO @cuit, @nombre, @cargo
WHILE @@FETCH_STATUS = 0 BEGIN
if @datos_cruce = ''
set @datos_cruce = isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
else
set @datos_cruce = @datos_cruce + '<br>' + isnull(@cuit,'') + ' ' + isnull(@nombre,'') + ' - ' + isnull(@cargo,'')
FETCH NEXT FROM C_calidad INTO @cuit, @nombre, @cargo
END
CLOSE C_calidad
DEALLOCATE C_calidad
SET @d_valor = @datos_cruce
if @d_valor = '' set @d_valor = null
END
IF (@indicador in (9999,9998,9997,9996))
BEGIN
declare @estado_doc char(1) = ''
set @d_valor = null
if @indicador = 9996 set @estado_doc = 'V'
if @indicador = 9997 set @estado_doc = 'I'
if @indicador = 9998 set @estado_doc = 'R'
if @indicador = 9999 set @estado_doc = 'N'
declare C_documentos CURSOR FOR
SELECT DISTINCT nombre_tipo_doc
FROM ln_docs
INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
INNER JOIN LN_gestiones ON (ln_docs.contraparte = LN_gestiones.contraparte AND LN_docs.gestion = LN_gestiones.gestion)
INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
AND LN_tipos_doc.tipo_doc = LN_set_tipo_doc.tipo_doc
AND LN_set_tipo_doc.activo = 1)
WHERE LN_docs.contraparte = @p_contraparte
and ln_gestiones.vigente = 1 and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate()
and estado_doc = @estado_doc
order by nombre_tipo_doc
declare @documentos varchar(max) = '';
declare @documento varchar(max) = '';
OPEN C_documentos
FETCH NEXT FROM C_documentos INTO @documento
WHILE @@FETCH_STATUS = 0 BEGIN
if @documentos = ''
set @documentos = @documento
else
set @documentos = @documentos + '<br>' + @documento
FETCH NEXT FROM C_documentos INTO @documento
END
CLOSE C_documentos
DEALLOCATE C_documentos
SET @d_valor = @documentos
if @d_valor = '' set @d_valor = null
END
if (@indicador != 0 and @indicador not between 9990 and 9999 and @p_proceso_completo = 1)
begin
select @d_valor = valor,
@d_valor_sin_formato = valor_sin_formato,
@d_texto = texto,
@d_valor_memo = valor_memo
from @datos
where contraparte = @p_contraparte and indicador = @indicador and clave_indicador = @clave_indicador
if(@indicador = 361 or @indicador = 360)
begin
set @d_valor = @d_valor_memo
end
if (@indicador = 6 and @d_valor is null)
BEGIN
if exists (select valor from @datos where contraparte = @p_contraparte and indicador = 37)
begin
select @d_valor = isnull(valor,''),
@d_valor_sin_formato = valor_sin_formato,
@d_texto = texto
from @datos where contraparte = @p_contraparte and indicador = 37
end
END
if (@indicador = 37 and exists (select valor from @datos where contraparte = @p_contraparte and indicador = 6))
begin
update PANEL_CONTROL_EXCEL_DATOS set visible = 0
where contraparte = @d_contraparte and indicador = @d_indicador and clave_indicador = @d_clave_indicador
end
if (@d_valor = '-100') set @d_valor = 'N/A'
end
if (@indicador = 0 or @indicador between 9990 and 9999 or @p_proceso_completo = 1)
begin
update PANEL_CONTROL_EXCEL_DATOS
set valor = @d_valor,
valor_sin_formato = @d_valor_sin_formato,
texto = @d_texto,
visible = 1
where contraparte = @d_contraparte and indicador = @d_indicador and clave_indicador = @d_clave_indicador
end
FETCH NEXT FROM C1_titulos into @nro_columna, @indicador,
@tipo_dato,
@clave_indicador
END
CLOSE C1_titulos
DEALLOCATE C1_titulos
/*
select T.nro_columna,T.clave_indicador, T.nombre_producto, T.etiqueta,
D.valor, D.valor_sin_formato, D.texto
from PANEL_CONTROL_EXCEL_DATOS D
inner join PANEL_CONTROL_EXCEL_TITULOS T on (T.clave_indicador = D.clave_indicador and T.indicador = D.indicador and T.cliente = D.cliente and T.servicio = D.servicio and T.es_subcontratista = D.es_subcontratista)
where D.contraparte = @p_contraparte and D.visible = 1 and T.visible = 1
order by T.nro_columna
*/
end
END
--select * from PANEL_CONTROL_EXCEL_TITULOS where cliente = 5546348
--LN_panel_control_excel_datos_comerciales 55456348,107,47
GO
Depends On
30- dbo.LN_control_calidad
- dbo.LN_control_etica
- dbo.LN_docs_valores
- dbo.PANEL_CONTROL_EXCEL_
- dbo.clientes
- dbo.country
- dbo.deuda_previsional
- dbo.identificadores
- dbo.LN_campos
- dbo.LN_cliente_indicadores
- dbo.LN_cliente_nivel
- dbo.LN_cliente_productos
- dbo.LN_contraparte_familias
- dbo.LN_contraparte_indicadores
- dbo.LN_contrapartes
- dbo.LN_docs
- dbo.LN_excepciones
- dbo.LN_familia_productos
- dbo.LN_familias
- dbo.LN_gestiones
- dbo.LN_indicadores
- dbo.LN_productos
- dbo.ln_score_detalle_killer
- dbo.LN_set_tipo_doc
- dbo.LN_tipo_doc_campos
- dbo.LN_tipos_doc
- dbo.padrones
- dbo.PANEL_CONTROL_EXCEL_DATOS
- dbo.PANEL_CONTROL_EXCEL_TITULOS
- dbo.users
Used By
No items found