diff --git a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form index 365d4dd..9eed8dc 100644 --- a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form +++ b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form @@ -39,26 +39,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -86,6 +66,16 @@ + + + + + + + + + + diff --git a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java index 94318c3..36c595d 100644 --- a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java +++ b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java @@ -6,7 +6,6 @@ package tech.iBeans.POSware.Lite; import java.util.*; import javax.swing.*; import javax.swing.event.*; -import tech.iBeans.POSware.Lite.transaction; import tech.iBeans.POSware.Lite.transact; import tech.iBeans.POSware.Lite.WindowManagement; import tech.iBeans.POSware.Lite.receipt; @@ -36,9 +35,9 @@ public class OnTransact extends javax.swing.JFrame { java.awt.GridBagConstraints gridBagConstraints; jPanel_statusinfo = new javax.swing.JPanel(); - jComboBox_Payment = new javax.swing.JComboBox<>(); jLabel_Status = new javax.swing.JLabel(); jToggleButton_Discard = new javax.swing.JToggleButton(); + jButton_Action_Pay = new javax.swing.JButton(); jPanel_Main = new javax.swing.JPanel(); jPanel_Items = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); @@ -82,9 +81,6 @@ public class OnTransact extends javax.swing.JFrame { jPanel_statusinfo.setLayout(new java.awt.BorderLayout()); - jComboBox_Payment.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - jPanel_statusinfo.add(jComboBox_Payment, java.awt.BorderLayout.EAST); - jLabel_Status.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel_Status.setText("Store"); jPanel_statusinfo.add(jLabel_Status, java.awt.BorderLayout.CENTER); @@ -98,6 +94,9 @@ public class OnTransact extends javax.swing.JFrame { jPanel_statusinfo.add(jToggleButton_Discard, java.awt.BorderLayout.LINE_START); jToggleButton_Discard.setVisible(interface_adjust_clear()); + jButton_Action_Pay.setText("Payment"); + jPanel_statusinfo.add(jButton_Action_Pay, java.awt.BorderLayout.LINE_END); + getContentPane().add(jPanel_statusinfo, java.awt.BorderLayout.PAGE_END); jPanel_Main.setLayout(new java.awt.BorderLayout()); @@ -107,7 +106,7 @@ public class OnTransact extends javax.swing.JFrame { jTextArea1.setColumns(20); jTextArea1.setLineWrap(true); jTextArea1.setRows(5); - jTextArea1.setEnabled(false); + jTextArea1.setEditable(false); jScrollPane1.setViewportView(jTextArea1); jPanel_Items.add(jScrollPane1, java.awt.BorderLayout.CENTER); @@ -278,6 +277,7 @@ public class OnTransact extends javax.swing.JFrame { jPanel_ItemDetails.add(jTextField_ItemDetails_SKU, gridBagConstraints); jLabel_ItemDetails_UnitPrice.setText("Unit Price"); + jLabel_ItemDetails_UnitPrice.setHorizontalAlignment(javax.swing.JTextField.TRAILING); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; @@ -332,7 +332,7 @@ public class OnTransact extends javax.swing.JFrame { private void transaction_check(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_transaction_check boolean CLOSING_STATE = false; - if (transact.items.size() <= 0) { + if (!transact.check()) { CLOSING_STATE = true; } else { CLOSING_STATE = confirm_discard(); @@ -347,7 +347,13 @@ public class OnTransact extends javax.swing.JFrame { }//GEN-LAST:event_jList1_InventoryValueChanged private void jToggleButton_DiscardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_DiscardActionPerformed - init(); + boolean CLOSING_STATE = false; + + if (transact.check()) { + CLOSING_STATE = confirm_discard(); + }; + + if (CLOSING_STATE) {init();}; }//GEN-LAST:event_jToggleButton_DiscardActionPerformed /** @@ -356,10 +362,10 @@ public class OnTransact extends javax.swing.JFrame { public static void display() { /* Display the transaction. */ - java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new OnTransact().setVisible(true); + init(); } }); } @@ -405,18 +411,27 @@ public class OnTransact extends javax.swing.JFrame { return (USER_CHOICE); }; - private boolean interface_adjust_clear() { + private static boolean interface_adjust_clear() { /* Adjust the ability to reset. Returns: (boolean) the new state of the appearance */ - boolean CLEARABLE_STATE = (transact.items.size() > 0); + boolean CLEARABLE_STATE = (transact.check()); jToggleButton_Discard.setVisible(CLEARABLE_STATE); return (jToggleButton_Discard.isVisible()); }; + + public static boolean interface_adjust_payment() { + /* Adjust the ability to pay. + + Returns: (boolean) the payment status */ + + jButton_Action_Pay.setEnabled(transact.check()); + return(transact.check()); + } - private AbstractListModel refresh_inventory_list() { + private static AbstractListModel refresh_inventory_list() { /* Pull the list from inventory. */ @@ -429,7 +444,7 @@ public class OnTransact extends javax.swing.JFrame { return(INVENTORY_LIST); }; - private void cart_calculation_refresh() { + private static void cart_calculation_refresh() { /* Refresh the cart's details, such as the total cost. */ Dictionary prices = transact.calculate(); @@ -440,14 +455,25 @@ public class OnTransact extends javax.swing.JFrame { jTextField_price_discounted.setText(String.valueOf(prices.get("discount"))); jTextField_price_VAT_value.setText(String.valueOf(prices.get("tax"))); + receipt_refresh(); + product_information_refresh(); + interface_adjust_payment(); interface_adjust_clear(); }; - private boolean product_information_refresh() { - /* Refresh the select product information's details. */ + private static boolean product_information_refresh() { + /* Refresh the select product information's details and the corresponding button states. */ Integer ITEM_SELECTED = jList1_Inventory.getSelectedIndex(); - if (ITEM_SELECTED == null) {return false;}; + // Set the initial values. + jSpinner_item_quantity.setEnabled((ITEM_SELECTED >= 0)); + jButton_item_void.setEnabled((ITEM_SELECTED >= 0)); + jButton_item_add.setEnabled((ITEM_SELECTED >= 0)); + + if (ITEM_SELECTED < 0) { + // Stop when there is no value selected. + return(false); + }; Dictionary ITEM_SELECTED_DETAILS_PROCESSED = new Hashtable<>(); @@ -468,17 +494,23 @@ public class OnTransact extends javax.swing.JFrame { ITEM_SELECTED_DETAILS_PROCESSED.put("Discount",""); }; + // Change the void state. You can't void something that doesn't already exist in the cart. + jButton_item_void.setEnabled((((transact.items).get(ITEM_SELECTED_DETAILS_PROCESSED.get("SKU"))) != null)); + // Place the corresponding information. jTextField_ItemDetails_SKU.setText(ITEM_SELECTED_DETAILS_PROCESSED.get("SKU")); jTextField_ItemDetails_UnitPrice.setText(ITEM_SELECTED_DETAILS_PROCESSED.get("Unit Price")); jTextField_ItemDetails_Discount.setText(ITEM_SELECTED_DETAILS_PROCESSED.get("Discount")); + + + return (true); }; private void cart_tip_add() { /* Add a tip. */ - transact.price.put("tip", (double) jSpinner_price_tip_value.getValue()); + transact.price.put("tip", Float.valueOf(String.valueOf(jSpinner_price_tip_value.getValue()))); transact.calculate(); cart_calculation_refresh(); }; @@ -491,7 +523,7 @@ public class OnTransact extends javax.swing.JFrame { boolean state = false; int ITEM_SELECTED = jList1_Inventory.getSelectedIndex(); - int ITEM_SELECTED_QUANTITY = (int) jSpinner_item_quantity.getValue(); + int ITEM_SELECTED_QUANTITY = Integer.parseInt(String.valueOf(jSpinner_item_quantity.getValue())); if (ITEM_SELECTED >= 0) { // Get the selected details. @@ -533,58 +565,64 @@ public class OnTransact extends javax.swing.JFrame { return(state); }; - private void init() { - Boolean DISCARD_STATE = confirm_discard(); - if (DISCARD_STATE) { - transact.init(); - refresh_inventory_list(); - cart_calculation_refresh(); - receipt.init(); - receipt.headers(); - receipt_refresh(); - }; + public static void reset() { + /* Reset the transaction. */ + Boolean DISCARD_STATE = confirm_discard(); + if (DISCARD_STATE) { + init(); + }; + + } + + private static void init() { + transact.init(); + refresh_inventory_list(); + cart_calculation_refresh(); + receipt_refresh(); + product_information_refresh(); }; - private void receipt_refresh() { + private static void receipt_refresh() { jTextArea1.setText(receipt.content); }; + // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButton_item_add; - private javax.swing.JButton jButton_item_void; - private javax.swing.JComboBox jComboBox_Payment; - private javax.swing.JLabel jLabel2_information_discount; - private javax.swing.JLabel jLabel_ItemDetails_Discount; - private javax.swing.JLabel jLabel_ItemDetails_SKU; - private javax.swing.JLabel jLabel_ItemDetails_UnitPrice; - private javax.swing.JLabel jLabel_Status; - private javax.swing.JLabel jLabel_price_VAT; - private javax.swing.JLabel jLabel_price_subtotal; - private javax.swing.JLabel jLabel_price_tip; - private javax.swing.JLabel jLabel_price_total; - private javax.swing.JList jList1_Inventory; - private javax.swing.JPanel jPanel_Information; - private javax.swing.JPanel jPanel_Inventory; - private javax.swing.JPanel jPanel_Inventory_Actions; - private javax.swing.JPanel jPanel_ItemDetails; - private javax.swing.JPanel jPanel_Items; - private javax.swing.JPanel jPanel_Main; - private javax.swing.JPanel jPanel_statusinfo; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane_Inventory; - private javax.swing.JSpinner jSpinner_item_quantity; - private javax.swing.JSpinner jSpinner_price_tip_value; - private javax.swing.JTextArea jTextArea1; - private javax.swing.JTextField jTextField_ItemDetails_Discount; - private javax.swing.JTextField jTextField_ItemDetails_SKU; - private javax.swing.JTextField jTextField_ItemDetails_UnitPrice; - private javax.swing.JTextField jTextField_price_VAT_value; - private javax.swing.JTextField jTextField_price_discounted; - private javax.swing.JTextField jTextField_price_subtotal_value; - private javax.swing.JTextField jTextField_price_total_value; - private javax.swing.JToggleButton jToggleButton_Discard; - private javax.swing.JToolBar jToolBar_Information; - private javax.swing.JToolBar jToolBar_Inventory; + private static javax.swing.JButton jButton_Action_Pay; + private static javax.swing.JButton jButton_item_add; + private static javax.swing.JButton jButton_item_void; + private static javax.swing.JLabel jLabel2_information_discount; + private static javax.swing.JLabel jLabel_ItemDetails_Discount; + private static javax.swing.JLabel jLabel_ItemDetails_SKU; + private static javax.swing.JLabel jLabel_ItemDetails_UnitPrice; + private static javax.swing.JLabel jLabel_Status; + private static javax.swing.JLabel jLabel_price_VAT; + private static javax.swing.JLabel jLabel_price_subtotal; + private static javax.swing.JLabel jLabel_price_tip; + private static javax.swing.JLabel jLabel_price_total; + private static javax.swing.JList jList1_Inventory; + private static javax.swing.JPanel jPanel_Information; + private static javax.swing.JPanel jPanel_Inventory; + private static javax.swing.JPanel jPanel_Inventory_Actions; + private static javax.swing.JPanel jPanel_ItemDetails; + private static javax.swing.JPanel jPanel_Items; + private static javax.swing.JPanel jPanel_Main; + private static javax.swing.JPanel jPanel_statusinfo; + private static javax.swing.JScrollPane jScrollPane1; + private static javax.swing.JScrollPane jScrollPane_Inventory; + private static javax.swing.JSpinner jSpinner_item_quantity; + private static javax.swing.JSpinner jSpinner_price_tip_value; + private static javax.swing.JTextArea jTextArea1; + private static javax.swing.JTextField jTextField_ItemDetails_Discount; + private static javax.swing.JTextField jTextField_ItemDetails_SKU; + private static javax.swing.JTextField jTextField_ItemDetails_UnitPrice; + private static javax.swing.JTextField jTextField_price_VAT_value; + private static javax.swing.JTextField jTextField_price_discounted; + private static javax.swing.JTextField jTextField_price_subtotal_value; + private static javax.swing.JTextField jTextField_price_total_value; + private static javax.swing.JToggleButton jToggleButton_Discard; + private static javax.swing.JToolBar jToolBar_Information; + private static javax.swing.JToolBar jToolBar_Inventory; // End of variables declaration//GEN-END:variables }