dbo.Dashboard_backend_informes_tareas

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_accion varchar 30
@p_fecha datetime 8
@p_plataforma int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
EXEC [Dashboard_backend_informes_tareas] 'INFORMES_POR_SEMANA','2024-07-31',47
EXEC [Dashboard_backend_informes_tareas] 'INFORMES_VENCIDOS_PREFECHA','2024-07-12',47
EXEC [Dashboard_backend_informes_tareas] 'INFORMES_VENCIDOS_PREDIA','2024-07-31',47
EXEC [Dashboard_backend_informes_tareas] 'TAREAS_POR_SEMANA','2024-07-12',47
EXEC [Dashboard_backend_informes_tareas] 'TAREAS_POR_DIA','2024-07-23',47
EXEC [Dashboard_backend_informes_tareas] 'TAREAS_VENCIDOS_PREDIA','2024-07-23',47
EXEC [Dashboard_backend_informes_tareas] 'TAREAS_CATEGORIA_DIA','2024-07-23',47
*/

-- Create the stored procedure in the specified schema
CREATE OR ALTER PROCEDURE dbo.Dashboard_backend_informes_tareas
    @p_accion VARCHAR(30),
    @p_fecha DATETIME,
    @p_plataforma INT
    --@p_categoria VARCHAR(20)=NULL -- lista separada por comas roles al cual le pertenecen las tareas
