// GreenPOS is a point of sales application designed for touch screens.
// Copyright (C) 2007-2009 Openbravo, S.L.
// http://code.google.com/p/openbravocustom/
//
// This file is part of GreenPOS.
//
// GreenPOS 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.
//
// GreenPOS 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 GreenPOS. If not, see <http://www.gnu.org/licenses/>.
package com.openbravo.pos.panels;
import com.openbravo.pos.forms.JPanelView;
import com.openbravo.pos.forms.AppView;
import com.openbravo.pos.forms.AppLocal;
import java.awt.*;
import java.text.ParseException;
import javax.swing.*;
import java.util.Timer;
import java.util.Date;
import java.util.UUID;
import javax.swing.table.*;
import com.openbravo.data.loader.StaticSentence;
import com.openbravo.data.loader.SerializerWriteBasic;
import com.openbravo.format.Formats;
import com.openbravo.basic.BasicException;
import com.openbravo.data.loader.Datas;
import com.openbravo.data.gui.MessageInf;
import com.openbravo.data.gui.TableRendererBasic;
import com.openbravo.pos.forms.BeanFactoryApp;
import com.openbravo.pos.forms.BeanFactoryException;
import com.openbravo.pos.scripting.ScriptEngine;
import com.openbravo.pos.scripting.ScriptException;
import com.openbravo.pos.scripting.ScriptFactory;
import com.openbravo.pos.forms.DataLogicSystem;
import com.openbravo.pos.forms.ProcessAction;
import com.openbravo.pos.printer.TicketParser;
import com.openbravo.pos.printer.TicketPrinterException;
import com.openbravo.pos.ticket.TicketInfo;
import java.io.IOException;
import java.util.TimerTask;
import net.virtuemart.www.possync.SyncThread;
/**
*
* @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;
/** Creates new form JPanelCloseMoney */
public JPanelCloseMoney() {
initComponents();
}
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);
}
public Object getBean() {
return this;
}
public JComponent getComponent() {
return this;
}
public String getTitle() {
return AppLocal.getIntString("Menu.CloseTPV");
}
public void activate() throws BasicException {
loadData();
}
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_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_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(200);
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(200);
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);
m_TTP.printTicket(script.eval(sresource).toString());
} catch (ScriptException e) {
MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotprintticket"), e);
msg.show(this);
} catch (TicketPrinterException e) {
MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotprintticket"), e);
msg.show(this);
}
}
}
private class FormatsPayment extends Formats {
protected String formatValueInt(Object value) {
return AppLocal.getIntString("transpayment." + (String) value);
}
protected Object parseValueInt(String value) throws ParseException {
return value;
}
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();
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();
m_jCloseCash = new javax.swing.JButton();
m_jPrintCash = new javax.swing.JButton();
setLayout(new java.awt.BorderLayout());
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(AppLocal.getIntString("label.datestitle"))); // NOI18N
jLabel11.setText(AppLocal.getIntString("label.sequence")); // NOI18N
m_jSequence.setEditable(false);
m_jSequence.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jLabel2.setText(AppLocal.getIntString("Label.StartDate")); // NOI18N
m_jMinDate.setEditable(false);
m_jMinDate.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jLabel3.setText(AppLocal.getIntString("Label.EndDate")); // NOI18N
m_jMaxDate.setEditable(false);
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)
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_jSequence, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_jMinDate, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_jMaxDate, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(295, 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)
.addComponent(m_jSequence, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(m_jMinDate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(m_jMaxDate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, 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
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.setText(AppLocal.getIntString("Label.Tickets")); // NOI18N
m_jCount.setEditable(false);
m_jCount.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)
.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)
.addContainerGap(45, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(m_jScrollTableTicket, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(m_jCount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, 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
m_jSalesTotal.setEditable(false);
m_jSalesTotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
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.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
m_jSalesSubtotal.setEditable(false);
m_jSalesSubtotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
m_jSales.setEditable(false);
m_jSales.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jLabel5.setText(AppLocal.getIntString("label.sales")); // NOI18N
jLabel6.setText(AppLocal.getIntString("label.subtotalcash")); // NOI18N
jLabel12.setText(AppLocal.getIntString("label.taxcash")); // 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(45, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(m_jScrollSales, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(m_jSales, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(m_jSalesSubtotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(m_jSalesTaxes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(m_jSalesTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
m_jCloseCash.setText(AppLocal.getIntString("Button.CloseCash")); // NOI18N
m_jCloseCash.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jCloseCashActionPerformed(evt);
}
});
m_jPrintCash.setText(AppLocal.getIntString("Button.PrintCash")); // NOI18N
m_jPrintCash.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jPrintCashActionPerformed(evt);
}
});
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.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(m_jPrintCash)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_jCloseCash))
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.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, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(m_jCloseCash)
.addComponent(m_jPrintCash))
.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
//PC SHUTDOWN TIMEOUT
int timeBeforeShuttingDown;
try {
timeBeforeShuttingDown = Integer.parseInt(m_App.getProperties().getProperty("ws.timeout"));
} catch (NumberFormatException nfe) {
timeBeforeShuttingDown = 0;
}
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()});
// 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);
}
// WS SYNC START
if (TicketInfo.isWS()) {
try {
// app.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
ProcessAction myProcess = (ProcessAction) m_App.getBean("net.virtuemart.www.possync.OrdersSyncCreate");
SyncThread p = new SyncThread(myProcess,"Orders");
p.setDaemon (true);
p.start();
} catch (BeanFactoryException e) {
//JOptionPane.showMessageDialog(m_App, "Order Sync bean error");
e.printStackTrace();
}
if (timeBeforeShuttingDown>0) {
int minutes = Integer.valueOf(timeBeforeShuttingDown);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
ProcessBuilder processBuilder = new ProcessBuilder("shutdown",
"/s");
try {
processBuilder.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}, minutes * 60 * 1000);
}
}
//WS SYNC END
}
}//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
// 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 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.JButton m_jCloseCash;
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.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
}