package Hito4;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; 
import java.util.Date;

// <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;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.E32B2849-F57B-DEA1-558C-211753FB46C6]
    // </editor-fold> 


    private double saldo;

    private ArrayList<Cliente> mTitulares;
    
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.29BDEB08-CEB8-47FD-36A7-13A153BC5EE5]
    // </editor-fold> 
    private ArrayList<Movimiento> mMovimiento;
    private ArrayList<OP_Transferencia> mOP_Transferencia;

    // <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.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);
    }

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
    
    public void reintegro(double cantidad){
        if(this.getSaldo()>=cantidad){
            this.setSaldo(this.getSaldo()-cantidad);
        }else{
            System.out.println("Saldo insuficiente");
        }
    }

    public void ingreso(double  cantidad){
        if(cantidad>0){
            this.setSaldo(this.getSaldo()+cantidad);
        }
    }
    public boolean transferencia(Sucursal s,Producto origen,Producto destino, String concepto,String fecha,Double importe,Double comision) throws ParseException{
        boolean valor=true;
        Movimiento m = new Movimiento();
        comision=importe*comision;
        SimpleDateFormat sdf= new SimpleDateFormat("dd-MM-yyyy");
        java.util.Date d=sdf.parse(fecha);

        if(origen.getSaldo() < (importe+comision)){valor=false;}
        if(valor)
        {
            origen.setSaldo(origen.getSaldo()-(importe+comision));
            m.setConcepto(concepto);
            m.setFechaOperacion(d);
            Double i=(importe+comision)-((importe+comision)*2);//para que nos quede un numero negativo
            m.setImporte(i);
            origen.insertaMovimientoenCuenta(m);

            destino.setSaldo(destino.getSaldo()+importe);
            m.setConcepto(concepto);
            m.setFechaOperacion(d);
            m.setImporte(importe);
            destino.insertaMovimientoenCuenta(m);
        }
        OP_Transferencia opt=new OP_Transferencia();
        opt.setConcepto(m.getConcepto());
        opt.setFechaOperacion(m.getFechaOperacion());
        opt.setImporte(m.getImporte());

        mOP_Transferencia.add(opt);
        s.setMOP_Transferencia(mOP_Transferencia);
        return valor;
    }

    public ArrayList<Cliente> getMTitulares() {
        return mTitulares;
    }

    public void setMTitulares(ArrayList<Cliente> mTitulares) {
        this.mTitulares = mTitulares;
    }

    public void insertaTitularenProducto(Cliente c){
        this.mTitulares.add(c);
    }
}

