TFS_ANTIGUO/ReportesSIGPC/Query/PA_DESGLOCEGESTIONESGRAFICO.sql
kledezma 608760e4bf Scripts. KLB
git-tfs-id: [http://192.168.1.10:8080/tfs/AyA]$/SINORT;C517
2021-01-21 15:02:10 +00:00

133 lines
9.1 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

USE [SIGPC]
GO
/****** Object: StoredProcedure [dbo].[PA_DESGLOCEGESTIONESGRAFICO] Script Date: 1/21/2021 9:01:47 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.
-- =============================================
ALTER 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