From ea5bccdaba378cf6dfe3cf76a64ec90b877988ee Mon Sep 17 00:00:00 2001 From: Daniel Cortes Date: Fri, 15 Feb 2019 19:24:32 -0300 Subject: [PATCH] Se a cambiado la organizacion de las ventanas y se creo la vista de estado resultado junto con su modelo --- database/sqlite.sql | 27 +- dist/local-release/Programa Caja.jar | Bin 14002492 -> 14027106 bytes .../EstadoResultadoController.java | 281 +++++++ .../xyz/controllers/InformesController.java | 16 + .../xyz/controllers/MainController.java | 5 +- src/danielcortes/xyz/data/DAOManager.java | 8 + .../xyz/models/egreso/EgresoDAO.java | 3 + .../xyz/models/egreso/SQLiteEgresoDAO.java | 30 + .../estado_resultado/EstadoResultado.java | 201 +++++ .../estado_resultado/EstadoResultadoDAO.java | 55 ++ .../SQLiteEstadoResultadoDAO.java | 194 +++++ .../xyz/models/ingreso/IngresoDAO.java | 8 +- .../xyz/models/ingreso/SQLiteIngresoDAO.java | 54 ++ .../xyz/views/EstadoResultadoView.form | 770 ++++++++++++++++++ .../xyz/views/EstadoResultadoView.java | 536 ++++++++++++ src/danielcortes/xyz/views/InformesView.form | 20 +- src/danielcortes/xyz/views/InformesView.java | 19 +- src/danielcortes/xyz/views/MainView.form | 18 +- src/danielcortes/xyz/views/MainView.java | 12 +- .../components/DoubleFormatedTextField.java | 61 ++ .../views/listeners/FocusLostListener.java | 10 + 21 files changed, 2307 insertions(+), 21 deletions(-) create mode 100644 src/danielcortes/xyz/controllers/EstadoResultadoController.java create mode 100644 src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java create mode 100644 src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java create mode 100644 src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java create mode 100644 src/danielcortes/xyz/views/EstadoResultadoView.form create mode 100644 src/danielcortes/xyz/views/EstadoResultadoView.java create mode 100644 src/danielcortes/xyz/views/components/DoubleFormatedTextField.java create mode 100644 src/danielcortes/xyz/views/listeners/FocusLostListener.java diff --git a/database/sqlite.sql b/database/sqlite.sql index 7cc80e7..50f6ec1 100644 --- a/database/sqlite.sql +++ b/database/sqlite.sql @@ -141,4 +141,29 @@ create table calculo_fondo descripcion text not null, caja_id integer not null, foreign key (caja_id) references caja (id) on update cascade on delete restrict -); \ No newline at end of file +); + +-- Quinta migracion, tabla para generar y guardar el estado de resultado +drop table if exists estado_resultado; +create table estado_resultado +( + id integer primary key, + mes date unique not null, + costo_venta integer null, + cuenta_corriente_factura integer null, + cuenta_corriente_boleta integer null, + cuenta_corriente_sin_respaldo integer null, + remuneraciones integer null, + finiquitos integer null, + aguinaldo integer null, + bonos_personal integer null, + honorarios_contador integer null, + arriendo integer null, + agua integer null, + luz integer null, + gas integer null, + telefono integer null, + otro_servicio integer null, + ppm real null, + ivaFavor int null +); diff --git a/dist/local-release/Programa Caja.jar b/dist/local-release/Programa Caja.jar index 415c874f4dd1a81c27625391a281296f7fba307e..d4f3c470b81b12ed896713f416b248ae35ae76a0 100644 GIT binary patch delta 140504 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 this.updateMonth()); + this.view.getYearSpinner().addChangeListener(e -> this.updateMonth()); + + this.view.getGastosGeneralesCuentaCorrienteFactura().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosGenerales()); + this.view.getGastosGeneralesCuentaCorrienteBoleta().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosGenerales()); + this.view.getGastosGeneralesCuentaCorrienteSinRespaldo().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosGenerales()); + + this.view.getServiciosAgua().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateServicios()); + this.view.getServiciosLuz().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateServicios()); + this.view.getServiciosGas().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateServicios()); + this.view.getServiciosTelefono().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateServicios()); + this.view.getServiciosOtro().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateServicios()); + + this.view.getGastosOperacionalesCostoVenta().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + this.view.getGastosOperacionalesRemuneraciones().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + this.view.getGastosOperacionalesFiniquitos().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + this.view.getGastosOperacionalesAguinaldo().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + this.view.getGastosOperacionalesBonos().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + this.view.getGastosOperacionalesHonorariosContador().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + this.view.getGastosOperacionalesArriendo().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateGastosOperacionales()); + + this.view.getResumenIVAFavor().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateResumen()); + this.view.getResumenPPM().addFocusListener((FocusLostListener) e -> EstadoResultadoController.this.updateResumen()); + + this.view.getGuardarButton().addActionListener(e -> EstadoResultadoController.this.guardarListener()); + } + + private void guardarListener() { + EstadoResultadoDAO dao = DAOManager.getEstadoResultadoDAO(); + dao.updateEstadoResultado(this.estadoResultado); + } + + private void updateMonth() { + this.mes = this.view.getMonth(); + this.estadoResultado = DAOManager.getEstadoResultadoDAO().findByMonth(this.mes); + if (estadoResultado == null) { + this.estadoResultado = EstadoResultado.emptyEstadoResultado; + this.estadoResultado.setMes(this.mes); + DAOManager.getEstadoResultadoDAO().insertEstadoResultado(estadoResultado); + } + + this.fillVentas(); + this.fillGastosGenerales(); + this.fillServicios(); + this.fillGastosOperacionales(); + this.fillResumen(); + } + + private void fillVentas() { + int ventaBruta = DAOManager.getIngresoDAO().getTotalIngresoMes(this.mes); + int ventaExentas = DAOManager.getIngresoDAO().getTotalExentasMes(this.mes); + int ventaIVA = (int) Math.round((double) ventaBruta * .19d); + int ventaNeta = ventaBruta - ventaIVA; + int ventaNetaYExentas = ventaExentas + ventaNeta; + + this.view.getVentaBrutaField().setValue(ventaBruta); + this.view.getVentaIVAField().setValue(ventaIVA); + this.view.getVentaNetaField().setValue(ventaNeta); + this.view.getVentaExentasField().setValue(ventaExentas); + this.view.getVentasNetaExentasField().setValue(ventaNetaYExentas); + } + + private void fillGastosGenerales() { + TipoEgreso facturaMateriaPrima = DAOManager.getTipoEgresoDAO().findByNombre("Factura Materia Prima").get(0); + TipoEgreso facturaGastosGenerales = DAOManager.getTipoEgresoDAO().findByNombre("Factura Gastos Generales").get(0); + TipoEgreso gastoGeneralConBoleta = DAOManager.getTipoEgresoDAO().findByNombre("Gasto General Con Boleta").get(0); + TipoEgreso gastoMenorMateriaPrima = DAOManager.getTipoEgresoDAO().findByNombre("Gasto Menor Materia Prima").get(0); + TipoEgreso gastoGeneralSinRespaldo = DAOManager.getTipoEgresoDAO().findByNombre("Gasto General Sin Respaldo").get(0); + + int cuentaCorrienteFactura = this.estadoResultado.getCuentaCorrienteFactura(); + int cuentaCorrienteBoleta = this.estadoResultado.getCuentaCorrienteBoleta(); + int cuentaCorrienteSinRespaldo = this.estadoResultado.getCuentaCorrienteSinRespaldo(); + int efectivoFacturaMateriaPrima = DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes, facturaMateriaPrima); + int efectivoFacturaGastosGenerales = DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes, facturaGastosGenerales); + int efectivoGastoGeneralConBoleta = DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes, gastoGeneralConBoleta); + int efectivoGastoMenorMateriaPrima = DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes, gastoMenorMateriaPrima); + int efectivoGastoGeneralSinRespaldo = DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes, gastoGeneralSinRespaldo); + int gastoTotal = efectivoFacturaMateriaPrima + efectivoFacturaGastosGenerales + efectivoGastoGeneralConBoleta + efectivoGastoMenorMateriaPrima + efectivoGastoGeneralSinRespaldo + cuentaCorrienteBoleta + cuentaCorrienteFactura + cuentaCorrienteSinRespaldo; + + this.view.getGastosGeneralesEfectivoFacturaField().setValue(efectivoFacturaGastosGenerales + efectivoFacturaMateriaPrima); + this.view.getGastosGeneralesEfectivoBoletaField().setValue(efectivoGastoGeneralConBoleta + efectivoGastoMenorMateriaPrima); + this.view.getGastosGeneralesEfectivoSinRespaldo().setValue(efectivoGastoGeneralSinRespaldo); + this.view.getGastosGeneralesCuentaCorrienteFactura().setValue(cuentaCorrienteFactura); + this.view.getGastosGeneralesCuentaCorrienteBoleta().setValue(cuentaCorrienteBoleta); + this.view.getGastosGeneralesCuentaCorrienteSinRespaldo().setValue(cuentaCorrienteSinRespaldo); + this.view.getGastosGeneralesTotal().setValue(gastoTotal); + } + + private void fillGastosOperacionales() { + TipoEgreso tipoPagoPartime = DAOManager.getTipoEgresoDAO().findByNombre("Pago Partime").get(0); + + int costosVenta = this.estadoResultado.getCostoVenta(); + int remuneraciones = this.estadoResultado.getRemuneraciones(); + int finiquitos = this.estadoResultado.getFiniquitos(); + int aguinaldo = this.estadoResultado.getAguinaldo(); + int bonosPersonal = this.estadoResultado.getBonosPersonal(); + int honorariosContador = this.estadoResultado.getHonorariosContador(); + int arriendo = this.estadoResultado.getArriendo(); + int partime = DAOManager.getEgresoDAO().getTotalEgresoMesPorTipo(this.mes, tipoPagoPartime); + + int total = costosVenta + remuneraciones + finiquitos + aguinaldo + bonosPersonal + + honorariosContador + arriendo + partime; + + this.view.getGastosOperacionalesCostoVenta().setValue(costosVenta); + this.view.getGastosOperacionalesRemuneraciones().setValue(remuneraciones); + this.view.getGastosOperacionalesFiniquitos().setValue(finiquitos); + this.view.getGastosOperacionalesAguinaldo().setValue(aguinaldo); + this.view.getGastosOperacionalesBonos().setValue(bonosPersonal); + this.view.getGastosOperacionalesHonorariosContador().setValue(honorariosContador); + this.view.getGastosOperacionalesArriendo().setValue(arriendo); + this.view.getGastosOperacionalesPartime().setValue(partime); + + this.view.getGastosOperacionalesTotal().setValue(total); + } + + private void fillServicios() { + int agua = this.estadoResultado.getAgua(); + int luz = this.estadoResultado.getLuz(); + int gas = this.estadoResultado.getGas(); + int telefono = this.estadoResultado.getTelefono(); + int otro = this.estadoResultado.getOtroServicio(); + + int total = agua + luz + gas + telefono + otro; + + this.view.getServiciosAgua().setValue(agua); + this.view.getServiciosLuz().setValue(luz); + this.view.getServiciosGas().setValue(gas); + this.view.getServiciosTelefono().setValue(telefono); + this.view.getServiciosOtro().setValue(telefono); + this.view.getServiciosTotal().setValue(total); + } + + private void fillResumen() { + double ppm = this.estadoResultado.getPpm(); + int aFavor = this.estadoResultado.getIvaFavor(); + + this.view.getResumenPPM().setValue(ppm); + this.view.getResumenIVAFavor().setValue(aFavor); + + this.updateResumen(); + } + + private void updateGastosGenerales() { + int oldCuentaCorrienteFactura = this.estadoResultado.getCuentaCorrienteFactura(); + int oldCuentaCorrienteBoleta = this.estadoResultado.getCuentaCorrienteBoleta(); + int oldCuentaCorrienteSinRespaldo = this.estadoResultado.getCuentaCorrienteSinRespaldo(); + int oldTotal = this.view.getGastosGeneralesTotal().getValue(); + + int cuentaCorrienteFactura = this.view.getGastosGeneralesCuentaCorrienteFactura().getValue(); + int cuentaCorrienteBoleta = this.view.getGastosGeneralesCuentaCorrienteBoleta().getValue(); + int cuentaCorrienteSinRespaldo = this.view.getGastosGeneralesCuentaCorrienteSinRespaldo().getValue(); + + this.estadoResultado.setCuentaCorrienteFactura(cuentaCorrienteFactura); + this.estadoResultado.setCuentaCorrienteBoleta(cuentaCorrienteBoleta); + this.estadoResultado.setCuentaCorrienteSinRespaldo(cuentaCorrienteSinRespaldo); + + int total = oldTotal + - (oldCuentaCorrienteFactura + oldCuentaCorrienteBoleta + oldCuentaCorrienteSinRespaldo) + + (cuentaCorrienteFactura + cuentaCorrienteBoleta + cuentaCorrienteSinRespaldo); + + this.view.getGastosGeneralesTotal().setValue(total); + + this.updateResumen(); + } + + private void updateServicios() { + int oldAgua = this.estadoResultado.getAgua(); + int oldLuz = this.estadoResultado.getLuz(); + int oldGas = this.estadoResultado.getGas(); + int oldTelefono = this.estadoResultado.getTelefono(); + int oldOtro = this.estadoResultado.getOtroServicio(); + int oldTotal = this.view.getServiciosTotal().getValue(); + + int agua = this.view.getServiciosAgua().getValue(); + int luz = this.view.getServiciosLuz().getValue(); + int gas = this.view.getServiciosGas().getValue(); + int telefono = this.view.getServiciosTelefono().getValue(); + int otro = this.view.getServiciosOtro().getValue(); + + this.estadoResultado.setAgua(agua); + this.estadoResultado.setLuz(luz); + this.estadoResultado.setGas(gas); + this.estadoResultado.setTelefono(telefono); + this.estadoResultado.setOtroServicio(otro); + + int total = oldTotal + - (oldAgua + oldLuz + oldGas + oldTelefono + oldOtro) + + (agua + luz + gas + telefono + otro); + + this.view.getServiciosTotal().setValue(total); + + this.updateResumen(); + } + + private void updateGastosOperacionales() { + int oldCostoVenta = this.estadoResultado.getCostoVenta(); + int oldRemuneraciones = this.estadoResultado.getRemuneraciones(); + int oldFiniquitos = this.estadoResultado.getFiniquitos(); + int oldAguinaldo = this.estadoResultado.getAguinaldo(); + int oldBonos = this.estadoResultado.getBonosPersonal(); + int oldHonorarios = this.estadoResultado.getHonorariosContador(); + int oldArriendo = this.estadoResultado.getArriendo(); + int oldTotal = this.view.getGastosOperacionalesTotal().getValue(); + + int costoVenta = this.view.getGastosOperacionalesCostoVenta().getValue(); + int remuneraciones = this.view.getGastosOperacionalesRemuneraciones().getValue(); + int finiquitos = this.view.getGastosOperacionalesFiniquitos().getValue(); + int aguinaldo = this.view.getGastosOperacionalesAguinaldo().getValue(); + int bonos = this.view.getGastosOperacionalesBonos().getValue(); + int honorarios = this.view.getGastosOperacionalesHonorariosContador().getValue(); + int arriendo = this.view.getGastosOperacionalesArriendo().getValue(); + + this.estadoResultado.setCostoVenta(costoVenta); + this.estadoResultado.setRemuneraciones(remuneraciones); + this.estadoResultado.setFiniquitos(finiquitos); + this.estadoResultado.setAguinaldo(aguinaldo); + this.estadoResultado.setBonosPersonal(bonos); + this.estadoResultado.setHonorariosContador(honorarios); + this.estadoResultado.setArriendo(arriendo); + + int total = oldTotal + - (oldCostoVenta + oldRemuneraciones + oldFiniquitos + oldAguinaldo + oldBonos + oldHonorarios + oldArriendo) + + (costoVenta + remuneraciones + finiquitos + aguinaldo + bonos + honorarios + arriendo); + + this.view.getGastosOperacionalesTotal().setValue(total); + + this.updateResumen(); + } + + private void updateResumen() { + int bruto = this.view.getVentaBrutaField().getValue(); + int totalGastosOperacionales = this.view.getGastosOperacionalesTotal().getValue(); + int totalGastosGenerales = this.view.getGastosGeneralesTotal().getValue(); + int totalServicios = this.view.getServiciosTotal().getValue(); + int netoExentas = this.view.getVentasNetaExentasField().getValue(); + int iva = this.view.getVentaIVAField().getValue(); + double ppm = this.view.getResumenPPM().getValue(); + int ivaFavor = this.view.getResumenIVAFavor().getValue(); + + int utilidad = bruto - totalGastosGenerales - totalGastosOperacionales - totalServicios; + int ppmMes = (int) Math.round(ppm * (double)netoExentas / 100d); + int IVAPPM = iva + ppmMes; + int aPagar = IVAPPM - ivaFavor; + int resultado = utilidad - aPagar; + + + this.view.getResumenUtilidad().setValue(utilidad); + this.view.getResumenPPMMes().setValue(ppmMes); + this.view.getResumenIVAMes().setValue(iva); + this.view.getResumenIVAPPM().setValue(IVAPPM); + this.view.getResumenAPagar().setValue(aPagar); + this.view.getResumenResultado().setValue(resultado); + + this.estadoResultado.setPpm(ppm); + this.estadoResultado.setIvaFavor(ivaFavor); + } +} + diff --git a/src/danielcortes/xyz/controllers/InformesController.java b/src/danielcortes/xyz/controllers/InformesController.java index 527839e..afeccdd 100644 --- a/src/danielcortes/xyz/controllers/InformesController.java +++ b/src/danielcortes/xyz/controllers/InformesController.java @@ -29,6 +29,7 @@ import danielcortes.xyz.informes.InformeEgresos; import danielcortes.xyz.informes.InformeLibroDeVentas; import danielcortes.xyz.models.tipo_egreso.TipoEgreso; import danielcortes.xyz.utils.StringUtils; +import danielcortes.xyz.views.EstadoResultadoView; import danielcortes.xyz.views.InformesView; import danielcortes.xyz.views.dialogs.MonthSelectDialog; import danielcortes.xyz.views.dialogs.TipoEgresoSelectDialog; @@ -53,6 +54,21 @@ public class InformesController { private void setupViewEvents() { this.view.getInformeLibroDeVentasButton().addActionListener(e -> generarInformeLibroDeVentasListener()); this.view.getGenerarEgresosFacturasMateriaPrimaButton().addActionListener(e -> generarInformeEgresosListener()); + this.view.getEstadoResultadoButton().addActionListener(e -> { + EstadoResultadoView view = new EstadoResultadoView(); + EstadoResultadoController controller = new EstadoResultadoController(view); + + JFrame frame = new JFrame("Estado Resultado"+ ": " + Configuration.get("nombre_caja")); + frame.setContentPane(view.getContentPanel()); + frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + frame.setSize(1000,600); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + + this.view.getSalirButton().addActionListener(e -> { + ((JFrame) this.view.getContentPanel().getParent().getParent().getParent()).dispose(); + }); } private void generarInformeLibroDeVentasListener() { diff --git a/src/danielcortes/xyz/controllers/MainController.java b/src/danielcortes/xyz/controllers/MainController.java index 50f3b65..9df8c3d 100644 --- a/src/danielcortes/xyz/controllers/MainController.java +++ b/src/danielcortes/xyz/controllers/MainController.java @@ -12,8 +12,6 @@ import java.awt.*; public class MainController { private MainView view; - private CajasController cajasController; - public MainController(MainView view){ this.view = view; this.setupViewEvents(); @@ -38,6 +36,9 @@ public class MainController { this.executeView(view.getContentPanel(), "Informes Mensuales", new Dimension(250, 500)); }); + this.view.getSalirButton().addActionListener(e -> { + System.exit(0); + }); } private void executeView(JComponent view, String title, Dimension d){ diff --git a/src/danielcortes/xyz/data/DAOManager.java b/src/danielcortes/xyz/data/DAOManager.java index 3addaff..313553c 100644 --- a/src/danielcortes/xyz/data/DAOManager.java +++ b/src/danielcortes/xyz/data/DAOManager.java @@ -34,6 +34,8 @@ import danielcortes.xyz.models.efectivo.EfectivoDAO; import danielcortes.xyz.models.efectivo.SQLiteEfectivoDAO; import danielcortes.xyz.models.egreso.EgresoDAO; import danielcortes.xyz.models.egreso.SQLiteEgresoDAO; +import danielcortes.xyz.models.estado_resultado.EstadoResultadoDAO; +import danielcortes.xyz.models.estado_resultado.SQLiteEstadoResultadoDAO; import danielcortes.xyz.models.informes.egresos.InformeEgresosContentDAO; import danielcortes.xyz.models.informes.egresos.SQLiteInformeEgresosContentDAO; import danielcortes.xyz.models.informes.libro_de_ventas.InformeLibroDeVentasContentDAO; @@ -56,6 +58,7 @@ public class DAOManager { private static final IngresoDAO ingresoDAO; private static final TipoEgresoDAO tipoEgresoDAO; private static final TipoIngresoDAO tipoIngresoDAO; + private static final EstadoResultadoDAO estadoResultadoDAO; static { cajaDAO = new SQLiteCajaDAO(); @@ -68,6 +71,7 @@ public class DAOManager { ingresoDAO = new SQLiteIngresoDAO(); tipoEgresoDAO = new SQLiteTipoEgresoDAO(); tipoIngresoDAO = new SQLiteTipoIngresoDAO(); + estadoResultadoDAO = new SQLiteEstadoResultadoDAO(); } public static CajaDAO getCajaDAO() { @@ -109,4 +113,8 @@ public class DAOManager { public static TipoIngresoDAO getTipoIngresoDAO() { return tipoIngresoDAO; } + + public static EstadoResultadoDAO getEstadoResultadoDAO() { + return estadoResultadoDAO; + } } diff --git a/src/danielcortes/xyz/models/egreso/EgresoDAO.java b/src/danielcortes/xyz/models/egreso/EgresoDAO.java index a1c2040..2d26153 100644 --- a/src/danielcortes/xyz/models/egreso/EgresoDAO.java +++ b/src/danielcortes/xyz/models/egreso/EgresoDAO.java @@ -34,6 +34,7 @@ import danielcortes.xyz.models.tipo_egreso.TipoEgresoDAO; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.YearMonth; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -62,6 +63,8 @@ public abstract class EgresoDAO { public abstract int getTotalEgreso(Caja caja); + public abstract int getTotalEgresoMesPorTipo(YearMonth mes, TipoEgreso tipo); + List egresosFromResultSet(ResultSet rs) throws SQLException { ArrayList egresoList = new ArrayList<>(); while (rs.next()) { diff --git a/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java b/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java index c58a815..c39e2e2 100644 --- a/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java +++ b/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java @@ -32,6 +32,8 @@ 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.logging.Level; @@ -243,4 +245,32 @@ public class SQLiteEgresoDAO extends EgresoDAO { } return total; } + + @Override + public int getTotalEgresoMesPorTipo(YearMonth mes, TipoEgreso tipo) { + int total = 0; + try (Connection conn = connectionHolder.getConnection()) { + LocalDate start = mes.atDay(1); + LocalDate end = mes.atEndOfMonth(); + String query = "select sum(valor) from egresos inner join caja on (egresos.caja_id = caja.id) where fecha between ? and ? and tipo_egreso_id = ?"; + PreparedStatement ps = conn.prepareStatement(query); + ps.setString(1, start.toString()); + ps.setString(2, end.toString()); + ps.setInt(3, tipo.getId()); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2}, {3}", new Object[]{query, start, end, tipo}); + + rs.next(); + total = rs.getInt(1); + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return total; + } + + } diff --git a/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java b/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java new file mode 100644 index 0000000..d023915 --- /dev/null +++ b/src/danielcortes/xyz/models/estado_resultado/EstadoResultado.java @@ -0,0 +1,201 @@ +package danielcortes.xyz.models.estado_resultado; + +import java.time.YearMonth; + +public class EstadoResultado { + public static final EstadoResultado emptyEstadoResultado; + + 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; + } + + private int id; + private YearMonth mes; + private int costoVenta; + private int cuentaCorrienteFactura; + private int cuentaCorrienteBoleta; + private int cuentaCorrienteSinRespaldo; + private int remuneraciones; + private int finiquitos; + private int aguinaldo; + private int bonosPersonal; + private int honorariosContador; + private int arriendo; + private int agua; + private int luz; + private int gas; + private int telefono; + private int otroServicio; + private double ppm; + private int ivaFavor; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public YearMonth getMes() { + return mes; + } + + public void setMes(YearMonth mes) { + this.mes = mes; + } + + public int getCostoVenta() { + return costoVenta; + } + + public void setCostoVenta(int costoVenta) { + this.costoVenta = costoVenta; + } + + public int getCuentaCorrienteFactura() { + return cuentaCorrienteFactura; + } + + public void setCuentaCorrienteFactura(int cuentaCorrienteFactura) { + this.cuentaCorrienteFactura = cuentaCorrienteFactura; + } + + public int getCuentaCorrienteBoleta() { + return cuentaCorrienteBoleta; + } + + public void setCuentaCorrienteBoleta(int cuentaCorrienteBoleta) { + this.cuentaCorrienteBoleta = cuentaCorrienteBoleta; + } + + public int getCuentaCorrienteSinRespaldo() { + return cuentaCorrienteSinRespaldo; + } + + public void setCuentaCorrienteSinRespaldo(int cuentaCorrienteSinRespaldo) { + this.cuentaCorrienteSinRespaldo = cuentaCorrienteSinRespaldo; + } + + public int getRemuneraciones() { + return remuneraciones; + } + + public void setRemuneraciones(int remuneraciones) { + this.remuneraciones = remuneraciones; + } + + public int getFiniquitos() { + return finiquitos; + } + + public void setFiniquitos(int finiquitos) { + this.finiquitos = finiquitos; + } + + public int getAguinaldo() { + return aguinaldo; + } + + public void setAguinaldo(int aguinaldo) { + this.aguinaldo = aguinaldo; + } + + public int getBonosPersonal() { + return bonosPersonal; + } + + public void setBonosPersonal(int bonosPersonal) { + this.bonosPersonal = bonosPersonal; + } + + public int getHonorariosContador() { + return honorariosContador; + } + + public void setHonorariosContador(int honorariosContador) { + this.honorariosContador = honorariosContador; + } + + public int getArriendo() { + return arriendo; + } + + public void setArriendo(int arriendo) { + this.arriendo = arriendo; + } + + public int getAgua() { + return agua; + } + + public void setAgua(int agua) { + this.agua = agua; + } + + public int getLuz() { + return luz; + } + + public void setLuz(int luz) { + this.luz = luz; + } + + public int getGas() { + return gas; + } + + public void setGas(int gas) { + this.gas = gas; + } + + public int getTelefono() { + return telefono; + } + + public void setTelefono(int telefono) { + this.telefono = telefono; + } + + public int getOtroServicio() { + return otroServicio; + } + + public void setOtroServicio(int otroServicio) { + this.otroServicio = otroServicio; + } + + public double getPpm() { + return ppm; + } + + public void setPpm(double ppm) { + this.ppm = ppm; + } + + public void setIvaFavor(int ivaFavor) { + this.ivaFavor = ivaFavor; + } + + public int getIvaFavor() { + return ivaFavor; + } +} + diff --git a/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java b/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java new file mode 100644 index 0000000..cef3db8 --- /dev/null +++ b/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java @@ -0,0 +1,55 @@ +package danielcortes.xyz.models.estado_resultado; + +import danielcortes.xyz.models.egreso.EgresoDAO; + +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.Logger; + +public abstract class EstadoResultadoDAO { + protected static final Logger LOGGER = Logger.getLogger(EgresoDAO.class.getName()); + + + + public abstract List findAll(); + public abstract EstadoResultado findById(int id); + public abstract EstadoResultado findByMonth(YearMonth month); + + public abstract boolean insertEstadoResultado(EstadoResultado estadoResultado); + public abstract boolean updateEstadoResultado(EstadoResultado estadoResultado); + public abstract boolean deleteEstadoResultado(EstadoResultado estadoResultado); + + List estadoResultadosFromResultSet(ResultSet rs) throws SQLException { + List estadoResultadoList = new ArrayList<>(); + + while(rs.next()) { + EstadoResultado estadoResultado = new EstadoResultado(); + estadoResultado.setId(rs.getInt("id")); + estadoResultado.setMes(YearMonth.from(LocalDate.parse(rs.getString("mes")))); + estadoResultado.setCostoVenta(rs.getInt("costo_venta")); + estadoResultado.setCuentaCorrienteFactura(rs.getInt("cuenta_corriente_factura")); + estadoResultado.setCuentaCorrienteBoleta(rs.getInt("cuenta_corriente_boleta")); + estadoResultado.setCuentaCorrienteSinRespaldo(rs.getInt("cuenta_corriente_sin_respaldo")); + estadoResultado.setRemuneraciones(rs.getInt("remuneraciones")); + estadoResultado.setFiniquitos(rs.getInt("finiquitos")); + estadoResultado.setAguinaldo(rs.getInt("aguinaldo")); + estadoResultado.setBonosPersonal(rs.getInt("bonos_personal")); + estadoResultado.setHonorariosContador(rs.getInt("honorarios_contador")); + estadoResultado.setArriendo(rs.getInt("arriendo")); + estadoResultado.setAgua(rs.getInt("agua")); + estadoResultado.setLuz(rs.getInt("luz")); + estadoResultado.setGas(rs.getInt("gas")); + estadoResultado.setTelefono(rs.getInt("telefono")); + estadoResultado.setOtroServicio(rs.getInt("otro_servicio")); + estadoResultado.setPpm(rs.getDouble("ppm")); + estadoResultado.setIvaFavor(rs.getInt("ivaFavor")); + + estadoResultadoList.add(estadoResultado); + } + return estadoResultadoList; + } +} diff --git a/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java b/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java new file mode 100644 index 0000000..bda4b35 --- /dev/null +++ b/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java @@ -0,0 +1,194 @@ +package danielcortes.xyz.models.estado_resultado; + +import danielcortes.xyz.data.SQLiteConnectionHolder; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; + +public class SQLiteEstadoResultadoDAO extends EstadoResultadoDAO { + private SQLiteConnectionHolder connectionHolder; + + public SQLiteEstadoResultadoDAO() { + this.connectionHolder = new SQLiteConnectionHolder(); + } + + @Override + public List findAll() { + List estadoResultadoList = new ArrayList<>(); + try (Connection conn = connectionHolder.getConnection()) { + String query = "select * from estado_resultado"; + PreparedStatement ps = conn.prepareStatement(query); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0}", new Object[]{query}); + + estadoResultadoList = this.estadoResultadosFromResultSet(rs); + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return estadoResultadoList; + } + + @Override + public EstadoResultado findById(int id) { + EstadoResultado estadoResultado = null; + try (Connection conn = connectionHolder.getConnection()) { + String query = "select * from estado_resultado where id = ?"; + PreparedStatement ps = conn.prepareStatement(query); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, id}); + + estadoResultado = this.estadoResultadosFromResultSet(rs).get(0); + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return estadoResultado; + } + + @Override + public EstadoResultado findByMonth(YearMonth month) { + EstadoResultado estadoResultado = null; + try (Connection conn = connectionHolder.getConnection()) { + String query = "select * from estado_resultado where mes = ?"; + PreparedStatement ps = conn.prepareStatement(query); + ps.setString(1, month.atDay(1).toString()); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}", new Object[]{query, month}); + + + List estadosResultado = this.estadoResultadosFromResultSet(rs); + if (estadosResultado.size() > 0) { + estadoResultado = estadosResultado.get(0); + } + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return estadoResultado; + } + + @Override + public boolean insertEstadoResultado(EstadoResultado estadoResultado) { + int updates; + try (Connection conn = connectionHolder.getConnection()) { + String query = "insert into estado_resultado (mes, costo_venta, cuenta_corriente_factura, cuenta_corriente_boleta, cuenta_corriente_sin_respaldo, remuneraciones, finiquitos, aguinaldo, bonos_personal, honorarios_contador, arriendo, agua, luz, gas, telefono, otro_servicio, ppm, ivaFavor) values (?, ?, ?, ?, ?, ? , ?, ? , ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + PreparedStatement ps = conn.prepareStatement(query); + + ps.setString(1, estadoResultado.getMes().atDay(1).toString()); + ps.setInt(2, estadoResultado.getCostoVenta()); + ps.setInt(3, estadoResultado.getCuentaCorrienteFactura()); + ps.setInt(4, estadoResultado.getCuentaCorrienteBoleta()); + ps.setInt(5, estadoResultado.getCuentaCorrienteSinRespaldo()); + ps.setInt(6, estadoResultado.getRemuneraciones()); + ps.setInt(7, estadoResultado.getFiniquitos()); + ps.setInt(8, estadoResultado.getAguinaldo()); + ps.setInt(9, estadoResultado.getBonosPersonal()); + ps.setInt(10, estadoResultado.getHonorariosContador()); + ps.setInt(11, estadoResultado.getArriendo()); + ps.setInt(12, estadoResultado.getAgua()); + ps.setInt(13, estadoResultado.getLuz()); + ps.setInt(14, estadoResultado.getGas()); + ps.setInt(15, estadoResultado.getTelefono()); + ps.setInt(16, estadoResultado.getOtroServicio()); + ps.setDouble(17, estadoResultado.getPpm()); + ps.setDouble(18, estadoResultado.getIvaFavor()); + + updates = ps.executeUpdate(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}] | updates: {19}", new Object[]{query, estadoResultado.getMes(), estadoResultado.getCostoVenta(), estadoResultado.getCuentaCorrienteFactura(), estadoResultado.getCuentaCorrienteBoleta(), estadoResultado.getCuentaCorrienteSinRespaldo(), estadoResultado.getRemuneraciones(), estadoResultado.getFiniquitos(), estadoResultado.getAguinaldo(), estadoResultado.getBonosPersonal(), estadoResultado.getHonorariosContador(), estadoResultado.getArriendo(), estadoResultado.getAgua(), estadoResultado.getLuz(), estadoResultado.getGas(), estadoResultado.getTelefono(), estadoResultado.getOtroServicio(), estadoResultado.getPpm(),estadoResultado.getIvaFavor(), updates}); + + ps.close(); + + query = "select last_insert_rowid()"; + ps = conn.prepareStatement(query); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0}", query); + + rs.next(); + estadoResultado.setId(rs.getInt(1)); + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + return false; + } + return updates > 0; + } + + @Override + public boolean updateEstadoResultado(EstadoResultado estadoResultado) { + int updates; + try (Connection conn = connectionHolder.getConnection()) { + String query = "update estado_resultado set mes = ?, costo_venta = ?, cuenta_corriente_factura = ?, cuenta_corriente_boleta = ?, cuenta_corriente_sin_respaldo = ?, remuneraciones = ?, finiquitos = ?, aguinaldo = ?, bonos_personal = ?, honorarios_contador = ?, arriendo = ?, agua = ?, luz = ?, gas = ?, telefono = ?, otro_servicio = ?, ppm = ?, ivaFavor = ? where id = ?"; + PreparedStatement ps = conn.prepareStatement(query); + + ps.setString(1, estadoResultado.getMes().atDay(1).toString()); + ps.setInt(2, estadoResultado.getCostoVenta()); + ps.setInt(3, estadoResultado.getCuentaCorrienteFactura()); + ps.setInt(4, estadoResultado.getCuentaCorrienteBoleta()); + ps.setInt(5, estadoResultado.getCuentaCorrienteSinRespaldo()); + ps.setInt(6, estadoResultado.getRemuneraciones()); + ps.setInt(7, estadoResultado.getFiniquitos()); + ps.setInt(8, estadoResultado.getAguinaldo()); + ps.setInt(9, estadoResultado.getBonosPersonal()); + ps.setInt(10, estadoResultado.getHonorariosContador()); + ps.setInt(11, estadoResultado.getArriendo()); + ps.setInt(12, estadoResultado.getAgua()); + ps.setInt(13, estadoResultado.getLuz()); + ps.setInt(14, estadoResultado.getGas()); + ps.setInt(15, estadoResultado.getTelefono()); + ps.setInt(16, estadoResultado.getOtroServicio()); + ps.setDouble(17, estadoResultado.getPpm()); + ps.setDouble(18, estadoResultado.getIvaFavor()); + ps.setInt(19, estadoResultado.getId()); + + updates = ps.executeUpdate(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: [{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}] | updates: {20}", new Object[]{query, estadoResultado.getMes(), estadoResultado.getCostoVenta(), estadoResultado.getCuentaCorrienteFactura(), estadoResultado.getCuentaCorrienteBoleta(), estadoResultado.getCuentaCorrienteSinRespaldo(), estadoResultado.getRemuneraciones(), estadoResultado.getFiniquitos(), estadoResultado.getAguinaldo(), estadoResultado.getBonosPersonal(), estadoResultado.getHonorariosContador(), estadoResultado.getArriendo(), estadoResultado.getAgua(), estadoResultado.getLuz(), estadoResultado.getGas(), estadoResultado.getTelefono(), estadoResultado.getOtroServicio(), estadoResultado.getPpm(),estadoResultado.getIvaFavor(), estadoResultado.getId(), updates}); + + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + return false; + } + return updates > 0; + } + + @Override + public boolean deleteEstadoResultado(EstadoResultado estadoResultado) { + int updates; + try (Connection conn = connectionHolder.getConnection()) { + String query = "delete from estado_resultado where id = ?"; + PreparedStatement ps = conn.prepareStatement(query); + ps.setInt(1, estadoResultado.getId()); + updates = ps.executeUpdate(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1} | updates: {2}", new Object[]{query, estadoResultado.getId(), updates}); + + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + return false; + } + return updates > 0; + } +} diff --git a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java index 9766955..b95c8c3 100644 --- a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java @@ -35,6 +35,7 @@ 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.logging.Level; @@ -61,7 +62,12 @@ public abstract class IngresoDAO { public abstract int getTotalIngreso(Caja caja); - List ingresosFromResultSet(ResultSet rs) throws SQLException { + public abstract int getTotalIngresoMes(YearMonth mes); + + public abstract int getTotalExentasMes(YearMonth mes); + + + List ingresosFromResultSet(ResultSet rs) throws SQLException { ArrayList ingresosList = new ArrayList<>(); while (rs.next()) { int tipoIngresoId = rs.getInt("tipo_ingreso_id"); diff --git a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java index 47c55ce..a26a89c 100644 --- a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java @@ -32,6 +32,8 @@ 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.logging.Level; @@ -227,4 +229,56 @@ public class SQLiteIngresoDAO extends IngresoDAO { } return total; } + + @Override + public int getTotalIngresoMes(YearMonth mes) { + int total = 0; + try (Connection conn = connectionHolder.getConnection()) { + LocalDate start = mes.atDay(1); + LocalDate end = mes.atEndOfMonth(); + String query = + "select sum(valor) from ingresos inner join caja on (ingresos.caja_id == caja.id) where caja.fecha between ? and ? and ingresos.tipo_ingreso_id != 5"; + PreparedStatement ps = conn.prepareStatement(query); + ps.setString(1, start.toString()); + ps.setString(2, end.toString()); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2}", new Object[]{query, start, end}); + + rs.next(); + total = rs.getInt(1); + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return total; + } + + @Override + public int getTotalExentasMes(YearMonth mes) { + int total = 0; + try (Connection conn = connectionHolder.getConnection()) { + LocalDate start = mes.atDay(1); + LocalDate end = mes.atEndOfMonth(); + String query = + "select sum(valor) from ingresos inner join caja on (ingresos.caja_id == caja.id) where caja.fecha between ? and ? and ingresos.tipo_ingreso_id = 5"; + PreparedStatement ps = conn.prepareStatement(query); + ps.setString(1, start.toString()); + ps.setString(2, end.toString()); + ResultSet rs = ps.executeQuery(); + + LOGGER.log(Level.FINE, "QUERY: {0} | values: {1}, {2}", new Object[]{query, start, end}); + + rs.next(); + total = rs.getInt(1); + + rs.close(); + ps.close(); + } catch (SQLException e) { + LOGGER.log(Level.SEVERE, e.toString(), e); + } + return total; + } } diff --git a/src/danielcortes/xyz/views/EstadoResultadoView.form b/src/danielcortes/xyz/views/EstadoResultadoView.form new file mode 100644 index 0000000..1f9d2f3 --- /dev/null +++ b/src/danielcortes/xyz/views/EstadoResultadoView.form @@ -0,0 +1,770 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/danielcortes/xyz/views/EstadoResultadoView.java b/src/danielcortes/xyz/views/EstadoResultadoView.java new file mode 100644 index 0000000..7ff6744 --- /dev/null +++ b/src/danielcortes/xyz/views/EstadoResultadoView.java @@ -0,0 +1,536 @@ +package danielcortes.xyz.views; + +import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; +import com.intellij.uiDesigner.core.Spacer; +import danielcortes.xyz.views.components.DoubleFormatedTextField; +import danielcortes.xyz.views.components.NumberFormatedTextField; +import danielcortes.xyz.views.components.YearSpinnerModel; + +import javax.swing.*; +import java.awt.*; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.ArrayList; + +public class EstadoResultadoView { + private NumberFormatedTextField ventaBrutaField; + private NumberFormatedTextField ventaNetaField; + private NumberFormatedTextField ventaIVAField; + private NumberFormatedTextField ventaExentasField; + private NumberFormatedTextField ventasNetaExentasField; + private NumberFormatedTextField gastosOperacionalesCostoVenta; + private NumberFormatedTextField gastosOperacionalesRemuneraciones; + private NumberFormatedTextField gastosOperacionalesFiniquitos; + private NumberFormatedTextField gastosOperacionalesAguinaldo; + private NumberFormatedTextField gastosOperacionalesPartime; + private NumberFormatedTextField gastosOperacionalesBonos; + private NumberFormatedTextField gastosOperacionalesHonorariosContador; + private NumberFormatedTextField gastosOperacionalesArriendo; + private NumberFormatedTextField gastosOperacionalesTotal; + private NumberFormatedTextField serviciosAgua; + private NumberFormatedTextField serviciosLuz; + private NumberFormatedTextField serviciosGas; + private NumberFormatedTextField serviciosTelefono; + private NumberFormatedTextField serviciosTotal; + private NumberFormatedTextField gastosGeneralesCuentaCorrienteFactura; + private NumberFormatedTextField gastosGeneralesCuentaCorrienteBoleta; + private NumberFormatedTextField gastosGeneralesCuentaCorrienteSinRespaldo; + private NumberFormatedTextField gastosGeneralesEfectivoFacturaField; + private NumberFormatedTextField gastosGeneralesEfectivoBoletaField; + private NumberFormatedTextField gastosGeneralesEfectivoSinRespaldo; + private NumberFormatedTextField gastosGeneralesTotal; + private NumberFormatedTextField resumenUtilidad; + private NumberFormatedTextField resumenPPMMes; + private NumberFormatedTextField resumenIVAMes; + private NumberFormatedTextField resumenIVAFavor; + private NumberFormatedTextField resumenResultado; + private JSpinner yearSpinner; + private JComboBox monthCombo; + private JPanel contentPanel; + private NumberFormatedTextField serviciosOtro; + private NumberFormatedTextField resumenAPagar; + private NumberFormatedTextField resumenIVAPPM; + private DoubleFormatedTextField resumenPPM; + private JButton guardarButton; + private JButton exportarButton; + + private ArrayList months; + + public EstadoResultadoView() { + $$$setupUI$$$(); + } + + public JPanel getContentPanel() { + return contentPanel; + } + + public YearMonth getMonth() { + int year = Integer.valueOf((String) yearSpinner.getValue()); + int month = this.months.indexOf((String) this.monthCombo.getSelectedItem()) + 1; + + YearMonth yearMonth = YearMonth.of(year, month); + return yearMonth; + } + + public JSpinner getYearSpinner() { + return yearSpinner; + } + + public JComboBox getMonthCombo() { + return monthCombo; + } + + public NumberFormatedTextField getVentaBrutaField() { + return ventaBrutaField; + } + + public NumberFormatedTextField getVentaNetaField() { + return ventaNetaField; + } + + public NumberFormatedTextField getVentaIVAField() { + return ventaIVAField; + } + + public NumberFormatedTextField getVentaExentasField() { + return ventaExentasField; + } + + public NumberFormatedTextField getVentasNetaExentasField() { + return ventasNetaExentasField; + } + + public NumberFormatedTextField getGastosOperacionalesCostoVenta() { + return gastosOperacionalesCostoVenta; + } + + public NumberFormatedTextField getGastosOperacionalesRemuneraciones() { + return gastosOperacionalesRemuneraciones; + } + + public NumberFormatedTextField getGastosOperacionalesFiniquitos() { + return gastosOperacionalesFiniquitos; + } + + public NumberFormatedTextField getGastosOperacionalesAguinaldo() { + return gastosOperacionalesAguinaldo; + } + + public NumberFormatedTextField getGastosOperacionalesPartime() { + return gastosOperacionalesPartime; + } + + public NumberFormatedTextField getGastosOperacionalesBonos() { + return gastosOperacionalesBonos; + } + + public NumberFormatedTextField getGastosOperacionalesHonorariosContador() { + return gastosOperacionalesHonorariosContador; + } + + public NumberFormatedTextField getGastosOperacionalesArriendo() { + return gastosOperacionalesArriendo; + } + + public NumberFormatedTextField getGastosOperacionalesTotal() { + return gastosOperacionalesTotal; + } + + public NumberFormatedTextField getServiciosAgua() { + return serviciosAgua; + } + + public NumberFormatedTextField getServiciosLuz() { + return serviciosLuz; + } + + public NumberFormatedTextField getServiciosGas() { + return serviciosGas; + } + + public NumberFormatedTextField getServiciosTelefono() { + return serviciosTelefono; + } + + public NumberFormatedTextField getServiciosTotal() { + return serviciosTotal; + } + + public NumberFormatedTextField getGastosGeneralesCuentaCorrienteFactura() { + return gastosGeneralesCuentaCorrienteFactura; + } + + public NumberFormatedTextField getGastosGeneralesCuentaCorrienteBoleta() { + return gastosGeneralesCuentaCorrienteBoleta; + } + + public NumberFormatedTextField getGastosGeneralesCuentaCorrienteSinRespaldo() { + return gastosGeneralesCuentaCorrienteSinRespaldo; + } + + public NumberFormatedTextField getGastosGeneralesEfectivoFacturaField() { + return gastosGeneralesEfectivoFacturaField; + } + + public NumberFormatedTextField getGastosGeneralesEfectivoBoletaField() { + return gastosGeneralesEfectivoBoletaField; + } + + public NumberFormatedTextField getGastosGeneralesEfectivoSinRespaldo() { + return gastosGeneralesEfectivoSinRespaldo; + } + + public NumberFormatedTextField getGastosGeneralesTotal() { + return gastosGeneralesTotal; + } + + public NumberFormatedTextField getResumenUtilidad() { + return resumenUtilidad; + } + + public NumberFormatedTextField getResumenPPMMes() { + return resumenPPMMes; + } + + public NumberFormatedTextField getResumenIVAMes() { + return resumenIVAMes; + } + + public NumberFormatedTextField getResumenIVAFavor() { + return resumenIVAFavor; + } + + public NumberFormatedTextField getResumenResultado() { + return resumenResultado; + } + + public NumberFormatedTextField getServiciosOtro() { + return serviciosOtro; + } + + public NumberFormatedTextField getResumenAPagar() { + return resumenAPagar; + } + + public NumberFormatedTextField getResumenIVAPPM() { + return resumenIVAPPM; + } + + public DoubleFormatedTextField getResumenPPM() { + return resumenPPM; + } + + public JButton getGuardarButton() { + return guardarButton; + } + + public JButton getExportarButton() { + return exportarButton; + } + + /** + * Method generated by IntelliJ IDEA GUI Designer + * >>> IMPORTANT!! <<< + * DO NOT edit this method OR call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + createUIComponents(); + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(3, 3, new Insets(10, 10, 10, 10), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(6, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Venta")); + final JLabel label1 = new JLabel(); + label1.setText("Bruto:"); + panel1.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label2 = new JLabel(); + label2.setText("Neto:"); + panel1.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label3 = new JLabel(); + label3.setText("IVA:"); + panel1.add(label3, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label4 = new JLabel(); + label4.setText("Exentas:"); + panel1.add(label4, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label5 = new JLabel(); + label5.setText("Neto + Exentas:"); + panel1.add(label5, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + ventaBrutaField = new NumberFormatedTextField(); + ventaBrutaField.setEditable(false); + panel1.add(ventaBrutaField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventaNetaField = new NumberFormatedTextField(); + ventaNetaField.setEditable(false); + panel1.add(ventaNetaField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventaIVAField = new NumberFormatedTextField(); + ventaIVAField.setEditable(false); + panel1.add(ventaIVAField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventaExentasField = new NumberFormatedTextField(); + ventaExentasField.setEditable(false); + panel1.add(ventaExentasField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventasNetaExentasField = new NumberFormatedTextField(); + ventasNetaExentasField.setEditable(false); + panel1.add(ventasNetaExentasField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel1.add(spacer1, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(10, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel2, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Gastos Operacionales")); + final JLabel label6 = new JLabel(); + label6.setText("Costo de Venta:"); + panel2.add(label6, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label7 = new JLabel(); + label7.setText("Remuneraciones:"); + panel2.add(label7, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label8 = new JLabel(); + label8.setText("Finiquitos:"); + panel2.add(label8, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label9 = new JLabel(); + label9.setText("Aguinaldo:"); + panel2.add(label9, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label10 = new JLabel(); + label10.setText("Partime:"); + panel2.add(label10, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label11 = new JLabel(); + label11.setText("Bonos Personal:"); + panel2.add(label11, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label12 = new JLabel(); + label12.setText("Honorarios Contador:"); + panel2.add(label12, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label13 = new JLabel(); + label13.setText("Arriendo:"); + panel2.add(label13, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + gastosOperacionalesCostoVenta = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesCostoVenta, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesRemuneraciones = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesRemuneraciones, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesFiniquitos = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesFiniquitos, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesAguinaldo = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesAguinaldo, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesPartime = new NumberFormatedTextField(); + gastosOperacionalesPartime.setEditable(false); + panel2.add(gastosOperacionalesPartime, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesBonos = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesBonos, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesHonorariosContador = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesHonorariosContador, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesArriendo = new NumberFormatedTextField(); + panel2.add(gastosOperacionalesArriendo, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label14 = new JLabel(); + label14.setText("Total:"); + panel2.add(label14, new GridConstraints(9, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + gastosOperacionalesTotal = new NumberFormatedTextField(); + gastosOperacionalesTotal.setEditable(false); + panel2.add(gastosOperacionalesTotal, new GridConstraints(9, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer2 = new Spacer(); + panel2.add(spacer2, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(7, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel3, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Servicios")); + final JLabel label15 = new JLabel(); + label15.setText("Agua:"); + panel3.add(label15, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label16 = new JLabel(); + label16.setText("Luz:"); + panel3.add(label16, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label17 = new JLabel(); + label17.setText("Gas:"); + panel3.add(label17, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label18 = new JLabel(); + label18.setText("Telefono:"); + panel3.add(label18, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label19 = new JLabel(); + label19.setText("Total:"); + panel3.add(label19, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + serviciosAgua = new NumberFormatedTextField(); + panel3.add(serviciosAgua, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosLuz = new NumberFormatedTextField(); + panel3.add(serviciosLuz, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosGas = new NumberFormatedTextField(); + panel3.add(serviciosGas, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosTelefono = new NumberFormatedTextField(); + panel3.add(serviciosTelefono, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosTotal = new NumberFormatedTextField(); + serviciosTotal.setEditable(false); + panel3.add(serviciosTotal, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer3 = new Spacer(); + panel3.add(spacer3, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + serviciosOtro = new NumberFormatedTextField(); + panel3.add(serviciosOtro, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label20 = new JLabel(); + label20.setText("Otros:"); + panel3.add(label20, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel4 = new JPanel(); + panel4.setLayout(new GridLayoutManager(8, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel4, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Gastos Generales")); + gastosGeneralesCuentaCorrienteFactura = new NumberFormatedTextField(); + panel4.add(gastosGeneralesCuentaCorrienteFactura, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesCuentaCorrienteBoleta = new NumberFormatedTextField(); + panel4.add(gastosGeneralesCuentaCorrienteBoleta, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesCuentaCorrienteSinRespaldo = new NumberFormatedTextField(); + panel4.add(gastosGeneralesCuentaCorrienteSinRespaldo, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesEfectivoFacturaField = new NumberFormatedTextField(); + gastosGeneralesEfectivoFacturaField.setEditable(false); + panel4.add(gastosGeneralesEfectivoFacturaField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesEfectivoBoletaField = new NumberFormatedTextField(); + gastosGeneralesEfectivoBoletaField.setEditable(false); + panel4.add(gastosGeneralesEfectivoBoletaField, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesEfectivoSinRespaldo = new NumberFormatedTextField(); + gastosGeneralesEfectivoSinRespaldo.setEditable(false); + panel4.add(gastosGeneralesEfectivoSinRespaldo, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesTotal = new NumberFormatedTextField(); + gastosGeneralesTotal.setEditable(false); + panel4.add(gastosGeneralesTotal, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label21 = new JLabel(); + label21.setText("CTA CTE Con Factura:"); + panel4.add(label21, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label22 = new JLabel(); + label22.setText("CTA CTE Con Boleta:"); + panel4.add(label22, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label23 = new JLabel(); + label23.setText("CTA CTE Sin Respaldo:"); + panel4.add(label23, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label24 = new JLabel(); + label24.setText("Efectivo Con Factura:"); + panel4.add(label24, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label25 = new JLabel(); + label25.setText("Efectivo Con Boleta:"); + panel4.add(label25, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label26 = new JLabel(); + label26.setText("Efectivo Sin Respaldo"); + panel4.add(label26, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label27 = new JLabel(); + label27.setText("Total:"); + panel4.add(label27, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer4 = new Spacer(); + panel4.add(spacer4, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final JPanel panel5 = new JPanel(); + panel5.setLayout(new GridLayoutManager(9, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel5, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel5.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Resumen")); + resumenUtilidad = new NumberFormatedTextField(); + resumenUtilidad.setEditable(false); + panel5.add(resumenUtilidad, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenPPMMes = new NumberFormatedTextField(); + resumenPPMMes.setEditable(false); + panel5.add(resumenPPMMes, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenIVAMes = new NumberFormatedTextField(); + resumenIVAMes.setEditable(false); + panel5.add(resumenIVAMes, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenIVAFavor = new NumberFormatedTextField(); + resumenIVAFavor.setEditable(true); + panel5.add(resumenIVAFavor, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenResultado = new NumberFormatedTextField(); + resumenResultado.setEditable(false); + panel5.add(resumenResultado, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label28 = new JLabel(); + label28.setText("Utilidad:"); + panel5.add(label28, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label29 = new JLabel(); + label29.setText("PPM Mes:"); + panel5.add(label29, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label30 = new JLabel(); + label30.setText("+ IVA Mes:"); + panel5.add(label30, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label31 = new JLabel(); + label31.setText("- IVA A Favor:"); + panel5.add(label31, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label32 = new JLabel(); + label32.setText("Resultado:"); + panel5.add(label32, new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer5 = new Spacer(); + panel5.add(spacer5, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final JLabel label33 = new JLabel(); + label33.setText("PPM:"); + panel5.add(label33, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + resumenAPagar = new NumberFormatedTextField(); + resumenAPagar.setEditable(false); + panel5.add(resumenAPagar, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label34 = new JLabel(); + label34.setText("A Pagar PPM + IVA"); + panel5.add(label34, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + resumenIVAPPM = new NumberFormatedTextField(); + resumenIVAPPM.setEditable(false); + panel5.add(resumenIVAPPM, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenPPM = new DoubleFormatedTextField(); + panel5.add(resumenPPM, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JPanel panel6 = new JPanel(); + panel6.setLayout(new GridLayoutManager(1, 3, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel6, new GridConstraints(0, 0, 1, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel7 = new JPanel(); + panel7.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 0, 0), -1, -1)); + panel6.add(panel7, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + panel7.add(yearSpinner, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + panel7.add(monthCombo, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label35 = new JLabel(); + label35.setText("Mes"); + panel7.add(label35, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label36 = new JLabel(); + label36.setText("Año"); + panel7.add(label36, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel8 = new JPanel(); + panel8.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 0, 0), -1, -1)); + panel6.add(panel8, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + guardarButton = new JButton(); + guardarButton.setText("Guardar"); + panel8.add(guardarButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + exportarButton = new JButton(); + exportarButton.setText("Exportar"); + panel8.add(exportarButton, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer6 = new Spacer(); + panel8.add(spacer6, new GridConstraints(0, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + final Spacer spacer7 = new Spacer(); + panel6.add(spacer7, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } + + private void createUIComponents() { + createYearSpinner(); + createMonthCombo(); + } + + private void createYearSpinner() { + SpinnerModel model = new YearSpinnerModel(); + this.yearSpinner = new JSpinner(); + this.yearSpinner.setModel(model); + ((JSpinner.DefaultEditor) this.yearSpinner.getEditor()).getTextField().setEditable(true); + } + + private void createMonthCombo() { + months = new ArrayList<>(); + months.add("Enero"); + months.add("Febrero"); + months.add("Marzo"); + months.add("Abril"); + months.add("Mayo"); + months.add("Junio"); + months.add("Julio"); + months.add("Agosto"); + months.add("Septiembre"); + months.add("Octubre"); + months.add("Noviembre"); + months.add("Diciembre"); + + monthCombo = new JComboBox<>(); + for (String month : months) { + monthCombo.addItem(month); + } + + int currentMonth = LocalDate.now().getMonth().getValue() - 1; + monthCombo.setSelectedIndex(currentMonth); + } + +} diff --git a/src/danielcortes/xyz/views/InformesView.form b/src/danielcortes/xyz/views/InformesView.form index 5a969ad..f760280 100644 --- a/src/danielcortes/xyz/views/InformesView.form +++ b/src/danielcortes/xyz/views/InformesView.form @@ -8,7 +8,7 @@ - + @@ -34,9 +34,25 @@ - + + + + + + + + + + + + + + + + + diff --git a/src/danielcortes/xyz/views/InformesView.java b/src/danielcortes/xyz/views/InformesView.java index e4d119b..cb3d10e 100644 --- a/src/danielcortes/xyz/views/InformesView.java +++ b/src/danielcortes/xyz/views/InformesView.java @@ -35,6 +35,8 @@ public class InformesView { private JButton generarLibroVentasButton; private JPanel contentPanel; private JButton GenerarEgresosFacturasMateriaPrimaButton; + private JButton estadoResultadoButton; + private JButton salirButton; public JPanel getContentPanel() { return contentPanel; @@ -48,6 +50,13 @@ public class InformesView { return GenerarEgresosFacturasMateriaPrimaButton; } + public JButton getEstadoResultadoButton() { + return estadoResultadoButton; + } + + public JButton getSalirButton() { + return salirButton; + } { // GUI initializer generated by IntelliJ IDEA GUI Designer @@ -67,7 +76,7 @@ public class InformesView { contentPanel = new JPanel(); contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(10, 10, 10, 10), -1, -1)); final JPanel panel1 = new JPanel(); - panel1.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); + panel1.setLayout(new GridLayoutManager(5, 1, new Insets(10, 10, 10, 10), -1, -1)); contentPanel.add(panel1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Informes Mensuales")); generarLibroVentasButton = new JButton(); @@ -77,7 +86,13 @@ public class InformesView { GenerarEgresosFacturasMateriaPrimaButton.setText("Informe de Egresos"); panel1.add(GenerarEgresosFacturasMateriaPrimaButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer1 = new Spacer(); - panel1.add(spacer1, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + panel1.add(spacer1, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + estadoResultadoButton = new JButton(); + estadoResultadoButton.setText("Estado Resultado"); + panel1.add(estadoResultadoButton, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + salirButton = new JButton(); + salirButton.setText("Salir"); + panel1.add(salirButton, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); } /** diff --git a/src/danielcortes/xyz/views/MainView.form b/src/danielcortes/xyz/views/MainView.form index ca1ea00..d1123e9 100644 --- a/src/danielcortes/xyz/views/MainView.form +++ b/src/danielcortes/xyz/views/MainView.form @@ -24,17 +24,9 @@ - - - - - - - - - + @@ -45,6 +37,14 @@ + + + + + + + + diff --git a/src/danielcortes/xyz/views/MainView.java b/src/danielcortes/xyz/views/MainView.java index 2f01361..92b816d 100644 --- a/src/danielcortes/xyz/views/MainView.java +++ b/src/danielcortes/xyz/views/MainView.java @@ -13,6 +13,7 @@ public class MainView { private JButton cajasButton; private JButton informesGeneralesButton; private JPanel buttonPanel; + private JButton salirButton; public JPanel getContentPanel() { return contentPanel; @@ -34,6 +35,9 @@ public class MainView { return informesGeneralesButton; } + public JButton getSalirButton() { + return salirButton; + } { // GUI initializer generated by IntelliJ IDEA GUI Designer @@ -59,14 +63,14 @@ public class MainView { cajasButton = new JButton(); cajasButton.setText("Cajas"); buttonPanel.add(cajasButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - informesGeneralesButton = new JButton(); - informesGeneralesButton.setText("Informes Generales"); - buttonPanel.add(informesGeneralesButton, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer1 = new Spacer(); - buttonPanel.add(spacer1, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + buttonPanel.add(spacer1, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); informesMensualesButton = new JButton(); informesMensualesButton.setText("Informes Mensuales"); buttonPanel.add(informesMensualesButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + salirButton = new JButton(); + salirButton.setText("Salir"); + buttonPanel.add(salirButton, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); } /** diff --git a/src/danielcortes/xyz/views/components/DoubleFormatedTextField.java b/src/danielcortes/xyz/views/components/DoubleFormatedTextField.java new file mode 100644 index 0000000..73b9767 --- /dev/null +++ b/src/danielcortes/xyz/views/components/DoubleFormatedTextField.java @@ -0,0 +1,61 @@ +package danielcortes.xyz.views.components; + +import org.mariuszgromada.math.mxparser.Expression; + +import javax.swing.*; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.text.NumberFormat; + +public class DoubleFormatedTextField extends JTextField { + private double value; + private NumberFormat nf; + + public DoubleFormatedTextField() { + super(); + + this.nf = NumberFormat.getIntegerInstance(); + this.nf.setMaximumFractionDigits(2); + + this.addFocusListener(new FocusListener() { + @Override + public void focusGained(FocusEvent e) { + DoubleFormatedTextField.this.select(0, getText().length()); + } + + @Override + public void focusLost(FocusEvent e) { + DoubleFormatedTextField.this.readValue(); + DoubleFormatedTextField.this.formatText(); + } + }); + } + + public double getValue() { + this.readValue(); + return this.value; + } + + public void setValue(double value) { + this.value = value; + this.formatText(); + } + + private void readValue() { + String currentText = this.getText(); + String stripedDots = currentText.replace(".", ""); + String replacedPeriods = stripedDots.replace(",", "."); + Expression expression = new Expression(replacedPeriods); + + if (expression.checkSyntax()) { + this.value = expression.calculate(); + } else { + this.value = 0; + } + + } + + private void formatText() { + this.setText(nf.format(this.value)); + } +} diff --git a/src/danielcortes/xyz/views/listeners/FocusLostListener.java b/src/danielcortes/xyz/views/listeners/FocusLostListener.java new file mode 100644 index 0000000..5df597d --- /dev/null +++ b/src/danielcortes/xyz/views/listeners/FocusLostListener.java @@ -0,0 +1,10 @@ +package danielcortes.xyz.views.listeners; + +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; + +public interface FocusLostListener extends FocusListener { + @Override + default void focusGained(FocusEvent e){ } +} +