package daial;

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

// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.195C0A76-BDAD-A515-3EF7-4AF8B35CADD0]
// </editor-fold>
public class Producto {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.6A90939A-93F5-EB92-A6F3-0869562C0177]
    // </editor-fold>
    private String numeroProducto;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.95ED6BE8-1439-D969-0463-00F244FC5CCB]
    // </editor-fold>
    private String nombreCliente;

    private double saldo;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.C6D35EBA-C90D-36AE-412B-FA7A3BA92D8A]
    // </editor-fold>
    private ArrayList<Movimiento> mMovimiento;

    private ArrayList<String> mDomiciliacion;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.89D1C360-B49E-F659-61E4-B8A74FF90801]
    // </editor-fold>
    public Producto () {
        mMovimiento = new ArrayList();
        mDomiciliacion = new ArrayList();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.B9429CDA-D32B-F2F4-0477-699897C2074A]
    // </editor-fold>
    public ArrayList<Movimiento> getMovimiento () {
        return mMovimiento;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.4F37E088-1F87-FACA-2C46-3445B91F0C75]
    // </editor-fold>
    public void setMovimiento (ArrayList<Movimiento> val) {
        this.mMovimiento = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.236E5D90-AAED-529A-49ED-B2B82E9848B5]
    // </editor-fold>
    public String getNombreCliente () {
        return nombreCliente;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.EF87DA4E-F806-79BB-B5F6-8E6BE5489876]
    // </editor-fold>
    public void setNombreCliente (String val) {
        this.nombreCliente = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.E10D4619-2D4F-0178-471D-C22FD0DE41D2]
    // </editor-fold>
    public String getNumeroProducto () {
        return numeroProducto;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.4C829A55-7937-9781-C4BB-58B4F48589F2]
    // </editor-fold>
    public void setNumeroProducto (String val) {
        this.numeroProducto = val;
    }


    public void insertarMovimientoProducto(Movimiento m){
        this.mMovimiento.add(m);
    }

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

    /**
     * @param saldo the saldo to set
     */
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    public boolean buscarDomiciliacion(String ord){

        boolean devolver=false;
        int i=0;

        while(!devolver && i<mDomiciliacion.size())
        {
            if(mDomiciliacion.get(i).toString().equals(ord))
                devolver = true;
            else
                i++;
        }

        return devolver;
    }

    public ArrayList<String> getDomiciliaciones () {
        return mDomiciliacion;
    }

    public void insertarDomiciliacion(String domic){
        this.mDomiciliacion.add(domic);
    }

    public void ingresar_enCta(double ingreso){
        this.setSaldo(this.getSaldo()+ingreso);//modificarSaldo(ctaActiva, ingreso);

        OPBasica ing = new OPBasica();
        ing.setConcepto("Ingreso en efectivo");
        ing.setImporte(ingreso);
        Date d = new Date();
        ing.setFechaOperacion(d);

        insertarMovimientoProducto(ing);
    }

    public void ingresar_enCta(double ingreso, Caja caja_activa){
        this.setSaldo(this.getSaldo()+ingreso);//modificarSaldo(ctaActiva, ingreso);

        OPBasica ing = new OPBasica();
        ing.setConcepto("Ingreso en efectivo");
        ing.setImporte(ingreso);
        Date d = new Date();
        ing.setFechaOperacion(d);

        insertarMovimientoProducto(ing);
        caja_activa.anadirOpBasica(ing);
    }

    public void reintegrar_enCta(double reintegro) {
        this.setSaldo(this.getSaldo()-reintegro);//modificarSaldo(ctaActiva, reintegro);

        OPBasica reint = new OPBasica();
        reint.setConcepto("Reintegro");
        reint.setImporte(reintegro);
        Date d = new Date();
        reint.setFechaOperacion(d);

        insertarMovimientoProducto(reint);
    }

    public void reintegrar_enCta(double reintegro, Caja caja_activa) {
        this.setSaldo(this.getSaldo()-reintegro);//modificarSaldo(ctaActiva, reintegro);

        OPBasica reint = new OPBasica();
        reint.setConcepto("Reintegro");
        reint.setImporte(reintegro);
        Date d = new Date();
        reint.setFechaOperacion(d);

        insertarMovimientoProducto(reint);
        caja_activa.anadirOpBasica(reint);

    }

    public void transferencia(double cantidad, Producto cta_destino){
        setSaldo(getSaldo()-cantidad);

        cta_destino.setSaldo(cta_destino.getSaldo()+cantidad);
    }

    @Override
    public String toString() {
        return numeroProducto;
    }

}
