diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index 046468f..6832777 100644 Binary files a/dist/Programa Caja.jar and b/dist/Programa Caja.jar differ diff --git a/src/danielcortes/xyz/controllers/EstadoResultadoController.java b/src/danielcortes/xyz/controllers/EstadoResultadoController.java index 62a8a32..f622cf1 100644 --- a/src/danielcortes/xyz/controllers/EstadoResultadoController.java +++ b/src/danielcortes/xyz/controllers/EstadoResultadoController.java @@ -14,6 +14,7 @@ import danielcortes.xyz.views.listeners.FocusLostListener; import java.nio.file.Path; import java.time.YearMonth; import java.time.format.DateTimeFormatter; +import java.util.Optional; public class EstadoResultadoController extends BaseController { @@ -138,9 +139,12 @@ public class EstadoResultadoController extends BaseController { private void updateMonth() { this.mes = this.view.getMonth(); - this.estadoResultado = DAOManager.getEstadoResultadoDAO().getByMonth(this.mes); - if (estadoResultado == null) { - this.estadoResultado = EstadoResultado.emptyEstadoResultado; + Optional optional = DAOManager.getEstadoResultadoDAO().getByMonth(this.mes); + + if (optional.isPresent()) { + this.estadoResultado = optional.get(); + } else { + this.estadoResultado = new EstadoResultado(); this.estadoResultado.setMes(this.mes); DAOManager.getEstadoResultadoDAO().insertEstadoResultado(estadoResultado); } diff --git a/src/danielcortes/xyz/controllers/IngresosController.java b/src/danielcortes/xyz/controllers/IngresosController.java index d006588..67fb344 100644 --- a/src/danielcortes/xyz/controllers/IngresosController.java +++ b/src/danielcortes/xyz/controllers/IngresosController.java @@ -93,7 +93,7 @@ public class IngresosController extends BaseController { private void fillIngresosTable() { IngresosTableModel ingresosTableModel = this.view.getIngresosTableModel(); ingresosTableModel.removeRows(); - for (Ingreso ingreso : DAOManager.getIngresoDAO().findByCaja(this.caja)) { + for (Ingreso ingreso : DAOManager.getIngresoDAO().getByCaja(this.caja)) { ingresosTableModel.addRow(ingreso); } } diff --git a/src/danielcortes/xyz/informes/InformeEstadoResultado.java b/src/danielcortes/xyz/informes/InformeEstadoResultado.java index 275930b..b09c7da 100644 --- a/src/danielcortes/xyz/informes/InformeEstadoResultado.java +++ b/src/danielcortes/xyz/informes/InformeEstadoResultado.java @@ -53,7 +53,7 @@ public class InformeEstadoResultado { this.mes = mes; this.saveFile = saveFile; - this.estadoResultado = DAOManager.getEstadoResultadoDAO().getByMonth(this.mes); + this.estadoResultado = DAOManager.getEstadoResultadoDAO().getByMonth(this.mes).orElse(EstadoResultado.EMPTY); this.wb = new HSSFWorkbook(); this.sheet = wb.createSheet(); diff --git a/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java b/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java index c6d803a..a27e8c2 100644 --- a/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java +++ b/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java @@ -4,27 +4,11 @@ import java.time.YearMonth; public class EstadoResultado { - public static final EstadoResultado emptyEstadoResultado; + public static final EstadoResultado EMPTY; static { - emptyEstadoResultado = new EstadoResultado(); - emptyEstadoResultado.costoVenta = 0; - emptyEstadoResultado.cuentaCorrienteBoleta = 0; - emptyEstadoResultado.cuentaCorrienteFactura = 0; - emptyEstadoResultado.cuentaCorrienteSinRespaldo = 0; - emptyEstadoResultado.remuneraciones = 0; - emptyEstadoResultado.finiquitos = 0; - emptyEstadoResultado.aguinaldo = 0; - emptyEstadoResultado.bonosPersonal = 0; - emptyEstadoResultado.honorariosContador = 0; - emptyEstadoResultado.arriendo = 0; - emptyEstadoResultado.agua = 0; - emptyEstadoResultado.luz = 0; - emptyEstadoResultado.gas = 0; - emptyEstadoResultado.telefono = 0; - emptyEstadoResultado.otroServicio = 0; - emptyEstadoResultado.ppm = 0d; - emptyEstadoResultado.ivaFavor = 0; + EMPTY = new EstadoResultado(); + EMPTY.setMes(YearMonth.of(0,1)); } private int id; diff --git a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java index 01afe90..97b9e3f 100644 --- a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java @@ -25,84 +25,41 @@ package danielcortes.xyz.models.ingreso; -import danielcortes.xyz.data.ConnectionHolder; import danielcortes.xyz.models.caja.Caja; -import danielcortes.xyz.models.caja.CajaDAO; -import danielcortes.xyz.models.caja.SQLiteCajaDAO; -import danielcortes.xyz.models.tipo_ingreso.SQLiteTipoIngresoDAO; import danielcortes.xyz.models.tipo_ingreso.TipoIngreso; -import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO; -import java.sql.ResultSet; -import java.sql.SQLException; import java.time.YearMonth; -import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.logging.Level; -import java.util.logging.Logger; -public abstract class IngresoDAO { +public interface IngresoDAO { + List getAll(); - private static final Logger LOGGER = Logger.getLogger(IngresoDAO.class.getName()); + List getByCaja(Caja caja); - protected ConnectionHolder connectionHolder; + Optional getById(int id); - public abstract List findAll(); + List getByTipoIngreso(TipoIngreso tipoIngreso); - public abstract List findByCaja(Caja caja); + int getTotalIngreso(Caja caja); - public abstract List findById(int id); + int getTotalIngresoMes(YearMonth mes); - public abstract List findByTipoIngreso(TipoIngreso tipoIngreso); + int getTotalExentasMes(YearMonth mes); - public abstract boolean insertIngreso(Ingreso ingreso); + int getTotalIngresoEnCajaPorTipo(Caja caja, TipoIngreso tipoIngreso); - public abstract boolean updateIngreso(Ingreso ingreso); + Optional getPrimerNroInicialDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso); - public abstract boolean deleteIngreso(Ingreso ingreso); + Optional getUltimoNroFinalDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso); - public abstract int getTotalIngreso(Caja caja); + Optional getPrimerNroZInicialDeCaja(Caja caja); - public abstract int getTotalIngresoMes(YearMonth mes); + Optional getUltimoNroZFinalDeCaja(Caja caja); - public abstract int getTotalExentasMes(YearMonth mes); + void insertIngreso(Ingreso ingreso); - public abstract int getTotalIngresoEnCajaPorTipo(Caja caja, TipoIngreso tipoIngreso); + void updateIngreso(Ingreso ingreso); - public abstract Optional getPrimerNroInicialDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso); + void deleteIngreso(Ingreso ingreso); - public abstract Optional getUltimoNroFinalDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso); - - public abstract Optional getPrimerNroZInicialDeCaja(Caja caja); - - public abstract Optional getUltimoNroZFinalDeCaja(Caja caja); - - List ingresosFromResultSet(ResultSet rs) throws SQLException { - ArrayList ingresosList = new ArrayList<>(); - while (rs.next()) { - int tipoIngresoId = rs.getInt("tipo_ingreso_id"); - TipoIngresoDAO tipoEgresoDAO = new SQLiteTipoIngresoDAO(); - TipoIngreso tipoIngreso = tipoEgresoDAO.findById(tipoIngresoId).get(0); - - int cajaId = rs.getInt("caja_id"); - CajaDAO cajaDAO = new SQLiteCajaDAO(); - Caja caja = cajaDAO.getById(cajaId).get(); - - Ingreso ingreso = new Ingreso(); - - ingreso.setId(rs.getInt("id")); - ingreso.setValor(rs.getInt("valor")); - ingreso.setNroZInicial(rs.getString("nro_z_inicial")); - ingreso.setNroZFinal(rs.getString("nro_z_final")); - ingreso.setNroInicial(rs.getString("nro_inicial")); - ingreso.setNroFinal(rs.getString("nro_final")); - ingreso.setTipoIngreso(tipoIngreso); - ingreso.setCaja(caja); - - LOGGER.log(Level.FINER, "Se a creado: {0}", ingreso); - - ingresosList.add(ingreso); - } - return ingresosList; - } } diff --git a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java index 5546e30..5a3f519 100644 --- a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java @@ -24,9 +24,13 @@ package danielcortes.xyz.models.ingreso; +import danielcortes.xyz.data.ConnectionHolder; +import danielcortes.xyz.data.DAOManager; import danielcortes.xyz.data.SQLiteConnectionHolder; import danielcortes.xyz.models.caja.Caja; +import danielcortes.xyz.models.caja.CajaDAO; import danielcortes.xyz.models.tipo_ingreso.TipoIngreso; +import danielcortes.xyz.models.tipo_ingreso.TipoIngresoDAO; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -39,24 +43,46 @@ import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; -public class SQLiteIngresoDAO extends IngresoDAO { +public class SQLiteIngresoDAO implements IngresoDAO { private static final Logger LOGGER = Logger.getLogger(SQLiteIngresoDAO.class.getName()); + private ConnectionHolder connectionHolder; public SQLiteIngresoDAO() { this.connectionHolder = new SQLiteConnectionHolder(); } @Override - public List findAll() { + public List getAll() { List ingresosList = new ArrayList<>(); String query = "select * from ingresos"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { try (ResultSet rs = ps.executeQuery()) { - LOGGER.log(Level.FINE, "QUERY: {0}", query); - ingresosList = this.ingresosFromResultSet(rs); + TipoIngresoDAO tipoIngresoDAO = DAOManager.getTipoIngresoDAO(); + CajaDAO cajaDAO = DAOManager.getCajaDAO(); + + while (rs.next()) { + TipoIngreso tipoIngreso = tipoIngresoDAO.findById(rs.getInt("tipo_ingreso_id")).get(0); + + //Confio en que la base de datos me dara un id existente + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); + + Ingreso ingreso = new Ingreso(); + + ingreso.setId(rs.getInt("id")); + ingreso.setValor(rs.getInt("valor")); + ingreso.setNroZInicial(rs.getString("nro_z_inicial")); + ingreso.setNroZFinal(rs.getString("nro_z_final")); + ingreso.setNroInicial(rs.getString("nro_inicial")); + ingreso.setNroFinal(rs.getString("nro_final")); + ingreso.setTipoIngreso(tipoIngreso); + ingreso.setCaja(caja); + + ingresosList.add(ingreso); + } } } } catch (SQLException e) { @@ -67,15 +93,34 @@ public class SQLiteIngresoDAO extends IngresoDAO { } @Override - public List findByCaja(Caja caja) { + public List getByCaja(Caja caja) { List ingresosList = new ArrayList<>(); + if (Caja.EMPTY == caja) { + return ingresosList; + } + String query = "select * from ingresos where caja_id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); try (ResultSet rs = ps.executeQuery()) { - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); - ingresosList = this.ingresosFromResultSet(rs); + TipoIngresoDAO tipoIngresoDAO = DAOManager.getTipoIngresoDAO(); + while (rs.next()) { + TipoIngreso tipoIngreso = tipoIngresoDAO.findById(rs.getInt("tipo_ingreso_id")).get(0); + + Ingreso ingreso = new Ingreso(); + + ingreso.setId(rs.getInt("id")); + ingreso.setValor(rs.getInt("valor")); + ingreso.setNroZInicial(rs.getString("nro_z_inicial")); + ingreso.setNroZFinal(rs.getString("nro_z_final")); + ingreso.setNroInicial(rs.getString("nro_inicial")); + ingreso.setNroFinal(rs.getString("nro_final")); + ingreso.setTipoIngreso(tipoIngreso); + ingreso.setCaja(caja); + + ingresosList.add(ingreso); + } } } } catch (SQLException e) { @@ -85,35 +130,71 @@ public class SQLiteIngresoDAO extends IngresoDAO { } @Override - public List findById(int id) { - List ingresosList = new ArrayList<>(); + public Optional getById(int id) { + Ingreso ingreso = null; String query = "select * from ingresos where id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, id); try (ResultSet rs = ps.executeQuery()) { - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); + TipoIngresoDAO tipoIngresoDAO = DAOManager.getTipoIngresoDAO(); + CajaDAO cajaDAO = DAOManager.getCajaDAO(); - ingresosList = this.ingresosFromResultSet(rs); + if (rs.next()) { + TipoIngreso tipoIngreso = tipoIngresoDAO.findById(rs.getInt("tipo_ingreso_id")).get(0); + + //Confio en que la base de datos me dara un id existente + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); + + ingreso = new Ingreso(); + + ingreso.setId(rs.getInt("id")); + ingreso.setValor(rs.getInt("valor")); + ingreso.setNroZInicial(rs.getString("nro_z_inicial")); + ingreso.setNroZFinal(rs.getString("nro_z_final")); + ingreso.setNroInicial(rs.getString("nro_inicial")); + ingreso.setNroFinal(rs.getString("nro_final")); + ingreso.setTipoIngreso(tipoIngreso); + ingreso.setCaja(caja); + } } } - } catch (SQLException e) { + } catch ( + SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } - return ingresosList; + return Optional.ofNullable(ingreso); } @Override - public List findByTipoIngreso(TipoIngreso tipoIngreso) { + public List getByTipoIngreso(TipoIngreso tipoIngreso) { List ingresosList = new ArrayList<>(); String query = "select ingresos.* from ingresos inner join tipos_ingreso on (ingresos.tipo_ingreso_id = tipos_ingreso.id) where ingresos.tipo_ingreso_id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, tipoIngreso.getId()); try (ResultSet rs = ps.executeQuery()) { - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", - new Object[]{query, tipoIngreso.getId()}); - ingresosList = this.ingresosFromResultSet(rs); + CajaDAO cajaDAO = DAOManager.getCajaDAO(); + + while (rs.next()) { + //Confio en que la base de datos me dara un id existente + @SuppressWarnings("OptionalGetWithoutIsPresent") + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); + + Ingreso ingreso = new Ingreso(); + + ingreso.setId(rs.getInt("id")); + ingreso.setValor(rs.getInt("valor")); + ingreso.setNroZInicial(rs.getString("nro_z_inicial")); + ingreso.setNroZFinal(rs.getString("nro_z_final")); + ingreso.setNroInicial(rs.getString("nro_inicial")); + ingreso.setNroFinal(rs.getString("nro_final")); + ingreso.setTipoIngreso(tipoIngreso); + ingreso.setCaja(caja); + + ingresosList.add(ingreso); + } } } } catch (SQLException e) { @@ -122,101 +203,19 @@ public class SQLiteIngresoDAO extends IngresoDAO { return ingresosList; } - @Override - public boolean insertIngreso(Ingreso ingreso) { - int updates; - String query = "insert into ingresos (valor, nro_z_inicial, nro_z_final, nro_inicial, nro_final, tipo_ingreso_id, caja_id) values (?,?,?,?,?,?,?)"; - try (Connection conn = connectionHolder.getConnection()) { - try (PreparedStatement ps = conn.prepareStatement(query)) { - ps.setInt(1, ingreso.getValor()); - ps.setString(2, ingreso.getNroZInicial()); - ps.setString(3, ingreso.getNroZFinal()); - ps.setString(4, ingreso.getNroInicial()); - ps.setString(5, ingreso.getNroFinal()); - ps.setInt(6, ingreso.getTipoIngreso().getId()); - ps.setInt(7, ingreso.getCaja().getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2},{3},{4},{5},{6},{7}] | updates: {8}", - new Object[]{query, ingreso.getValor(), ingreso.getNroZInicial(), - ingreso.getNroZFinal(), - ingreso.getNroInicial(), ingreso.getNroFinal(), ingreso.getTipoIngreso().getId(), - ingreso.getCaja().getId(), updates}); - } - - try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) { - try (ResultSet rs = ps.executeQuery()) { - rs.next(); - ingreso.setId(rs.getInt(1)); - } - } - } catch (SQLException e) { - LOGGER.log(Level.SEVERE, e.toString(), e); - return false; - } - return updates > 0; - } - - @Override - public boolean updateIngreso(Ingreso ingreso) { - int updates; - String query = "update ingresos set valor = ?, nro_z_inicial = ?, nro_z_final = ?, nro_inicial = ?, nro_final = ?, tipo_ingreso_id = ?, caja_id = ? where id = ?"; - try (Connection conn = connectionHolder.getConnection()) { - try (PreparedStatement ps = conn.prepareStatement(query)) { - ps.setInt(1, ingreso.getValor()); - ps.setString(2, ingreso.getNroZInicial()); - ps.setString(3, ingreso.getNroZFinal()); - ps.setString(4, ingreso.getNroInicial()); - ps.setString(5, ingreso.getNroFinal()); - ps.setInt(6, ingreso.getTipoIngreso().getId()); - ps.setInt(7, ingreso.getCaja().getId()); - ps.setInt(8, ingreso.getId()); - updates = ps.executeUpdate(); - - LOGGER - .log(Level.FINE, - "QUERY: {0} | values: [{1},{2},{3},{4},{5},{6},{7},{8}] | updates: {9}", - new Object[]{query, ingreso.getValor(), ingreso.getNroZInicial(), - ingreso.getNroZFinal(), ingreso.getNroInicial(), ingreso.getNroFinal(), - ingreso.getTipoIngreso().getId(), ingreso.getCaja().getId(), ingreso.getId(), - updates}); - } - } catch (SQLException e) { - LOGGER.log(Level.SEVERE, e.toString(), e); - return false; - } - return updates > 0; - } - - @Override - public boolean deleteIngreso(Ingreso ingreso) { - int updates; - String query = "delete from ingresos where id = ?"; - try (Connection conn = connectionHolder.getConnection()) { - try (PreparedStatement ps = conn.prepareStatement(query)) { - ps.setInt(1, ingreso.getId()); - updates = ps.executeUpdate(); - - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", - new Object[]{query, ingreso.getId(), updates}); - - } - } catch (SQLException e) { - LOGGER.log(Level.SEVERE, e.toString(), e); - return false; - } - return updates > 0; - } - @Override public int getTotalIngreso(Caja caja) { int total = 0; + if (Caja.EMPTY == caja) { + return total; + } + String query = "select sum(valor) from ingresos where caja_id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()){ + if (rs.next()) { total = rs.getInt(1); } } @@ -240,7 +239,7 @@ public class SQLiteIngresoDAO extends IngresoDAO { ps.setString(2, end.toString()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()){ + if (rs.next()) { total = rs.getInt(1); } } @@ -263,7 +262,7 @@ public class SQLiteIngresoDAO extends IngresoDAO { ps.setString(1, start.toString()); ps.setString(2, end.toString()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()){ + if (rs.next()) { total = rs.getInt(1); } } @@ -276,18 +275,17 @@ public class SQLiteIngresoDAO extends IngresoDAO { @Override public int getTotalIngresoEnCajaPorTipo(Caja caja, TipoIngreso tipoIngreso) { - if (caja == Caja.EMPTY) { - return 0; - } - int total = 0; + if (caja == Caja.EMPTY) { + return total; + } String query = "select sum(valor) from ingresos where caja_id = ? and tipo_ingreso_id = ?"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); ps.setInt(2, tipoIngreso.getId()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()){ + if (rs.next()) { total = rs.getInt(1); } } @@ -300,19 +298,19 @@ public class SQLiteIngresoDAO extends IngresoDAO { @Override public Optional getPrimerNroInicialDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso) { - if (caja == Caja.EMPTY) { - return Optional.of("0"); - } - String nroInicial = null; + if (caja == Caja.EMPTY) { + return Optional.ofNullable(nroInicial); + } + String query = "select nro_inicial from ingresos where caja_id = ? and tipo_ingreso_id = ? order by nro_inicial asc limit 1"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); ps.setInt(2, tipoIngreso.getId()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()) { + if (rs.next()) { nroInicial = rs.getString(1); } } @@ -325,17 +323,18 @@ public class SQLiteIngresoDAO extends IngresoDAO { @Override public Optional getUltimoNroFinalDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso) { - if (caja == Caja.EMPTY) { - return Optional.of("0"); - } String nroFinal = null; + if (caja == Caja.EMPTY) { + return Optional.ofNullable(nroFinal); + } + String query = "select nro_final from ingresos where caja_id = ? and tipo_ingreso_id = ? order by nro_inicial desc limit 1"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); ps.setInt(2, tipoIngreso.getId()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()){ + if (rs.next()) { nroFinal = rs.getString(1); } } @@ -349,16 +348,18 @@ public class SQLiteIngresoDAO extends IngresoDAO { @Override public Optional getPrimerNroZInicialDeCaja(Caja caja) { - if (caja == Caja.EMPTY) { - return Optional.of("0"); - } String nroZInicial = null; + + if (caja == Caja.EMPTY) { + return Optional.ofNullable(nroZInicial); + } + String query = "select nro_z_inicial from ingresos where caja_id = ? and tipo_ingreso_id = 1 order by nro_inicial desc limit 1"; try (Connection conn = connectionHolder.getConnection()) { try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); try (ResultSet rs = ps.executeQuery()) { - if(rs.next()){ + if (rs.next()) { nroZInicial = rs.getString(1); } } @@ -372,16 +373,16 @@ public class SQLiteIngresoDAO extends IngresoDAO { @Override public Optional getUltimoNroZFinalDeCaja(Caja caja) { - if (caja == Caja.EMPTY) { - return Optional.of("0"); - } String nroZFinal = null; + if (caja == Caja.EMPTY) { + return Optional.ofNullable(nroZFinal); + } String query = "select nro_z_final from ingresos where caja_id = ? and tipo_ingreso_id = 1 order by nro_inicial desc limit 1"; try (Connection conn = connectionHolder.getConnection()) { - try(PreparedStatement ps = conn.prepareStatement(query)){ + try (PreparedStatement ps = conn.prepareStatement(query)) { ps.setInt(1, caja.getId()); - try(ResultSet rs = ps.executeQuery()){ - if(rs.next()){ + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { nroZFinal = rs.getString(1); } } @@ -393,4 +394,62 @@ public class SQLiteIngresoDAO extends IngresoDAO { return Optional.ofNullable(nroZFinal); } + @Override + public void insertIngreso(Ingreso ingreso) { + String query = "insert into ingresos (valor, nro_z_inicial, nro_z_final, nro_inicial, nro_final, tipo_ingreso_id, caja_id) values (?,?,?,?,?,?,?)"; + try (Connection conn = connectionHolder.getConnection()) { + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, ingreso.getValor()); + ps.setString(2, ingreso.getNroZInicial()); + ps.setString(3, ingreso.getNroZFinal()); + ps.setString(4, ingreso.getNroInicial()); + ps.setString(5, ingreso.getNroFinal()); + ps.setInt(6, ingreso.getTipoIngreso().getId()); + ps.setInt(7, ingreso.getCaja().getId()); + ps.executeUpdate(); + } + + try (PreparedStatement ps = conn.prepareStatement("select last_insert_rowid()")) { + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + ingreso.setId(rs.getInt(1)); + } + } + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + } + + @Override + public void updateIngreso(Ingreso ingreso) { + String query = "update ingresos set valor = ?, nro_z_inicial = ?, nro_z_final = ?, nro_inicial = ?, nro_final = ?, tipo_ingreso_id = ?, caja_id = ? where id = ?"; + try (Connection conn = connectionHolder.getConnection()) { + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, ingreso.getValor()); + ps.setString(2, ingreso.getNroZInicial()); + ps.setString(3, ingreso.getNroZFinal()); + ps.setString(4, ingreso.getNroInicial()); + ps.setString(5, ingreso.getNroFinal()); + ps.setInt(6, ingreso.getTipoIngreso().getId()); + ps.setInt(7, ingreso.getCaja().getId()); + ps.setInt(8, ingreso.getId()); + ps.executeUpdate(); + } + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + } + + @Override + public void deleteIngreso(Ingreso ingreso) { + String query = "delete from ingresos where id = ?"; + try (Connection conn = connectionHolder.getConnection()) { + try (PreparedStatement ps = conn.prepareStatement(query)) { + ps.setInt(1, ingreso.getId()); + ps.executeUpdate(); + } + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + } }