// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2013 uniCenta & previous Openbravo POS works // http://www.unicenta.net/unicentaopos // // This file is part of uniCenta oPOS // // uniCenta oPOS is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // uniCenta oPOS is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>. package com.openbravo.pos.panels; import com.openbravo.basic.BasicException; import com.openbravo.data.gui.MessageInf; import com.openbravo.data.gui.TableRendererBasic; import com.openbravo.data.loader.Datas; import com.openbravo.data.loader.SerializerWriteBasic; import com.openbravo.data.loader.StaticSentence; import com.openbravo.format.Formats; import com.openbravo.pos.forms.*; import com.openbravo.pos.printer.TicketParser; import com.openbravo.pos.printer.TicketPrinterException; import com.openbravo.pos.scripting.ScriptEngine; import com.openbravo.pos.scripting.ScriptException; import com.openbravo.pos.scripting.ScriptFactory; import java.awt.Dimension; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumnModel; /** * * @author adrianromero */ public class JPanelCloseMoney extends JPanel implements JPanelView, BeanFactoryApp { private AppView m_App; private DataLogicSystem m_dlSystem; private PaymentsModel m_PaymentsToClose = null; private TicketParser m_TTP; private DateFormat df= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); /** Creates new form JPanelCloseMoney */ public JPanelCloseMoney() { initComponents(); } @Override public void init(AppView app) throws BeanFactoryException { m_App = app; m_dlSystem = (DataLogicSystem) m_App.getBean("com.openbravo.pos.forms.DataLogicSystem"); m_TTP = new TicketParser(m_App.getDeviceTicket(), m_dlSystem); m_jTicketTable.setDefaultRenderer(Object.class, new TableRendererBasic( new Formats[] {new FormatsPayment(), Formats.CURRENCY})); m_jTicketTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); m_jScrollTableTicket.getVerticalScrollBar().setPreferredSize(new Dimension(25,25)); m_jTicketTable.getTableHeader().setReorderingAllowed(false); m_jTicketTable.setRowHeight(25); m_jTicketTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); m_jsalestable.setDefaultRenderer(Object.class, new TableRendererBasic( new Formats[] {Formats.STRING, Formats.CURRENCY, Formats.CURRENCY, Formats.CURRENCY})); m_jsalestable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); m_jScrollSales.getVerticalScrollBar().setPreferredSize(new Dimension(25,25)); m_jsalestable.getTableHeader().setReorderingAllowed(false); m_jsalestable.setRowHeight(25); m_jsalestable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jPanelTop.setVisible(false); if (m_App.getProperties().getProperty("screen.600800") != null) { if (Boolean.valueOf(m_App.getProperties().getProperty("screen.600800")).booleanValue() == true) { jPanelTop.setVisible(true); jPanelBottom.setVisible(false); } else { jPanelTop.setVisible(false); jPanelBottom.setVisible(true); } }} @Override public Object getBean() { return this; } @Override public JComponent getComponent() { return this; } @Override public String getTitle() { return AppLocal.getIntString("Menu.CloseTPV"); } @Override public void activate() throws BasicException { loadData(); } @Override public boolean deactivate() { // se me debe permitir cancelar el deactivate return true; } private void loadData() throws BasicException { // Reset m_jSequence.setText(null); m_jMinDate.setText(null); m_jMaxDate.setText(null); m_jPrintCash.setEnabled(false); m_jCloseCash.setEnabled(false); m_jPrintCashTop.setEnabled(false); m_jCloseCashTop.setEnabled(false); m_jCount.setText(null); // AppLocal.getIntString("label.noticketstoclose"); m_jCash.setText(null); m_jSales.setText(null); m_jSalesSubtotal.setText(null); m_jSalesTaxes.setText(null); m_jSalesTotal.setText(null); m_jTicketTable.setModel(new DefaultTableModel()); m_jsalestable.setModel(new DefaultTableModel()); // LoadData m_PaymentsToClose = PaymentsModel.loadInstance(m_App); // Populate Data m_jSequence.setText(m_PaymentsToClose.printSequence()); m_jMinDate.setText(m_PaymentsToClose.printDateStart()); m_jMaxDate.setText(m_PaymentsToClose.printDateEnd()); if (m_PaymentsToClose.getPayments() != 0 || m_PaymentsToClose.getSales() != 0) { m_jPrintCash.setEnabled(true); m_jCloseCash.setEnabled(true); m_jPrintCashTop.setEnabled(true); m_jCloseCashTop.setEnabled(true); m_jCount.setText(m_PaymentsToClose.printPayments()); m_jCash.setText(m_PaymentsToClose.printPaymentsTotal()); m_jSales.setText(m_PaymentsToClose.printSales()); m_jSalesSubtotal.setText(m_PaymentsToClose.printSalesBase()); m_jSalesTaxes.setText(m_PaymentsToClose.printSalesTaxes()); m_jSalesTotal.setText(m_PaymentsToClose.printSalesTotal()); } m_jTicketTable.setModel(m_PaymentsToClose.getPaymentsModel()); TableColumnModel jColumns = m_jTicketTable.getColumnModel(); jColumns.getColumn(0).setPreferredWidth(245); jColumns.getColumn(0).setResizable(false); jColumns.getColumn(1).setPreferredWidth(100); jColumns.getColumn(1).setResizable(false); m_jsalestable.setModel(m_PaymentsToClose.getSalesModel()); jColumns = m_jsalestable.getColumnModel(); jColumns.getColumn(0).setPreferredWidth(245); jColumns.getColumn(0).setResizable(false); jColumns.getColumn(1).setPreferredWidth(100); jColumns.getColumn(1).setResizable(false); } private void printPayments(String report) { String sresource = m_dlSystem.getResourceAsXML(report); if (sresource == null) { MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotprintticket")); msg.show(this); } else { try { ScriptEngine script = ScriptFactory.getScriptEngine(ScriptFactory.VELOCITY); script.put("payments", m_PaymentsToClose); // script.put("ticket", ticket); m_TTP.printTicket(script.eval(sresource).toString()); // JG 16 May 2013 use multicatch } catch ( ScriptException | TicketPrinterException e) { MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotprintticket"), e); msg.show(this); } } } private class FormatsPayment extends Formats { @Override protected String formatValueInt(Object value) { return AppLocal.getIntString("transpayment." + (String) value); } @Override protected Object parseValueInt(String value) throws ParseException { return value; } @Override public int getAlignment() { return javax.swing.SwingConstants.LEFT; } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel1 = new javax.swing.JPanel(); jPanel4 = new javax.swing.JPanel(); jLabel11 = new javax.swing.JLabel(); m_jSequence = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); m_jMinDate = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); m_jMaxDate = new javax.swing.JTextField(); jPanel5 = new javax.swing.JPanel(); m_jScrollTableTicket = new javax.swing.JScrollPane(); m_jTicketTable = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); m_jCount = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); m_jCash = new javax.swing.JTextField(); jPanel6 = new javax.swing.JPanel(); m_jSalesTotal = new javax.swing.JTextField(); m_jScrollSales = new javax.swing.JScrollPane(); m_jsalestable = new javax.swing.JTable(); m_jSalesTaxes = new javax.swing.JTextField(); m_jSalesSubtotal = new javax.swing.JTextField(); m_jSales = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jPanelTop = new javax.swing.JPanel(); m_jPrintCashTop = new javax.swing.JButton(); m_jCloseCashTop = new javax.swing.JButton(); jPanelBottom = new javax.swing.JPanel(); m_jPrintCash = new javax.swing.JButton(); m_jCloseCash = new javax.swing.JButton(); setLayout(new java.awt.BorderLayout()); jPanel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(AppLocal.getIntString("label.datestitle"))); // NOI18N jPanel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel4.setPreferredSize(new java.awt.Dimension(660, 91)); jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel11.setText(AppLocal.getIntString("label.sequence")); // NOI18N m_jSequence.setEditable(false); m_jSequence.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jSequence.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel2.setText(AppLocal.getIntString("Label.StartDate")); // NOI18N m_jMinDate.setEditable(false); m_jMinDate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jMinDate.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setText(AppLocal.getIntString("Label.EndDate")); // NOI18N m_jMaxDate.setEditable(false); m_jMaxDate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jMaxDate.setHorizontalAlignment(javax.swing.JTextField.RIGHT); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, 127, Short.MAX_VALUE)) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(m_jSequence, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(m_jMinDate, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(5, 5, 5) .addComponent(m_jMaxDate, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(51, Short.MAX_VALUE)) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jSequence, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jMinDate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jMaxDate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(AppLocal.getIntString("label.paymentstitle"))); // NOI18N jPanel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jScrollTableTicket.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jScrollTableTicket.setMinimumSize(new java.awt.Dimension(350, 140)); m_jScrollTableTicket.setPreferredSize(new java.awt.Dimension(350, 140)); m_jTicketTable.setFocusable(false); m_jTicketTable.setIntercellSpacing(new java.awt.Dimension(0, 1)); m_jTicketTable.setRequestFocusEnabled(false); m_jTicketTable.setShowVerticalLines(false); m_jScrollTableTicket.setViewportView(m_jTicketTable); jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel1.setText(AppLocal.getIntString("Label.Tickets")); // NOI18N m_jCount.setEditable(false); m_jCount.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jCount.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel4.setText(AppLocal.getIntString("Label.Cash")); // NOI18N m_jCash.setEditable(false); m_jCash.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jCash.setHorizontalAlignment(javax.swing.JTextField.RIGHT); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addComponent(m_jScrollTableTicket, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jCount, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jCash, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jCount, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jCash, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(m_jScrollTableTicket, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(AppLocal.getIntString("label.salestitle"))); // NOI18N jPanel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jSalesTotal.setEditable(false); m_jSalesTotal.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N m_jSalesTotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT); m_jScrollSales.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jsalestable.setFocusable(false); m_jsalestable.setIntercellSpacing(new java.awt.Dimension(0, 1)); m_jsalestable.setRequestFocusEnabled(false); m_jsalestable.setShowVerticalLines(false); m_jScrollSales.setViewportView(m_jsalestable); m_jSalesTaxes.setEditable(false); m_jSalesTaxes.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jSalesTaxes.setHorizontalAlignment(javax.swing.JTextField.RIGHT); m_jSalesSubtotal.setEditable(false); m_jSalesSubtotal.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jSalesSubtotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT); m_jSales.setEditable(false); m_jSales.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jSales.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel5.setText(AppLocal.getIntString("label.sales")); // NOI18N jLabel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel6.setText(AppLocal.getIntString("label.subtotalcash")); // NOI18N jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel12.setText(AppLocal.getIntString("label.taxcash")); // NOI18N jLabel7.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N jLabel7.setText(AppLocal.getIntString("label.totalcash")); // NOI18N javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addComponent(m_jScrollSales, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jSales, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jSalesSubtotal, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jSalesTaxes, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jSalesTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel6Layout.setVerticalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(m_jScrollSales, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel6Layout.createSequentialGroup() .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jSales, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jSalesSubtotal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jSalesTaxes, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jSalesTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanelTop.setEnabled(false); m_jPrintCashTop.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jPrintCashTop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/printer.png"))); // NOI18N m_jPrintCashTop.setText(AppLocal.getIntString("Button.PrintCash")); // NOI18N m_jPrintCashTop.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); m_jPrintCashTop.setIconTextGap(2); m_jPrintCashTop.setMaximumSize(new java.awt.Dimension(85, 33)); m_jPrintCashTop.setMinimumSize(new java.awt.Dimension(85, 33)); m_jPrintCashTop.setPreferredSize(new java.awt.Dimension(85, 33)); m_jPrintCashTop.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jPrintCashTopActionPerformed(evt); } }); m_jCloseCashTop.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jCloseCashTop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/calculator.png"))); // NOI18N m_jCloseCashTop.setText(AppLocal.getIntString("Button.CloseCash")); // NOI18N m_jCloseCashTop.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); m_jCloseCashTop.setIconTextGap(2); m_jCloseCashTop.setInheritsPopupMenu(true); m_jCloseCashTop.setMaximumSize(new java.awt.Dimension(85, 33)); m_jCloseCashTop.setMinimumSize(new java.awt.Dimension(85, 33)); m_jCloseCashTop.setPreferredSize(new java.awt.Dimension(85, 33)); m_jCloseCashTop.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jCloseCashTopActionPerformed(evt); } }); javax.swing.GroupLayout jPanelTopLayout = new javax.swing.GroupLayout(jPanelTop); jPanelTop.setLayout(jPanelTopLayout); jPanelTopLayout.setHorizontalGroup( jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 336, Short.MAX_VALUE) .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelTopLayout.createSequentialGroup() .addGap(20, 20, 20) .addComponent(m_jPrintCashTop, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jCloseCashTop, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) ); jPanelTopLayout.setVerticalGroup( jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 59, Short.MAX_VALUE) .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelTopLayout.createSequentialGroup() .addGap(6, 6, 6) .addGroup(jPanelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(m_jCloseCashTop, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jPrintCashTop, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) ); m_jPrintCash.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jPrintCash.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/printer.png"))); // NOI18N m_jPrintCash.setText(AppLocal.getIntString("Button.PrintCash")); // NOI18N m_jPrintCash.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); m_jPrintCash.setIconTextGap(2); m_jPrintCash.setMaximumSize(new java.awt.Dimension(85, 33)); m_jPrintCash.setMinimumSize(new java.awt.Dimension(85, 33)); m_jPrintCash.setPreferredSize(new java.awt.Dimension(85, 33)); m_jPrintCash.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jPrintCashActionPerformed(evt); } }); m_jCloseCash.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jCloseCash.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/calculator.png"))); // NOI18N m_jCloseCash.setText(AppLocal.getIntString("Button.CloseCash")); // NOI18N m_jCloseCash.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); m_jCloseCash.setIconTextGap(2); m_jCloseCash.setInheritsPopupMenu(true); m_jCloseCash.setMaximumSize(new java.awt.Dimension(85, 33)); m_jCloseCash.setMinimumSize(new java.awt.Dimension(85, 33)); m_jCloseCash.setPreferredSize(new java.awt.Dimension(85, 33)); m_jCloseCash.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jCloseCashActionPerformed(evt); } }); javax.swing.GroupLayout jPanelBottomLayout = new javax.swing.GroupLayout(jPanelBottom); jPanelBottom.setLayout(jPanelBottomLayout); jPanelBottomLayout.setHorizontalGroup( jPanelBottomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelBottomLayout.createSequentialGroup() .addContainerGap() .addComponent(m_jPrintCash, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE) .addComponent(m_jCloseCash, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanelBottomLayout.setVerticalGroup( jPanelBottomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelBottomLayout.createSequentialGroup() .addGap(0, 14, Short.MAX_VALUE) .addGroup(jPanelBottomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(m_jPrintCash, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jCloseCash, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE))) ); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jPanel5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanelTop, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanelBottom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jPanelTop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE) .addComponent(jPanelBottom, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); add(jPanel1, java.awt.BorderLayout.CENTER); }// </editor-fold>//GEN-END:initComponents private void m_jCloseCashActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jCloseCashActionPerformed int res = JOptionPane.showConfirmDialog(this, AppLocal.getIntString("message.wannaclosecash"), AppLocal.getIntString("message.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (res == JOptionPane.YES_OPTION) { Date dNow = new Date(); try { // Cerramos la caja si esta pendiente de cerrar. if (m_App.getActiveCashDateEnd() == null) { new StaticSentence(m_App.getSession() , "UPDATE CLOSEDCASH SET DATEEND = ? WHERE HOST = ? AND MONEY = ?" , new SerializerWriteBasic(new Datas[] {Datas.TIMESTAMP, Datas.STRING, Datas.STRING})) .exec(new Object[] {dNow, m_App.getProperties().getHost(), m_App.getActiveCashIndex()}); } } catch (BasicException e) { MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("message.cannotclosecash"), e); msg.show(this); } try { // Creamos una nueva caja m_App.setActiveCash(UUID.randomUUID().toString(), m_App.getActiveCashSequence() + 1, dNow, null); // creamos la caja activa m_dlSystem.execInsertCash( new Object[] {m_App.getActiveCashIndex(), m_App.getProperties().getHost(), m_App.getActiveCashSequence(), m_App.getActiveCashDateStart(), m_App.getActiveCashDateEnd()}); // m_dlSystem.execDrawerOpened( // new Object[] {df.format(dNow),m_App.getAppUserView().getUser().getName(),"Close Cash"}); // ponemos la fecha de fin m_PaymentsToClose.setDateEnd(dNow); // print report printPayments("Printer.CloseCash"); // Mostramos el mensaje JOptionPane.showMessageDialog(this, AppLocal.getIntString("message.closecashok"), AppLocal.getIntString("message.title"), JOptionPane.INFORMATION_MESSAGE); } catch (BasicException e) { MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("message.cannotclosecash"), e); msg.show(this); } try { loadData(); } catch (BasicException e) { MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("label.noticketstoclose"), e); msg.show(this); } } }//GEN-LAST:event_m_jCloseCashActionPerformed private void m_jPrintCashActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jPrintCashActionPerformed // print report printPayments("Printer.PartialCash"); }//GEN-LAST:event_m_jPrintCashActionPerformed private void m_jCloseCashTopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jCloseCashTopActionPerformed int res = JOptionPane.showConfirmDialog(this, AppLocal.getIntString("message.wannaclosecash"), AppLocal.getIntString("message.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (res == JOptionPane.YES_OPTION) { Date dNow = new Date(); try { // Cerramos la caja si esta pendiente de cerrar. if (m_App.getActiveCashDateEnd() == null) { new StaticSentence(m_App.getSession() , "UPDATE CLOSEDCASH SET DATEEND = ? WHERE HOST = ? AND MONEY = ?" , new SerializerWriteBasic(new Datas[] {Datas.TIMESTAMP, Datas.STRING, Datas.STRING})) .exec(new Object[] {dNow, m_App.getProperties().getHost(), m_App.getActiveCashIndex()}); } } catch (BasicException e) { MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("message.cannotclosecash"), e); msg.show(this); } try { // Creamos una nueva caja m_App.setActiveCash(UUID.randomUUID().toString(), m_App.getActiveCashSequence() + 1, dNow, null); // creamos la caja activa m_dlSystem.execInsertCash( new Object[] {m_App.getActiveCashIndex(), m_App.getProperties().getHost(), m_App.getActiveCashSequence(), m_App.getActiveCashDateStart(), m_App.getActiveCashDateEnd()}); // m_dlSystem.execDrawerOpened( // new Object[] {df.format(dNow),m_App.getAppUserView().getUser().getName(),"Close Cash"}); // ponemos la fecha de fin m_PaymentsToClose.setDateEnd(dNow); // print report printPayments("Printer.CloseCash"); // Mostramos el mensaje JOptionPane.showMessageDialog(this, AppLocal.getIntString("message.closecashok"), AppLocal.getIntString("message.title"), JOptionPane.INFORMATION_MESSAGE); } catch (BasicException e) { MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("message.cannotclosecash"), e); msg.show(this); } try { loadData(); } catch (BasicException e) { MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("label.noticketstoclose"), e); msg.show(this); } } }//GEN-LAST:event_m_jCloseCashTopActionPerformed private void m_jPrintCashTopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jPrintCashTopActionPerformed // print report printPayments("Printer.PartialCash"); }//GEN-LAST:event_m_jPrintCashTopActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanelBottom; private javax.swing.JPanel jPanelTop; private javax.swing.JTextField m_jCash; private javax.swing.JButton m_jCloseCash; private javax.swing.JButton m_jCloseCashTop; private javax.swing.JTextField m_jCount; private javax.swing.JTextField m_jMaxDate; private javax.swing.JTextField m_jMinDate; private javax.swing.JButton m_jPrintCash; private javax.swing.JButton m_jPrintCashTop; private javax.swing.JTextField m_jSales; private javax.swing.JTextField m_jSalesSubtotal; private javax.swing.JTextField m_jSalesTaxes; private javax.swing.JTextField m_jSalesTotal; private javax.swing.JScrollPane m_jScrollSales; private javax.swing.JScrollPane m_jScrollTableTicket; private javax.swing.JTextField m_jSequence; private javax.swing.JTable m_jTicketTable; private javax.swing.JTable m_jsalestable; // End of variables declaration//GEN-END:variables }