diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index 8d96e70..67ba353 100644 Binary files a/dist/Programa Caja.jar and b/dist/Programa Caja.jar differ diff --git a/src/danielcortes/xyz/controllers/CajasController.java b/src/danielcortes/xyz/controllers/CajasController.java index 8157740..431cc28 100644 --- a/src/danielcortes/xyz/controllers/CajasController.java +++ b/src/danielcortes/xyz/controllers/CajasController.java @@ -103,21 +103,20 @@ public class CajasController { */ private void updateCaja() { LocalDate selectedDate = this.view.getDatePicker().getDate(); - Caja caja = DAOManager.getCajaDAO().findByFecha(selectedDate); - - if (caja == null) { - caja = new Caja(); - caja.setFecha(selectedDate); - DAOManager.getCajaDAO().insertCaja(caja); + Caja caja = DAOManager.getCajaDAO().getByFecha(selectedDate).orElseGet(() -> { + Caja c = new Caja(); + c.setFecha(selectedDate); + DAOManager.getCajaDAO().insert(c); Efectivo efectivo = new Efectivo(); - efectivo.setCaja(caja); + efectivo.setCaja(c); DAOManager.getEfectivoDAO().insertDefaultEfectivo(efectivo); Documentos documentos = new Documentos(); - documentos.setCaja(caja); + documentos.setCaja(c); DAOManager.getDocumentosDAO().insertDefaultDocumentos(documentos); - } + return c; + }); this.ingresosController.updateCaja(caja); this.egresosController.updateCaja(caja); diff --git a/src/danielcortes/xyz/controllers/CalcularFondoController.java b/src/danielcortes/xyz/controllers/CalcularFondoController.java index e0ef822..c2cff98 100644 --- a/src/danielcortes/xyz/controllers/CalcularFondoController.java +++ b/src/danielcortes/xyz/controllers/CalcularFondoController.java @@ -48,7 +48,7 @@ public class CalcularFondoController extends BaseController{ this.view.getSumaField().setValue(suma); this.view.getDepositoField().setValue(suma - this.caja.getFondo()); - DAOManager.getCajaDAO().updateCaja(this.caja); + DAOManager.getCajaDAO().update(this.caja); } private void setupViewEvents() { diff --git a/src/danielcortes/xyz/controllers/InformesSideBarController.java b/src/danielcortes/xyz/controllers/InformesSideBarController.java index 5e93196..c35c91b 100644 --- a/src/danielcortes/xyz/controllers/InformesSideBarController.java +++ b/src/danielcortes/xyz/controllers/InformesSideBarController.java @@ -36,7 +36,7 @@ import danielcortes.xyz.views.dialogs.TipoEgresoSelectDialog; import danielcortes.xyz.views.dialogs.XLSFileChooser; import java.nio.file.Path; -import java.time.LocalDate; +import java.time.YearMonth; import java.time.format.DateTimeFormatter; public class InformesSideBarController { @@ -57,12 +57,12 @@ public class InformesSideBarController { } private void generarInformeLibroDeVentasListener() { - LocalDate month = new MonthSelectDialog().execute(); + YearMonth month = new MonthSelectDialog().execute(); if (month == null) { return; } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM YYYY"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM yyyy"); String formatedName = month.format(formatter); String capitalized = StringUtils.capitalize(formatedName); @@ -84,7 +84,7 @@ public class InformesSideBarController { return; } - LocalDate month = new MonthSelectDialog().execute(); + YearMonth month = new MonthSelectDialog().execute(); if (month == null) { return; } diff --git a/src/danielcortes/xyz/informes/InformeEgresos.java b/src/danielcortes/xyz/informes/InformeEgresos.java index f089f2b..65cf1a6 100644 --- a/src/danielcortes/xyz/informes/InformeEgresos.java +++ b/src/danielcortes/xyz/informes/InformeEgresos.java @@ -37,7 +37,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; -import java.time.LocalDate; +import java.time.YearMonth; import java.time.ZoneId; import java.util.ArrayList; import java.util.Date; @@ -70,9 +70,9 @@ public class InformeEgresos { private CreationHelper createHelper; private HashMap styles; - public InformeEgresos(int tipoEgresoId, LocalDate date, Path saveFile) { - new SQLiteCajaDAO().createCajasForMonth(date); - this.informe = new SQLiteInformeEgresosContentDAO().getInformeEgresosFactuasMateriaPrima(date, tipoEgresoId); + public InformeEgresos(int tipoEgresoId, YearMonth mes, Path saveFile) { + new SQLiteCajaDAO().createCajasForMonth(mes); + this.informe = new SQLiteInformeEgresosContentDAO().getInformeEgresosFactuasMateriaPrima(mes, tipoEgresoId); this.saveFile = saveFile; this.wb = new HSSFWorkbook(); diff --git a/src/danielcortes/xyz/informes/InformeLibroDeVentas.java b/src/danielcortes/xyz/informes/InformeLibroDeVentas.java index 6d1cf4f..a56009a 100644 --- a/src/danielcortes/xyz/informes/InformeLibroDeVentas.java +++ b/src/danielcortes/xyz/informes/InformeLibroDeVentas.java @@ -36,7 +36,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; -import java.time.LocalDate; +import java.time.YearMonth; import java.time.ZoneId; import java.util.*; @@ -77,10 +77,10 @@ public class InformeLibroDeVentas { private CreationHelper createHelper; private HashMap styles; - public InformeLibroDeVentas(LocalDate date, Path saveFile) { - new SQLiteCajaDAO().createCajasForMonth(date); + public InformeLibroDeVentas(YearMonth mes, Path saveFile) { + new SQLiteCajaDAO().createCajasForMonth(mes); - this.informe = new ArrayList<>(DAOManager.getLibroDeVentasContentDAO().getInformeMensual(date)); + this.informe = new ArrayList<>(DAOManager.getLibroDeVentasContentDAO().getInformeMensual(mes)); this.saveFile = saveFile; this.dataRows = new ArrayList<>(); diff --git a/src/danielcortes/xyz/models/caja/CajaDAO.java b/src/danielcortes/xyz/models/caja/CajaDAO.java index bf2ff99..664e08b 100644 --- a/src/danielcortes/xyz/models/caja/CajaDAO.java +++ b/src/danielcortes/xyz/models/caja/CajaDAO.java @@ -24,44 +24,24 @@ package danielcortes.xyz.models.caja; -import danielcortes.xyz.data.ConnectionHolder; - -import java.sql.ResultSet; -import java.sql.SQLException; import java.time.LocalDate; -import java.util.ArrayList; +import java.time.YearMonth; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.util.Optional; -public abstract class CajaDAO { - private static final Logger LOGGER = Logger.getLogger(CajaDAO.class.getName()); +public interface CajaDAO { + List getAll(); - protected ConnectionHolder connectionHolder; + Optional getById(int id); - public abstract List findAll(); + Optional getByFecha(LocalDate fecha); - public abstract Caja findById(int id); + void insert(Caja caja); - public abstract Caja findByFecha(LocalDate fecha); + void insert(List cajas); - public abstract boolean insertCaja(Caja caja); + void update(Caja caja); - public abstract boolean updateCaja(Caja caja); + void createCajasForMonth(YearMonth month); - public abstract void createCajasForMonth(LocalDate month); - - List cajasFromResultSet(ResultSet rs) throws SQLException { - List cajaList = new ArrayList<>(); - while (rs.next()) { - Caja caja = new Caja(); - caja.setId(rs.getInt("id")); - caja.setFecha(LocalDate.parse(rs.getString("fecha"))); - caja.setFondo(rs.getInt("fondo")); - cajaList.add(caja); - - LOGGER.log(Level.FINER, "Se a creo: {0}", caja); - } - return cajaList; - } } diff --git a/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java b/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java index b5e20bd..cbecdcd 100644 --- a/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java +++ b/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java @@ -24,33 +24,34 @@ package danielcortes.xyz.models.caja; +import danielcortes.xyz.data.DAOManager; import danielcortes.xyz.data.SQLiteConnectionHolder; import danielcortes.xyz.models.documentos.Documentos; -import danielcortes.xyz.models.documentos.DocumentosDAO; -import danielcortes.xyz.models.documentos.SQLiteDocumentosDAO; import danielcortes.xyz.models.efectivo.Efectivo; -import danielcortes.xyz.models.efectivo.EfectivoDAO; -import danielcortes.xyz.models.efectivo.SQLiteEfectivoDAO; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; +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 class SQLiteCajaDAO extends CajaDAO { +public class SQLiteCajaDAO implements CajaDAO { private static final Logger LOGGER = Logger.getLogger(SQLiteCajaDAO.class.getName()); + private SQLiteConnectionHolder connectionHolder; + public SQLiteCajaDAO() { this.connectionHolder = new SQLiteConnectionHolder(); } @Override - public List findAll() { + public List getAll() { List cajaList = new ArrayList<>(); try (Connection conn = connectionHolder.getConnection()) { String query = "select * from caja"; @@ -59,7 +60,13 @@ public class SQLiteCajaDAO extends CajaDAO { LOGGER.log(Level.FINE, "QUERY: {0}", new Object[]{query}); - cajaList = this.cajasFromResultSet(rs); + while (rs.next()) { + Caja caja = new Caja(); + caja.setId(rs.getInt("id")); + caja.setFecha(LocalDate.parse(rs.getString("fecha"))); + caja.setFondo(rs.getInt("fondo")); + cajaList.add(caja); + } rs.close(); ps.close(); @@ -71,7 +78,7 @@ public class SQLiteCajaDAO extends CajaDAO { } @Override - public Caja findById(int id) { + public Optional getById(int id) { Caja caja = null; try (Connection conn = connectionHolder.getConnection()) { String query = "select * from caja where id = ?"; @@ -81,18 +88,23 @@ public class SQLiteCajaDAO extends CajaDAO { LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); - caja = this.cajasFromResultSet(rs).get(0); + while (rs.next()) { + caja = new Caja(); + caja.setId(rs.getInt("id")); + caja.setFecha(LocalDate.parse(rs.getString("fecha"))); + caja.setFondo(rs.getInt("fondo")); + } rs.close(); ps.close(); } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } - return caja; + return Optional.ofNullable(caja); } @Override - public Caja findByFecha(LocalDate fecha) { + public Optional getByFecha(LocalDate fecha) { Caja caja = null; try (Connection conn = connectionHolder.getConnection()) { String query = "select * from caja where fecha = ?"; @@ -103,10 +115,11 @@ public class SQLiteCajaDAO extends CajaDAO { LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, fecha}); - List cajaList = this.cajasFromResultSet(rs); - - if (cajaList.size() > 0) { - caja = cajaList.get(0); + while (rs.next()) { + caja = new Caja(); + caja.setId(rs.getInt("id")); + caja.setFecha(LocalDate.parse(rs.getString("fecha"))); + caja.setFondo(rs.getInt("fondo")); } rs.close(); @@ -114,20 +127,19 @@ public class SQLiteCajaDAO extends CajaDAO { } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); } - return caja; + return Optional.ofNullable(caja); } @Override - public boolean insertCaja(Caja caja) { - int updates; + public void insert(Caja caja) { try (Connection conn = connectionHolder.getConnection()) { String query = "insert into caja (fecha, fondo) values (?, ?)"; PreparedStatement ps = conn.prepareStatement(query); ps.setString(1, caja.getFecha().toString()); ps.setInt(2, caja.getFondo()); - updates = ps.executeUpdate(); + ps.executeUpdate(); - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2} | updates: {3}", new Object[]{query, caja.getFecha(), caja.getFondo(), updates}); + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2}", new Object[]{query, caja.getFecha(), caja.getFondo()}); ps.close(); @@ -144,65 +156,72 @@ public class SQLiteCajaDAO extends CajaDAO { ps.close(); } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override - public boolean updateCaja(Caja caja) { - int updates; + public void insert(List cajas){ + String query = "insert into caja (fecha, fondo) values (?, ?)"; + try (Connection conn = connectionHolder.getConnection();PreparedStatement ps = conn.prepareStatement(query)) { + for(Caja caja: cajas){ + ps.setString(1, caja.getFecha().toString()); + ps.setInt(2, caja.getFondo()); + ps.addBatch(); + } + ps.executeBatch(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + } + + @Override + public void update(Caja caja) { try (Connection conn = connectionHolder.getConnection()) { String query = "update caja set fecha = ?, fondo = ? where id = ?"; PreparedStatement ps = conn.prepareStatement(query); ps.setString(1, caja.getFecha().toString()); ps.setInt(2, caja.getFondo()); ps.setInt(3, caja.getId()); - updates = ps.executeUpdate(); + ps.executeUpdate(); - LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2}, {3} | updates: {4}", new Object[]{query, caja.getFecha(), caja.getFondo(), caja.getId(), updates}); + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2}, {3}", new Object[]{query, caja.getFecha(), caja.getFondo(), caja.getId()}); ps.close(); } catch (SQLException e) { LOGGER.log(Level.SEVERE, e.toString(), e); - return false; } - return updates > 0; } @Override - public void createCajasForMonth(LocalDate month) { - LocalDate date = month.withDayOfMonth(1); - LocalDate endDate = date.withDayOfMonth(date.lengthOfMonth()).plusDays(1); - int count = 0; + public void createCajasForMonth(YearMonth mes) { + LocalDate startDate = mes.atDay(1); + LocalDate endDatePlusOne = mes.atEndOfMonth().plusDays(1); + List cajas = new ArrayList<>(); - LOGGER.log(Level.FINE, "Se intentara crear las cajas no existentes para las fechas entre {0} y {1}", new Object[]{date, endDate}); + while (startDate.isBefore(endDatePlusOne)) { + if (this.getByFecha(startDate).isPresent()){ + startDate = startDate.plusDays(1); + }else{ + Caja caja = new Caja(); + caja.setFecha(startDate); + cajas.add(caja); - while (date.isBefore(endDate)) { - if (this.findByFecha(date) != null) { - date = date.plusDays(1); - continue; + startDate = startDate.plusDays(1); } - - Caja caja = new Caja(); - caja.setFecha(date); - this.insertCaja(caja); - - Efectivo efectivo = new Efectivo(); - EfectivoDAO efectivoDAO = new SQLiteEfectivoDAO(); - efectivo.setCaja(caja); - efectivoDAO.insertDefaultEfectivo(efectivo); - - Documentos documentos = new Documentos(); - DocumentosDAO documentosDAO = new SQLiteDocumentosDAO(); - documentos.setCaja(caja); - documentosDAO.insertDefaultDocumentos(documentos); - - date = date.plusDays(1); - count++; } - LOGGER.log(Level.FINE, "Terminado de intentar crear las cajas y se crearon {2}", new Object[]{date, endDate, count}); + this.insert(cajas); + + for(Caja caja: cajas){ + Efectivo efectivo = new Efectivo(); + efectivo.setCaja(caja); + DAOManager.getEfectivoDAO().insertDefaultEfectivo(efectivo); + + Documentos documentos = new Documentos(); + documentos.setCaja(caja); + DAOManager.getDocumentosDAO().insertDefaultDocumentos(documentos); + + } } } diff --git a/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java b/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java index 654692f..982e8ab 100644 --- a/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java +++ b/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java @@ -54,11 +54,11 @@ public abstract class CalculoFondoDAO { public abstract int getTotalCalculoFondo(Caja caja); - protected List cajasFromResultSet(ResultSet rs) throws SQLException { + protected List calculoFondoFromResultSet(ResultSet rs) throws SQLException { List calculoFondoList = new ArrayList<>(); while (rs.next()) { int caja_id = rs.getInt("caja_id"); - Caja caja = new SQLiteCajaDAO().findById(caja_id); + Caja caja = new SQLiteCajaDAO().getById(caja_id).get(); CalculoFondo calculoFondo = new CalculoFondo(); calculoFondo.setId(rs.getInt("id")); calculoFondo.setValor(rs.getInt("valor")); diff --git a/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java b/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java index 4545a3f..f23ce7b 100644 --- a/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java +++ b/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java @@ -53,7 +53,7 @@ public class SQLiteCalculoFondoDAO extends CalculoFondoDAO { LOGGER.log(Level.FINE, "QUERY: {0}", query); - calculoFondoList = this.cajasFromResultSet(rs); + calculoFondoList = this.calculoFondoFromResultSet(rs); rs.close(); ps.close(); @@ -74,7 +74,7 @@ public class SQLiteCalculoFondoDAO extends CalculoFondoDAO { LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, caja.getId()}); - calculoFondoList = this.cajasFromResultSet(rs); + calculoFondoList = this.calculoFondoFromResultSet(rs); rs.close(); ps.close(); @@ -95,7 +95,7 @@ public class SQLiteCalculoFondoDAO extends CalculoFondoDAO { LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); - calculoFondo = this.cajasFromResultSet(rs).get(0); + calculoFondo = this.calculoFondoFromResultSet(rs).get(0); rs.close(); ps.close(); diff --git a/src/danielcortes/xyz/models/documentos/DocumentosDAO.java b/src/danielcortes/xyz/models/documentos/DocumentosDAO.java index fecd2c1..60d0519 100644 --- a/src/danielcortes/xyz/models/documentos/DocumentosDAO.java +++ b/src/danielcortes/xyz/models/documentos/DocumentosDAO.java @@ -61,7 +61,7 @@ public abstract class DocumentosDAO { List documentosList = new ArrayList<>(); while (rs.next()) { CajaDAO cajaDAO = new SQLiteCajaDAO(); - Caja caja = cajaDAO.findById(rs.getInt("caja_id")); + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); Documentos documentos = new Documentos(); documentos.setCaja(caja); diff --git a/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java b/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java index 70bfbfb..d6a2609 100644 --- a/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java +++ b/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java @@ -61,7 +61,7 @@ public abstract class EfectivoDAO { List efectivoList = new ArrayList<>(); while (rs.next()) { CajaDAO cajaDAO = new SQLiteCajaDAO(); - Caja caja = cajaDAO.findById(rs.getInt("caja_id")); + Caja caja = cajaDAO.getById(rs.getInt("caja_id")).get(); Efectivo efectivo = new Efectivo(); efectivo.setCaja(caja); diff --git a/src/danielcortes/xyz/models/egreso/EgresoDAO.java b/src/danielcortes/xyz/models/egreso/EgresoDAO.java index 2d26153..797771a 100644 --- a/src/danielcortes/xyz/models/egreso/EgresoDAO.java +++ b/src/danielcortes/xyz/models/egreso/EgresoDAO.java @@ -74,7 +74,7 @@ public abstract class EgresoDAO { int cajaId = rs.getInt("caja_id"); CajaDAO cajaDAO = new SQLiteCajaDAO(); - Caja caja = cajaDAO.findById(cajaId); + Caja caja = cajaDAO.getById(cajaId).get(); Egreso egreso = new Egreso(); diff --git a/src/danielcortes/xyz/models/informes/egresos/InformeEgresosContentDAO.java b/src/danielcortes/xyz/models/informes/egresos/InformeEgresosContentDAO.java index 87e3667..a2226c1 100644 --- a/src/danielcortes/xyz/models/informes/egresos/InformeEgresosContentDAO.java +++ b/src/danielcortes/xyz/models/informes/egresos/InformeEgresosContentDAO.java @@ -26,7 +26,7 @@ package danielcortes.xyz.models.informes.egresos; import danielcortes.xyz.data.ConnectionHolder; -import java.time.LocalDate; +import java.time.YearMonth; import java.util.List; public abstract class InformeEgresosContentDAO { @@ -35,8 +35,8 @@ public abstract class InformeEgresosContentDAO { /** * Genera el informe con nombre muy largo * - * @param month mes sobre el cual se quiere le informe + * @param mes mes sobre el cual se quiere le informe * @return lista del objeto que contiene los datos necesarios para el informe */ - public abstract List getInformeEgresosFactuasMateriaPrima(LocalDate month, int tipoEgresoId); + public abstract List getInformeEgresosFactuasMateriaPrima(YearMonth mes, int tipoEgresoId); } diff --git a/src/danielcortes/xyz/models/informes/egresos/SQLiteInformeEgresosContentDAO.java b/src/danielcortes/xyz/models/informes/egresos/SQLiteInformeEgresosContentDAO.java index 941be5f..e50594e 100644 --- a/src/danielcortes/xyz/models/informes/egresos/SQLiteInformeEgresosContentDAO.java +++ b/src/danielcortes/xyz/models/informes/egresos/SQLiteInformeEgresosContentDAO.java @@ -31,6 +31,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; +import java.time.YearMonth; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -46,7 +47,7 @@ public class SQLiteInformeEgresosContentDAO extends InformeEgresosContentDAO { } @Override - public List getInformeEgresosFactuasMateriaPrima(LocalDate date, int tipoEgresoId) { + public List getInformeEgresosFactuasMateriaPrima(YearMonth mes, int tipoEgresoId) { list = new ArrayList<>(); try (Connection conn = connectionHolder.getConnection()) { @@ -59,12 +60,12 @@ public class SQLiteInformeEgresosContentDAO extends InformeEgresosContentDAO { "order by caja.fecha;"; PreparedStatement ps = conn.prepareStatement(query); - ps.setString(1, date.withDayOfMonth(1).toString()); - ps.setString(2, date.withDayOfMonth(date.lengthOfMonth()).toString()); + ps.setString(1, mes.atDay(1).toString()); + ps.setString(2, mes.atEndOfMonth().toString()); ps.setInt(3, tipoEgresoId); ResultSet rs = ps.executeQuery(); - LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2},{3}]", new Object[]{date.withDayOfMonth(1), date.withDayOfMonth(date.lengthOfMonth()), tipoEgresoId}); + LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2},{3}]", new Object[]{mes.atDay(1), mes.atEndOfMonth(), tipoEgresoId}); this.fillInforme(rs); } catch (SQLException e) { diff --git a/src/danielcortes/xyz/models/informes/libro_de_ventas/InformeLibroDeVentasContentDAO.java b/src/danielcortes/xyz/models/informes/libro_de_ventas/InformeLibroDeVentasContentDAO.java index dccae99..67fb3ee 100644 --- a/src/danielcortes/xyz/models/informes/libro_de_ventas/InformeLibroDeVentasContentDAO.java +++ b/src/danielcortes/xyz/models/informes/libro_de_ventas/InformeLibroDeVentasContentDAO.java @@ -22,35 +22,11 @@ * SOFTWARE. */ -/* - * MIT License - * - * Copyright (c) 2018-2019 Daniel Cortes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - package danielcortes.xyz.models.informes.libro_de_ventas; import danielcortes.xyz.data.ConnectionHolder; -import java.time.LocalDate; +import java.time.YearMonth; import java.util.Collection; public abstract class InformeLibroDeVentasContentDAO { @@ -59,8 +35,8 @@ public abstract class InformeLibroDeVentasContentDAO { /** * Genera el contenido del informes mensual * - * @param date fecha que esta dentro del mes en el que se necesita el informes + * @param mes el que se necesita el informes * @return Lista con las columnas principales necesarias para el informes */ - public abstract Collection getInformeMensual(LocalDate date); + public abstract Collection getInformeMensual(YearMonth mes); } diff --git a/src/danielcortes/xyz/models/informes/libro_de_ventas/SQLiteInformeLibroDeVentasContentDAO.java b/src/danielcortes/xyz/models/informes/libro_de_ventas/SQLiteInformeLibroDeVentasContentDAO.java index 0276608..6dbe685 100644 --- a/src/danielcortes/xyz/models/informes/libro_de_ventas/SQLiteInformeLibroDeVentasContentDAO.java +++ b/src/danielcortes/xyz/models/informes/libro_de_ventas/SQLiteInformeLibroDeVentasContentDAO.java @@ -56,6 +56,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; +import java.time.YearMonth; import java.util.Collection; import java.util.Comparator; import java.util.HashMap; @@ -72,7 +73,7 @@ public class SQLiteInformeLibroDeVentasContentDAO extends InformeLibroDeVentasCo } @Override - public Collection getInformeMensual(LocalDate date) { + public Collection getInformeMensual(YearMonth date) { this.map = new HashMap<>(); try (Connection conn = connectionHolder.getConnection()) { String queryTotales = @@ -91,11 +92,11 @@ public class SQLiteInformeLibroDeVentasContentDAO extends InformeLibroDeVentasCo "where caja.fecha between date(?) and date(?) " + "group by caja.fecha;"; PreparedStatement ps = conn.prepareStatement(queryTotales); - ps.setString(1, date.withDayOfMonth(1).toString()); - ps.setString(2, date.withDayOfMonth(date.lengthOfMonth()).toString()); + ps.setString(1, date.atDay(1).toString()); + ps.setString(2, date.atEndOfMonth().toString()); ResultSet rs = ps.executeQuery(); - LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2}]", new Object[]{queryTotales, date.withDayOfMonth(1), date.withDayOfMonth(date.lengthOfMonth())}); + LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2}]", new Object[]{queryTotales, date.atDay(1), date.atEndOfMonth()}); this.fillTotalesFromResultSet(rs); @@ -111,11 +112,11 @@ public class SQLiteInformeLibroDeVentasContentDAO extends InformeLibroDeVentasCo "from caja join ingresos on (caja.id = ingresos.caja_id) " + "where caja.fecha between date(?) and date(?);"; ps = conn.prepareStatement(queryNumeros); - ps.setString(1, date.withDayOfMonth(1).toString()); - ps.setString(2, date.withDayOfMonth(date.lengthOfMonth()).toString()); + ps.setString(1, date.atDay(1).toString()); + ps.setString(2, date.atEndOfMonth().toString()); rs = ps.executeQuery(); - LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2}]", new Object[]{queryNumeros, date.withDayOfMonth(1), date.withDayOfMonth(date.lengthOfMonth())}); + LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2}]", new Object[]{queryNumeros, date.atDay(1), date.atEndOfMonth()}); this.fillBoletasFromResultSet(rs); diff --git a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java index b95c8c3..bb3ea67 100644 --- a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java @@ -76,7 +76,7 @@ public abstract class IngresoDAO { int cajaId = rs.getInt("caja_id"); CajaDAO cajaDAO = new SQLiteCajaDAO(); - Caja caja = cajaDAO.findById(cajaId); + Caja caja = cajaDAO.getById(cajaId).get(); Ingreso ingreso = new Ingreso(); diff --git a/src/danielcortes/xyz/views/dialogs/MonthSelectDialog.java b/src/danielcortes/xyz/views/dialogs/MonthSelectDialog.java index ecef30e..2c1b3d2 100644 --- a/src/danielcortes/xyz/views/dialogs/MonthSelectDialog.java +++ b/src/danielcortes/xyz/views/dialogs/MonthSelectDialog.java @@ -34,6 +34,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.time.LocalDate; +import java.time.YearMonth; import java.util.ArrayList; public class MonthSelectDialog extends JDialog { @@ -69,7 +70,7 @@ public class MonthSelectDialog extends JDialog { pack(); } - public LocalDate execute() { + public YearMonth execute() { setVisible(true); if (this.isAcepted()) { return this.getMonth(); @@ -92,12 +93,11 @@ public class MonthSelectDialog extends JDialog { return this.acepted; } - private LocalDate getMonth() { + private YearMonth getMonth() { int year = Integer.valueOf((String) yearSpinner.getValue()); int month = this.months.indexOf(this.monthCombo.getSelectedItem()) + 1; - LocalDate monthDate = LocalDate.of(year, month, 1); - return monthDate; + return YearMonth.of(year, month); }