package src;

import java.awt.Component;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
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.1D475A7D-C1F5-952E-58C6-EDF119B6D93F]
// </editor-fold> 
public class Transferencia extends Movimientos
{
    Cuentas c=new Cuentas();
    
    private Component JfrmTransferenciasExternas;
    private Component JfrmTransferenciasInternas;

    public Transferencia()
    {    
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.8ECBA685-FE7C-0C0D-2CDE-7A2A6ADCF365]
    // </editor-fold>
 /***************************************************************************
 *           METODO QUE REALIZA LA TRANSFERENCIA INTERNA.                   *
 ***************************************************************************/

    public void TransferenciaInterna (Sucursal s,String ctaorigen, String ctadestino,String Importe, String concepto)
    {
        Movimientos m=new Movimientos();

        float importe=0;
        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);
        }
         importe=n.floatValue();

       if( (s.devuelveCuentas(ctaorigen)!= null))
       {
           c=s.devuelveCuentas(ctaorigen);
           float saldo;
           saldo=c.getSaldo_cuenta();
           
           if (s.devuelveCuentas(ctadestino)!=null)
           {
               if( (importe>0) && (importe<=c.getSaldo_cuenta()) )
               {
                   //Restar el importe a la cuenta del ordenante
                    c=s.devuelveCuentas(ctaorigen);
                    float p;
                    p=c.getSaldo_cuenta();//En p esta el saldo de la cuenta
                    p=p-importe;          //Le resto el importe de la tranferencia
                    c.setSaldo_cuenta(p); //Se lo asigno de nuevo

                    m.setConcepto(concepto+"Transferencia interna");
                    m.setImporte(importe);
                    
                     //Fecha de Hoy y Formateada
                    Date fechaactual=new Date();
                    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMdd");
                    m.setFecha_Operacion(fechaactual);

                    c.insertaMovimientoenCuenta(m);//Inserto el movimiebto                  

                    //Sumar a la cuenta destino el importe de la transferencia
                    c=s.devuelveCuentas(ctadestino);
                    float p1;
                    p1=c.getSaldo_cuenta();
                    p1=p1+importe;
                    c.setSaldo_cuenta(p1);
                    m.setConcepto(concepto);
                    m.setImporte(importe);

                     //Fecha de Hoy y Formateada
                    m.setFecha_Operacion(fechaactual);
                    c.insertaMovimientoenCuenta(m);//Inserto el movimiebto                                       
                 }
                 else
                 {
                    JOptionPane.showMessageDialog(JfrmTransferenciasInternas,"El importe debe ser mayor que 0 y menor que el saldo","Transferencias",JOptionPane.ERROR_MESSAGE);
                 }  
            }
           else
           {
             JOptionPane.showMessageDialog(JfrmTransferenciasInternas,"La cuenta destino es ajena a esta entidad,se va a realizar una transferencia EXTERNA","Transferencias",JOptionPane.CLOSED_OPTION);
             
           }
         }
      else
      {
        //Ventana de error
        JOptionPane.showMessageDialog(JfrmTransferenciasInternas,"La cuenta origen es erronea","Transferencias",JOptionPane.ERROR_MESSAGE);
      }
    }
/***************************************************************************
 *           METODO QUE REALIZA LA TRANSFERENCIA EXTERNA.                  *
 ***************************************************************************/
     
    public void TransferenciaExterna (Sucursal s,String ctaorigen1, String ctadestino1,String Importe1, String concepto1)
    {
        Movimientos m=new Movimientos();
        Movimientos m1=new Movimientos();
        float importe=0;
        DecimalFormat df1=new DecimalFormat("#######,##");
        Number n=0;
        try
        {
            n = df1.parse(Importe1);
        } catch (ParseException ex)
        {
            Logger.getLogger(jFrmIngreReinte.class.getName()).log(Level.SEVERE, null, ex);
        }
        importe=n.floatValue();

       if( (s.devuelveCuentas(ctaorigen1)!= null))
       {
           c=s.devuelveCuentas(ctaorigen1);
           float saldo;
           saldo=c.getSaldo_cuenta();

               if( (importe>0) && (importe<=saldo) )
               {
                   //Restar el importe a la cuenta del ordenante
                    c=s.devuelveCuentas(ctaorigen1);
                    float p;
                    p=c.getSaldo_cuenta();//En p esta el saldo de la cuenta
                    p=p-importe;          //Le resto el importe de la tranferencia

                    c.setSaldo_cuenta(p);
                    m.setConcepto(concepto1);
                    m.setImporte(importe);
                     //Fecha de Hoy y Formateada
                    Date fechaactual=new Date();
                    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMdd");
                    m.setFecha_Operacion(fechaactual);
                    c.insertaMovimientoenCuenta(m);//Inserto el movimiento

                    //Comision
        float comi=(float) 0.05;
                    float resultadoComision;
                    float total;

                    resultadoComision=importe*comi;
                    total=p-resultadoComision;
                    c.setSaldo_cuenta(total);
                    m1.setConcepto("Comisión transferencia "+concepto1);
                    m1.setImporte(resultadoComision);
                     //Fecha de Hoy y Formateada
                    m1.setFecha_Operacion(fechaactual);
                    c.insertaMovimientoenCuenta(m1);//Inserto el movimiento
                
                }
               else
                 {
                    JOptionPane.showMessageDialog(JfrmTransferenciasExternas,"El importe debe ser mayor que 0 y menor que el saldo","Transferencias",JOptionPane.ERROR_MESSAGE);
                 }
       }
      else
      {
        //Ventana de error
        JOptionPane.showMessageDialog(JfrmTransferenciasExternas,"La cuenta origen es erronea","Transferencias",JOptionPane.ERROR_MESSAGE);
      }
    }

    //Metodo para calcular la comision (FALTA ACABARLO)

  /*  public void calculoComision()
    {
                    float comi=(float) 0.05;
                    float resultadoComision;
                    float total;

                    resultadoComision=c.getSaldo_cuenta()*comi;
                    total=c.getSaldo_cuenta()-resultadoComision;
                    c.setSaldo_cuenta(total);//Comision de la transferencia
                    Date fechaactual=new Date();
                    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMdd");
                    m.setFecha_Operacion(fechaactual);
                    m.setConcepto("Comision transferencia externa");
                    c.insertaMovimientoenCuenta(m);//Inserto el movimiento de la comision
    }*/

}

