dbo.Imperium_KPIs

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

7
Name Data Type Length Description
@action varchar 30
@agrupacion varchar 10
@mes_desde int 4
@mes_hasta int 4
@fecha_desde datetime 8
@fecha_hasta datetime 8
@lista_comp varchar 50

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE  dbo.Imperium_KPIs
 -- Add the parameters for the stored procedure here
 @action          varchar(30),
 @agrupacion         varchar(10),
 @mes_desde         int,
 @mes_hasta         int,
 @fecha_desde        datetime,
 @fecha_hasta        datetime,
 @lista_comp         varchar(50)
 
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

 DECLARE @fh DATETIME

 SET @agrupacion = LTRIM(RTRIM(UPPER(@agrupacion)))

 DECLARE @t1start datetime = DATETIMEFROMPARTS(YEAR(GETDATE()),MONTH(GETDATE()),1,0,0,0,0)
 DECLARE @t1end datetime = DATEADD(SECOND,-1,DATEADD(DAY,1,CONVERT(DATETIME,EOMONTH(GETDATE()))))

 IF (@agrupacion = 'ULTIMO_MES') BEGIN
  SET @fecha_desde = @t1start
  SET @fecha_hasta = @t1end
 END

 --select @t1start,@t1end

    -- Insert statements for procedure here
 IF (@agrupacion = 'ANUAL') BEGIN
  /*SET @fecha_desde = DATETIMEFROMPARTS(YEAR(DATEADD(MONTH,-11,GETDATE())),MONTH(DATEADD(MONTH,-11,GETDATE())),1,0,0,0,0)
   SET @fecha_hasta = DATEADD(SECOND,-1,DATEADD(DAY,1,CONVERT(DATETIME,EOMONTH(GETDATE()))))*/


  SET @fecha_desde = DATETIMEFROMPARTS(YEAR(DATEADD(MONTH,-12,GETDATE())),MONTH(DATEADD(MONTH,-12,GETDATE())),1,0,0,0,0)
  SET @fecha_hasta = DATEADD(SECOND,-1,DATEADD(DAY,1,CONVERT(DATETIME,EOMONTH( DATEADD(MONTH,-1,GETDATE()) ))))

 END ELSE BEGIN
  IF (@agrupacion = 'MENSUAL') BEGIN
   SET @fecha_desde = DATETIMEFROMPARTS(CONVERT(INT,@mes_desde/100),@mes_desde-CONVERT(INT,@mes_desde/100)*100,1,0,0,0,0)

   SET @fh = DATETIMEFROMPARTS(CONVERT(INT,@mes_hasta/100),@mes_hasta-CONVERT(INT,@mes_hasta/100)*100,1,23,59,59,0)

   SET @fecha_hasta = DATEADD(SECOND,-1,DATEADD(DAY,1, CONVERT(DATETIME,EOMONTH(@fh))))
  END
 END

 IF (@fecha_desde != '' AND @fecha_hasta != '') BEGIN
  IF (@fecha_desde < @fecha_hasta) BEGIN

   --SELECT @fecha_desde, @fecha_hasta

   IF (@action = 'Ingresados') BEGIN
     
    IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

     IF (@lista_comp IS NULL)

      select Year(led_docs.ingresado) AS yyyy, Month(led_docs.ingresado) AS mm, COUNT(*) AS total_ingresados
      from led_docs 
      where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
      and led_docs.doc_id_lista IS NULL
      and led_docs.estado_doc IN ('I','R','V')
      and led_docs.replicated_doc_id IS NULL
      group by Year(led_docs.ingresado), Month(led_docs.ingresado)
      ORDER BY Year(led_docs.ingresado), Month(led_docs.ingresado)

     ELSE

      select Year(led_docs.ingresado) AS yyyy, Month(led_docs.ingresado) AS mm, COUNT(*) AS total_ingresados
      from led_docs
      INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
      INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
       ON led_tipos_doc.complejidad =  complej.Item
      where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
      and led_docs.doc_id_lista IS NULL
      and led_docs.estado_doc IN ('I','R','V')
      and led_docs.replicated_doc_id IS NULL
      group by Year(led_docs.ingresado), Month(led_docs.ingresado)
      ORDER BY Year(led_docs.ingresado), Month(led_docs.ingresado)




    END ELSE IF (@agrupacion = 'TOTAL') BEGIN

     IF (@lista_comp IS NULL)

      select COUNT(*) AS total_ingresados
      from led_docs 
      where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
      and led_docs.doc_id_lista IS NULL
      and led_docs.estado_doc IN ('I','R','V')
      and led_docs.replicated_doc_id IS NULL

     ELSE

      select COUNT(*) AS total_ingresados
      from led_docs 
      INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
      INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
       ON led_tipos_doc.complejidad =  complej.Item
      where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
      and led_docs.doc_id_lista IS NULL
      and led_docs.estado_doc IN ('I','R','V')
      and led_docs.replicated_doc_id IS NULL


    END ELSE BEGIN

     IF (@lista_comp IS NULL)

      SELECT TOTALES.rango, SUM(TOTALES.total_ingresados) AS total_documentos
      FROM
       (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_ingresados
       FROM
        (select CONVERT(INT, (DAY(ingresado)-1)/10) AS fraccion, COUNT(*) AS total_ingresados
        from led_docs 
        where led_docs.ingresado between @t1start AND @t1end
        and led_docs.doc_id_lista IS NULL
        and led_docs.estado_doc IN ('I','R','V')
        and led_docs.replicated_doc_id IS NULL
        group by CONVERT(INT, (DAY(led_docs.ingresado)-1)/10)) CANT ) TOTALES
      GROUP BY TOTALES.rango
      ORDER BY TOTALES.rango

     ELSE

      SELECT TOTALES.rango, SUM(TOTALES.total_ingresados) AS total_documentos
      FROM
       (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_ingresados
       FROM
        (select CONVERT(INT, (DAY(ingresado)-1)/10) AS fraccion, COUNT(*) AS total_ingresados
        from led_docs 
        INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
        INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
         ON led_tipos_doc.complejidad =  complej.Item
        where led_docs.ingresado between @t1start AND @t1end
        and led_docs.doc_id_lista IS NULL
        and led_docs.estado_doc IN ('I','R','V')
        and led_docs.replicated_doc_id IS NULL
        group by CONVERT(INT, (DAY(led_docs.ingresado)-1)/10)) CANT ) TOTALES
      GROUP BY TOTALES.rango
      ORDER BY TOTALES.rango

    
    END

   END ELSE

    IF (@action = 'Procesados') BEGIN


     IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

      IF (@lista_comp IS NULL)

       select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, COUNT(*) AS total_procesados
       from ( select led_docs.doc_id,
         CASE
          when led_docs.estado_doc = 'V' then verificado
          when led_docs.estado_doc = 'R' then rechazado
         END AS fecha_procesado
         from led_docs 
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc IN ('V','R')
         and led_docs.replicated_doc_id IS NULL
  
         UNION ALL

         select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
         from led_docs inner join led_notificaciones on
          led_docs.notificacion = led_notificaciones.notificacion
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc = 'I'
         and led_docs.aprobacion_parcial = 1) docs

       where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
       group by Year(docs.fecha_procesado), Month(docs.fecha_procesado)
       ORDER BY Year(docs.fecha_procesado), Month(docs.fecha_procesado)

      ELSE

       select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, COUNT(*) AS total_procesados
       from ( select led_docs.doc_id,
         CASE
          when led_docs.estado_doc = 'V' then verificado
          when led_docs.estado_doc = 'R' then rechazado
         END AS fecha_procesado
         from led_docs 
         INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
         INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
          ON led_tipos_doc.complejidad =  complej.Item
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc IN ('V','R')
         and led_docs.replicated_doc_id IS NULL
  
         UNION ALL

         select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
         from led_docs inner join led_notificaciones on
          led_docs.notificacion = led_notificaciones.notificacion
         INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
         INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
          ON led_tipos_doc.complejidad =  complej.Item
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc = 'I'
         and led_docs.aprobacion_parcial = 1) docs

       where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
       group by Year(docs.fecha_procesado), Month(docs.fecha_procesado)
       ORDER BY Year(docs.fecha_procesado), Month(docs.fecha_procesado)

     END ELSE IF (@agrupacion = 'TOTAL') BEGIN

      IF (@lista_comp IS NULL)

       select COUNT(*) AS total_procesados
       from (  select led_docs.doc_id,
         CASE
          when led_docs.estado_doc = 'V' then verificado
          when led_docs.estado_doc = 'R' then rechazado
         END AS fecha_procesado
         from led_docs 
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc IN ('V','R')
         and led_docs.replicated_doc_id IS NULL
  
         UNION ALL

         select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
         from led_docs inner join led_notificaciones on
          led_docs.notificacion = led_notificaciones.notificacion
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc = 'I'
         and led_docs.aprobacion_parcial = 1) docs

       where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta

      ELSE

       select COUNT(*) AS total_procesados
       from (  select led_docs.doc_id,
         CASE
          when led_docs.estado_doc = 'V' then verificado
          when led_docs.estado_doc = 'R' then rechazado
         END AS fecha_procesado
         from led_docs 
         INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
         INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
          ON led_tipos_doc.complejidad =  complej.Item
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc IN ('V','R')
         and led_docs.replicated_doc_id IS NULL
  
         UNION ALL

         select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
         from led_docs inner join led_notificaciones on
          led_docs.notificacion = led_notificaciones.notificacion
         INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
         INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
          ON led_tipos_doc.complejidad =  complej.Item
         where led_docs.doc_id_lista IS NULL
         and led_docs.estado_doc = 'I'
         and led_docs.aprobacion_parcial = 1) docs

       where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta


     END ELSE BEGIN

      IF (@lista_comp IS NULL)

       SELECT TOTALES.rango, SUM(TOTALES.total_procesados) AS total_documentos
       FROM
        (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_procesados
        FROM
         (select CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, COUNT(*) AS total_procesados
         from

          (SELECT docs.*
          FROM
           (select led_docs.doc_id,
           CASE
            when led_docs.estado_doc = 'V' then verificado
            when led_docs.estado_doc = 'R' then rechazado
           END AS fecha_procesado
           from led_docs 
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc IN ('V','R')
           and led_docs.replicated_doc_id IS NULL
  
           UNION ALL

           select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
           from led_docs inner join led_notificaciones on
            led_docs.notificacion = led_notificaciones.notificacion
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'I'
           and led_docs.aprobacion_parcial = 1) docs

          where docs.fecha_procesado BETWEEN @t1start AND @t1end) procesados

         group by CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10)) CANT ) TOTALES
        GROUP BY TOTALES.rango
        ORDER BY TOTALES.rango

      ELSE

       SELECT TOTALES.rango, SUM(TOTALES.total_procesados) AS total_documentos
       FROM
        (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_procesados
        FROM
         (select CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, COUNT(*) AS total_procesados
         from

          (SELECT docs.*
          FROM
           (select led_docs.doc_id,
           CASE
            when led_docs.estado_doc = 'V' then verificado
            when led_docs.estado_doc = 'R' then rechazado
           END AS fecha_procesado
           from led_docs 
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc IN ('V','R')
           and led_docs.replicated_doc_id IS NULL
  
           UNION ALL

           select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
           from led_docs inner join led_notificaciones on
            led_docs.notificacion = led_notificaciones.notificacion
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'I'
           and led_docs.aprobacion_parcial = 1) docs

          where docs.fecha_procesado BETWEEN @t1start AND @t1end) procesados

         group by CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10)) CANT ) TOTALES
        GROUP BY TOTALES.rango
        ORDER BY TOTALES.rango


     END

    END ELSE

     IF (@action = 'Verificados') BEGIN

      IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

       IF (@lista_comp IS NULL)

        select Year(led_docs.verificado) AS yyyy, Month(led_docs.verificado) AS mm, COUNT(*) AS total_verificados
        from led_docs 
        where led_docs.verificado BETWEEN @fecha_desde AND @fecha_hasta
        and led_docs.doc_id_lista IS NULL
        and led_docs.estado_doc = 'V'
        and led_docs.replicated_doc_id IS NULL
        group by Year(led_docs.verificado), Month(led_docs.verificado)
        ORDER BY Year(led_docs.verificado), Month(led_docs.verificado)

       ELSE

        select Year(led_docs.verificado) AS yyyy, Month(led_docs.verificado) AS mm, COUNT(*) AS total_verificados
        from led_docs 
        INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
        INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
         ON led_tipos_doc.complejidad =  complej.Item
        where led_docs.verificado BETWEEN @fecha_desde AND @fecha_hasta
        and led_docs.doc_id_lista IS NULL
        and led_docs.estado_doc = 'V'
        and led_docs.replicated_doc_id IS NULL
        group by Year(led_docs.verificado), Month(led_docs.verificado)
        ORDER BY Year(led_docs.verificado), Month(led_docs.verificado)
      
      END ELSE IF (@agrupacion = 'TOTAL') BEGIN

       IF (@lista_comp IS NULL)

        select COUNT(*) AS total_verificados
        from led_docs 
        where led_docs.verificado BETWEEN @fecha_desde AND @fecha_hasta
        and led_docs.doc_id_lista IS NULL
        and led_docs.estado_doc = 'V'
        and led_docs.replicated_doc_id IS NULL

       ELSE

        select COUNT(*) AS total_verificados
        from led_docs 
        INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
        INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
         ON led_tipos_doc.complejidad =  complej.Item
        where led_docs.verificado BETWEEN @fecha_desde AND @fecha_hasta
        and led_docs.doc_id_lista IS NULL
        and led_docs.estado_doc = 'V'
        and led_docs.replicated_doc_id IS NULL

      END ELSE BEGIN

       IF (@lista_comp IS NULL)

        SELECT TOTALES.rango, SUM(TOTALES.total_verificados) AS total_documentos
        FROM
         (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_verificados
         FROM
          (select CONVERT(INT, (DAY(verificado)-1)/10) AS fraccion, COUNT(*) AS total_verificados
          from led_docs 
          where led_docs.verificado between @t1start AND @t1end
          and led_docs.doc_id_lista IS NULL
          and led_docs.estado_doc = 'V'
          and led_docs.replicated_doc_id IS NULL
          group by CONVERT(INT, (DAY(verificado)-1)/10)) CANT ) TOTALES
        GROUP BY TOTALES.rango
        ORDER BY TOTALES.rango

       ELSE

        SELECT TOTALES.rango, SUM(TOTALES.total_verificados) AS total_documentos
        FROM
         (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_verificados
         FROM
          (select CONVERT(INT, (DAY(verificado)-1)/10) AS fraccion, COUNT(*) AS total_verificados
          from led_docs 
          INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
          INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
           ON led_tipos_doc.complejidad =  complej.Item
          where led_docs.verificado between @t1start AND @t1end
          and led_docs.doc_id_lista IS NULL
          and led_docs.estado_doc = 'V'
          and led_docs.replicated_doc_id IS NULL
          group by CONVERT(INT, (DAY(verificado)-1)/10)) CANT ) TOTALES
        GROUP BY TOTALES.rango
        ORDER BY TOTALES.rango

      END

     END ELSE

      IF (@action = 'Rechazados_parciales') BEGIN

       IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

        IF (@lista_comp IS NULL)

         select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, COUNT(*) AS total_procesados
         from ( select led_docs.doc_id, led_docs.rechazado AS fecha_procesado
           from led_docs 
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'R'
           and led_docs.replicated_doc_id IS NULL
  
           UNION ALL

           select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
           from led_docs inner join led_notificaciones on
            led_docs.notificacion = led_notificaciones.notificacion
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'I'
           and led_docs.aprobacion_parcial = 1) docs

         where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
         group by Year(docs.fecha_procesado), Month(docs.fecha_procesado)
         ORDER BY Year(docs.fecha_procesado), Month(docs.fecha_procesado)

        ELSE

         select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, COUNT(*) AS total_procesados
         from ( select led_docs.doc_id, led_docs.rechazado AS fecha_procesado
           from led_docs 
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'R'
           and led_docs.replicated_doc_id IS NULL
  
           UNION ALL

           select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
           from led_docs inner join led_notificaciones on
            led_docs.notificacion = led_notificaciones.notificacion
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'I'
           and led_docs.aprobacion_parcial = 1) docs

         where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
         group by Year(docs.fecha_procesado), Month(docs.fecha_procesado)
         ORDER BY Year(docs.fecha_procesado), Month(docs.fecha_procesado)

       END ELSE IF (@agrupacion = 'TOTAL') BEGIN

        IF (@lista_comp IS NULL)

         select COUNT(*) AS total_procesados
         from ( select led_docs.doc_id, led_docs.rechazado AS fecha_procesado
           from led_docs 
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'R'
           and led_docs.replicated_doc_id IS NULL
  
           UNION ALL

           select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
           from led_docs inner join led_notificaciones on
            led_docs.notificacion = led_notificaciones.notificacion
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'I'
           and led_docs.aprobacion_parcial = 1) docs

         where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta

        ELSE
 
         select COUNT(*) AS total_procesados
         from ( select led_docs.doc_id, led_docs.rechazado AS fecha_procesado
           from led_docs 
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'R'
           and led_docs.replicated_doc_id IS NULL
  
           UNION ALL

           select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
           from led_docs inner join led_notificaciones on
            led_docs.notificacion = led_notificaciones.notificacion
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc = 'I'
           and led_docs.aprobacion_parcial = 1) docs

         where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta

       END ELSE BEGIN

        IF (@lista_comp IS NULL)

         SELECT TOTALES.rango, SUM(TOTALES.total_procesados) AS total_documentos
         FROM
          (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_procesados
          FROM
           (select CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, COUNT(*) AS total_procesados
           from

            (SELECT docs.*
            FROM
             (select led_docs.doc_id, led_docs.rechazado as fecha_procesado
             from led_docs 
             where led_docs.doc_id_lista IS NULL
             and led_docs.estado_doc = 'R'
             and led_docs.replicated_doc_id IS NULL
  
             UNION ALL

             select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
             from led_docs inner join led_notificaciones on
              led_docs.notificacion = led_notificaciones.notificacion
             where led_docs.doc_id_lista IS NULL
             and led_docs.estado_doc = 'I'
             and led_docs.aprobacion_parcial = 1) docs

            where docs.fecha_procesado BETWEEN @t1start AND @t1end) procesados

           group by CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10)) CANT ) TOTALES

         GROUP BY TOTALES.rango
         ORDER BY TOTALES.rango

        ELSE

         SELECT TOTALES.rango, SUM(TOTALES.total_procesados) AS total_documentos
         FROM
          (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, CANT.total_procesados
          FROM
           (select CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, COUNT(*) AS total_procesados
           from

            (SELECT docs.*
            FROM
             (select led_docs.doc_id, led_docs.rechazado as fecha_procesado
             from led_docs 
             INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
             INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
              ON led_tipos_doc.complejidad =  complej.Item
             where led_docs.doc_id_lista IS NULL
             and led_docs.estado_doc = 'R'
             and led_docs.replicated_doc_id IS NULL
  
             UNION ALL

             select led_docs.doc_id, led_notificaciones.horario as fecha_procesado
             from led_docs inner join led_notificaciones on
              led_docs.notificacion = led_notificaciones.notificacion
             INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
             INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
              ON led_tipos_doc.complejidad =  complej.Item
             where led_docs.doc_id_lista IS NULL
             and led_docs.estado_doc = 'I'
             and led_docs.aprobacion_parcial = 1) docs

            where docs.fecha_procesado BETWEEN @t1start AND @t1end) procesados

           group by CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10)) CANT ) TOTALES

         GROUP BY TOTALES.rango
         ORDER BY TOTALES.rango
         
       END

      END ELSE

       IF (@action = 'Procesados_usuario') BEGIN

        IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

         IF (@lista_comp IS NULL)

          select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, docs.usuario, 
          users.first_name + ' ' + users.last_name as nombre, COUNT(*) AS total_procesados
          from ( select led_docs.doc_id,
            CASE
             when led_docs.estado_doc = 'V' then verificado
             when led_docs.estado_doc = 'R' then rechazado
            END AS fecha_procesado,
            CASE
             when led_docs.estado_doc = 'V' then verificado_por
             when led_docs.estado_doc = 'R' then rechazado_por
            END AS usuario

            from led_docs 
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc IN ('V','R')
            and led_docs.replicated_doc_id IS NULL  

            UNION ALL

            select led_docs.doc_id, led_notificaciones.horario as fecha_procesado,
            led_notificaciones.usuario_de as usuario
            from led_docs inner join led_notificaciones on
             led_docs.notificacion = led_notificaciones.notificacion
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc = 'I'
            and led_docs.aprobacion_parcial = 1) docs

          inner join users on docs.usuario = users.user_id

          INNER JOIN users_by_group on users.user_id = users_by_group.user_id
          INNER JOIN groups ON users_by_group.group_id = groups.group_id AND groups.group_name = 'FIDELITAS'

          where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
          group by Year(docs.fecha_procesado), Month(docs.fecha_procesado), docs.usuario, users.first_name, users.last_name
          ORDER BY users.first_name, users.last_name, Year(docs.fecha_procesado), Month(docs.fecha_procesado)

         ELSE

          select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, docs.usuario, 
          users.first_name + ' ' + users.last_name as nombre, COUNT(*) AS total_procesados
          from ( select led_docs.doc_id,
            CASE
             when led_docs.estado_doc = 'V' then verificado
             when led_docs.estado_doc = 'R' then rechazado
            END AS fecha_procesado,
            CASE
             when led_docs.estado_doc = 'V' then verificado_por
             when led_docs.estado_doc = 'R' then rechazado_por
            END AS usuario

            from led_docs 
            INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
            INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
             ON led_tipos_doc.complejidad =  complej.Item
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc IN ('V','R')
            and led_docs.replicated_doc_id IS NULL  

            UNION ALL

            select led_docs.doc_id, led_notificaciones.horario as fecha_procesado,
            led_notificaciones.usuario_de as usuario
            from led_docs inner join led_notificaciones on
             led_docs.notificacion = led_notificaciones.notificacion
            INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
            INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
             ON led_tipos_doc.complejidad =  complej.Item
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc = 'I'
            and led_docs.aprobacion_parcial = 1) docs

          inner join users on docs.usuario = users.user_id

          INNER JOIN users_by_group on users.user_id = users_by_group.user_id
          INNER JOIN groups ON users_by_group.group_id = groups.group_id AND groups.group_name = 'FIDELITAS'

          where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
          group by Year(docs.fecha_procesado), Month(docs.fecha_procesado), docs.usuario, users.first_name, users.last_name
          ORDER BY users.first_name, users.last_name, Year(docs.fecha_procesado), Month(docs.fecha_procesado)

        END ELSE IF (@agrupacion = 'TOTAL') BEGIN

         IF (@lista_comp IS NULL)

          select docs.usuario, users.first_name + ' ' + users.last_name as nombre, COUNT(*) AS total_procesados
          from ( select led_docs.doc_id,
            CASE
             when led_docs.estado_doc = 'V' then verificado
             when led_docs.estado_doc = 'R' then rechazado
            END AS fecha_procesado,
            CASE
             when led_docs.estado_doc = 'V' then verificado_por
             when led_docs.estado_doc = 'R' then rechazado_por
            END AS usuario

            from led_docs 
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc IN ('V','R')
            and led_docs.replicated_doc_id IS NULL  

            UNION ALL

            select led_docs.doc_id, led_notificaciones.horario as fecha_procesado,
            led_notificaciones.usuario_de as usuario
            from led_docs inner join led_notificaciones on
             led_docs.notificacion = led_notificaciones.notificacion
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc = 'I'
            and led_docs.aprobacion_parcial = 1) docs

          inner join users on docs.usuario = users.user_id

          INNER JOIN users_by_group on users.user_id = users_by_group.user_id
          INNER JOIN groups ON users_by_group.group_id = groups.group_id AND groups.group_name = 'FIDELITAS'

          where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
          group by docs.usuario, users.first_name, users.last_name
          ORDER BY count(*) desc, users.first_name, users.last_name

         ELSE

          select docs.usuario, users.first_name + ' ' + users.last_name as nombre, COUNT(*) AS total_procesados
          from ( select led_docs.doc_id,
            CASE
             when led_docs.estado_doc = 'V' then verificado
             when led_docs.estado_doc = 'R' then rechazado
            END AS fecha_procesado,
            CASE
             when led_docs.estado_doc = 'V' then verificado_por
             when led_docs.estado_doc = 'R' then rechazado_por
            END AS usuario

            from led_docs 
            INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
            INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
             ON led_tipos_doc.complejidad =  complej.Item
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc IN ('V','R')
            and led_docs.replicated_doc_id IS NULL  

            UNION ALL

            select led_docs.doc_id, led_notificaciones.horario as fecha_procesado,
            led_notificaciones.usuario_de as usuario
            from led_docs inner join led_notificaciones on
             led_docs.notificacion = led_notificaciones.notificacion
            INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
            INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
             ON led_tipos_doc.complejidad =  complej.Item
            where led_docs.doc_id_lista IS NULL
            and led_docs.estado_doc = 'I'
            and led_docs.aprobacion_parcial = 1) docs

          inner join users on docs.usuario = users.user_id

          INNER JOIN users_by_group on users.user_id = users_by_group.user_id
          INNER JOIN groups ON users_by_group.group_id = groups.group_id AND groups.group_name = 'FIDELITAS'

          where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
          group by docs.usuario, users.first_name, users.last_name
          ORDER BY count(*) desc, users.first_name, users.last_name



        END ELSE BEGIN

         IF (@lista_comp IS NULL)

          SELECT TOTALES.rango, 
            TOTALES.usuario, TOTALES.first_name, TOTALES.last_name,
            SUM(TOTALES.total_procesados) AS total_documentos
          FROM
           (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
             CANT.usuario, CANT.first_name, CANT.last_name,
             CANT.total_procesados
           FROM
            (SELECT CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, 
             procesados.usuario, procesados.first_name, procesados.last_name,
             COUNT(*) AS total_procesados
            FROM
             (SELECT docs.usuario, users.first_name, users.last_name, docs.fecha_procesado
             from
              (select doc_id, 
              CASE when led_docs.estado_doc = 'V' then verificado when led_docs.estado_doc = 'R' then rechazado END AS fecha_procesado,
              CASE when led_docs.estado_doc = 'V' then verificado_por when led_docs.estado_doc = 'R' then rechazado_por END AS usuario
              from led_docs 
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('V','R')
              and ( (led_docs.verificado between @t1start AND @t1end)  OR (led_docs.rechazado between @t1start AND @t1end) )
              and led_docs.replicated_doc_id IS NULL  

              UNION ALL

              select led_docs.doc_id, led_notificaciones.horario as fecha_procesado,
              led_notificaciones.usuario_de as usuario
              from led_docs inner join led_notificaciones on led_docs.notificacion = led_notificaciones.notificacion
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc = 'I'
              and led_notificaciones.horario between @t1start AND @t1end
              and led_docs.aprobacion_parcial = 1) docs

             INNER JOIN users on docs.usuario = users.user_id           
             INNER JOIN users_by_group on users.user_id = users_by_group.user_id
             INNER JOIN groups ON users_by_group.group_id = groups.group_id AND groups.group_name = 'FIDELITAS'
             WHERE docs.fecha_procesado BETWEEN @t1start AND @t1end) procesados

            GROUP BY procesados.usuario, procesados.first_name, procesados.last_name,
              CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10)) CANT ) TOTALES

          GROUP BY TOTALES.rango, TOTALES.usuario, TOTALES.first_name, TOTALES.last_name
          ORDER BY TOTALES.first_name, TOTALES.last_name, TOTALES.rango
         
         ELSE

          SELECT TOTALES.rango, 
            TOTALES.usuario, TOTALES.first_name, TOTALES.last_name,
            SUM(TOTALES.total_procesados) AS total_documentos
          FROM
           (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
             CANT.usuario, CANT.first_name, CANT.last_name,
             CANT.total_procesados
           FROM
            (SELECT CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, 
             procesados.usuario, procesados.first_name, procesados.last_name,
             COUNT(*) AS total_procesados
            FROM
             (SELECT docs.usuario, users.first_name, users.last_name, docs.fecha_procesado
             from
              (select doc_id, 
              CASE when led_docs.estado_doc = 'V' then verificado when led_docs.estado_doc = 'R' then rechazado END AS fecha_procesado,
              CASE when led_docs.estado_doc = 'V' then verificado_por when led_docs.estado_doc = 'R' then rechazado_por END AS usuario
              from led_docs 
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('V','R')
              and ( (led_docs.verificado between @t1start AND @t1end)  OR (led_docs.rechazado between @t1start AND @t1end) )
              and led_docs.replicated_doc_id IS NULL  

              UNION ALL

              select led_docs.doc_id, led_notificaciones.horario as fecha_procesado,
              led_notificaciones.usuario_de as usuario
              from led_docs inner join led_notificaciones on led_docs.notificacion = led_notificaciones.notificacion
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc = 'I'
              and led_notificaciones.horario between @t1start AND @t1end
              and led_docs.aprobacion_parcial = 1) docs

             INNER JOIN users on docs.usuario = users.user_id           
             INNER JOIN users_by_group on users.user_id = users_by_group.user_id
             INNER JOIN groups ON users_by_group.group_id = groups.group_id AND groups.group_name = 'FIDELITAS'
             WHERE docs.fecha_procesado BETWEEN @t1start AND @t1end) procesados

            GROUP BY procesados.usuario, procesados.first_name, procesados.last_name,
              CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10)) CANT ) TOTALES

          GROUP BY TOTALES.rango, TOTALES.usuario, TOTALES.first_name, TOTALES.last_name
          ORDER BY TOTALES.first_name, TOTALES.last_name, TOTALES.rango



        END

       END ELSE

        IF (@action = 'Ingresados_cliente') BEGIN

         IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

          IF (@lista_comp IS NULL)

           select Year(led_docs.ingresado) AS yyyy, Month(led_docs.ingresado) AS mm, 
           led_docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_ingresados
           from led_docs inner join clientes on led_docs.cliente = clientes.cliente
           where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
           and led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc IN ('I','R','V')
           and led_docs.replicated_doc_id IS NULL
           group by Year(led_docs.ingresado), Month(led_docs.ingresado), led_docs.cliente, clientes.nombre_cliente
           ORDER BY clientes.nombre_cliente, Year(led_docs.ingresado), Month(led_docs.ingresado)

          ELSE

           select Year(led_docs.ingresado) AS yyyy, Month(led_docs.ingresado) AS mm, 
           led_docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_ingresados
           from led_docs inner join clientes on led_docs.cliente = clientes.cliente
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
           and led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc IN ('I','R','V')
           and led_docs.replicated_doc_id IS NULL
           group by Year(led_docs.ingresado), Month(led_docs.ingresado), led_docs.cliente, clientes.nombre_cliente
           ORDER BY clientes.nombre_cliente, Year(led_docs.ingresado), Month(led_docs.ingresado)


         END ELSE IF (@agrupacion = 'TOTAL') BEGIN

          IF (@lista_comp IS NULL)

           select led_docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_ingresados
           from led_docs inner join clientes on led_docs.cliente = clientes.cliente
           where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
           and led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc IN ('I','R','V')
           and led_docs.replicated_doc_id IS NULL
           group by led_docs.cliente, clientes.nombre_cliente
           ORDER BY clientes.nombre_cliente

          ELSE

           select led_docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_ingresados
           from led_docs inner join clientes on led_docs.cliente = clientes.cliente
           INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
           INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
            ON led_tipos_doc.complejidad =  complej.Item
           where led_docs.ingresado BETWEEN @fecha_desde AND @fecha_hasta
           and led_docs.doc_id_lista IS NULL
           and led_docs.estado_doc IN ('I','R','V')
           and led_docs.replicated_doc_id IS NULL
           group by led_docs.cliente, clientes.nombre_cliente
           ORDER BY clientes.nombre_cliente

         END ELSE BEGIN

          IF (@lista_comp IS NULL)

           SELECT TOTALES.rango, 
             TOTALES.cliente, TOTALES.nombre_cliente,
             SUM(TOTALES.total_ingresados) AS total_documentos
           FROM

            (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
              CANT.cliente, CANT.nombre_cliente,
              CANT.total_ingresados
            FROM
             (SELECT CONVERT(INT, (DAY(ingresados.ingresado)-1)/10) AS fraccion, 
              ingresados.cliente, clientes.nombre_cliente,
              COUNT(*) AS total_ingresados
             FROM

              (select led_docs.cliente, led_docs.ingresado
              from led_docs 
              where led_docs.ingresado BETWEEN @t1start AND @t1end
              and led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('I','R','V')
              and led_docs.replicated_doc_id IS NULL) ingresados

             inner join clientes on ingresados.cliente = clientes.cliente

             group by CONVERT(INT, (DAY(ingresados.ingresado)-1)/10),
               ingresados.cliente, clientes.nombre_cliente) CANT ) TOTALES
           
           GROUP BY TOTALES.rango, TOTALES.cliente, TOTALES.nombre_cliente
           ORDER BY TOTALES.nombre_cliente, TOTALES.rango

          ELSE

           SELECT TOTALES.rango, 
             TOTALES.cliente, TOTALES.nombre_cliente,
             SUM(TOTALES.total_ingresados) AS total_documentos
           FROM

            (SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
              CANT.cliente, CANT.nombre_cliente,
              CANT.total_ingresados
            FROM
             (SELECT CONVERT(INT, (DAY(ingresados.ingresado)-1)/10) AS fraccion, 
              ingresados.cliente, clientes.nombre_cliente,
              COUNT(*) AS total_ingresados
             FROM

              (select led_docs.cliente, led_docs.ingresado
              from led_docs 
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.ingresado BETWEEN @t1start AND @t1end
              and led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('I','R','V')
              and led_docs.replicated_doc_id IS NULL) ingresados

             inner join clientes on ingresados.cliente = clientes.cliente

             group by CONVERT(INT, (DAY(ingresados.ingresado)-1)/10),
               ingresados.cliente, clientes.nombre_cliente) CANT ) TOTALES
           
           GROUP BY TOTALES.rango, TOTALES.cliente, TOTALES.nombre_cliente
           ORDER BY TOTALES.nombre_cliente, TOTALES.rango


         END

        END ELSE

         IF (@action = 'Procesados_cliente') BEGIN

          IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

           IF (@lista_comp IS NULL)

            select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, 
            docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_procesados
            from ( select led_docs.doc_id, led_docs.cliente,
              CASE
               when led_docs.estado_doc = 'V' then verificado
               when led_docs.estado_doc = 'R' then rechazado
              END AS fecha_procesado
              from led_docs 
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('V','R')
              and led_docs.replicated_doc_id IS NULL

              UNION ALL

              select led_docs.doc_id, led_docs.cliente, led_notificaciones.horario as fecha_procesado
              from led_docs inner join led_notificaciones on
               led_docs.notificacion = led_notificaciones.notificacion
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc = 'I'
              and led_docs.aprobacion_parcial = 1) docs

            inner join clientes on docs.cliente = clientes.cliente
            where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
            group by Year(docs.fecha_procesado), Month(docs.fecha_procesado), docs.cliente, clientes.nombre_cliente
            ORDER BY clientes.nombre_cliente, Year(docs.fecha_procesado), Month(docs.fecha_procesado)

           ELSE

            select Year(docs.fecha_procesado) AS yyyy, Month(docs.fecha_procesado) AS mm, 
            docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_procesados
            from ( select led_docs.doc_id, led_docs.cliente,
              CASE
               when led_docs.estado_doc = 'V' then verificado
               when led_docs.estado_doc = 'R' then rechazado
              END AS fecha_procesado
              from led_docs 
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('V','R')
              and led_docs.replicated_doc_id IS NULL

              UNION ALL

              select led_docs.doc_id, led_docs.cliente, led_notificaciones.horario as fecha_procesado
              from led_docs inner join led_notificaciones on
               led_docs.notificacion = led_notificaciones.notificacion
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc = 'I'
              and led_docs.aprobacion_parcial = 1) docs

            inner join clientes on docs.cliente = clientes.cliente
            where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
            group by Year(docs.fecha_procesado), Month(docs.fecha_procesado), docs.cliente, clientes.nombre_cliente
            ORDER BY clientes.nombre_cliente, Year(docs.fecha_procesado), Month(docs.fecha_procesado)



          END ELSE IF (@agrupacion = 'TOTAL') BEGIN

           IF (@lista_comp IS NULL)
          
            select docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_procesados
            from ( select led_docs.doc_id, led_docs.cliente,
              CASE
               when led_docs.estado_doc = 'V' then verificado
               when led_docs.estado_doc = 'R' then rechazado
              END AS fecha_procesado
              from led_docs 
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('V','R')
              and led_docs.replicated_doc_id IS NULL

              UNION ALL

              select led_docs.doc_id, led_docs.cliente, led_notificaciones.horario as fecha_procesado
              from led_docs inner join led_notificaciones on
               led_docs.notificacion = led_notificaciones.notificacion
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc = 'I'
              and led_docs.aprobacion_parcial = 1) docs

            inner join clientes on docs.cliente = clientes.cliente
            where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
            group by docs.cliente, clientes.nombre_cliente
            ORDER BY clientes.nombre_cliente

           ELSE

            select docs.cliente, clientes.nombre_cliente, COUNT(*) AS total_procesados
            from ( select led_docs.doc_id, led_docs.cliente,
              CASE
               when led_docs.estado_doc = 'V' then verificado
               when led_docs.estado_doc = 'R' then rechazado
              END AS fecha_procesado
              from led_docs 
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc IN ('V','R')
              and led_docs.replicated_doc_id IS NULL

              UNION ALL

              select led_docs.doc_id, led_docs.cliente, led_notificaciones.horario as fecha_procesado
              from led_docs inner join led_notificaciones on
               led_docs.notificacion = led_notificaciones.notificacion
              INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
              INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
               ON led_tipos_doc.complejidad =  complej.Item
              where led_docs.doc_id_lista IS NULL
              and led_docs.estado_doc = 'I'
              and led_docs.aprobacion_parcial = 1) docs

            inner join clientes on docs.cliente = clientes.cliente
            where docs.fecha_procesado BETWEEN @fecha_desde AND @fecha_hasta
            group by docs.cliente, clientes.nombre_cliente
            ORDER BY clientes.nombre_cliente


          END ELSE BEGIN

           IF (@lista_comp IS NULL)

            SELECT TOTALES.rango, 
              TOTALES.cliente, TOTALES.nombre_cliente,
              SUM(TOTALES.total_procesados) AS total_documentos
            FROM (

             SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
                CANT.cliente, CANT.nombre_cliente, CANT.total_procesados
             FROM (
              select CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, 
                procesados.cliente, clientes.nombre_cliente,
                COUNT(*) AS total_procesados
              from
                (select cliente,
                CASE when led_docs.estado_doc = 'V' then verificado when led_docs.estado_doc = 'R' then rechazado END AS fecha_procesado
                from led_docs 
                where led_docs.doc_id_lista IS NULL
                and led_docs.estado_doc IN ('V','R')
                and ( (led_docs.verificado between @t1start and @t1end) OR (led_docs.rechazado between @t1start and @t1end) )
                and led_docs.replicated_doc_id IS NULL

                UNION ALL

                select led_docs.cliente, led_notificaciones.horario as fecha_procesado
                from led_docs inner join led_notificaciones on
                 led_docs.notificacion = led_notificaciones.notificacion
                where led_docs.doc_id_lista IS NULL
                and led_docs.estado_doc = 'I'
                and led_notificaciones.horario between @t1start and @t1end
                and led_docs.aprobacion_parcial = 1) procesados

              inner join clientes on procesados.cliente = clientes.cliente
              group by CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10), 
                procesados.cliente, clientes.nombre_cliente ) CANT ) TOTALES
           
            GROUP BY TOTALES.rango, TOTALES.cliente, TOTALES.nombre_cliente
            ORDER BY TOTALES.nombre_cliente, TOTALES.rango

           ELSE

            SELECT TOTALES.rango, 
              TOTALES.cliente, TOTALES.nombre_cliente,
              SUM(TOTALES.total_procesados) AS total_documentos
            FROM (

             SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
                CANT.cliente, CANT.nombre_cliente, CANT.total_procesados
             FROM (
              select CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10) AS fraccion, 
                procesados.cliente, clientes.nombre_cliente,
                COUNT(*) AS total_procesados
              from
                (select cliente,
                CASE when led_docs.estado_doc = 'V' then verificado when led_docs.estado_doc = 'R' then rechazado END AS fecha_procesado
                from led_docs 
                INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
                INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
                 ON led_tipos_doc.complejidad =  complej.Item
                where led_docs.doc_id_lista IS NULL
                and led_docs.estado_doc IN ('V','R')
                and ( (led_docs.verificado between @t1start and @t1end) OR (led_docs.rechazado between @t1start and @t1end) )
                and led_docs.replicated_doc_id IS NULL

                UNION ALL

                select led_docs.cliente, led_notificaciones.horario as fecha_procesado
                from led_docs inner join led_notificaciones on
                 led_docs.notificacion = led_notificaciones.notificacion
                INNER JOIN led_tipos_doc ON led_docs.tipo_doc = led_tipos_doc.tipo_doc
                INNER JOIN DelimitedSplit8K(@lista_comp, ',') AS complej
                 ON led_tipos_doc.complejidad =  complej.Item
                where led_docs.doc_id_lista IS NULL
                and led_docs.estado_doc = 'I'
                and led_notificaciones.horario between @t1start and @t1end
                and led_docs.aprobacion_parcial = 1) procesados

              inner join clientes on procesados.cliente = clientes.cliente
              group by CONVERT(INT, (DAY(procesados.fecha_procesado)-1)/10), 
                procesados.cliente, clientes.nombre_cliente ) CANT ) TOTALES
           
            GROUP BY TOTALES.rango, TOTALES.cliente, TOTALES.nombre_cliente
            ORDER BY TOTALES.nombre_cliente, TOTALES.rango

          END


         END ELSE

          IF (@action = 'Notificaciones_recibidas') BEGIN         

           IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

            select Year(led_notificaciones.horario) AS yyyy, Month(led_notificaciones.horario) AS mm, led_notificaciones.leido, count(*) AS total_notificaciones
            from led_notificaciones
            where led_notificaciones.horario BETWEEN @fecha_desde AND @fecha_hasta
            and led_notificaciones.tipo_notificacion LIKE '%2A'
            group by Year(led_notificaciones.horario), Month(led_notificaciones.horario), led_notificaciones.leido
            order by led_notificaciones.leido, Year(led_notificaciones.horario), Month(led_notificaciones.horario)
           
           END ELSE IF (@agrupacion = 'TOTAL') BEGIN

            select led_notificaciones.leido, count(*) AS total_notificaciones
            from led_notificaciones
            where led_notificaciones.horario BETWEEN @fecha_desde AND @fecha_hasta
            and led_notificaciones.tipo_notificacion LIKE '%2A'
            group by led_notificaciones.leido
            order by led_notificaciones.leido

           END ELSE BEGIN


            SELECT TOTALES.rango, TOTALES.leido, 
             SUM(TOTALES.total_notificaciones) AS total_notificaciones
            FROM (

             SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
                CANT.leido, CANT.total_notificaciones

             FROM (select CONVERT(INT, (DAY(notif.horario)-1)/10) AS fraccion, 
                notif.leido, COUNT(*) AS total_notificaciones
              from
               (select led_notificaciones.leido, led_notificaciones.horario
               from led_notificaciones
               where led_notificaciones.horario BETWEEN @t1start and @t1end
               and led_notificaciones.tipo_notificacion LIKE '%2A') notif
              group by CONVERT(INT, (DAY(notif.horario)-1)/10), notif.leido) CANT ) TOTALES

            GROUP BY TOTALES.rango, TOTALES.leido
            ORDER BY TOTALES.leido, TOTALES.rango

           END

          END ELSE

           IF (@action = 'Notificaciones_emitidas') BEGIN

            IF(@agrupacion = 'ANUAL' OR @agrupacion = 'MENSUAL') BEGIN

             select Year(led_notificaciones.horario) AS yyyy, Month(led_notificaciones.horario) AS mm, led_notificaciones.leido, count(*) AS total_notificaciones
             from led_notificaciones
             where led_notificaciones.horario BETWEEN @fecha_desde AND @fecha_hasta
             and led_notificaciones.tipo_notificacion LIKE 'A2%'
             group by Year(led_notificaciones.horario), Month(led_notificaciones.horario), led_notificaciones.leido
             order by led_notificaciones.leido, Year(led_notificaciones.horario), Month(led_notificaciones.horario)
           
            END ELSE IF (@agrupacion = 'TOTAL') BEGIN

             select led_notificaciones.leido, count(*) AS total_notificaciones
             from led_notificaciones
             where led_notificaciones.horario BETWEEN @fecha_desde AND @fecha_hasta
             and led_notificaciones.tipo_notificacion LIKE 'A2%'
             group by led_notificaciones.leido
             order by led_notificaciones.leido

            END ELSE BEGIN

             SELECT TOTALES.rango, TOTALES.leido, 
              SUM(TOTALES.total_notificaciones) AS total_notificaciones
             FROM (

              SELECT CASE WHEN CANT.fraccion < 3 THEN CANT.fraccion+1 ELSE CANT.fraccion END AS rango, 
                 CANT.leido, CANT.total_notificaciones

              FROM (select CONVERT(INT, (DAY(notif.horario)-1)/10) AS fraccion, 
                 notif.leido, COUNT(*) AS total_notificaciones
               from
                (select led_notificaciones.leido, led_notificaciones.horario
                from led_notificaciones
                where led_notificaciones.horario BETWEEN @t1start and @t1end
                and led_notificaciones.tipo_notificacion LIKE 'A2%') notif
               group by CONVERT(INT, (DAY(notif.horario)-1)/10), notif.leido) CANT ) TOTALES

             GROUP BY TOTALES.rango, TOTALES.leido
             ORDER BY TOTALES.leido, TOTALES.rango


            END

           END

           

  END
 END



 
 
END

GO

Used By

No items found