Package com.zinep.trans

Source Code of com.zinep.trans.DevolverDepositoAPlazo

package com.zinep.trans;

import com.zinep.Cliente;
import com.zinep.Cuenta;
import com.zinep.Monto;
import com.zinep.Sucursal;
import com.zinep.utils.Recurso;
import java.util.ArrayList;
import java.util.List;

/**
*
* @author JÑahui
*/
public class DevolverDepositoAPlazo extends Transaccion {

    private final Sucursal sucursal;
    private final Monto interesesGenerados;
    private final Monto cantAPlazoFijo;
    private final Cuenta cuenta;

    public DevolverDepositoAPlazo(Cliente cliente, Cuenta cuenta, Sucursal sucursal, Monto cantAPlazoFijo, List<Recurso> recursos) {
        super(cliente, "Devolver Deposito a Plazo", 10, recursos);
        this.sucursal = sucursal;
        this.cantAPlazoFijo = cantAPlazoFijo;
        this.interesesGenerados = new Monto(cantAPlazoFijo.getMonto() * 4 / 100, cantAPlazoFijo.getMoneda());
        this.cuenta = cuenta;
    }

    public static DevolverDepositoAPlazo devolverDeposito(Cliente cliente, Cuenta cuenta, Sucursal sucursal, Monto cantAPlazoFijo) {
        List<Recurso> recursos = new ArrayList<Recurso>();
        recursos.add(cuenta);
        return new DevolverDepositoAPlazo(cliente, cuenta, sucursal, cantAPlazoFijo, recursos);
    }

    @Override
    public void ejecutar() {
        long cantidadDisp = sucursal.getMontoDisp(cantAPlazoFijo.getMoneda()).getMonto() - cantAPlazoFijo.getMonto() - interesesGenerados.getMonto();

        if (cantidadDisp >= 0) {
            sucursal.restarMonto(cantAPlazoFijo);
            sucursal.restarMonto(interesesGenerados);
            cuenta.aumentarMonto(cantAPlazoFijo);
            cuenta.aumentarMonto(interesesGenerados);
        } else {
            estado = Estado.CANCELADO;
        }
    }
}
TOP

Related Classes of com.zinep.trans.DevolverDepositoAPlazo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.