USE [SIGPC] GO /****** Object: StoredProcedure [dbo].[PA_DESGLOCEGESTIONESGRAFICO] Script Date: 1/14/2021 11:51:34 AM ******/ DROP PROCEDURE [dbo].[PA_DESGLOCEGESTIONESGRAFICO] GO /****** Object: StoredProcedure [dbo].[PA_DESGLOCEGESTIONESGRAFICO] Script Date: 1/14/2021 11:51:34 AM ******/ 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_DESGLOCEGESTIONESGRAFICO] @p_status VARCHAR(2) = '' OUTPUT ,@p_message VARCHAR(500) = '' OUTPUT , @Anno INT ,@Mes INT ,@OtroMes 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; BEGIN TRANSACTION --EN CASO DE REALIZAR MODIFICACIONES A LA BASE DE DATOS INSERT UPDATE DELETE IF @OtroMes < @Mes BEGIN SET @OtroMes = @Mes END IF @Mes != 0 AND (@Mes < @OtroMes OR @Mes = @OtroMes) AND @Mes IS NOT NULL AND @OtroMes IS NOT NULL BEGIN SELECT [MESDESGLOCEGESTIONES] AS 'Numero Mes' ,FORMAT(CAST('01/'+CONVERT(varchar,[MESDESGLOCEGESTIONES] )+'/2020' as date) , 'MMM') AS 'Mes' ,([CANCELADADESGLOCEGESTIONES] +[BLOQUEADADESGLOCEGESTIONES] + [FINALIZADADESGLOCEGESTIONES]+[PENDIENTEDESGLOCEGESTIONES]) -[CANCELADADESGLOCEGESTIONES] -[BLOQUEADADESGLOCEGESTIONES] AS Ingresadas ,[PENDIENTEDESGLOCEGESTIONES] AS Pendientes FROM [SIGPC].[dbo].[t_rpt_desglocegestiones] WHERE ANNODESGLOCEGESTIONES = @Anno AND [MESDESGLOCEGESTIONES] BETWEEN @Mes AND @OtroMes END ELSE IF @Mes != 0 AND (@OtroMes IS NULL OR @OtroMes = 0) BEGIN SELECT [MESDESGLOCEGESTIONES] AS 'Numero Mes' ,FORMAT(CAST('01/'+CONVERT(varchar,[MESDESGLOCEGESTIONES] )+'/2020' as date) , 'MMM') AS 'Mes' ,([CANCELADADESGLOCEGESTIONES] +[BLOQUEADADESGLOCEGESTIONES] + [FINALIZADADESGLOCEGESTIONES]+[PENDIENTEDESGLOCEGESTIONES]) -[CANCELADADESGLOCEGESTIONES] -[BLOQUEADADESGLOCEGESTIONES] AS Ingresadas ,[PENDIENTEDESGLOCEGESTIONES] AS Pendientes FROM [SIGPC].[dbo].[t_rpt_desglocegestiones] WHERE [MESDESGLOCEGESTIONES] = @Mes AND ANNODESGLOCEGESTIONES = @Anno END ELSE BEGIN SELECT [MESDESGLOCEGESTIONES] AS 'Numero Mes' ,FORMAT(CAST('01/'+CONVERT(varchar,[MESDESGLOCEGESTIONES] )+'/2020' as date) , 'MMM') AS 'Mes' ,([CANCELADADESGLOCEGESTIONES] +[BLOQUEADADESGLOCEGESTIONES] + [FINALIZADADESGLOCEGESTIONES]+[PENDIENTEDESGLOCEGESTIONES]) -[CANCELADADESGLOCEGESTIONES] -[BLOQUEADADESGLOCEGESTIONES] AS Ingresadas ,[PENDIENTEDESGLOCEGESTIONES] AS Pendientes FROM [SIGPC].[dbo].[t_rpt_desglocegestiones] WHERE ANNODESGLOCEGESTIONES = @Anno 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