package src;

import java.awt.Component;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Observable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.D232AF5D-764F-5246-698D-29E05A5192F4]
// </editor-fold> 
public class IngresoReintegro extends Observable
{
    Cuentas c=new Cuentas();
    //Arqueo a=new Arqueo();
    Empleado emple=new Empleado();
    private Component jFrmIngreReinte;
    private Component jFrmIngreReinte1;
   
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.FDB00D86-D84C-0EFD-97CB-3E66D7E075EF]
    // </editor-fold> 
    public IngresoReintegro ()
    {
    }

    public void Ingreso(Sucursal s,String cuenta, String Importe, String Conceptolargo,String idEmple)
    { 
        Movimientos m1=new Movimientos();

        float importe=0;
        float i=0;
        int j=0;
        float total;
        boolean limite=false;

        DecimalFormat df1=new DecimalFormat("#######,##");
        Number n=0;
        try {
            n = df1.parse(Importe);
        } catch (ParseException ex) {
            Logger.getLogger(jFrmIngreReinte.class.getName()).log(Level.SEVERE, null, ex);
        }
        j=c.getMovimiento().size();        
        if(s.devuelveCuentas(cuenta)!= null)
        {
         importe=n.floatValue();
         if(importe>0)
         {
          c=s.devuelveCuentas(cuenta);
          i= c.getSaldo_cuenta();
          i=i+importe;
          c.setSaldo_cuenta(i);
          m1.setImporte(+importe);
          m1.setConceptoLargo(Conceptolargo);
          m1.setConcepto("Ingreso");
          Date d=new Date();
          m1.setFecha_Operacion(d);
          c.insertaMovimientoenCuenta(m1);
          emple=s.DevuelveEmpleado(idEmple);
          total=emple.getC().getSaldo_final()+importe;
          emple.getC().setSaldo_final(total);
          setChanged();
          notifyObservers();
          limite=s.ingresaCajaCentral(s, emple, total);
          if(limite)
          {
            total=total/2;
            JOptionPane.showMessageDialog(jFrmIngreReinte,"Exceso de dinero en su CAJA","Exceso de dinero en Caja",JOptionPane.ERROR_MESSAGE);
          }
          emple.getC().setSaldo_final(total);
          setChanged();
          notifyObservers();
         }
         else
         {
             JOptionPane.showMessageDialog(jFrmIngreReinte,"El importe tiene que ser un valor mayor de 0€","Reintegros",JOptionPane.ERROR_MESSAGE);
         }
        }
        else
        {
          JOptionPane.showMessageDialog(jFrmIngreReinte,"El numero de cuenta no existe","Reintegros",JOptionPane.ERROR_MESSAGE);
        }        
    }

    public void Reintegro (Sucursal s,String cuenta, String Importe, String Conceptolargo,String idEmple)
    { 
        Movimientos m1=new Movimientos();
        float importe=0;
        float i=0;
        int j=0;

        DecimalFormat df1=new DecimalFormat("#######,##");
        Number n=0;
        try {
            n = df1.parse(Importe);
        } catch (ParseException ex) {
            Logger.getLogger(jFrmIngreReinte1.class.getName()).log(Level.SEVERE, null, ex);
        }
        importe=n.floatValue();
        if(s.devuelveCuentas(cuenta)!= null)
        {
         c=s.devuelveCuentas(cuenta);
         j=c.getMovimiento().size();
         if(importe>0)
         {
          if(c.gettipoCuenta()==1)
          {
           if(c.getSaldo_cuenta()>0 && c.getSaldo_cuenta()>importe)
           {
            i= c.getSaldo_cuenta();
            i=i-importe;
            c.setSaldo_cuenta(i);
            m1.setImporte(-importe);
            m1.setConceptoLargo(Conceptolargo);
            m1.setConcepto("Reintegro");
            Date d=new Date();
            m1.setFecha_Operacion(d);
            c.insertaMovimientoenCuenta(m1);
            float total;
            //Restar en la caja del empleado el importe del ingreso
              emple=s.DevuelveEmpleado(idEmple);
              total=emple.getC().getSaldo_final()-importe;
              emple.getC().setSaldo_final(total);
              setChanged();
              notifyObservers();
              float margen=1000;
              if(total<margen)
              {
              s.pedirCajaCentral(s, emple);
              }
           }
           else 
           {
            JOptionPane.showMessageDialog(jFrmIngreReinte1,"Saldo Insuficiente en la libreta de ahorros","Reintegros",JOptionPane.ERROR_MESSAGE);
           }
          }
          if (c.gettipoCuenta()==2)
          {
            i= c.getSaldo_cuenta();
            i=i-importe;
            c.setSaldo_cuenta(i);
            m1.setImporte(-importe);
            m1.setConceptoLargo(Conceptolargo);
            m1.setConcepto("Reintegro");
            Date d=new Date();
            m1.setFecha_Operacion(d);
            c.insertaMovimientoenCuenta(m1);
            float total;
            //Restar en la caja del empleado el importe del ingreso
            emple=s.DevuelveEmpleado(idEmple);
            total=emple.getC().getSaldo_final()-importe;
            emple.getC().setSaldo_final(total);
            setChanged();
            notifyObservers();
            float margen=1000;
            if(total<margen)
            {
              s.pedirCajaCentral(s, emple);
            }
          }
         }
         else
         {             
             JOptionPane.showMessageDialog(jFrmIngreReinte1,"El importe tiene que ser un valor mayor de 0€","Reintegros",JOptionPane.ERROR_MESSAGE);
         }
        }
        else
        {        
         JOptionPane.showMessageDialog(jFrmIngreReinte1,"El numero de cuenta no existe","Reintegros",JOptionPane.ERROR_MESSAGE);
        }
    }

}

