TavernerPOS - Source Code

Clone: 

git clone http://www.librarysmith.co.uk/tavernerPOS

 

/*
 * SplitTicketView.java
 *
 * Created on September 3, 2006, 11:11 PM
 */

package com.floreantpos.ui.views;


import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.JSeparator;

import net.miginfocom.swing.MigLayout;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.floreantpos.Messages;
import com.floreantpos.POSConstants;
import com.floreantpos.main.Application;
import com.floreantpos.model.ActionHistory;
import com.floreantpos.model.ShopTable;
import com.floreantpos.model.Ticket;
import com.floreantpos.model.TicketItem;
import com.floreantpos.model.dao.ActionHistoryDAO;
import com.floreantpos.model.dao.ShopTableDAO;
import com.floreantpos.model.dao.TicketDAO;
import com.floreantpos.swing.PosButton;
import com.floreantpos.swing.TransparentPanel;
import com.floreantpos.ui.dialog.POSDialog;
import com.floreantpos.ui.dialog.POSMessageDialog;
import com.floreantpos.ui.views.order.TicketForSplitView;

/**
 *
 * @author  MShahriar
 */
public class SplitTicketDialog extends POSDialog {
	private Ticket ticket;

	/** Creates new form SplitTicketView */
	public SplitTicketDialog() {
		super();

		initComponents();

		mainTicketView.setViewNumber(1);
		ticketView2.setViewNumber(2);
		ticketView3.setViewNumber(3);
		ticketView4.setViewNumber(4);

		mainTicketView.setTicketView1(ticketView2);
		mainTicketView.setTicketView2(ticketView3);
		mainTicketView.setTicketView3(ticketView4);

		ticketView2.setTicketView1(mainTicketView);
		ticketView2.setTicketView2(ticketView3);
		ticketView2.setTicketView3(ticketView4);

		ticketView3.setTicketView1(mainTicketView);
		ticketView3.setTicketView2(ticketView2);
		ticketView3.setTicketView3(ticketView4);

		ticketView4.setTicketView1(mainTicketView);
		ticketView4.setTicketView2(ticketView2);
		ticketView4.setTicketView3(ticketView3);

		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		setSize(screenSize);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setResizable(true);
	}

