Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
3| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_contraparte | int | 4 | |
| @p_fecha_gestion | varchar | 10 | |
| @p_productos | varchar | -1 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
exec [LN_score_detalle_puntos_] 95, '2020-03-26'
exec [LN_score_detalle_puntos_] 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_score_detalle_puntos_
@p_contraparte int,
@p_fecha_gestion varchar(10) = null,
@p_productos varchar(max) = '0'
AS
BEGIN
SET NOCOUNT ON;
declare @fecha_gestion date
if (isnull(@p_fecha_gestion,'') = '')
begin
set @fecha_gestion = getdate()
end
else
begin
set @fecha_gestion = convert(date, @p_fecha_gestion)
end
if (@p_productos != '2101')
set @p_productos = '0' -- Para que muestre el detalle de todos, no solo de los que el usuario puede ver
if (@p_productos = '0')
SELECT contraparte, gestion, detalle=STUFF(
(SELECT distinct '; ' + detalle AS [text()]
FROM ln_score_detalle_puntos XT
WHERE XT.contraparte = T.contraparte and XT.visible = 1 and XT.gestion = T.gestion
FOR XML PATH('')), 1, 2, '')
FROM ln_score_detalle_puntos T
where T.contraparte = @p_contraparte
and T.visible = 1
and T.gestion = (select gestion from ln_gestiones where contraparte = @p_contraparte and
desde <= @fecha_gestion and hasta >= @fecha_gestion)
-- agregado 18/07/2024: solo muestra motivos si tiene el indicador score_final
and exists (select * from ln_contraparte_indicadores i
inner join ln_indicadores ind on (ind.indicador = i.indicador and ind.clave_indicador = 'SCORE_FINAL')
where i.contraparte = @p_contraparte and i.gestion = T.gestion)
--
GROUP BY contraparte, gestion
else
begin
declare @cant int = 0
if (@p_productos != '2101')
set @cant = (select COUNT(*)
from ln_score_detalle_puntos
inner join LN_gestiones on (LN_gestiones.contraparte = ln_score_detalle_puntos.contraparte and LN_gestiones.gestion = ln_score_detalle_puntos.gestion)
where ln_score_detalle_puntos.contraparte = @p_contraparte
and LN_gestiones.desde <= @fecha_gestion and LN_gestiones.hasta >= @fecha_gestion
-- agregado 18/07/2024: solo muestra motivos si tiene el indicador score_final
and exists (select * from ln_contraparte_indicadores i
inner join ln_indicadores ind on (ind.indicador = i.indicador and ind.clave_indicador = 'SCORE_FINAL')
where i.contraparte = @p_contraparte and i.gestion = LN_gestiones.gestion)
--
/*and LN_gestiones.vigente = 1*/
)
/* Si tiene detalle de puntos (@cant != 0),
pero el detalle del select de abajo da vacio,
es porque son motivos de otro producto
que no esta en la lista de los productos visibles para el usuario */
select contraparte, gestion,
iif(detalle is null and @cant != 0, 'CONSULTAR MOTIVOS CON EL USUARIO ADMINISTRADOR',detalle) as detalle
from
(SELECT contraparte, gestion, detalle=STUFF(
(SELECT distinct '; ' + detalle AS [text()]
FROM ln_score_detalle_puntos XT
INNER JOIN LN_indicadores I on I.indicador = XT.indicador
INNER JOIN dbo.DelimitedSplit8K(@p_productos, ',') P ON p.item = I.producto
WHERE XT.contraparte = T.contraparte and XT.visible = 1 and XT.gestion = T.gestion
FOR XML PATH('')), 1, 2, '')
FROM ln_score_detalle_puntos T
where T.contraparte = @p_contraparte
and T.visible = 1
and T.gestion = (select gestion from ln_gestiones where contraparte = @p_contraparte and
desde <= @fecha_gestion and hasta >= @fecha_gestion)
-- agregado 18/07/2024: solo muestra motivos si tiene el indicador score_final
and exists (select * from ln_contraparte_indicadores i
inner join ln_indicadores ind on (ind.indicador = i.indicador and ind.clave_indicador = 'SCORE_FINAL')
where i.contraparte = @p_contraparte and i.gestion = T.gestion)
--
GROUP BY contraparte, gestion) FINAL
end
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
exec [LN_score_detalle_puntos_] 95, '2020-03-26'
exec [LN_score_detalle_puntos_] 95
*/
CREATE OR ALTER PROCEDURE dbo.LN_score_detalle_puntos_
@p_contraparte int,
@p_fecha_gestion varchar(10) = null,
@p_productos varchar(max) = '0'
AS
BEGIN
SET NOCOUNT ON;
declare @fecha_gestion date
if (isnull(@p_fecha_gestion,'') = '')
begin
set @fecha_gestion = getdate()
end
else
begin
set @fecha_gestion = convert(date, @p_fecha_gestion)
end
if (@p_productos != '2101')
set @p_productos = '0' -- Para que muestre el detalle de todos, no solo de los que el usuario puede ver
if (@p_productos = '0')
SELECT contraparte, gestion, detalle=STUFF(
(SELECT distinct '; ' + detalle AS [text()]
FROM ln_score_detalle_puntos XT
WHERE XT.contraparte = T.contraparte and XT.visible = 1 and XT.gestion = T.gestion
FOR XML PATH('')), 1, 2, '')
FROM ln_score_detalle_puntos T
where T.contraparte = @p_contraparte
and T.visible = 1
and T.gestion = (select gestion from ln_gestiones where contraparte = @p_contraparte and
desde <= @fecha_gestion and hasta >= @fecha_gestion)
-- agregado 18/07/2024: solo muestra motivos si tiene el indicador score_final
and exists (select * from ln_contraparte_indicadores i
inner join ln_indicadores ind on (ind.indicador = i.indicador and ind.clave_indicador = 'SCORE_FINAL')
where i.contraparte = @p_contraparte and i.gestion = T.gestion)
--
GROUP BY contraparte, gestion
else
begin
declare @cant int = 0
if (@p_productos != '2101')
set @cant = (select COUNT(*)
from ln_score_detalle_puntos
inner join LN_gestiones on (LN_gestiones.contraparte = ln_score_detalle_puntos.contraparte and LN_gestiones.gestion = ln_score_detalle_puntos.gestion)
where ln_score_detalle_puntos.contraparte = @p_contraparte
and LN_gestiones.desde <= @fecha_gestion and LN_gestiones.hasta >= @fecha_gestion
-- agregado 18/07/2024: solo muestra motivos si tiene el indicador score_final
and exists (select * from ln_contraparte_indicadores i
inner join ln_indicadores ind on (ind.indicador = i.indicador and ind.clave_indicador = 'SCORE_FINAL')
where i.contraparte = @p_contraparte and i.gestion = LN_gestiones.gestion)
--
/*and LN_gestiones.vigente = 1*/
)
/* Si tiene detalle de puntos (@cant != 0),
pero el detalle del select de abajo da vacio,
es porque son motivos de otro producto
que no esta en la lista de los productos visibles para el usuario */
select contraparte, gestion,
iif(detalle is null and @cant != 0, 'CONSULTAR MOTIVOS CON EL USUARIO ADMINISTRADOR',detalle) as detalle
from
(SELECT contraparte, gestion, detalle=STUFF(
(SELECT distinct '; ' + detalle AS [text()]
FROM ln_score_detalle_puntos XT
INNER JOIN LN_indicadores I on I.indicador = XT.indicador
INNER JOIN dbo.DelimitedSplit8K(@p_productos, ',') P ON p.item = I.producto
WHERE XT.contraparte = T.contraparte and XT.visible = 1 and XT.gestion = T.gestion
FOR XML PATH('')), 1, 2, '')
FROM ln_score_detalle_puntos T
where T.contraparte = @p_contraparte
and T.visible = 1
and T.gestion = (select gestion from ln_gestiones where contraparte = @p_contraparte and
desde <= @fecha_gestion and hasta >= @fecha_gestion)
-- agregado 18/07/2024: solo muestra motivos si tiene el indicador score_final
and exists (select * from ln_contraparte_indicadores i
inner join ln_indicadores ind on (ind.indicador = i.indicador and ind.clave_indicador = 'SCORE_FINAL')
where i.contraparte = @p_contraparte and i.gestion = T.gestion)
--
GROUP BY contraparte, gestion) FINAL
end
END
GO