viernes, 18 de noviembre de 2011

TA (5)

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