package BBUVAJAVA;


import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;

// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.9CB3B596-7460-CA70-6938-51377C1D0232]
// </editor-fold>
public class Producto {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.479A584C-0B26-58D7-0828-5F6B23CA2257]
    // </editor-fold>
    private String numeroProducto;
    private ArrayList<Cliente> mTitulares;
    private ArrayList<Domicializacion> mDomicializacion;
    private double saldo;
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.E32B2849-F57B-DEA1-558C-211753FB46C6]
    // </editor-fold>
    private String nombreCliente;
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.29BDEB08-CEB8-47FD-36A7-13A153BC5EE5]
    // </editor-fold>

    private ArrayList<Movimiento> mMovimiento;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.AE98041C-450C-0F91-1AAF-DCD563B80301]
    // </editor-fold>
    public Producto () {
        mMovimiento=new ArrayList();
        mTitulares=new ArrayList();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.DAA5C5A9-131A-28DB-AFF3-0D75E12592C5]
    // </editor-fold>
    public ArrayList<Movimiento> getMovimiento () {
        return mMovimiento;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.9B33FD51-C4C2-5AFE-18B5-AC75C82AFF75]
    // </editor-fold>
    public void setMovimiento (ArrayList<Movimiento> val) {
        this.mMovimiento = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.CF8662BB-8D97-449B-7EC4-151296EBB2CB]
    // </editor-fold>
    public String getNombreCliente () {
        return nombreCliente;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.518F716F-4EED-412E-5677-CEF21B3DF27E]
    // </editor-fold>
    public void setNombreCliente (String val) {
        this.nombreCliente = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.0F5C0876-7EF8-3C78-3852-FF69A70A2A99]
    // </editor-fold>
    public String getNumeroProducto () {
        return numeroProducto;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.69304E9A-DF95-CF7E-BF77-DC37B0B6CD34]
    // </editor-fold>
    public void setNumeroProducto (String val) {
        this.numeroProducto = val;
    }

    public void insertaMovimientoenCuenta(Movimiento mov){
        this.mMovimiento.add(mov);
    }

    /**
     * @return the saldo
     */
    public double getSaldo() {
        return saldo;
    }

    /**
     * @param saldo the saldo to set
     */
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
    public void Ingreso(double importe){
        if(importe>=0)
           this.setSaldo(this.getSaldo()+importe);
        Movimiento m=new Movimiento();
        java.util.Date fecha = new Date();
        m.setImporte(importe);
        m.setFechaOperacion(fecha);
        m.setConcepto("Ingreso");
        this.insertaMovimientoenCuenta(m);
    }

    public void Reintegro(double importe){
        if(this.getSaldo()>=importe){
            this.setSaldo(this.getSaldo()-importe);     
        Movimiento m=new Movimiento();
        java.util.Date fecha = new Date();
        m.setImporte(importe);
        m.setFechaOperacion(fecha);
        m.setConcepto("Reintegro");
        this.insertaMovimientoenCuenta(m);
        }

    }
   public void Transferencia(Producto p2, double cantidad, boolean tipo){
       double comision;
       if(cantidad>1000)
           comision=cantidad*0.01;
       else
           comision=1;
       Movimiento mtrans=new Movimiento();

       java.util.Date fecha = new Date();
        if(this!=null && tipo==true)
        this.setSaldo(this.getSaldo()-cantidad);
    else if(this!=null && tipo==false)
        this.setSaldo((this.getSaldo()-comision));//cobra la comision
    if(tipo ==true && p2!=null)
        p2.setSaldo(p2.getSaldo()+cantidad);
        mtrans.setImporte(cantidad);
        mtrans.setFechaOperacion(fecha);
        mtrans.setConcepto("Transferencia a la cuenta " +p2.getNumeroProducto());
        this.insertaMovimientoenCuenta(mtrans);
     if(tipo==true){
      Movimiento mcomi=new Movimiento();
      mcomi.setImporte(cantidad);
      mcomi.setFechaOperacion(fecha);
      mcomi.setConcepto("Transferencia de la cuenta " +this.getNumeroProducto());
      this.insertaMovimientoenCuenta(mcomi);
     }
   }
     public ArrayList<Cliente> getMTitulares() {
        return mTitulares;
    }

    /**
     * @param mTitulares the mTitulares to set
     */
    public void setMTitulares(ArrayList<Cliente> mTitulares) {
        this.mTitulares = mTitulares;
    }

    public void insertaTitularenProducto(Cliente c){
        this.mTitulares.add(c);
    }
        public ArrayList<Domicializacion> getMDomicializacion() {
        return mDomicializacion;
    }

    /**
     * @param mDomicializacion the mDomicializacion to set
     */
    public void setMDomicializacion(ArrayList<Domicializacion> mDomicializacion) {
        this.mDomicializacion = mDomicializacion;
    }


}

