martes, 3 de junio de 2014

Creación de múltiples procedures

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 14:00 Hora Fin: 23:35
Horas Trabajadas: 9

A falta de tiempo y presionados, decidimos que debíamos avanzar el día de hoy lo más que podíamos, por lo tanto nos pusimos a trabajar desde la tarde hasta la noche, logrando un día fructífero. Descansando tan solo 10 minutos cada hora, se lograron sacar 6 procedures.

GO
CREATE PROCEDURE SP_ACUMULAR_INTERESES_MORATORIOS
AS
BEGIN
BEGIN TRY
DECLARE @INTERESES TABLE(ID INT, IM MONEY)
INSERT INTO @INTERESES
SELECT C.ID, C.IntMoratorioAcumulado
FROM TC_Cuentas AS C

BEGIN TRANSACTION
UPDATE TC_Cuentas
SET SaldoActual = SaldoActual + IntMoratorioAcumulado

INSERT INTO TC_MovIntMoratorio
SELECT I.ID, 2, GETDATE(), I.IM, 'Crédito de intereses moratorios'
FROM @INTERESES AS I

UPDATE TC_Cuentas
SET IntMoratorioAcumulado = 0
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE SP_APLICAR_COMISION_ADMI
AS
BEGIN
BEGIN TRY
DECLARE @COMISION TABLE(ID INT, FK_CUENTA INT, COMISION MONEY, TARJETA INT)
INSERT INTO @COMISION
SELECT C.FK_Clase, C.ID, M.ComisionAdm, T.ID
FROM TC_Cuentas AS C
INNER JOIN TC_Clase AS M ON M.ID = C.FK_Clase
INNER JOIN TC_TarjetaS AS T ON T.FK_Cuentas = C.ID

DECLARE @MONTOS TABLE(ID INT, MONTO MONEY)

BEGIN TRANSACTION
UPDATE TC_Cuentas
SET SaldoActual = SaldoActual + (SaldoActual * C.COMISION)
FROM @COMISION AS C

INSERT INTO @MONTOS
SELECT E.ID, E.SaldoActual
FROM TC_Cuentas AS E

INSERT INTO TC_MovimientoSaldo
SELECT C.FK_CUENTA, 3, C.TARJETA, GETDATE(), M.MONTO, 'Movimiento por comisión administrativa'
FROM @COMISION AS C
INNER JOIN @MONTOS AS M ON M.ID = C.FK_CUENTA
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE SP_CALCULAR_PAGO_MINIMO
(@PPM MONEY)
AS
BEGIN
BEGIN TRY
DECLARE @DATOS TABLE(ID INT, PC MONEY)
INSERT INTO @DATOS
SELECT E.ID, E.PagoContado
FROM TC_EstadoCuenta AS E

BEGIN TRANSACTION
UPDATE TC_EstadoCuenta
SET PagoMinimo = D.PC*@PPM/100
FROM @DATOS AS D
WHERE (TC_EstadoCuenta.ID = D.ID)
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE SP_CALCULO_FECHAS_PAGO
(@CPM INT,
@CPC INT)
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
UPDATE TC_EstadoCuenta
SET FechaPagoMinimo = FechaCorte+@CPM, FechaPagoContado = FechaCorte+@CPC;
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE SP_CONSULTAR_ESTADOS_CUENTA
(@ID INT)
AS
BEGIN
BEGIN TRY
SELECT TOP 6 E.SaldoAlCorte, E.FechaCorte, E.PagoContado, E.PagosAcumulados, E.RetirosAcumulados
FROM TC_EstadoCuenta AS E
WHERE (E.FK_Cuentas = @ID)
ORDER BY FechaCorte ASC
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE SP_CREAR_CLIENTE
(@NOMBRE VARCHAR(50),
@NUMEROIDENTIFICACION VARCHAR(45),
@USUARIO VARCHAR(50),
@CLAVE VARCHAR(50))
AS
BEGIN
BEGIN TRY
INSERT INTO TC_Cliente
VALUES (@NOMBRE, @NUMEROIDENTIFICACION, @USUARIO, @CLAVE)
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

-----------------------------------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario