Crear un procedimiento que permita realizar operaciones de retiro de un determinado monto en nuevos soles o en dólares de una cuenta de ahorros en soles perteneciente a un cliente.
Los parámetros del procedimiento serán el tipo de moneda, monto a retirar y el número de la cuenta de ahorros del cliente.
Considerar las siguientes especificaciones:
• El monto de retiro o su equivalente traducido a nuevos soles no deberá ser mayor al saldo de la cuenta.
• Cuando el monto de retiro es en dólares deberá obtener y aplicar el cambio del día (Venta dólares).
• Por las operaciones de retiro se cobra una comisión de S/. 0.10 a partir del quinto retiro en un mes, el cual se cumula en la cuenta “M0002” con sus movimientos de depósito respectivos.
• Se guarda en la cuenta “ITF02” la aplicación del impuesto a las transacciones financieras correspondiente al 0.8 % del monto retirado en soles.
CODIGO
CREATE PROCEDURE RETIRAR_MONTO @TIPO_M INT, @MONTO MONEY, @CUENTA VARCHAR(5)
AS
BEGIN
TRANSACTION
DECLARE @MONTO_ACTUAL MONEY
DECLARE @NUM_RETIRO_MES INT
SELECT @MONTO_ACTUAL=C.S_MONTO FROM CUENTA C WHERE C.C_CUENTA=@CUENTA
SELECT @NUM_RETIRO_MES=C.NUM_RET_MES FROM CUENTA C WHERE C.C_CUENTA=@CUENTA
IF(@TIPO_M=1)--DOLARES
BEGIN
SELECT @MONTO=@MONTO*2.70;
END
IF(@MONTO>@MONTO_ACTUAL)
BEGIN
RAISERROR ('EL MONTO A RETIRAR ES MAYOR AL MONTO ACTUAL',16,1)
ROLLBACK
RETURN
END
ELSE
BEGIN
IF(@NUM_RETIRO_MES>4)
BEGIN
UPDATE CUENTA
SET S_MONTO+=0.10
WHERE CUENTA.C_CUENTA='M0002'
UPDATE CUENTA
SET S_MONTO-=0.10
WHERE CUENTA.C_CUENTA=@CUENTA
END
UPDATE CUENTA
SET S_MONTO+=@MONTO*0.008
WHERE CUENTA.C_CUENTA='ITF02'
UPDATE CUENTA
SET S_MONTO-=@MONTO*0.008
WHERE CUENTA.C_CUENTA=@CUENTA
UPDATE CUENTA
SET S_MONTO=@MONTO_ACTUAL-@MONTO,NUM_RET_MES=@NUM_RETIRO_MES+1
WHERE CUENTA.C_CUENTA =@CUENTA
END
COMMIT
No hay comentarios:
Publicar un comentario