/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package es.bancodehierro.banco.cc;
import es.bancodehierro.banco.conexion.Conexion;
import es.bancodehierro.banco.enumeraciones.EnumMovimiento;
import es.bancodehierro.banco.excepciones.CuentaCorrienteException;
import es.bancodehierro.banco.menu.GestionaMenu;
import es.bancodehierro.banco.menu.MenuCuentaCorriente;
import es.bancodehierro.banco.persona.Cliente;
import es.bancodehierro.banco.sucursal.Sucursal;
import es.bancodehierro.banco.central.Banco;
import es.bancodehierro.banco.excepciones.ClienteException;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Andreu Oliver, Juanjo Macanás, Roberto Simón, Xavi Jimenez, Miquel
* Angel Cànaves
*/
public class CuentaCorriente {
/**
* El iban de la cuenta corriente.
*/
private String iban;
/**
* La constante con la entidad de la cuenta corriente.
*/
private final String ENTIDAD = "2100";
/**
* La oficina de la cuenta corriente.
*/
private String oficina;
/**
* El dc de la cuenta corriente.
*/
private String dC;
/**
* La cuenta de la cuenta corriente.
*/
private String cuenta;
/**
* El importe que tendrá la cuenta corriente.
*/
private double importe;
/**
* La lista de movimientos que se generan en la cuenta corriente.
*/
private ArrayList<Movimiento> movimientos = new ArrayList<>();
/**
* La lista de titulares que tendrá la cuenta corriente (como máximo 2).
*/
private HashMap<String, Cliente> titulares = new HashMap<>();
/**
* Devuelve una cadena con el valor de la oficina.
*
* @return Un String con la oficina a la que pertenece la cuenta corriente.
*/
public String getOficina() {
return oficina;
}
/**
* Para modificar la oficina de la cuenta correinte.
*
* @param oficina La nueva oficina.
*/
public void setOficina(String oficina) {
this.oficina = oficina;
}
/**
* Devuelve una cadena con el valor de dc.
*
* @return Un string con el dc de la cuenta corriente.
*/
public String getdC() {
return dC;
}
/**
* Para modificar el dc de cuanta corriente.
*
* @param dC El nuevo dc.
*/
public void setdC(String dC) {
this.dC = dC;
}
/**
* Devuelve el valor del importe de la cuenta corriente.
*
* @return Un Double con el importe que tiene la cuenta corriente.
*/
public double getImporte() {
return importe;
}
/**
* Para modificar el valor de importe.
*
* @param importe Un double con el nuevo valor de importe.
*/
public void setImporte(double importe) {
this.importe = importe;
}
/**
* Devuelve la lista de movimientos de la cuenta corriente.
*
* @return El ArrayList de movimientos.
*/
public ArrayList<Movimiento> getMovimientos() {
return movimientos;
}
/**
* Para modificar la lista de movimientos de cuenta corriente.
*
* @param movimientos El ArrayList con los movimientos de cuenta corriente.
*/
public void setMovimientos(ArrayList<Movimiento> movimientos) {
this.movimientos = movimientos;
}
/**
* Devuelve la lista de titulares de la cuenta corriente.
*
* @return El HashMap con los titulares de cuenta correinte.
*/
public HashMap<String, Cliente> getTitulares() {
return titulares;
}
/**
* Para modificar el HashMap de los titulares de cuenta corriente.
*
* @param titulares Un HashMap con los nuevos titulares.
*/
public void setTitulares(HashMap<String, Cliente> titulares) {
this.titulares = titulares;
}
/**
* Contructor de una cuenta corriente.
*
* @param iban Un String con el valor del iban.
* @param oficina Un string con el valor de la oficina.
* @param dC Un String con el valor de dc.
* @param cuenta Un string con el valor de cuenta.
* @param importe Un double con el valor del importe.
*/
public CuentaCorriente(String iban, String oficina, String dC, String cuenta, double importe) {
this.iban = "ES" + iban;
this.oficina = oficina;
this.dC = dC;
this.cuenta = cuenta;
this.importe = importe;
}
/**
* Muestra la cuenta corriente.
*
* @return Un string con la cadena de la cuenta corriente.
*/
public String muestraCC() {
return (iban + ENTIDAD + oficina + dC + cuenta);
}
/**
* Agregación de un titular en la cuenta corriente. Si no hay ningún titular
* lo agregará como titular. En el HashMap de CuentaCorriente y en la base
* de datos. Si hay un titular asociado a la cuenta, agregará el nuevo como
* segundo titular. En la HashMap de CuentaCorriente y en la base de datos.
*
* @param titular El cliente que se desea asociar a la cuenta corriente.
* @param sucursal La sucursal a la que pertenece la cuenta corriente.
* @return El número de filas afectadas.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
*/
public int agregarTitular(Sucursal sucursal) throws SQLException, ClienteException {
String dni = GestionaMenu.llegirCadena("Introduce el DNI del titular: ");
Statement st = Conexion.conectar().createStatement();
String consulta = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE = '" + dni + "'";
ResultSet rs = st.executeQuery(consulta);
rs.next();
Cliente titular = null;
if (Banco.comprobarCliente(dni)) {
titular = new Cliente(null, null, null, dni, null, null, null, null);
}
int filas = '\0';
/* try (Statement st = Conexion.conectar().createStatement()) {
String consultaTitular = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE='" + titular.getDni() + "'";
if (st.executeQuery(consultaTitular) != null) {
String insertTitular = null;
String consultaCountTitular = "SELECT count(*) FROM CLIENTE_CUENTA_CORRIENTE WHERE NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
ResultSet rs = st.executeQuery(consultaCountTitular);
rs.next();
if (rs.getInt(1) == 0) {
insertTitular = "INSERT INTO CLIENTE_CUENTA_CORRIENTE (DNI_CLIENTE_CC,NUMERO_CC,CODIGO_SUCURSAL,FECHA_CREACION,POSICIO) VALUES('" + titular.getDni() + "','" + muestraCC() + "','" + sucursal.getCodi() + "'," + "SYSTIMESTAMP" + ",1";
} else if (rs.getInt(1) == 1) {
insertTitular = "INSERT INTO CLIENTE_CUENTA_CORRIENTE (DNI_CLIENTE_CC,NUMERO_CC,CODIGO_SUCURSAL,FECHA_CREACION,POSICIO) VALUES('" + titular.getDni() + "','" + muestraCC() + "','" + sucursal.getCodi() + "'," + "SYSTIMESTAMP" + ",2";
} else {
throw new CuentaCorrienteException("Ya tiene dos titulares, no puedes añadir más");
}
filas = st.executeUpdate(insertTitular);
}
}
if (!titulares.containsValue(titular)) {
if (!titulares.containsKey("Titular")) {
titulares.put("Titular", titular);
} else if (!titulares.containsKey("Segundo")) {
titulares.put("Segundo", titular);
} else {
throw new CuentaCorrienteException("Error: Límite de titulares alcanzado.");
}
} else {
throw new CuentaCorrienteException("Error: Titular, " + titular.getDni() + ", ya asociado a está cuenta.");
}
*/
String procedure = "begin inserir_client_CCB(?,?,?,?,?,?); end;";
//ResultSet comp = st.executeQuery("SELECT * FROM CUENTA_CORRIENTE WHERE NUMERO_CC = '" + cc.muestraCC() + "' AND CODIGO_SCC =" + sucursal.getCodi());
//if (comp.next()) {
CallableStatement cS = Conexion.conectar().prepareCall(procedure);
// cS.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cS.setString(1, muestraCC());
cS.setInt(2, rs.getInt("CODIGO_CLIENTE"));
cS.setString(3, titular.getDni());
cS.setInt(4, sucursal.getCodi());
consulta = "SELECT COUNT(DNI_CLIENTE_CC) FROM CLIENTE_CUENTA_CORRIENTE WHERE NUMERO_CC = '" + muestraCC() + "'";
rs = st.executeQuery(consulta);
rs.next();
if(rs.getInt(1)==0 ){
cS.setInt(5, 1);
}else if(rs.getInt(1)==1 ){
cS.setInt(5, 2);
}else{
throw new ClienteException("Ya hay dos titulares");
}
cS.registerOutParameter(6, java.sql.Types.INTEGER);
//ResultSet rs = cS.executeQuery();
cS.executeQuery();
cS.close();
return filas;
}
/**
* Eliminación de un cliente de la cuenta corriente. Si se elimina el
* titular y existe un segundo titular, el segundo cliente pasará a ser el
* titular de la cuenta corriente.
*
* @param cliente El cliente que se desea eliminar de la cuenta corriente.
* @param sucursal La sucursal a la que pertenece la cuenta corriente.
* @return El número de filas afectadas.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
*/
public int eliminarTitular( Sucursal sucursal) throws SQLException, ClienteException {
String dni = GestionaMenu.llegirCadena("Introduce el DNI: ");
Statement st = Conexion.conectar().createStatement();
String consulta = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE = '" + dni + "'";
ResultSet rs = st.executeQuery(consulta);
Cliente titular = null;
if (Banco.comprobarCliente(dni)) {
titular = new Cliente(null, null, null, dni, null, null, null, null);
}
int filas = '\0';
/*try (Statement st = Conexion.conectar().createStatement()) {
String consultaTitular = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE='" + cliente.getDni() + "'";
if (st.executeQuery(consultaTitular) != null) {
String insertTitular = null;
String borrarTitular = null;
String consultaCountTitular = "SELECT count(*) FROM CLIENTE_CUENTA_CORRIENTE WHERE NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
ResultSet rs = st.executeQuery(consultaCountTitular);
rs.next();
if (rs.getInt(1) == 1) {
System.err.println("No tienes mas titulares, antes da de baja la cuenta");
//insertTitular = "INSERT INTO CLIENTE_CUENTA_CORRIENTE (DNI_CLIENTE_CC,NUMERO_CC,CODIGO_SUCURSAL,FECHA_CREACION,POSICIO) VALUES('" + cliente.getDni() + "','" + muestraCC() + "','" + sucursal.getCodi() + "'," + "SYSTIMESTAMP" + ",2";
} else if (rs.getInt(1) > 1) {
String consultaPosicionTitular = "SELECT POSICIO FROM CLIENTE_CUENTA_CORRIENTE WHERE DNI_CLIENTE_CC='" + cliente.getDni();
rs = st.executeQuery(consultaPosicionTitular);
rs.next();
if (rs.getInt(1) == 1) {
intercambiarTitular(sucursal);
}
borrarTitular = "DELETE FROM CLIENTE_CUENTA_CORRIENTE WHERE POSICIO= 2";
}
filas = st.executeUpdate(borrarTitular);
System.out.println("Filas borradas: " + filas);
}
}
if (titulares.containsValue(cliente)) {
if (titulares.get("Segundo").equals(cliente)) {
titulares.remove(cliente);
} else if (titulares.get("Titular").equals(cliente) && titulares.containsKey("Segundo")) {
titulares.remove(cliente);
Cliente nuevoTitular = titulares.get("Segundo");
titulares.put("Titular", nuevoTitular);
titulares.remove("Segundo");
} else if (titulares.containsValue(cliente) && titulares.containsKey("Titular") && !titulares.containsKey("Segundo")) {
throw new CuentaCorrienteException("Error: No puede desvincular a todos los titulares de la cuenta.");
}
} else {
throw new CuentaCorrienteException("Error: Ya existe en esta cuenta.");
}
*/
String function = "{? = call esborrar_client_CCB(?,?,?,?)}";
//ResultSet comp = st.executeQuery("SELECT * FROM CUENTA_CORRIENTE WHERE NUMERO_CC = '" + cc.muestraCC() + "' AND CODIGO_SCC =" + sucursal.getCodi());
//if (comp.next()) {
CallableStatement cS = Conexion.conectar().prepareCall(function);
cS.registerOutParameter(1, java.sql.Types.INTEGER);
cS.setString(2, muestraCC());
cS.setString(3, titular.getDni());
cS.setInt(4, sucursal.getCodi());
cS.setDouble(5, GestionaMenu.llegirDouble("Posicion: "));
//ResultSet rs = cS.executeQuery();
cS.executeQuery();
//System.out.println(cS.getInt(1));
//System.out.println("Filas borradas: " + filas);
cS.close();
return filas;
}
/**
* Intercambio de titular a segundo titular y viceversa.
*
* @param sucursal La sucursal a la que pertenece la cuenta corriente.
* @return El número de filas afectadas.
* @throws CuentaCorrienteException En caso que solo haya un cliente
* asociado en la cuenta corriente.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
*/
public int intercambiarTitular(Sucursal sucursal) throws CuentaCorrienteException, SQLException {
int filas = '\0';
try (Statement st = Conexion.conectar().createStatement()) {
String insertTitular = null;
String consultaCountTitular = "SELECT count(*) FROM CLIENTE_CUENTA_CORRIENTE WHERE NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
ResultSet rs = st.executeQuery(consultaCountTitular);
rs.next();
if (rs.getInt(1) == 0) {
throw new CuentaCorrienteException("ERROR");
} else if (rs.getInt(1) == 1) {
throw new CuentaCorrienteException("ERROR: solo hay un titular");
} else {
insertTitular = "UPDATE CLIENTE_CUENTA_CORRIENTE SET POSICIO= 3 WHERE POSICIO=1 AND NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
filas = st.executeUpdate(insertTitular);
insertTitular = "UPDATE CLIENTE_CUENTA_CORRIENTE SET POSICIO= 1 WHERE POSICIO=2 AND NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
filas = filas + st.executeUpdate(insertTitular);
insertTitular = "UPDATE CLIENTE_CUENTA_CORRIENTE SET POSICIO= 2 WHERE POSICIO=3 AND NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
filas = filas + st.executeUpdate(insertTitular);
}
//filas = st.executeUpdate(insertTitular);
}
/*
Cliente auxiliar = titulares.get("Titular");
eliminarTitular(titulares.get("Titular"), sucursal);
agregarTitular(auxiliar, sucursal);
*/
return filas;
}
/**
* Cambio de titulares de la cuenta corriente.
*
* @param viejo El cliente que se desea desvincular.
* @param nuevo El cliente que se desea vincular a la cuenta corriente.
* @param sucursal La sucursal a la que pertenece la cuenta corriente.
* @throws CuentaCorrienteException En el caso que solo haya un titular
* asiciado a la cuenta corriente.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
*/
public int cambiarTitular(Sucursal sucursal) throws CuentaCorrienteException, SQLException, ClienteException {
String dni = GestionaMenu.llegirCadena("Introduce el DNI del cliente viejo: ");
Statement st = Conexion.conectar().createStatement();
String consulta = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE = '" + dni + "'";
ResultSet rs = st.executeQuery(consulta);
rs.next();
Cliente viejo = null;
if (Banco.comprobarCliente(dni)) {
viejo = new Cliente(null, null, null,dni, null, null, null, null);
}
dni = GestionaMenu.llegirCadena("Introduce el DNI del cliente nuevo: ");
consulta = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE = '" + dni + "'";
rs = st.executeQuery(consulta);
rs.next();
Cliente nuevo = null;
if (Banco.comprobarCliente(dni)) {
nuevo = new Cliente(null, null, null, dni, null, null, null, null);
}
/*if (!titulares.containsKey("Segundo")) {
agregarTitular(nuevo, sucursal);
eliminarTitular(viejo, sucursal);
} else {
if (viejo.equals(titulares.get("Titular"))) {
eliminarTitular(viejo, sucursal);
agregarTitular(nuevo, sucursal);
intercambiarTitular(sucursal);
} else {
eliminarTitular(viejo, sucursal);
agregarTitular(nuevo, sucursal);
}
}*/
int filas = '\0';
String insertTitular = null;
String consultaCountTitular = "SELECT count(*) FROM CLIENTE_CUENTA_CORRIENTE WHERE NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
rs = st.executeQuery(consultaCountTitular);
rs.next();
if (rs.getInt(1) == 0) {
throw new CuentaCorrienteException("ERROR: No hay titulares");
} else if (rs.getInt(1) == 1) {
insertTitular = "UPDATE CLIENTE_CUENTA_CORRIENTE SET DNI_CLIENTE_CC='" + nuevo.getDni() + "' WHERE POSICIO=1 AND NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
} else {
MenuCuentaCorriente mCC = new MenuCuentaCorriente();
boolean puesto = false;
int menuPuesto = '\0';
for (; !puesto;) {
String[] tipos = {"Puesto 1",
"Puesto 2"};
menuPuesto = mCC.mostrarMenu(tipos);
if (menuPuesto == 0 || menuPuesto == 1) {
puesto = true;
}
}
insertTitular = "UPDATE CLIENTE_CUENTA_CORRIENTE SET DNI_CLIENTE_CC='" + nuevo.getDni() + "' WHERE POSICIO=" + (menuPuesto + 1) + " AND NUMERO_CC='" + muestraCC() + "' AND CODIGO_SUCURSAL=" + sucursal.getCodi();
}
filas = st.executeUpdate(insertTitular);
//filas = st.executeUpdate(insertTitular);
st.close();
return filas;
/*
Cliente auxiliar = titulares.get("Titular");
eliminarTitular(titulares.get("Titular"), sucursal);
agregarTitular(auxiliar, sucursal);
*/
}
/**
* Devuelve los movimientos de la cuenta corriente.
*
* @param incidencia true en el caso que quieran las incidencias, false si
* quieren los movimientos.
* @return Un ArrayList con los movimientos filtrados.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
*/
public ArrayList<Movimiento> mostrarMovimiento() throws SQLException {
/* if (incidencia == true) {
if (incidencias.isEmpty()) {
return incidencias;
} else {
throw new CuentaCorrienteException("Error: No existen incidencias en su cuenta corriente.");
}
} else {
if (movimientos.isEmpty()) {
return movimientos;
} else {
throw new CuentaCorrienteException("Error: No existen movimientos en su cuenta corriente.");
}
}*/
//ArrayList<Movimiento> aM = new ArrayList<>();
Movimiento movimiento = null;
//String resultado = null;
try (Statement st = Conexion.conectar().createStatement()) {
movimientos.clear();
String consultaCC = "SELECT * FROM MOVIMIENTO_CUENTA_CORRIENTE";
ResultSet rs = st.executeQuery(consultaCC);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.CUENTA_CORRIENTE, rs.getInt("CODIGO_MCC"), rs.getString("CONCEPTO_MCC"), rs.getDouble("IMPORTE_MCC"), rs.getTimestamp("FECHA_MCC"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
String consultaPrestamo = "SELECT * FROM MOVIMIENTO_PRESTAMO";
rs = st.executeQuery(consultaPrestamo);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.PRESTAMO, rs.getInt("CODIGO_MP"), rs.getString("CONCEPTO_MP"), rs.getDouble("IMPORTE_MP"), rs.getTimestamp("FECHA_MP"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
String consultaCredito = "SELECT * FROM MOVIMIENTO_TARJETA_CREDITO";
rs = st.executeQuery(consultaCredito);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.TARJETA_CREDITO, rs.getInt("CODIGO_TARJETA"), rs.getString("CONCEPTO_MTC"), rs.getDouble("IMPORTE_MTC"), rs.getTimestamp("FECHA_MTC"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
String consultaDebito = "SELECT * FROM MOVIMIENTO_TARJETA_DEBITO";
rs = st.executeQuery(consultaDebito);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.TARJETA_DEBITO, rs.getInt("CODIGO_TARJETA"), rs.getString("CONCEPTO_MTD"), rs.getDouble("IMPORTE_MTD"), rs.getTimestamp("FECHA_MTD"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
}
return movimientos;
}
//rs.next();
/* if (rs.getInt(1) == 0) {
throw new CuentaCorrienteException("ERROR: NO HAY CUENTA CORRIENTE");
} else{
return rs.getDouble(1);
} */
//filas = st.executeUpdate(insertTitular);
/**
* Muestra todos los movimientos o las incidencias de la cuenta corriente
* filtradas por el tipo de movimiento.
*
* @param tipo El tipo de movimiento que desean.
* @return Un ArrayList con los movimientos filtrados.
* @throws java.sql.SQLException
*/
public ArrayList<Movimiento> mostrarMovimiento(EnumMovimiento tipo) throws SQLException {
Movimiento movimiento = null;
ResultSet rs = null;
try (Statement st = Conexion.conectar().createStatement()) {
if (tipo == EnumMovimiento.CUENTA_CORRIENTE) {
movimientos.clear();
String consultaCC = "SELECT * FROM MOVIMIENTO_CUENTA_CORRIENTE";
rs = st.executeQuery(consultaCC);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.CUENTA_CORRIENTE, rs.getInt("CODIGO_MCC"), rs.getString("CONCEPTO_MCC"), rs.getDouble("IMPORTE_MCC"), rs.getTimestamp("FECHA_MCC"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
} else if (tipo == EnumMovimiento.PRESTAMO) {
movimientos.clear();
String consultaPrestamo = "SELECT * FROM MOVIMIENTO_PRESTAMO";
rs = st.executeQuery(consultaPrestamo);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.PRESTAMO, rs.getInt("CODIGO_MP"), rs.getString("CONCEPTO_MP"), rs.getDouble("IMPORTE_MP"), rs.getTimestamp("FECHA_MP"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
} else if (tipo == EnumMovimiento.TARJETA_CREDITO) {
movimientos.clear();
String consultaCredito = "SELECT * FROM MOVIMIENTO_TARJETA_CREDITO";
rs = st.executeQuery(consultaCredito);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.TARJETA_CREDITO, rs.getInt("CODIGO_TARJETA"), rs.getString("CONCEPTO_MTC"), rs.getDouble("IMPORTE_MTC"), rs.getTimestamp("FECHA_MTC"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
} else if (tipo == EnumMovimiento.TARJETA_DEBITO) {
movimientos.clear();
String consultaDebito = "SELECT * FROM MOVIMIENTO_TARJETA_DEBITO";
rs = st.executeQuery(consultaDebito);
for (; rs.next();) {
movimiento = new Movimiento(EnumMovimiento.TARJETA_DEBITO, rs.getInt("CODIGO_TARJETA"), rs.getString("CONCEPTO_MTD"), rs.getDouble("IMPORTE_MTD"), rs.getTimestamp("FECHA_MTD"));
// resultado = resultado + "\n" + cuentaCorriente.toString();
movimientos.add(movimiento);
}
}
}
return movimientos;
}
/* ArrayList<Movimiento> movimientoFiltrado = new ArrayList<>();
if (incidencia == true) {
if (incidencias.isEmpty()) {
for (Movimiento inci : movimientos) {
if (inci.getTipo() == tipo) {
movimientoFiltrado.add(inci);
}
}
} else {
throw new CuentaCorrienteException("Error: No existen incidencias en su cuenta corriente.");
}
} else {
if (movimientos.isEmpty()) {
for (Movimiento movi : movimientos) {
if (movi.getTipo() == tipo) {
movimientoFiltrado.add(movi);
}
}
} else {
throw new CuentaCorrienteException("Error: No existen movimientos en su cuenta corriente.");
}
}
if (movimientoFiltrado.isEmpty()) {
return movimientoFiltrado;
} else {
throw new CuentaCorrienteException("Error: No se han encontrados movimientos.");
}
*/
@Override
public String toString() {
return "CuentaCorriente: " + "Cuenta: " + muestraCC() + "\tImporte: " + importe;
}
/**
* Para modificar el saldo de la cuenta corriente.
*
* @param sucursal La sucursal a la que pertenece la cuenta corriente.
* @return Devuelve true en caso que haya ido bien o false en caso
* contrario.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
*/
public boolean modificarSaldo(Sucursal sucursal) throws SQLException {
String function = "{? = call INSERTAR_MOVIMIENTO_CCB(?,?,?,?,?)}";
//ResultSet comp = st.executeQuery("SELECT * FROM CUENTA_CORRIENTE WHERE NUMERO_CC = '" + cc.muestraCC() + "' AND CODIGO_SCC =" + sucursal.getCodi());
MenuCuentaCorriente mCC = new MenuCuentaCorriente();
boolean menuTipo = false;
//if (comp.next()) {
CallableStatement cS = Conexion.conectar().prepareCall(function);
cS.registerOutParameter(1, java.sql.Types.INTEGER);
cS.setString(2, muestraCC());
cS.setInt(3, sucursal.getCodi());
cS.setDouble(4, GestionaMenu.llegirDouble("Importe: "));
for (; !menuTipo;) {
String[] tipos = {"ABONO",
"CARGO"};
int menuImp = mCC.mostrarMenu(tipos);
switch (menuImp) {
case 0: {
cS.setString(5, "ABONO");
menuTipo = true;
break;
}
case 1: {
cS.setString(5, "CARGO");
menuTipo = true;
break;
}
}
}
cS.setString(6, GestionaMenu.llegirCadena("Concepto: "));
//ResultSet rs = cS.executeQuery();
cS.executeQuery();
cS.close();
return true;
}
/**
* Muestra el saldo que contiene la cuenta corriente.
*
* @param sucursal La sucursal a la que pertenece la cuenta corriente.
* @return El importe que contiene la cuenta corriente.
* @throws SQLException En el caso que haya fallado alguna sentencia a la
* base de datos.
* @throws CuentaCorrienteException En el caso que no haya ningúna cuenta
* corriente.
*/
public double mostrarSaldo(Sucursal sucursal) throws SQLException, CuentaCorrienteException {
try (Statement st = Conexion.conectar().createStatement()) {
String consultaSaldo = "SELECT IMPORTE_CC FROM CUENTA_CORRIENTE WHERE NUMERO_CC='" + muestraCC() + "' AND CODIGO_SCC=" + sucursal.getCodi();
ResultSet rs = st.executeQuery(consultaSaldo);
rs.next();
if (rs.getInt(1) == 0) {
throw new CuentaCorrienteException("ERROR: NO HAY CUENTA CORRIENTE");
} else {
return rs.getDouble(1);
}
//filas = st.executeUpdate(insertTitular);
}
}
}