package dia4g3java;


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; 
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger; 

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.CDA65C67-3A8B-573F-94D7-EFC88D0988E9]
// </editor-fold> 
public class Sucursal {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.6BF61CEB-9A5C-EE2E-8DD6-449AAE9CF16C]
    // </editor-fold> 
    private ArrayList<Empleado> mEmpleado;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.85FC3C93-5921-7D22-4797-D0769D9596E4]
    // </editor-fold> 
    private ArrayList<Caja> mCaja;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.D81DCBF6-627D-D978-1EDA-B9F64ECEE1F9]
    // </editor-fold> 
    private ArrayList<Producto> mProducto;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.067D4DB3-F16E-626A-4B62-3902500ABC55]
    // </editor-fold> 
    private ArrayList<Remesa> mRemesa;

    private ArrayList<Cliente> mCliente;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.D3C8995D-13CC-4AFE-426F-29E4EB618653]
    // </editor-fold> 
    public Sucursal () {
        mProducto=new ArrayList();
        mRemesa=new ArrayList();
        mCliente=new ArrayList();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.E09A812D-CF73-1709-D767-9B151F626C8E]
    // </editor-fold> 
    public ArrayList<Producto> getProducto () {
        return null;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.30DC03D2-12C8-9794-267B-0F3862CC5DFE]
    // </editor-fold> 
    public void setProducto (ArrayList<Producto> val) {
        this.mProducto = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.218C1D65-7D8D-33BA-80B9-B63AE1BC0066]
    // </editor-fold> 
    public ArrayList<Remesa> getRemesa () {
        return null;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.66B8F3CD-FC2D-54F2-B2DB-ECC0CBF98DA1]
    // </editor-fold> 
    public void setRemesa (ArrayList<Remesa> val) {
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.BC8EDA36-0F58-7881-B699-0E86DE577EA3]
    // </editor-fold> 
    public String verRemesa (String path) {
        String resumenRemesa="";
        try {
            FileReader fr = null;
            fr = new FileReader(path);
            BufferedReader bf = new BufferedReader(fr);
            String linea, buffer;

            while ((linea = bf.readLine()) != null) {
                buffer=linea.substring(0,4);
                if(buffer.compareTo("5180")==0){
                    //Registro cabecera presentador
                    resumenRemesa=linea.substring(28,69);
                }else if(buffer.compareTo("5680")==0){
                    //Registro individual obligatorio
                    resumenRemesa += "\n"+linea.substring(28,68);
                    resumenRemesa += "\t"+linea.substring(88,98);
                 }else if(buffer.compareTo("5980")==0){
                     //Registro total final
                    resumenRemesa += "\nTotal Remesa: "+linea.substring(88,98);
                 }
            }
        } catch (IOException ex) {
            Logger.getLogger(Sucursal.class.getName()).log(Level.SEVERE, null, ex);
        }
        return resumenRemesa;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.F68A8278-4F50-7C25-5F67-3AD08FB3712A]
    // </editor-fold> 
    public void incorporarRemesa (String path) throws java.text.ParseException {
        try {
            FileReader fr = null;
            fr = new FileReader(path);
            BufferedReader bf = new BufferedReader(fr);
            String linea;
            String fechaRemesa="";
            String numCta="";
            Remesa r=new Remesa();
            while ((linea = bf.readLine()) != null) {
                String buffer;
                buffer = linea.substring(0, 4);
                
                if(buffer.compareTo("5180")==0){
                    //registro cabecera presentador

                    r.setNombreOrdenante(linea.substring(28,68));
                }else if(buffer.compareTo("5380")==0){
                    fechaRemesa=linea.substring(22, 28);
                }else if(buffer.compareTo("5680")==0){
                    Op_Remesa op=new Op_Remesa();
                    DecimalFormat df1=new DecimalFormat("#######,##");
                    Number n=df1.parse(linea.substring(88, 98));
                    op.setImporte(n.floatValue());
                    op.setConcepto(r.getNombreOrdenante());
                    SimpleDateFormat df2=new SimpleDateFormat("ddMMyy");
                    op.setFechaOperacion(df2.parse(fechaRemesa));
                    r.insertaOpRemesa(op);
                    //leo el numcta
                    numCta=linea.substring(68,88);
                    //devuelveproducto(numcta)
                    Producto auxCta=this.devuelveProducto(numCta);
                    //insertarmovimientoensuproducto
                    auxCta.insertaMovimientoenCuenta(op);
                }

            }
            this.insertaRemesaenSucursal(r);
        } catch (IOException ex) {
            Logger.getLogger(Sucursal.class.getName()).log(Level.SEVERE, null, ex);
        }

}
    public void insertaRemesaenSucursal(Remesa r){
        this.mRemesa.add(r);
    }
    public Producto devuelveProducto(String numcta){

        Iterator iterador = this.mProducto.listIterator();
        System.out.println("entra");
        while( iterador.hasNext() ) {
            Producto p = (Producto) iterador.next();
            System.out.println(p.getNumeroProducto());
            if (p.getNumeroProducto().compareTo(numcta)==0){
                System.out.println(p.getNumeroProducto());
                return p;
            }

        }
        return null;
    
}
    public ArrayList<Cliente> getMCliente(){
        return mCliente;
    }

    public void setMCliente(ArrayList<Cliente> mCliente){
        this.mCliente = mCliente;
    }

    public ArrayList<Producto> busquedaProductosCliente(String datosClte, int tipoBusq){

        Iterator iterador = this.mCliente.listIterator();

        while( iterador.hasNext()){
            Cliente c = (Cliente) iterador.next();
            if(tipoBusq==1){
                if(c.getDocumentacion().compareToIgnoreCase(datosClte)==0){
                    return c.getMProducto();
                }
            }else{
                if(tipoBusq==2){
                    if (c.getNombreCliente().compareToIgnoreCase(datosClte)==0){
                        return c.getMProducto();
                    }
                }
            }

        }
        return null;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.3E8B090B-4F1D-7E45-5A10-A08014B1525B]
    // </editor-fold> 
    public ArrayList<Caja> getCaja () {
        return mCaja;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.D655342B-5C9A-2F5A-76DD-D61253600DF0]
    // </editor-fold> 
    public void setCaja (ArrayList<Caja> val) {
        this.mCaja = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.357824B0-3A97-1268-8BA9-808AEB0F08C0]
    // </editor-fold> 
    public ArrayList<Empleado> getEmpleado () {
        return mEmpleado;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.96D37350-D68B-4522-5998-6930D408E4D5]
    // </editor-fold> 
    public void setEmpleado (ArrayList<Empleado> val) {
        this.mEmpleado = val;
    }
}

