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