package com.floreantpos.ui.dialog; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.JLabel; import javax.swing.JSeparator; import net.miginfocom.swing.MigLayout; import com.floreantpos.main.Application; import com.floreantpos.model.Ticket; import com.floreantpos.print.PosPrintService; import com.floreantpos.swing.PosButton; public class TransactionCompletionDialog extends POSDialog { private List<Ticket> tickets; private double tenderedAmount; private double totalAmount; private double paidAmount; private double dueAmount; private double dueAmountBeforePaid; private double gratuityAmount; private JLabel lblTenderedAmount; private JLabel lblTotalAmount; private JLabel lblPaidAmount; private JLabel lblDueAmount; private JLabel lblChangeDue; private JLabel lblGratuityAmount; private TransactionCompletionDialog(Frame parent) { super(parent, true); setTitle("Transaction Completed"); setLayout(new MigLayout("align 50% 0%, ins 20","[]20[]","")); add(createLabel("TOTAL AMOUNT:",JLabel.LEFT), "grow"); lblTotalAmount = createLabel("0.0",JLabel.RIGHT); add(lblTotalAmount, "grow"); add(createLabel("TENDERED AMOUNT:",JLabel.LEFT), "newline,grow"); lblTenderedAmount = createLabel("0.0",JLabel.RIGHT); add(lblTenderedAmount, "grow"); add(new JSeparator(), "newline,span, grow"); add(createLabel("PAID AMOUNT:",JLabel.LEFT), "newline,grow"); lblPaidAmount = createLabel("0.0",JLabel.RIGHT); add(lblPaidAmount, "grow"); add(createLabel("DUE AMOUNT:",JLabel.LEFT), "newline,grow"); lblDueAmount = createLabel("0.0",JLabel.RIGHT); add(lblDueAmount, "grow"); add(new JSeparator(), "newline,span, grow"); add(createLabel("GRATUITY AMOUNT:",JLabel.LEFT), "newline,grow"); lblGratuityAmount = createLabel("0.0",JLabel.RIGHT); add(lblGratuityAmount, "grow"); add(new JSeparator(), "newline,span, grow"); add(createLabel("CHANGE DUE:",JLabel.LEFT), "grow"); lblChangeDue = createLabel("0.0", JLabel.RIGHT); add(lblChangeDue, "grow"); add(new JSeparator(), "sg mygroup,newline,span,grow"); PosButton btnClose = new PosButton("CLOSE"); btnClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); PosButton btnPrintClose = new PosButton("PRINT & CLOSE"); btnPrintClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { for (Ticket ticket : tickets) { // PosPrintService.printMoneyReceipt(ticket); PosPrintService.printTicket(ticket); } }catch(Exception ee) { POSMessageDialog.showError(Application.getPosWindow(), "There was an error while printing money receipt", ee); } dispose(); } }); add(btnPrintClose, "newline,skip, align 100%,h 50, w 120"); add(btnClose, "skip, align 100%,h 50, w 120"); setResizable(false); } protected JLabel createLabel(String text, int alignment) { JLabel label = new JLabel(text); label.setFont(new java.awt.Font("Tahoma", 1, 36)); label.setForeground(new java.awt.Color(255, 102, 0)); label.setHorizontalAlignment(alignment); label.setText(text); return label; } public double getTenderedAmount() { return tenderedAmount; } public void setTenderedAmount(double amountTendered) { this.tenderedAmount = amountTendered; } public void updateView() { lblTotalAmount.setText(Application.formatNumber(totalAmount)); lblTenderedAmount.setText(Application.formatNumber(tenderedAmount)); lblPaidAmount.setText(Application.formatNumber(paidAmount)); lblDueAmount.setText(Application.formatNumber(dueAmount)); lblGratuityAmount.setText(Application.formatNumber(gratuityAmount)); double changeDueAmount = tenderedAmount - dueAmountBeforePaid; if(changeDueAmount < 0) { changeDueAmount = 0; } lblChangeDue.setText(Application.formatNumber(changeDueAmount)); } private static TransactionCompletionDialog instance; public static TransactionCompletionDialog getInstance() { if(instance == null) { instance = new TransactionCompletionDialog(Application.getPosWindow()); } return instance; } public double getDueAmountBeforePaid() { return dueAmountBeforePaid; } public void setDueAmountBeforePaid(double dueAmountBeforePaid) { this.dueAmountBeforePaid = dueAmountBeforePaid; } public double getDueAmount() { return dueAmount; } public void setDueAmount(double dueAmount) { this.dueAmount = dueAmount; } public double getPaidAmount() { return paidAmount; } public void setPaidAmount(double paidAmount) { this.paidAmount = paidAmount; } public double getTotalAmount() { return totalAmount; } public void setTotalAmount(double totalAmount) { this.totalAmount = totalAmount; } public double getGratuityAmount() { return gratuityAmount; } public void setGratuityAmount(double gratuityAmount) { this.gratuityAmount = gratuityAmount; } public List<Ticket> getTickets() { return tickets; } public void setTickets(List<Ticket> tickets) { this.tickets = tickets; } }