	/** 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() {

        createTitlePanel();
        createActionButtonPanel();
        createToolbarPanel();
        createTicketViewPanel();

        centerPanel = new TransparentPanel(new java.awt.BorderLayout());
        centerPanel.add(toolbarPanel, java.awt.BorderLayout.NORTH);
        centerPanel.add(ticketPanel, java.awt.BorderLayout.CENTER);

        getContentPane().add(centerPanel, java.awt.BorderLayout.CENTER);

    }// </editor-fold>//GEN-END:initComponents

	private void createToolbarPanel() {
		toolbarPanel = new TransparentPanel();

		ButtonGroup buttonGroup = new javax.swing.ButtonGroup();

        btnNumSplit2 = new com.floreantpos.swing.POSToggleButton();
        btnNumSplit3 = new com.floreantpos.swing.POSToggleButton();
        btnNumSplit4 = new com.floreantpos.swing.POSToggleButton();
        lblTicketId = new com.floreantpos.swing.POSTitleLabel();

        lblTicketId.setText(Messages.getString("SplitTicketDialog.0")); //$NON-NLS-1$
        toolbarPanel.add(lblTicketId);
        JSeparator separator = new JSeparator(JSeparator.VERTICAL);
        separator.setPreferredSize(new Dimension(5, 20));
		toolbarPanel.add(separator);
        toolbarPanel.add(new JLabel(com.floreantpos.POSConstants.NUMBER_OF_SPLITS));

        buttonGroup.add(btnNumSplit2);
        btnNumSplit2.setSelected(true);
        btnNumSplit2.setText("2"); //$NON-NLS-1$
        btnNumSplit2.setPreferredSize(new java.awt.Dimension(60, 40));
        btnNumSplit2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNumSplit2ActionPerformed(evt);
            }
        });

        toolbarPanel.add(btnNumSplit2);

        buttonGroup.add(btnNumSplit3);
        btnNumSplit3.setText("3"); //$NON-NLS-1$
        btnNumSplit3.setPreferredSize(new java.awt.Dimension(60, 40));
        btnNumSplit3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNumSplit3ActionPerformed(evt);
            }
        });

        toolbarPanel.add(btnNumSplit3);

        buttonGroup.add(btnNumSplit4);
        btnNumSplit4.setText("4"); //$NON-NLS-1$
        btnNumSplit4.setPreferredSize(new java.awt.Dimension(60, 40));
        btnNumSplit4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNumSplit4ActionPerformed(evt);
            }
        });

        toolbarPanel.add(btnNumSplit4);
	}

	private void createTicketViewPanel() {
		ticketPanel = new TransparentPanel(new MigLayout("fill, hidemode 3")); //$NON-NLS-1$

		mainTicketView = new TicketForSplitView();
        ticketView2 = new TicketForSplitView();
        ticketView3 = new TicketForSplitView();
        ticketView4 = new TicketForSplitView();

        ticketView3.setVisible(false);
		ticketView4.setVisible(false);

        ticketPanel.add(mainTicketView, "grow"); //$NON-NLS-1$
        ticketPanel.add(ticketView2, "grow"); //$NON-NLS-1$
        ticketPanel.add(ticketView3, "grow"); //$NON-NLS-1$
        ticketPanel.add(ticketView4, "grow"); //$NON-NLS-1$

	}

	private void createActionButtonPanel() {
		actionButtonPanel = new TransparentPanel();

		btnFinish = new PosButton();
        btnFinish.setText(com.floreantpos.POSConstants.FINISH);
        btnFinish.setPreferredSize(new java.awt.Dimension(140, 50));
        btnFinish.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnFinishActionPerformed(evt);
            }
        });

        actionButtonPanel.add(btnFinish);

        btnCancel = new PosButton();
        btnCancel.setText(com.floreantpos.POSConstants.CANCEL);
        btnCancel.setPreferredSize(new java.awt.Dimension(140, 50));
        btnCancel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelActionPerformed(evt);
            }
        });

        actionButtonPanel.add(btnCancel);

        getContentPane().add(actionButtonPanel, java.awt.BorderLayout.SOUTH);
	}

	private void createTitlePanel() {
		titlePanel = new com.floreantpos.ui.TitlePanel();
        titlePanel.setTitle(com.floreantpos.POSConstants.SPLIT_TICKET);
        getContentPane().add(titlePanel, java.awt.BorderLayout.NORTH);
	}

	private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
		setTicket(null);
		dispose();
	}//GEN-LAST:event_btnCancelActionPerformed

	private synchronized void btnFinishActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFinishActionPerformed
		Session session = null;
		Transaction tx = null;

		try {
			TicketDAO dao = new TicketDAO();
			session = dao.createNewSession();
			tx = session.beginTransaction();

			saveTicket(mainTicketView, session);
			saveTicket(ticketView2, session);
			saveTicket(ticketView3, session);
			saveTicket(ticketView4, session);

			tx.commit();

			//save the action
			ActionHistoryDAO.getInstance().saveHistory(Application.getCurrentUser(), ActionHistory.SPLIT_CHECK, com.floreantpos.POSConstants.RECEIPT_REPORT_TICKET_NO_LABEL + ":"+mainTicketView.getTicket().getId()); //$NON-NLS-1$

			dispose();
		} catch (Exception e) {
			try {
				tx.rollback();
			} catch (Exception x) {
			}
			POSMessageDialog.showError(Application.getPosWindow(), POSConstants.ERROR_MESSAGE, e);
		} finally {
			try {
				session.close();
			} catch (Exception x) {
			}
		}
	}//GEN-LAST:event_btnFinishActionPerformed

	private void btnNumSplit4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNumSplit4ActionPerformed
		//if(ticketView3.remove)
		ticketView3.setVisible(true);
		ticketView4.setVisible(true);
	}//GEN-LAST:event_btnNumSplit4ActionPerformed

	private void btnNumSplit3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNumSplit3ActionPerformed
		ticketView3.setVisible(true);

		if (ticketView4.isVisible()) {
			Ticket ticket4 = ticketView4.getTicket();

			List<TicketItem> ticketItems = ticket4.getTicketItems();
			for (TicketItem item : ticketItems) {
				ticketView4.transferAllTicketItem(item, mainTicketView);
			}
			ticketView4.setVisible(false);
		}
	}//GEN-LAST:event_btnNumSplit3ActionPerformed

	private void btnNumSplit2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNumSplit2ActionPerformed
		if (ticketView3.isVisible()) {
			Ticket ticket3 = ticketView3.getTicket();

			List<TicketItem> ticketItems = new ArrayList<TicketItem>(ticket3.getTicketItems());
			for (TicketItem item : ticketItems) {
				ticketView3.transferAllTicketItem(item, mainTicketView);
			}
			ticketView3.setVisible(false);
		}

		if (ticketView4.isVisible()) {
			Ticket ticket4 = ticketView4.getTicket();

			List<TicketItem> ticketItems = ticket4.getTicketItems();
			for (TicketItem item : ticketItems) {
				ticketView4.transferAllTicketItem(item, mainTicketView);
			}
			ticketView4.setVisible(false);
		}
	}//GEN-LAST:event_btnNumSplit2ActionPerformed

	public void saveTicket(TicketForSplitView view, Session session) {
		if (!view.isVisible())
			return;

		view.getTicket().setType(mainTicketView.getTicket().getType());
		view.updateModel();

		Ticket ticket = view.getTicket();
		if (ticket.getTicketItems().size() <= 0)
			return;

		List<ShopTable> tables = ShopTableDAO.getInstance().getTables(mainTicketView.getTicket());
		if(tables != null) {
			for (ShopTable shopTable : tables) {
				ticket.addTable(shopTable.getTableNumber());
			}
		}

		TicketDAO.getInstance().saveOrUpdate(ticket, session);
	}

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private PosButton btnCancel;
    private PosButton btnFinish;
    private com.floreantpos.swing.POSToggleButton btnNumSplit2;
    private com.floreantpos.swing.POSToggleButton btnNumSplit3;
    private com.floreantpos.swing.POSToggleButton btnNumSplit4;
    private com.floreantpos.swing.POSTitleLabel lblTicketId;
    private com.floreantpos.ui.views.order.TicketForSplitView mainTicketView;
    private com.floreantpos.ui.views.order.TicketForSplitView ticketView2;
    private com.floreantpos.ui.views.order.TicketForSplitView ticketView3;
    private com.floreantpos.ui.views.order.TicketForSplitView ticketView4;
    private com.floreantpos.ui.TitlePanel titlePanel;
    private TransparentPanel actionButtonPanel;
    private TransparentPanel centerPanel;
    private TransparentPanel toolbarPanel;
    private TransparentPanel ticketPanel;
    // End of variables declaration//GEN-END:variables

	public Ticket getTicket() {
		return ticket;
	}

	public void setTicket(Ticket ticket) {
		this.ticket = ticket;
		if (ticket != null)
			lblTicketId.setText(com.floreantpos.POSConstants.ORIGINAL_TICKET_ID + ": " + ticket.getId()); //$NON-NLS-1$
		mainTicketView.setTicket(ticket);
	}
}

Add comment
These comments are moderated so so won't be published until reviewed.