domingo, 1 de junio de 2014

Creación del procedure sumatoria de retiros en el presente periodo

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 15:00 Hora Fin: 17:50
Horas Trabajadas: 3

Se creó el procedure de la suma de retiros en el presente periodo. Se consumió mucho tiempo al tratar de entender el problema, buscarle solución y luego programarlo. Hubo varios errores que tuvieron que corregirse para que este procedure funcionara de manera optima.

GO
CREATE PROCEDURE SP_SUMA_RETIROS_PRESENTE_PERIODO
(@PCR INT)
AS
BEGIN
BEGIN TRY
DECLARE @SUMARETIROS TABLE(ID INT, FK_CUENTAS INT, RETIROSACUMULADOS INT, TARJETA INT)
INSERT INTO @SUMARETIROS
SELECT E.ID, E.FK_Cuentas, E.RetirosAcumulados, T.ID
FROM TC_EstadoCuenta AS E
INNER JOIN TC_Tarjetas AS T ON T.FK_Cuentas = E.FK_Cuentas
WHERE (E.FechaCorte < GETDATE())

BEGIN TRANSACTION
UPDATE @SUMARETIROS
SET RETIROSACUMULADOS = RETIROSACUMULADOS * @PCR

INSERT INTO TC_MovimientoSaldo
SELECT S.ID, 1, S.TARJETA, GETDATE(), S.RETIROSACUMULADOS, 'Suma de todos retiros en el presente periodo'
FROM @SUMARETIROS AS S
WHERE (S.RETIROSACUMULADOS > 0)

UPDATE TC_Cuentas
SET SaldoActual = SaldoActual + S.RETIROSACUMULADOS
FROM @SUMARETIROS AS S
WHERE (S.FK_CUENTAS = TC_Cuentas.ID)
COMMIT TRANSACTION
RETURN 1;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RETURN @@ERROR*-1;
END CATCH;
END
GO

No hay comentarios:

Publicar un comentario