diff --git a/ReportesSIGPC/Query/PA_TRABAJOACTIVIDAD 09 03 2021.sql b/ReportesSIGPC/Query/PA_TRABAJOACTIVIDAD 09 03 2021.sql new file mode 100644 index 000000000..7cff3147c --- /dev/null +++ b/ReportesSIGPC/Query/PA_TRABAJOACTIVIDAD 09 03 2021.sql @@ -0,0 +1,407 @@ +USE [SIGPC] +GO + +/****** Object: StoredProcedure [dbo].[PA_TRABAJOACTIVIDAD] Script Date: 3/9/2021 1:34:17 PM ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + + + + +-- ============================================= +-- Author: Juan Pablo Monge Delgado CR-ATESA 13/07/2020 +-- Create date: 14/02/2018 +-- Description: Carga el último consecutivo obtenido por sigla +-- Modificado: Juan Pablo Monge Delgado CR-ATESA 13/07/2020 +-- Actualiza el consecutivo en la tabla dependencia +-- Construye el nombre del documento +-- Se agrega codigo para el manejo de las transacciones y el aislamiento de recursos para evitar lectura sucia o fantasma. +-- ============================================= + + + +CREATE PROCEDURE [dbo].[PA_TRABAJOACTIVIDAD] +@p_status VARCHAR(2) = '' OUTPUT +,@p_message VARCHAR(500) = '' OUTPUT +,@FKREGION INT +,@FKDEPENDENCIA INT + ,@ANNOINICIO INT +,@MESINICIO INT +,@ANNOFINAL INT +,@MESFINAL INT + +WITH EXECUTE AS OWNER +AS + + + +BEGIN + -- CONFIGURACION DE LA CONSULTA + SET NOCOUNT ON -- ACTIVA EL CONTEO DE REGISTROS QUE SE VERAN AFECTADOS EN LA TRANSACCION + SET XACT_ABORT ON -- SI UNA INSTRUCCION TRANSACT-SQL GENERA UN ERROR EN TIEMPO DE EJECUCION, SE TERMINA TODA LA TRANSACCION Y SE REVIERTE + SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ; --NO PERMITE LECTURA DEL REGISTRO ACTUAL, NI MODIFICACION O INSERCION DE OTRO REGISTRO QUE PUDIESE TENER CLAVE DUPLICADA +BEGIN TRY +--DECLARACION DE VARIABLES +DECLARE @ErrorMessage NVARCHAR(4000); +DECLARE @ErrorSeverity INT; +DECLARE @ErrorState INT; + +IF @ANNOFINAL < @ANNOINICIO + BEGIN + SET @ANNOFINAL=@ANNOINICIO + END + + +DECLARE @DateInicio DATE = CAST('01/'+CONVERT(varchar,@MESINICIO )+'/'+CONVERT(varchar,@ANNOINICIO ) as datetime); +DECLARE @DateFinal DATE = CAST('01/'+CONVERT(varchar,@MESFINAL )+'/'+CONVERT(varchar,@ANNOFINAL ) as datetime); + +--DECLARE @DateInicio DATE = CAST(CONVERT(varchar,@ANNOINICIO )+'/'+CONVERT(varchar,@MESINICIO )+'/01' as datetime); +--DECLARE @DateFinal DATE = CAST(CONVERT(varchar,@ANNOFINAL )+'/'+CONVERT(varchar,@MESFINAL )+'/01' as datetime); + + + + + + BEGIN TRANSACTION --EN CASO DE REALIZAR MODIFICACIONES A LA BASE DE DATOS INSERT UPDATE DELETE + +IF (@FKDEPENDENCIA IS NULL OR @FKDEPENDENCIA = 0) OR + (@FKREGION IS NULL OR @FKREGION = 0) OR (@MESINICIO IS NULL OR @MESINICIO = 0) OR + (@ANNOINICIO IS NULL OR @ANNOINICIO = 0) OR (@MESFINAL IS NULL OR @MESFINAL = 0) OR + (@ANNOFINAL IS NULL OR @ANNOFINAL = 0) + BEGIN + + SELECT + F.ORDENACTIVIDAD + ,(SELECT COUNT(PKSOLICITUD) FROM t_adm_actividad G INNER JOIN + --t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO NOT IN (5,8) ) AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND F.PKACTIVIDAD = G.PKACTIVIDAD + t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO NOT IN (5,8) ) AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND D.FKACTIVIDAD IN (9,1) + AND D.PKRESPONSABLEACTIVIDAD IN (SELECT MAX( H.PKRESPONSABLEACTIVIDAD) FROM t_sgm_responsableactividad H WHERE D.FKPROGRAMACIONSOLICITUD = H.FKPROGRAMACIONSOLICITUD AND D.FKACTIVIDAD = H.FKACTIVIDAD AND (H.FKESTADO NOT IN (5,8) )) + LEFT OUTER JOIN + t_sgm_programacionsolicitud ON D.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd M ON t_dis_solicitud.FKDEPENDENCIASIGDD = M.PKDEPENDENCIASIGDD AND M.DESCRIPCIONDEPENDENCIASIGDD = A.DESCRIPCIONDEPENDENCIASIGDD INNER JOIN + t_adm_region ON M.FKREGION = t_adm_region.PKREGION --INNER JOIN + WHERE + --t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + --AND + (dbo.t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) NOT IN (3,5)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + GROUP BY G.ORDENACTIVIDAD , DESCRIPCIONREGION, + DESCRIPCIONDEPENDENCIASIGDD,G.NOMBREACTIVIDAD )AS 'Solicitudes Pendientes' + ,(SELECT COUNT(PKSOLICITUD) FROM t_adm_actividad G INNER JOIN + --t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO IN (5,8) ) + --AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO IN (5,8) ) AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND D.FKACTIVIDAD IN (9,1) + AND D.PKRESPONSABLEACTIVIDAD IN (SELECT MAX( H.PKRESPONSABLEACTIVIDAD) FROM t_sgm_responsableactividad H WHERE D.FKPROGRAMACIONSOLICITUD = H.FKPROGRAMACIONSOLICITUD AND D.FKACTIVIDAD = H.FKACTIVIDAD AND (H.FKESTADO IN (5,8) )) + LEFT OUTER JOIN + t_sgm_programacionsolicitud ON D.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd M ON t_dis_solicitud.FKDEPENDENCIASIGDD = M.PKDEPENDENCIASIGDD AND M.DESCRIPCIONDEPENDENCIASIGDD = A.DESCRIPCIONDEPENDENCIASIGDD INNER JOIN + t_adm_region ON M.FKREGION = t_adm_region.PKREGION --INNER JOIN + WHERE + --t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + --AND + (dbo.t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) IN (3)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + GROUP BY G.ORDENACTIVIDAD , DESCRIPCIONREGION, + DESCRIPCIONDEPENDENCIASIGDD,G.NOMBREACTIVIDAD )AS 'Solicitudes Finalizadas' + ,F.NOMBREACTIVIDAD AS 'Actividad en que se encuentra ' + + + ,(SELECT AVG(datediff(DD,[FECHAASIGNACIONRESPONSABLEACTIVIDAD],GETDATE() )) + FROM t_adm_actividad E INNER JOIN + t_sgm_responsableactividad C ON E.PKACTIVIDAD = C.FKACTIVIDAD AND F.PKACTIVIDAD = E.PKACTIVIDAD AND C.FKESTADO NOT IN (5,8) + AND C.PKRESPONSABLEACTIVIDAD IN (SELECT MAX( H.PKRESPONSABLEACTIVIDAD) FROM t_sgm_responsableactividad H WHERE C.FKPROGRAMACIONSOLICITUD = H.FKPROGRAMACIONSOLICITUD AND C.FKACTIVIDAD = H.FKACTIVIDAD AND (H.FKESTADO NOT IN (5,8) )) INNER JOIN + t_sgm_programacionsolicitud ON C.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd B ON t_dis_solicitud.FKDEPENDENCIASIGDD = B.PKDEPENDENCIASIGDD + AND A.DESCRIPCIONDEPENDENCIASIGDD = B.DESCRIPCIONDEPENDENCIASIGDD AND E.NOMBREACTIVIDAD = F.NOMBREACTIVIDAD + WHERE + --t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + --AND + (t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) NOT IN (3,5)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + --AND C.FKESTADO = 3 + ) AS 'Duración promedio por actividad pendiente' + ,(SELECT AVG(datediff(DD,[FECHAASIGNACIONRESPONSABLEACTIVIDAD],[FECHADEVOLUCIONRESPONSABLEACTIVIDAD] )) + FROM t_adm_actividad E INNER JOIN + t_sgm_responsableactividad C ON E.PKACTIVIDAD = C.FKACTIVIDAD AND F.PKACTIVIDAD = E.PKACTIVIDAD INNER JOIN + t_sgm_programacionsolicitud ON C.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd B ON t_dis_solicitud.FKDEPENDENCIASIGDD = B.PKDEPENDENCIASIGDD + AND A.DESCRIPCIONDEPENDENCIASIGDD = B.DESCRIPCIONDEPENDENCIASIGDD AND E.NOMBREACTIVIDAD = F.NOMBREACTIVIDAD + WHERE + --t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + --AND + (t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) IN (3)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + AND C.FKESTADO IN (5,8) + ) AS 'Duración promedio por actividad finalizada' + + + ,A.DESCRIPCIONDEPENDENCIASIGDD AS 'Oficina', + t_adm_region.DESCRIPCIONREGION AS 'Región' + + ,(SELECT AVG(datediff(DD,FECHAINSERTASOLICITUD,[FECHADEVOLUCIONRESPONSABLEACTIVIDAD] )) + FROM t_adm_actividad E INNER JOIN + t_sgm_responsableactividad C ON E.PKACTIVIDAD = C.FKACTIVIDAD INNER JOIN + t_sgm_programacionsolicitud ON C.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd B ON t_dis_solicitud.FKDEPENDENCIASIGDD = B.PKDEPENDENCIASIGDD + AND A.DESCRIPCIONDEPENDENCIASIGDD = B.DESCRIPCIONDEPENDENCIASIGDD AND C.FKACTIVIDAD = 9 + WHERE + --t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + --AND + (t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) IN (3)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + AND C.FKESTADO IN (5,8) + ) AS 'Duración Promedio por solicitud finalizadas' + + + FROM t_adm_actividad F INNER JOIN + t_sgm_responsableactividad D ON F.PKACTIVIDAD = D.FKACTIVIDAD LEFT OUTER JOIN + t_sgm_programacionsolicitud ON D.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd A ON t_dis_solicitud.FKDEPENDENCIASIGDD = A.PKDEPENDENCIASIGDD INNER JOIN + t_adm_region ON A.FKREGION = t_adm_region.PKREGION --INNER JOIN + WHERE + --t_dis_solicitud.FKDEPENDENCIASIGDD = @FKDEPENDENCIA + --AND t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + --AND + (dbo.t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) NOT IN (3,5)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) +--AND DESCRIPCIONDEPENDENCIASIGDD = 'Tilarán' + GROUP BY F.ORDENACTIVIDAD , DESCRIPCIONREGION, + DESCRIPCIONDEPENDENCIASIGDD,F.NOMBREACTIVIDAD , F.PKACTIVIDAD + --,t_dis_solicitud.FECHAINSERTASOLICITUD + order by F.ORDENACTIVIDAD ASC ,DESCRIPCIONDEPENDENCIASIGDD DESC + + + + + END +ELSE + + BEGIN + + SELECT + F.ORDENACTIVIDAD + ,(SELECT COUNT(PKSOLICITUD) FROM t_adm_actividad G INNER JOIN + --t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO NOT IN (5,8) ) AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND F.PKACTIVIDAD = G.PKACTIVIDAD + t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO NOT IN (5,8) ) AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND D.FKACTIVIDAD IN (9,1) + AND D.PKRESPONSABLEACTIVIDAD IN (SELECT MAX( H.PKRESPONSABLEACTIVIDAD) FROM t_sgm_responsableactividad H WHERE D.FKPROGRAMACIONSOLICITUD = H.FKPROGRAMACIONSOLICITUD AND D.FKACTIVIDAD = H.FKACTIVIDAD AND (H.FKESTADO NOT IN (5,8) )) + LEFT OUTER JOIN + t_sgm_programacionsolicitud ON D.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd M ON t_dis_solicitud.FKDEPENDENCIASIGDD = M.PKDEPENDENCIASIGDD AND M.DESCRIPCIONDEPENDENCIASIGDD = A.DESCRIPCIONDEPENDENCIASIGDD INNER JOIN + t_adm_region ON M.FKREGION = t_adm_region.PKREGION --INNER JOIN + WHERE + t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + AND + (dbo.t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) NOT IN (3,5)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + GROUP BY G.ORDENACTIVIDAD , DESCRIPCIONREGION, + DESCRIPCIONDEPENDENCIASIGDD,G.NOMBREACTIVIDAD )AS 'Solicitudes Pendientes' + ,(SELECT COUNT(PKSOLICITUD) FROM t_adm_actividad G INNER JOIN + --t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO IN (5,8) ) + --AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + t_sgm_responsableactividad D ON G.PKACTIVIDAD = D.FKACTIVIDAD AND (D.FKESTADO IN (5,8) ) AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND F.NOMBREACTIVIDAD = G.NOMBREACTIVIDAD + --AND D.FKACTIVIDAD IN (9,1) + AND D.PKRESPONSABLEACTIVIDAD IN (SELECT MAX( H.PKRESPONSABLEACTIVIDAD) FROM t_sgm_responsableactividad H WHERE D.FKPROGRAMACIONSOLICITUD = H.FKPROGRAMACIONSOLICITUD AND D.FKACTIVIDAD = H.FKACTIVIDAD AND (H.FKESTADO IN (5,8) )) + LEFT OUTER JOIN + t_sgm_programacionsolicitud ON D.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd M ON t_dis_solicitud.FKDEPENDENCIASIGDD = M.PKDEPENDENCIASIGDD AND M.DESCRIPCIONDEPENDENCIASIGDD = A.DESCRIPCIONDEPENDENCIASIGDD INNER JOIN + t_adm_region ON M.FKREGION = t_adm_region.PKREGION --INNER JOIN + WHERE + t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + AND + (dbo.t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) IN (3)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + GROUP BY G.ORDENACTIVIDAD , DESCRIPCIONREGION, + DESCRIPCIONDEPENDENCIASIGDD,G.NOMBREACTIVIDAD )AS 'Solicitudes Finalizadas' + ,F.NOMBREACTIVIDAD AS 'Actividad en que se encuentra ' + + + ,(SELECT AVG(datediff(DD,[FECHAASIGNACIONRESPONSABLEACTIVIDAD],GETDATE() )) + FROM t_adm_actividad E INNER JOIN + t_sgm_responsableactividad C ON E.PKACTIVIDAD = C.FKACTIVIDAD AND F.PKACTIVIDAD = E.PKACTIVIDAD AND C.FKESTADO NOT IN (5,8) + AND C.PKRESPONSABLEACTIVIDAD IN (SELECT MAX( H.PKRESPONSABLEACTIVIDAD) FROM t_sgm_responsableactividad H WHERE C.FKPROGRAMACIONSOLICITUD = H.FKPROGRAMACIONSOLICITUD AND C.FKACTIVIDAD = H.FKACTIVIDAD AND (H.FKESTADO NOT IN (5,8) )) INNER JOIN + t_sgm_programacionsolicitud ON C.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd B ON t_dis_solicitud.FKDEPENDENCIASIGDD = B.PKDEPENDENCIASIGDD + AND A.DESCRIPCIONDEPENDENCIASIGDD = B.DESCRIPCIONDEPENDENCIASIGDD AND E.NOMBREACTIVIDAD = F.NOMBREACTIVIDAD + WHERE + t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + AND + (t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) NOT IN (3,5)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + --AND C.FKESTADO = 3 + ) AS 'Duración promedio por actividad pendiente' + ,(SELECT AVG(datediff(DD,[FECHAASIGNACIONRESPONSABLEACTIVIDAD],[FECHADEVOLUCIONRESPONSABLEACTIVIDAD] )) + FROM t_adm_actividad E INNER JOIN + t_sgm_responsableactividad C ON E.PKACTIVIDAD = C.FKACTIVIDAD AND F.PKACTIVIDAD = E.PKACTIVIDAD INNER JOIN + t_sgm_programacionsolicitud ON C.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd B ON t_dis_solicitud.FKDEPENDENCIASIGDD = B.PKDEPENDENCIASIGDD + AND A.DESCRIPCIONDEPENDENCIASIGDD = B.DESCRIPCIONDEPENDENCIASIGDD AND E.NOMBREACTIVIDAD = F.NOMBREACTIVIDAD + WHERE + t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + AND + (t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) IN (3)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + AND C.FKESTADO IN (5,8) + ) AS 'Duración promedio por actividad finalizada' + + + ,A.DESCRIPCIONDEPENDENCIASIGDD AS 'Oficina', + t_adm_region.DESCRIPCIONREGION AS 'Región' + + ,(SELECT AVG(datediff(DD,FECHAINSERTASOLICITUD,[FECHADEVOLUCIONRESPONSABLEACTIVIDAD] )) + FROM t_adm_actividad E INNER JOIN + t_sgm_responsableactividad C ON E.PKACTIVIDAD = C.FKACTIVIDAD INNER JOIN + t_sgm_programacionsolicitud ON C.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd B ON t_dis_solicitud.FKDEPENDENCIASIGDD = B.PKDEPENDENCIASIGDD + AND A.DESCRIPCIONDEPENDENCIASIGDD = B.DESCRIPCIONDEPENDENCIASIGDD AND C.FKACTIVIDAD = 9 + WHERE + t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + AND + (t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) IN (3)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) + AND C.FKESTADO IN (5,8) + ) AS 'Duración Promedio por solicitud finalizadas' + + + FROM t_adm_actividad F INNER JOIN + t_sgm_responsableactividad D ON F.PKACTIVIDAD = D.FKACTIVIDAD LEFT OUTER JOIN + t_sgm_programacionsolicitud ON D.FKPROGRAMACIONSOLICITUD = t_sgm_programacionsolicitud.PKPROGRAMACIONSOLICITUD INNER JOIN + t_dis_solicitud ON t_sgm_programacionsolicitud.FKSOLICITUD = t_dis_solicitud.PKSOLICITUD INNER JOIN + t_adm_dependenciasigdd A ON t_dis_solicitud.FKDEPENDENCIASIGDD = A.PKDEPENDENCIASIGDD INNER JOIN + t_adm_region ON A.FKREGION = t_adm_region.PKREGION --INNER JOIN + WHERE + t_dis_solicitud.FKDEPENDENCIASIGDD = @FKDEPENDENCIA + AND t_dis_solicitud.[FECHAINSERTASOLICITUD] BETWEEN @DateInicio AND @DateFinal--Filtro + AND + (dbo.t_dis_solicitud.PKSOLICITUD NOT IN + (SELECT FKSOLICITUD + FROM dbo.t_dis_cancelarsolicitud + WHERE (FKSOLICITUD = dbo.t_dis_solicitud.PKSOLICITUD))) + AND (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) NOT IN (3,5)) + AND (dbo.t_dis_solicitud.ASTATESOLICITUD = 1) AND + (ISNULL(dbo.t_sgm_programacionsolicitud.FKESTADOPROGRAMACION, 1) <> 6) +--AND DESCRIPCIONDEPENDENCIASIGDD = 'Tilarán' + GROUP BY F.ORDENACTIVIDAD , DESCRIPCIONREGION, + DESCRIPCIONDEPENDENCIASIGDD,F.NOMBREACTIVIDAD , F.PKACTIVIDAD + --,t_dis_solicitud.FECHAINSERTASOLICITUD + order by F.ORDENACTIVIDAD ASC ,DESCRIPCIONDEPENDENCIASIGDD DESC + + + + + END + + + --EN CASO DE OCUPAR SUBIR UN ERROR PERSONALIZADO UTILIZAR EL RAISERROR + --EJEMPLO + --SELECT @ErrorMessage = 'El consecutivo ya existe en la base de datos. Consecutivo actual:' + convert( NVARCHAR(100), @CONSECUTIVODOCUMENTO) + -- SET @p_status = '99' + -- SET @p_message = @ErrorMessage + + -- RAISERROR(@ErrorMessage,14,16) + + COMMIT TRANSACTION --CONVIERTE LOS CAMBIOS DE LA TRANSACCION EN PARTE PERMANENTE DE LA BD Y LIBERA LOS RECURSOS POR EJEMPLO BLOQUEOS + +END TRY +BEGIN CATCH + + IF @@TRANCOUNT > 0 + ROLLBACK TRANSACTION + + SET @p_status = '99' + + SET @p_message = 'Error Número: '+CONVERT(VARCHAR(10),ERROR_NUMBER())+', '+ERROR_MESSAGE() + + + + SELECT @ErrorMessage = ERROR_MESSAGE(), + @ErrorSeverity = ERROR_SEVERITY(), + @ErrorState = ERROR_STATE(); + RAISERROR (@ErrorMessage, -- Message text. + @ErrorSeverity, -- Severity. + @ErrorState -- State. + ); + + +END CATCH +END + +GO + diff --git a/ReportesSIGPC/Query/Untitled.png b/ReportesSIGPC/Query/Untitled.png new file mode 100644 index 000000000..7391981c2 Binary files /dev/null and b/ReportesSIGPC/Query/Untitled.png differ