updated GUI-based transaction payment handling

This commit is contained in:
buzz-lightsnack-2007 2024-02-27 16:57:50 +08:00
parent 3f63c102a9
commit a2d30d0586
2 changed files with 112 additions and 84 deletions

View file

@ -39,26 +39,6 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Component class="javax.swing.JComboBox" name="jComboBox_Payment">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="4">
<StringItem index="0" value="Item 1"/>
<StringItem index="1" value="Item 2"/>
<StringItem index="2" value="Item 3"/>
<StringItem index="3" value="Item 4"/>
</StringArray>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="East"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel_Status">
<Properties>
<Property name="horizontalAlignment" type="int" value="0"/>
@ -86,6 +66,16 @@
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton_Action_Pay">
<Properties>
<Property name="text" type="java.lang.String" value="Payment"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="After"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel_Main">

View file

@ -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<String> refresh_inventory_list() {
private static AbstractListModel<String> 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<String, String> 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<String, String> 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<String> 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<String> 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<String> 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
}