/*
* VoidTicketDialog.java
*
* Created on September 2, 2006, 11:52 PM
*/
package com.floreantpos.ui.dialog;
import java.awt.Frame;
import java.util.List;
import com.floreantpos.main.Application;
import com.floreantpos.model.ActionHistory;
import com.floreantpos.model.Ticket;
import com.floreantpos.model.VoidReason;
import com.floreantpos.model.dao.ActionHistoryDAO;
import com.floreantpos.model.dao.TicketDAO;
import com.floreantpos.model.dao.VoidReasonDAO;
import com.floreantpos.model.util.POSConstants;
import com.floreantpos.print.PosPrintService;
import com.floreantpos.swing.ListComboBoxModel;
/**
*
* @author MShahriar
*/
public class VoidTicketDialog extends POSDialog {
private Ticket ticket;
/** Creates new form VoidTicketDialog */
public VoidTicketDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal, true);
initComponents();
ticketDetailView.setButtonPanelVisible(false);
try {
VoidReasonDAO dao = new VoidReasonDAO();
List<VoidReason> voidReasons = dao.findAll();
cbVoidReasons.setModel(new ListComboBoxModel(voidReasons));
} catch (Exception e) {
POSMessageDialog.showError("Cannot load void reasons", e);
}
setSize(794, 575);
}
/** 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() {
contentPane = new com.floreantpos.swing.TransparentPanel();
titlePanel1 = new com.floreantpos.ui.TitlePanel();
transparentPanel1 = new com.floreantpos.swing.TransparentPanel();
jPanel1 = new javax.swing.JPanel();
ticketView = new com.floreantpos.ui.views.order.TicketView();
jPanel2 = new javax.swing.JPanel();
ticketDetailView = new com.floreantpos.ui.views.TicketDetailView();
transparentPanel2 = new com.floreantpos.swing.TransparentPanel();
cbVoidReasons = new javax.swing.JComboBox();
btnNewVoidReason = new com.floreantpos.swing.PosButton();
chkItemsWasted = new javax.swing.JCheckBox();
jLabel1 = new javax.swing.JLabel();
transparentPanel3 = new com.floreantpos.swing.TransparentPanel();
transparentPanel4 = new com.floreantpos.swing.TransparentPanel();
btnVoid = new com.floreantpos.swing.PosButton();
btnCancel = new com.floreantpos.swing.PosButton();
jSeparator1 = new javax.swing.JSeparator();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
contentPane.setLayout(new java.awt.BorderLayout());
titlePanel1.setPreferredSize(new java.awt.Dimension(400, 60));
titlePanel1.setTitle("VOID TICKET");
contentPane.add(titlePanel1, java.awt.BorderLayout.NORTH);
transparentPanel1.setLayout(new java.awt.BorderLayout());
jPanel1.setOpaque(false);
jPanel1.setLayout(new java.awt.BorderLayout());
ticketView.setControlsVisible(false);
jPanel1.add(ticketView, java.awt.BorderLayout.CENTER);
transparentPanel1.add(jPanel1, java.awt.BorderLayout.WEST);
jPanel2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 20, 0, 0));
jPanel2.setOpaque(false);
jPanel2.setLayout(new java.awt.BorderLayout());
ticketDetailView.setBalanceDuePanelVisible(false);
jPanel2.add(ticketDetailView, java.awt.BorderLayout.CENTER);
transparentPanel2.setPreferredSize(new java.awt.Dimension(0, 80));
btnNewVoidReason.setText("...");
btnNewVoidReason.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNewVoidReasonActionPerformed(evt);
}
});
chkItemsWasted.setText("ITEMS WASTED");
chkItemsWasted.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
chkItemsWasted.setMargin(new java.awt.Insets(0, 0, 0, 0));
jLabel1.setText("VOID REASON:");
org.jdesktop.layout.GroupLayout transparentPanel2Layout = new org.jdesktop.layout.GroupLayout(transparentPanel2);
transparentPanel2.setLayout(transparentPanel2Layout);
transparentPanel2Layout.setHorizontalGroup(
transparentPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(transparentPanel2Layout.createSequentialGroup()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(transparentPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(chkItemsWasted)
.add(org.jdesktop.layout.GroupLayout.TRAILING, transparentPanel2Layout.createSequentialGroup()
.add(cbVoidReasons, 0, 0, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(btnNewVoidReason, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 79, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
transparentPanel2Layout.setVerticalGroup(
transparentPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(transparentPanel2Layout.createSequentialGroup()
.addContainerGap()
.add(transparentPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, transparentPanel2Layout.createSequentialGroup()
.add(transparentPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel1)
.add(cbVoidReasons, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(chkItemsWasted)
.add(34, 34, 34))
.add(transparentPanel2Layout.createSequentialGroup()
.add(btnNewVoidReason, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(53, 53, 53))))
);
jPanel2.add(transparentPanel2, java.awt.BorderLayout.SOUTH);
transparentPanel1.add(jPanel2, java.awt.BorderLayout.CENTER);
contentPane.add(transparentPanel1, java.awt.BorderLayout.CENTER);
transparentPanel3.setLayout(new java.awt.BorderLayout());
btnVoid.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/void_ticket_32.png"))); // NOI18N
btnVoid.setText("VOID");
btnVoid.setPreferredSize(new java.awt.Dimension(140, 60));
btnVoid.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnVoidActionPerformed(evt);
}
});
transparentPanel4.add(btnVoid);
btnCancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/cancel_32.png"))); // NOI18N
btnCancel.setText("CANCEL");
btnCancel.setPreferredSize(new java.awt.Dimension(140, 60));
btnCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCancelActionPerformed(evt);
}
});
transparentPanel4.add(btnCancel);
transparentPanel3.add(transparentPanel4, java.awt.BorderLayout.CENTER);
transparentPanel3.add(jSeparator1, java.awt.BorderLayout.NORTH);
contentPane.add(transparentPanel3, java.awt.BorderLayout.SOUTH);
getContentPane().add(contentPane, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
private void btnNewVoidReasonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewVoidReasonActionPerformed
try {
NotesDialog dialog = new NotesDialog((Frame) getOwner(), true);
dialog.setTitle("ENTER VOID REASON");
dialog.pack();
dialog.open();
if (!dialog.isCanceled()) {
String newVoidReason = dialog.getNote();
VoidReason voidReason = new VoidReason();
voidReason.setReasonText(newVoidReason);
VoidReasonDAO dao = new VoidReasonDAO();
dao.save(voidReason);
if(cbVoidReasons.getModel() instanceof ListComboBoxModel) {
ListComboBoxModel model = (ListComboBoxModel) cbVoidReasons.getModel();
model.addElement(voidReason);
}
}
} catch (Throwable e) {
POSMessageDialog.showError(POSConstants.RESTART_ERROR_MESSAGE, e);
}
}//GEN-LAST:event_btnNewVoidReasonActionPerformed
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
canceled = true;
dispose();
}//GEN-LAST:event_btnCancelActionPerformed
private void btnVoidActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVoidActionPerformed
try {
VoidReason voidReason = (VoidReason) cbVoidReasons.getSelectedItem();
ticket.setVoidReason(voidReason.getReasonText());
ticket.setWasted(chkItemsWasted.isSelected());
ticket.setVoidedBy(Application.getCurrentUser());
TicketDAO dao = new TicketDAO();
dao.voidTicket(ticket);
try {
PosPrintService.printVoidInfo(ticket);
}catch(Exception ee) {
String message = "There was an error while printing void information to kitchen\n" + ee.getMessage();
POSMessageDialog.showError(Application.getPosWindow(), message, ee);
}
canceled = false;
//save the action
ActionHistoryDAO.getInstance().saveHistory(Application.getCurrentUser(), ActionHistory.VOID_CHECK, "CHK#:"+ticket.getId() +"; Total: " + Application.formatNumber(ticket.getTotalAmount()));
dispose();
} catch (Exception e) {
POSMessageDialog.showError(POSMessageDialog.ERROR_MESSAGE, e);
}
}//GEN-LAST:event_btnVoidActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private com.floreantpos.swing.PosButton btnCancel;
private com.floreantpos.swing.PosButton btnNewVoidReason;
private com.floreantpos.swing.PosButton btnVoid;
private javax.swing.JComboBox cbVoidReasons;
private javax.swing.JCheckBox chkItemsWasted;
private com.floreantpos.swing.TransparentPanel contentPane;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JSeparator jSeparator1;
private com.floreantpos.ui.views.TicketDetailView ticketDetailView;
private com.floreantpos.ui.views.order.TicketView ticketView;
private com.floreantpos.ui.TitlePanel titlePanel1;
private com.floreantpos.swing.TransparentPanel transparentPanel1;
private com.floreantpos.swing.TransparentPanel transparentPanel2;
private com.floreantpos.swing.TransparentPanel transparentPanel3;
private com.floreantpos.swing.TransparentPanel transparentPanel4;
// End of variables declaration//GEN-END:variables
public Ticket getTicket() {
return ticket;
}
public void setTicket(Ticket ticket) {
this.ticket = ticket;
ticketView.setTicket(ticket);
ticketDetailView.setTicket(ticket);
}
}