-- add more stored procedure parameters here
AS
BEGIN
    -- body of the stored procedure
    DECLARE @accion VARCHAR(30) = UPPER(@p_accion);
    DECLARE @fecha_loop DATETIME = @p_fecha;
    DECLARE @StartWeek DATETIME;
    DECLARE @EndWeek DATETIME;
    DECLARE @i INT = 0;
    --
    DECLARE @temp_informes_semana TABLE (
        cant_informes INT,
        fecha_semana DATETIME,
        estado CHAR(1)
    );
    --
    IF ( @accion = 'INFORMES_POR_SEMANA' )
        BEGIN
            --SET @StartWeek=@fecha_loop
            --SET @EndWeek=DATEADD(WEEK, 1, DATEADD(DD,1-DATEPART(DW, @fecha_loop), @fecha_loop))
            --
            WHILE @i < 24
                BEGIN
                    SET @StartWeek=DATEADD(DD,1-DATEPART(DW, @fecha_loop), @fecha_loop)
                    SET @EndWeek=DATEADD(WEEK, 1, @StartWeek)
                    --select @StartWeek, @EndWeek
                    -- Informes Por estado
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe_padre) AS cant_informes,
                        @EndWeek as fecha_semana,
                        iPPAL.estado_informe
                    FROM informes 
                        INNER JOIN informes iPPAL on informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo on ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN LN_gestiones ON LN_gestiones.gestion=LN_demo.gestion
                        INNER JOIN padrones on padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes on ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas on informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        LEFT JOIN fuentes_descripciones on fuentes_descripciones.idTipo_informe=LN_tipo_informes.idTipoInforme
                    WHERE
                        --iPPAL.estado_informe IN ('A','E','P','W')
                        iPPAL.estado_informe IN ('P')
                        AND clientes.cliente NOT IN (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=@p_plataforma 
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,iPPAL.fecha_comprometida) >= CONVERT(DATE,GETDATE())
                        AND CONVERT(DATE,iPPAL.fecha_comprometida) > CONVERT(DATE,@StartWeek)
                        AND CONVERT(DATE,iPPAL.fecha_comprometida) <= CONVERT(DATE,@EndWeek)
                        AND LN_gestiones.vigente=1
                        AND (fuentes_descripciones.id_fuente_descripcion IS NULL OR fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    GROUP BY iPPAL.estado_informe;
                    --
                    /* IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='A') = 0 )
                                        BEGIN
                                            INSERT INTO @temp_informes_semana (
                                                cant_informes,
                                                fecha_semana,
                                                estado
                                            ) VALUES (
                                                0,
                                                @EndWeek,
                                                'A'
                                            )
                                        END */

                    --
                    /* IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='E') = 0 )
                                        BEGIN
                                            INSERT INTO @temp_informes_semana (
                                                cant_informes,
                                                fecha_semana,
                                                estado
                                            ) VALUES (
                                                0,
                                                @EndWeek,
                                                'E'
                                            )
                                        END */

                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='P') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @EndWeek,
                            'P'
                        )
                    END
                    --
                    /* IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='W') = 0 )
                                        BEGIN
                                            INSERT INTO @temp_informes_semana (
                                                cant_informes,
                                                fecha_semana,
                                                estado
                                            ) VALUES (
                                                0,
                                                @EndWeek,
                                                'W'
                                            )
                                        END */

                    --
                    SET @i = @i + 1
                    SET @fecha_loop = DATEADD(WEEK,1,@fecha_loop)
                    --
                    --SET @StartWeek=DATEADD(DD,1-DATEPART(DW, @fecha_loop), @fecha_loop)
                    --SET @EndWeek=DATEADD(WEEK, 1, @StartWeek)
                END
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'INFORMES_POR_DIA' )
        BEGIN
            --
            WHILE @i < 24
                BEGIN
                    -- Informes Por estado
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe_padre) AS cant_informes,
                        @fecha_loop as fecha_semana,
                        iPPAL.estado_informe
                    FROM informes 
                        INNER JOIN informes iPPAL on informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo on ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN LN_gestiones ON LN_gestiones.gestion=LN_demo.gestion
                        INNER JOIN padrones on padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes on ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas on informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        LEFT JOIN fuentes_descripciones on fuentes_descripciones.idTipo_informe=LN_tipo_informes.idTipoInforme
                    WHERE
                        --iPPAL.estado_informe IN ('A','E','P','W')
                        iPPAL.estado_informe IN ('A','E','W')
                        AND clientes.cliente NOT IN (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=@p_plataforma 
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,iPPAL.fecha_comprometida) = CONVERT(DATE,@fecha_loop)
                        AND LN_gestiones.vigente=1
                        AND (fuentes_descripciones.id_fuente_descripcion IS NULL OR fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    GROUP BY iPPAL.estado_informe;
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='A') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @fecha_loop,
                            'A'
                        )
                    END
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='E') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @fecha_loop,
                            'E'
                        )
                    END
                    --
                    /* IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='P') = 0 )
                                        BEGIN
                                            INSERT INTO @temp_informes_semana (
                                                cant_informes,
                                                fecha_semana,
                                                estado
                                            ) VALUES (
                                                0,
                                                @fecha_loop,
                                                'P'
                                            )
                                        END */

                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='W') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @fecha_loop,
                            'W'
                        )
                    END
                    --
                    SET @i = @i + 1
                    SET @fecha_loop = DATEADD(DAY,1,@fecha_loop)
                END
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'INFORMES_VENCIDOS_PREFECHA' )
        BEGIN
            -- informes con fecha comprometida anterior a la dada
            --SET @StartWeek=DATEADD(DD,1-DATEPART(DW, @fecha_loop), @fecha_loop)
            SET @StartWeek=@fecha_loop
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe_padre) AS cant_informes,
                NULL as fecha_semana,
                iPPAL.estado_informe
            FROM informes 
                INNER JOIN informes iPPAL on informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo on ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN LN_gestiones ON LN_gestiones.gestion=LN_demo.gestion
                INNER JOIN padrones on padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes on ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas on informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                LEFT JOIN fuentes_descripciones on fuentes_descripciones.idTipo_informe=LN_tipo_informes.idTipoInforme
            WHERE
                iPPAL.estado_informe IN ('P')
                AND clientes.cliente NOT IN (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=@p_plataforma 
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,iPPAL.fecha_comprometida) < @StartWeek
                AND LN_gestiones.vigente=1
                AND (fuentes_descripciones.id_fuente_descripcion IS NULL OR fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            GROUP BY iPPAL.estado_informe;
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'INFORMES_VENCIDOS_PREDIA' )
        BEGIN
            -- informes con fecha comprometida anterior a la dada
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe_padre) AS cant_informes,
                NULL as fecha_semana,
                iPPAL.estado_informe
            FROM informes 
                INNER JOIN informes iPPAL on informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo on ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN LN_gestiones ON LN_gestiones.gestion=LN_demo.gestion
                INNER JOIN padrones on padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes on ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas on informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                LEFT JOIN fuentes_descripciones on fuentes_descripciones.idTipo_informe=LN_tipo_informes.idTipoInforme
            WHERE
                iPPAL.estado_informe IN ('A','E','W')
                AND clientes.cliente NOT IN (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=@p_plataforma 
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,iPPAL.fecha_comprometida) < CONVERT(DATE,@fecha_loop)
                AND LN_gestiones.vigente=1
                AND (fuentes_descripciones.id_fuente_descripcion IS NULL OR fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            GROUP BY iPPAL.estado_informe;
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'TAREAS_POR_SEMANA' )
        BEGIN
            WHILE @i < 24
                BEGIN
                    SET @StartWeek=DATEADD(DD,1-DATEPART(DW, @fecha_loop), @fecha_loop)
                    SET @EndWeek=DATEADD(WEEK, 1, @StartWeek)
                    -- Tareas en Espera y En proceso
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @EndWeek as fecha_semana,
                        informes.estado_informe
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        informes.estado_informe IN ('E','W') AND 
                        iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        --AND informes.ready_to_start=1
                        AND clientes.cliente not in (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=@p_plataforma 
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,informes.fecha_comprometida) > @StartWeek
                        AND CONVERT(DATE,informes.fecha_comprometida) <= @EndWeek
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    GROUP BY informes.estado_informe;
                    -- Tareas Listas para iniciar
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @EndWeek as fecha_semana,
                        'Z' as estado_informe
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        informes.estado_informe='A' 
                        AND iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        AND informes.ready_to_start=1
                        AND clientes.cliente NOT IN (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=@p_plataforma
                        AND CONVERT(DATE,informes.fecha_comprometida) > @StartWeek
                        AND CONVERT(DATE,informes.fecha_comprometida) <= @EndWeek 
                        AND isnull(LN_demo.visible,0)=0
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    GROUP BY informes.estado_informe;
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='Z') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @EndWeek,
                            'Z'
                        )
                    END
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='E') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @EndWeek,
                            'E'
                        )
                    END
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@EndWeek AND estado='W') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @EndWeek,
                            'W'
                        )
                    END
                    --
                    SET @i = @i + 1
                    SET @fecha_loop = DATEADD(WEEK,1,@fecha_loop)
                END
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'TAREAS_VENCIDOS_PRESEMANA' )
        BEGIN
            -- tareas con fecha comprometida anterior a la dada
            SET @StartWeek=DATEADD(DD,1-DATEPART(DW, @fecha_loop), @fecha_loop)
            --
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                informes.estado_informe
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                informes.estado_informe IN ('E','W') AND 
                iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND clientes.cliente not in (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=@p_plataforma 
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,informes.fecha_comprometida) <= @StartWeek
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            GROUP BY informes.estado_informe;
            -- Tareas Listas para iniciar
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                'Z' as estado_informe
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                informes.estado_informe='A' 
                AND iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND informes.ready_to_start=1
                AND clientes.cliente NOT IN (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=@p_plataforma
                AND CONVERT(DATE,informes.fecha_comprometida) <= @StartWeek
                AND isnull(LN_demo.visible,0)=0
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            GROUP BY informes.estado_informe;
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'TAREAS_POR_DIA' )
        BEGIN
            WHILE @i < 24
                BEGIN
                    -- Tareas con fecha comprometida anterior a la dada (por dias)
                    -- Tareas en Espera y En proceso
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @fecha_loop as fecha_semana,
                        informes.estado_informe
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        informes.estado_informe IN ('E','W') AND 
                        iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        --AND informes.ready_to_start=1
                        AND clientes.cliente not in (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=@p_plataforma 
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,informes.fecha_comprometida) = CONVERT(DATE,@fecha_loop)
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    GROUP BY informes.estado_informe;
                    -- Tareas Listas para iniciar
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @fecha_loop as fecha_semana,
                        'Z' as estado_informe
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        informes.estado_informe='A' 
                        AND iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        AND informes.ready_to_start=1
                        AND clientes.cliente NOT IN (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=@p_plataforma
                        AND CONVERT(DATE,informes.fecha_comprometida) = CONVERT(DATE,@fecha_loop)
                        AND isnull(LN_demo.visible,0)=0
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    GROUP BY informes.estado_informe;
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='Z') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @fecha_loop,
                            'Z'
                        )
                    END
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='E') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @fecha_loop,
                            'E'
                        )
                    END
                    --
                    IF ( (SELECT COUNT(*) FROM @temp_informes_semana WHERE fecha_semana=@fecha_loop AND estado='W') = 0 )
                    BEGIN
                        INSERT INTO @temp_informes_semana (
                            cant_informes,
                            fecha_semana,
                            estado
                        ) VALUES (
                            0,
                            @fecha_loop,
                            'W'
                        )
                    END
                    --
                    SET @i = @i + 1
                    SET @fecha_loop = DATEADD(DAY,1,@fecha_loop)
                END
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'TAREAS_VENCIDOS_PREDIA' )
        BEGIN
            -- tareas con fecha comprometida anterior a la dada (por dias)
            --
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                informes.estado_informe
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                informes.estado_informe IN ('E','W') AND 
                iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND clientes.cliente not in (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=@p_plataforma 
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,informes.fecha_comprometida) < CONVERT(DATE,@fecha_loop)
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            GROUP BY informes.estado_informe;
            -- Tareas Listas para iniciar
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                'Z' as estado_informe
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                informes.estado_informe='A' 
                AND iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND informes.ready_to_start=1
                AND clientes.cliente NOT IN (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=@p_plataforma
                AND CONVERT(DATE,informes.fecha_comprometida) < CONVERT(DATE,@fecha_loop)
                AND isnull(LN_demo.visible,0)=0
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            GROUP BY informes.estado_informe;
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'TAREAS_CATEGORIA_DIA' )
        BEGIN
            -- tareas con fecha comprometida de 24 días en adelante
            WHILE @i < 24
                BEGIN
                    -- Tareas Call Center por dia
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @fecha_loop as fecha_semana,
                        'C' as estado
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        INNER JOIN dbo.DelimitedSplit8K('2',',') tipos_roles ON ln_tareas.perfil_usr_default = (tipos_roles.Item)
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        AND informes.estado_informe NOT IN ('K','N','X') 
                        AND clientes.cliente not in (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=47
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,informes.fecha_comprometida) = CONVERT(DATE,@fecha_loop)
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    -- Tareas Redacción por dia
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @fecha_loop as fecha_semana,
                        'R' as estado
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        INNER JOIN dbo.DelimitedSplit8K('3,7,9',',') tipos_roles ON ln_tareas.perfil_usr_default = (tipos_roles.Item)
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        AND informes.estado_informe NOT IN ('K','N','X') 
                        AND clientes.cliente not in (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=47
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,informes.fecha_comprometida) = CONVERT(DATE,@fecha_loop)
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    -- Tareas Control por dia
                    INSERT INTO @temp_informes_semana (
                        cant_informes,
                        fecha_semana,
                        estado
                    )
                    SELECT 
                        COUNT(DISTINCT informes.informe) AS cant_tareas,
                        @fecha_loop as fecha_semana,
                        'O' as estado
                    FROM informes 
                        INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                        INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                        INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                        INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                        INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                        LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                        INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                        INNER JOIN dbo.DelimitedSplit8K('1',',') tipos_roles ON ln_tareas.perfil_usr_default = (tipos_roles.Item)
                        LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
                    WHERE 
                        iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                        AND informes.estado_informe NOT IN ('K','N','X') 
                        AND clientes.cliente not in (110864291,3920694)
                        AND ln_contrapartes.activo=1 
                        AND ln_contrapartes.servicio_contratado=47
                        AND isnull(LN_demo.visible,0)=0
                        AND CONVERT(DATE,informes.fecha_comprometida) = CONVERT(DATE,@fecha_loop)
                        AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
                    --
                    SET @i = @i + 1
                    SET @fecha_loop = DATEADD(DAY,1,@fecha_loop)
                END
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
    IF ( @accion = 'TAREAS_CATEGORIA_PREDIA' )
        BEGIN
            -- tareas con fecha comprometida anterior a la dada (por dias)
            -- Tareas Call Center por dia
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                'C' as estado
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                INNER JOIN dbo.DelimitedSplit8K('2',',') tipos_roles ON ln_tareas.perfil_usr_default = (tipos_roles.Item)
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND informes.estado_informe NOT IN ('K','N','X') 
                AND clientes.cliente not in (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=47
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,informes.fecha_comprometida) < CONVERT(DATE,@fecha_loop)
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            -- Tareas Redacción por dia
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                'R' as estado
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                INNER JOIN dbo.DelimitedSplit8K('3,7,9',',') tipos_roles ON ln_tareas.perfil_usr_default = (tipos_roles.Item)
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND informes.estado_informe NOT IN ('K','N','X') 
                AND clientes.cliente not in (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=47
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,informes.fecha_comprometida) < CONVERT(DATE,@fecha_loop)
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            -- Tareas Control por dia
            INSERT INTO @temp_informes_semana (
                cant_informes,
                fecha_semana,
                estado
            )
            SELECT 
                COUNT(DISTINCT informes.informe) AS cant_tareas,
                NULL as fecha_semana,
                'O' as estado
            FROM informes 
                INNER JOIN informes iPPAL ON informes.informe_padre=iPPAL.informe 
                INNER JOIN LN_demo ON ln_demo.informe = iPPAL.informe 
                INNER JOIN ln_contrapartes ON ln_demo.contraparte=ln_contrapartes.contraparte
                INNER JOIN padrones ON padrones.id_padron=ln_contrapartes.id_padron
                INNER JOIN clientes ON ln_contrapartes.cliente=clientes.cliente
                LEFT JOIN LN_tareas ON informes.idTarea=LN_tareas.idTarea
                INNER JOIN LN_tipo_informes ON iPPAL.id_tipo_informe=LN_tipo_informes.idTipoInforme
                INNER JOIN dbo.DelimitedSplit8K('1',',') tipos_roles ON ln_tareas.perfil_usr_default = (tipos_roles.Item)
                LEFT JOIN fuentes_descripciones ON fuentes_descripciones.idTipo_informe = LN_tipo_informes.idTipoInforme
            WHERE 
                iPPAL.estado_informe NOT IN ('F','K','N','X','C')
                AND informes.estado_informe NOT IN ('K','N','X') 
                AND clientes.cliente not in (110864291,3920694)
                AND ln_contrapartes.activo=1 
                AND ln_contrapartes.servicio_contratado=47
                AND isnull(LN_demo.visible,0)=0
                AND CONVERT(DATE,informes.fecha_comprometida) < CONVERT(DATE,@fecha_loop)
                AND (fuentes_descripciones.id_fuente_descripcion is null or fuentes_descripciones.mostrar_en_paneles_tareas = 1)
            --
            SELECT * FROM @temp_informes_semana;
            --
            RETURN;
        END
    --
END
GO

Used By

No items found