// Chromis POS - The New Face of Open Source POS // Copyright (c) (c) 2015-2016 // http://www.chromis.co.uk // // This file is part of Chromis POS // // Chromis POS 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. // // Chromis POS 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 Chromis POS. If not, see <http://www.gnu.org/licenses/>. package uk.chromis.pos.sales; import java.awt.BorderLayout; import java.awt.Toolkit; import java.util.List; import javax.swing.JOptionPane; import uk.chromis.basic.BasicException; import uk.chromis.pos.forms.AppLocal; import uk.chromis.pos.forms.DataLogicSales; import uk.chromis.pos.forms.DataLogicSystem; import uk.chromis.pos.ticket.TicketInfo; import uk.chromis.pos.ticket.TicketLineInfo; /** * * */ public class JRefundLines extends javax.swing.JPanel { private final JTicketLines ticketlines; private static List m_aLines; private static DataLogicSales dlSales; private final JPanelTicketEdits m_jTicketEdit; private static TicketLineInfo tmpTicketInfo; /** * Creates new form JRefundLines * * @param dlSystem * @param jTicketEdit */ public JRefundLines(DataLogicSystem dlSystem, DataLogicSales dlsales, JPanelTicketEdits jTicketEdit) { dlSales = dlsales; m_jTicketEdit = jTicketEdit; initComponents(); ticketlines = new JTicketLines(dlSystem.getResourceAsXML("Ticket.Line")); jPanel3.add(ticketlines, BorderLayout.CENTER); } /** * * @param aRefundLines */ public void setLines(List aRefundLines) { m_aLines = aRefundLines; ticketlines.clearTicketLines(); if (m_aLines != null) { for (Object m_aLine : m_aLines) { ticketlines.addTicketLine((TicketLineInfo) m_aLine); } } } public static void addBackLine(String name, Double qty, Double price, String line) { int i = 0; for (Object m_aLine : m_aLines) { tmpTicketInfo = ((TicketLineInfo) m_aLine); if (line.equals(tmpTicketInfo.getProperty("orgLine"))) { tmpTicketInfo.setRefundQty(tmpTicketInfo.getRefundQty() + (qty)); tmpTicketInfo.setMultiply(tmpTicketInfo.getMultiply() + (qty * -1)); m_aLines.set(i, tmpTicketInfo); } i++; } } public static void updateRefunds() throws BasicException { if (m_aLines != null) { for (Object m_aLine : m_aLines) { tmpTicketInfo = ((TicketLineInfo) m_aLine); dlSales.updateRefundQty(tmpTicketInfo.getRefundQty(), tmpTicketInfo.getTicket(), tmpTicketInfo.getTicketLine()); } } } /** * 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() { jPanel3 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); m_jbtnAddOne = new javax.swing.JButton(); m_jbtnAddLine = new javax.swing.JButton(); m_jbtnAddAll = new javax.swing.JButton(); setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N setPreferredSize(new java.awt.Dimension(15, 200)); setLayout(new java.awt.BorderLayout()); jPanel3.setLayout(new java.awt.BorderLayout()); jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 5, 0, 0)); jPanel1.setLayout(new java.awt.BorderLayout()); jPanel2.setLayout(new java.awt.GridLayout(0, 1, 0, 5)); m_jbtnAddOne.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jbtnAddOne.setText(AppLocal.getIntString("button.refundone")); // NOI18N java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N m_jbtnAddOne.setToolTipText(bundle.getString("tiptext.refundanitem")); // NOI18N m_jbtnAddOne.setFocusPainted(false); m_jbtnAddOne.setFocusable(false); m_jbtnAddOne.setMargin(new java.awt.Insets(8, 14, 8, 14)); m_jbtnAddOne.setRequestFocusEnabled(false); m_jbtnAddOne.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jbtnAddOneActionPerformed(evt); } }); jPanel2.add(m_jbtnAddOne); m_jbtnAddLine.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jbtnAddLine.setText(AppLocal.getIntString("button.refundline")); // NOI18N m_jbtnAddLine.setToolTipText(bundle.getString("tiptext.refundaline")); // NOI18N m_jbtnAddLine.setFocusPainted(false); m_jbtnAddLine.setFocusable(false); m_jbtnAddLine.setMargin(new java.awt.Insets(8, 14, 8, 14)); m_jbtnAddLine.setRequestFocusEnabled(false); m_jbtnAddLine.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jbtnAddLineActionPerformed(evt); } }); jPanel2.add(m_jbtnAddLine); m_jbtnAddAll.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jbtnAddAll.setText(AppLocal.getIntString("button.refundall")); // NOI18N m_jbtnAddAll.setToolTipText(bundle.getString("tiptext.refundeverything")); // NOI18N m_jbtnAddAll.setFocusPainted(false); m_jbtnAddAll.setFocusable(false); m_jbtnAddAll.setMargin(new java.awt.Insets(8, 14, 8, 14)); m_jbtnAddAll.setRequestFocusEnabled(false); m_jbtnAddAll.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jbtnAddAllActionPerformed(evt); } }); jPanel2.add(m_jbtnAddAll); jPanel1.add(jPanel2, java.awt.BorderLayout.NORTH); jPanel3.add(jPanel1, java.awt.BorderLayout.EAST); add(jPanel3, java.awt.BorderLayout.WEST); }// </editor-fold>//GEN-END:initComponents private void m_jbtnAddAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnAddAllActionPerformed for (Object m_aLine : m_aLines) { TicketLineInfo oLine = (TicketLineInfo) m_aLine; if (oLine.getMultiply() > 0.0) { oLine.setProperty("orgLine", String.valueOf(oLine.getTicketLine())); TicketLineInfo oNewLine = new TicketLineInfo(oLine); oNewLine.setMultiply(-oLine.getMultiply()); oLine.setRefundQty(oLine.getRefundQty() + oLine.getMultiply()); oLine.setMultiply(oLine.getMultiply() - oLine.getMultiply()); m_aLine = oLine; m_jTicketEdit.addTicketLine(oNewLine); } } m_jTicketEdit.updatePromotions("promotion.refund", 0, null); }//GEN-LAST:event_m_jbtnAddAllActionPerformed private void m_jbtnAddOneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnAddOneActionPerformed int index = ticketlines.getSelectedIndex(); if (index >= 0) { TicketLineInfo oLine = (TicketLineInfo) m_aLines.get(index); if (oLine.isProductCom()) { Toolkit.getDefaultToolkit().beep(); JOptionPane.showMessageDialog(null, AppLocal.getIntString("message.refundauxiliaryitem") + AppLocal.getIntString("button.refundone"), "auxiliary Item", JOptionPane.WARNING_MESSAGE); } else if (oLine.getMultiply() > 0.0) { oLine.setProperty("orgLine", String.valueOf(index)); oLine.setRefundQty(oLine.getRefundQty() + 1.0); oLine.setMultiply(oLine.getMultiply() - 1.0); m_aLines.set(index, oLine); TicketLineInfo oNewLine = new TicketLineInfo(oLine); oNewLine.setMultiply(-1.0); m_jTicketEdit.addTicketLine(oNewLine); if (index < m_aLines.size() - 1) { oLine = (TicketLineInfo) m_aLines.get(++index); while (index < m_aLines.size() && oLine.isProductCom()) { oLine.setProperty("orgLine", String.valueOf(index)); oLine.setRefundQty(oLine.getRefundQty() + 1.0); oLine.setMultiply(oLine.getMultiply() - 1.0); m_aLines.set(index, oLine); oNewLine = new TicketLineInfo(oLine); oNewLine.setMultiply(-1.0); m_jTicketEdit.addTicketLine(oNewLine); try { oLine = (TicketLineInfo) m_aLines.get(++index); } catch (Exception ex) { break; } } } m_jTicketEdit.updatePromotions("promotion.refund", index, null); } } }//GEN-LAST:event_m_jbtnAddOneActionPerformed private void m_jbtnAddLineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnAddLineActionPerformed int index = ticketlines.getSelectedIndex(); if (index >= 0) { TicketLineInfo oLine = (TicketLineInfo) m_aLines.get(index); if (oLine.isProductCom()) { Toolkit.getDefaultToolkit().beep(); JOptionPane.showMessageDialog(null, AppLocal.getIntString("message.refundauxiliaryitem") + AppLocal.getIntString("button.refundline"), "auxiliary Item", JOptionPane.WARNING_MESSAGE); } else if (oLine.getMultiply() > 0.0) { oLine.setProperty("orgLine", String.valueOf(index)); TicketLineInfo oNewLine = new TicketLineInfo(oLine); oNewLine.setMultiply(-oLine.getMultiply()); oLine.setRefundQty(oLine.getRefundQty() + oLine.getMultiply()); oLine.setMultiply(oLine.getMultiply() - oLine.getMultiply()); m_aLines.set(index, oLine); m_jTicketEdit.addTicketLine(oNewLine); m_jTicketEdit.updatePromotions("promotion.refund", index, null); if (index < m_aLines.size() - 1) { oLine = (TicketLineInfo) m_aLines.get(++index); while (index < m_aLines.size() && oLine.isProductCom()) { oLine.setProperty("orgLine", String.valueOf(index)); oNewLine = new TicketLineInfo(oLine); oNewLine.setMultiply(-oLine.getMultiply()); oLine.setRefundQty(oLine.getRefundQty() + oLine.getMultiply()); oLine.setMultiply(oLine.getMultiply() - oLine.getMultiply()); m_aLines.set(index, oLine); m_jTicketEdit.addTicketLine(oNewLine); try { oLine = (TicketLineInfo) m_aLines.get(++index); } catch (Exception ex) { break; } } } } } }//GEN-LAST:event_m_jbtnAddLineActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JButton m_jbtnAddAll; private javax.swing.JButton m_jbtnAddLine; private javax.swing.JButton m_jbtnAddOne; // End of variables declaration//GEN-END:variables }