diff --git a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form index 3e64b25..365d4dd 100644 --- a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form +++ b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.form @@ -1,6 +1,6 @@ -
+ @@ -39,7 +39,7 @@ - + @@ -59,10 +59,27 @@ - + - + + + + + + + + + + + + + + + + + + @@ -129,7 +146,7 @@ - + @@ -168,6 +185,14 @@ + + + + + + + + @@ -177,7 +202,7 @@ - + @@ -188,6 +213,7 @@ + @@ -202,8 +228,8 @@ + - @@ -211,26 +237,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -241,6 +247,17 @@ + + + + + + + + + + + @@ -259,14 +276,14 @@ - + - + - - + + @@ -289,6 +306,11 @@ + + + + + @@ -318,8 +340,8 @@ - - + + @@ -327,22 +349,93 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java index 5254bb2..94318c3 100644 --- a/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java +++ b/src/main/java/tech/iBeans/POSware/Lite/OnTransact.java @@ -3,8 +3,13 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template */ 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; /** * @@ -16,6 +21,7 @@ public class OnTransact extends javax.swing.JFrame { * Creates new form OnTransact */ private OnTransact() { + transact.init(); initComponents(); } @@ -30,8 +36,9 @@ public class OnTransact extends javax.swing.JFrame { java.awt.GridBagConstraints gridBagConstraints; jPanel_statusinfo = new javax.swing.JPanel(); - jComboBox1 = new javax.swing.JComboBox<>(); - jLabel1 = new javax.swing.JLabel(); + jComboBox_Payment = new javax.swing.JComboBox<>(); + jLabel_Status = new javax.swing.JLabel(); + jToggleButton_Discard = new javax.swing.JToggleButton(); jPanel_Main = new javax.swing.JPanel(); jPanel_Items = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); @@ -46,16 +53,23 @@ public class OnTransact extends javax.swing.JFrame { jTextField_price_VAT_value = new javax.swing.JTextField(); jTextField_price_subtotal_value = new javax.swing.JTextField(); jTextField_price_total_value = new javax.swing.JTextField(); - jComboBox_information_discount_selections = new javax.swing.JComboBox<>(); jLabel2_information_discount = new javax.swing.JLabel(); + jTextField_price_discounted = new javax.swing.JTextField(); jToolBar_Inventory = new javax.swing.JToolBar(); - jPanel2 = new javax.swing.JPanel(); + jPanel_Inventory = new javax.swing.JPanel(); jPanel_Inventory_Actions = new javax.swing.JPanel(); jButton_item_void = new javax.swing.JButton(); jSpinner_item_quantity = new javax.swing.JSpinner(); jButton_item_add = new javax.swing.JButton(); jScrollPane_Inventory = new javax.swing.JScrollPane(); jList1_Inventory = new javax.swing.JList<>(); + jPanel_ItemDetails = new javax.swing.JPanel(); + jLabel_ItemDetails_SKU = new javax.swing.JLabel(); + jTextField_ItemDetails_SKU = new javax.swing.JTextField(); + jLabel_ItemDetails_UnitPrice = new javax.swing.JLabel(); + jTextField_ItemDetails_UnitPrice = new javax.swing.JTextField(); + jLabel_ItemDetails_Discount = new javax.swing.JLabel(); + jTextField_ItemDetails_Discount = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle("POSware Lite: Transaction"); @@ -68,11 +82,21 @@ public class OnTransact extends javax.swing.JFrame { jPanel_statusinfo.setLayout(new java.awt.BorderLayout()); - jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - jPanel_statusinfo.add(jComboBox1, java.awt.BorderLayout.EAST); + 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); - jLabel1.setText("jLabel1"); - jPanel_statusinfo.add(jLabel1, java.awt.BorderLayout.LINE_START); + jLabel_Status.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel_Status.setText("Store"); + jPanel_statusinfo.add(jLabel_Status, java.awt.BorderLayout.CENTER); + + jToggleButton_Discard.setText("Discard"); + jToggleButton_Discard.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jToggleButton_DiscardActionPerformed(evt); + } + }); + jPanel_statusinfo.add(jToggleButton_Discard, java.awt.BorderLayout.LINE_START); + jToggleButton_Discard.setVisible(interface_adjust_clear()); getContentPane().add(jPanel_statusinfo, java.awt.BorderLayout.PAGE_END); @@ -92,7 +116,7 @@ public class OnTransact extends javax.swing.JFrame { jPanel_Information.setLayout(new java.awt.GridBagLayout()); - jLabel_price_VAT.setText("VAT"); + jLabel_price_VAT.setText("Tax"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; @@ -116,15 +140,22 @@ public class OnTransact extends javax.swing.JFrame { gridBagConstraints.gridy = 1; gridBagConstraints.gridheight = 2; jPanel_Information.add(jLabel_price_total, gridBagConstraints); + + jSpinner_price_tip_value.setModel(model_price); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; jPanel_Information.add(jSpinner_price_tip_value, gridBagConstraints); + jSpinner_price_tip_value.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + cart_tip_add(); + } + }); jTextField_price_VAT_value.setEditable(false); - jTextField_price_VAT_value.setText("0"); + jTextField_price_VAT_value.setHorizontalAlignment(javax.swing.JTextField.TRAILING); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; @@ -133,6 +164,7 @@ public class OnTransact extends javax.swing.JFrame { jPanel_Information.add(jTextField_price_VAT_value, gridBagConstraints); jTextField_price_subtotal_value.setEditable(false); + jTextField_price_subtotal_value.setHorizontalAlignment(javax.swing.JTextField.TRAILING); jTextField_price_subtotal_value.setText("0"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; @@ -143,8 +175,8 @@ public class OnTransact extends javax.swing.JFrame { jTextField_price_total_value.setEditable(false); jTextField_price_total_value.setFont(new java.awt.Font("Dialog", 1, 20)); // NOI18N + jTextField_price_total_value.setHorizontalAlignment(javax.swing.JTextField.TRAILING); jTextField_price_total_value.setText("0"); - jTextField_price_total_value.setDragEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 1; @@ -153,19 +185,21 @@ public class OnTransact extends javax.swing.JFrame { gridBagConstraints.weightx = 1.0; jPanel_Information.add(jTextField_price_total_value, gridBagConstraints); - jComboBox_information_discount_selections.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 2; - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; - jPanel_Information.add(jComboBox_information_discount_selections, gridBagConstraints); - jLabel2_information_discount.setText("Discount"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; jPanel_Information.add(jLabel2_information_discount, gridBagConstraints); + jTextField_price_discounted.setEditable(false); + jTextField_price_discounted.setHorizontalAlignment(javax.swing.JTextField.TRAILING); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + jPanel_Information.add(jTextField_price_discounted, gridBagConstraints); + jToolBar_Information.add(jPanel_Information); jPanel_Items.add(jToolBar_Information, java.awt.BorderLayout.SOUTH); @@ -174,7 +208,7 @@ public class OnTransact extends javax.swing.JFrame { jToolBar_Inventory.setRollover(true); - jPanel2.setLayout(new java.awt.BorderLayout()); + jPanel_Inventory.setLayout(new java.awt.GridBagLayout()); jPanel_Inventory_Actions.setLayout(new java.awt.BorderLayout()); @@ -188,6 +222,8 @@ public class OnTransact extends javax.swing.JFrame { } }); jPanel_Inventory_Actions.add(jButton_item_void, java.awt.BorderLayout.LINE_START); + + jSpinner_item_quantity.setModel(model_counting); jPanel_Inventory_Actions.add(jSpinner_item_quantity, java.awt.BorderLayout.CENTER); jButton_item_add.setText("Add"); @@ -201,18 +237,82 @@ public class OnTransact extends javax.swing.JFrame { }); jPanel_Inventory_Actions.add(jButton_item_add, java.awt.BorderLayout.LINE_END); - jPanel2.add(jPanel_Inventory_Actions, java.awt.BorderLayout.SOUTH); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + jPanel_Inventory.add(jPanel_Inventory_Actions, gridBagConstraints); - jList1_Inventory.setModel(new javax.swing.AbstractListModel() { - String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; - public int getSize() { return strings.length; } - public String getElementAt(int i) { return strings[i]; } + jList1_Inventory.setModel(refresh_inventory_list()); + jList1_Inventory.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList1_InventoryValueChanged(evt); + } }); jScrollPane_Inventory.setViewportView(jList1_Inventory); - jPanel2.add(jScrollPane_Inventory, java.awt.BorderLayout.CENTER); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.weighty = 1.0; + jPanel_Inventory.add(jScrollPane_Inventory, gridBagConstraints); - jToolBar_Inventory.add(jPanel2); + jPanel_ItemDetails.setLayout(new java.awt.GridBagLayout()); + + jLabel_ItemDetails_SKU.setText("SKU"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + jPanel_ItemDetails.add(jLabel_ItemDetails_SKU, gridBagConstraints); + + jTextField_ItemDetails_SKU.setEditable(false); + jTextField_ItemDetails_SKU.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 0; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + jPanel_ItemDetails.add(jTextField_ItemDetails_SKU, gridBagConstraints); + + jLabel_ItemDetails_UnitPrice.setText("Unit Price"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + jPanel_ItemDetails.add(jLabel_ItemDetails_UnitPrice, gridBagConstraints); + + jTextField_ItemDetails_UnitPrice.setEditable(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + jPanel_ItemDetails.add(jTextField_ItemDetails_UnitPrice, gridBagConstraints); + + jLabel_ItemDetails_Discount.setText("Discount"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 2; + jPanel_ItemDetails.add(jLabel_ItemDetails_Discount, gridBagConstraints); + + jTextField_ItemDetails_Discount.setEditable(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + jPanel_ItemDetails.add(jTextField_ItemDetails_Discount, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + jPanel_Inventory.add(jPanel_ItemDetails, gridBagConstraints); + + jToolBar_Inventory.add(jPanel_Inventory); jPanel_Main.add(jToolBar_Inventory, java.awt.BorderLayout.EAST); @@ -222,17 +322,17 @@ public class OnTransact extends javax.swing.JFrame { }// //GEN-END:initComponents private void jButton_item_voidActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_item_voidActionPerformed - // TODO add your handling code here: + cart_remove(); }//GEN-LAST:event_jButton_item_voidActionPerformed private void jButton_item_addActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_item_addActionPerformed - // TODO add your handling code here: + cart_add(); }//GEN-LAST:event_jButton_item_addActionPerformed private void transaction_check(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_transaction_check boolean CLOSING_STATE = false; - if (transaction.items_count.size() <= 0) { + if (transact.items.size() <= 0) { CLOSING_STATE = true; } else { CLOSING_STATE = confirm_discard(); @@ -241,6 +341,15 @@ public class OnTransact extends javax.swing.JFrame { if (CLOSING_STATE) {evt.getWindow().dispose();}; }//GEN-LAST:event_transaction_check + private void jList1_InventoryValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList1_InventoryValueChanged + // TODO add your handling code here: + product_information_refresh(); + }//GEN-LAST:event_jList1_InventoryValueChanged + + private void jToggleButton_DiscardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jToggleButton_DiscardActionPerformed + init(); + }//GEN-LAST:event_jToggleButton_DiscardActionPerformed + /** * @param args the command line arguments */ @@ -282,6 +391,9 @@ public class OnTransact extends javax.swing.JFrame { display(); } + private SpinnerNumberModel model_price = new SpinnerNumberModel(0, 0, Integer.MAX_VALUE, .01); + private SpinnerNumberModel model_counting = new SpinnerNumberModel(1, 1, Integer.MAX_VALUE, 1); + private static boolean confirm_discard() { /* Confirm discarding items. @@ -292,22 +404,170 @@ public class OnTransact extends javax.swing.JFrame { Boolean USER_CHOICE = WindowManagement.confirm("Discarding Items", "There are currently items in the cart. Would you want to discard this?", true); return (USER_CHOICE); }; + + private boolean interface_adjust_clear() { + /* Adjust the ability to reset. + + Returns: (boolean) the new state of the appearance + */ + + boolean CLEARABLE_STATE = (transact.items.size() > 0); + jToggleButton_Discard.setVisible(CLEARABLE_STATE); + return (jToggleButton_Discard.isVisible()); + }; + + private AbstractListModel refresh_inventory_list() { + /* Pull the list from inventory. + */ + + AbstractListModel INVENTORY_LIST = new javax.swing.AbstractListModel() { + String[] strings = ((ArrayList)inventory.collate()).toArray(new String[0]); + public int getSize() { return strings.length; } + public String getElementAt(int i) { return strings[i]; } + }; + + return(INVENTORY_LIST); + }; + + private void cart_calculation_refresh() { + /* Refresh the cart's details, such as the total cost. */ + Dictionary prices = transact.calculate(); + + // TODO fix text formatting. Perhaps to be done in a different function, not here. + + jTextField_price_subtotal_value.setText(String.valueOf(prices.get("subtotal"))); + jTextField_price_total_value.setText(String.valueOf(prices.get("total"))); + jTextField_price_discounted.setText(String.valueOf(prices.get("discount"))); + jTextField_price_VAT_value.setText(String.valueOf(prices.get("tax"))); + + interface_adjust_clear(); + }; + + private boolean product_information_refresh() { + /* Refresh the select product information's details. */ + Integer ITEM_SELECTED = jList1_Inventory.getSelectedIndex(); + + if (ITEM_SELECTED == null) {return false;}; + + Dictionary ITEM_SELECTED_DETAILS_PROCESSED = new Hashtable<>(); + + // Get the selected details. + Dictionary ITEM_SELECTED_DETAILS = inventory.find(ITEM_SELECTED); + if (ITEM_SELECTED_DETAILS == null) {return (false);}; + ITEM_SELECTED_DETAILS_PROCESSED.put("SKU", inventory.list().get(ITEM_SELECTED).toString()); + + // Get the unit price. + ITEM_SELECTED_DETAILS_PROCESSED.put("Unit Price", String.valueOf(ITEM_SELECTED_DETAILS.get("Price"))); + + // Get the discount. + if (ITEM_SELECTED_DETAILS.get("Discount") != null) { + if ((int) ITEM_SELECTED_DETAILS.get("Discount") != 0) { + ITEM_SELECTED_DETAILS_PROCESSED.put("Discount", (String.valueOf((int) ITEM_SELECTED_DETAILS.get("Discount"))).concat("%")); + }; + } else { + ITEM_SELECTED_DETAILS_PROCESSED.put("Discount",""); + }; + + // 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.calculate(); + cart_calculation_refresh(); + }; + + private boolean cart_add() { + /* Add the item to the cart. + + Returns: (boolean) whether the item had been successfully added to the cart or not + */ + boolean state = false; + + int ITEM_SELECTED = jList1_Inventory.getSelectedIndex(); + int ITEM_SELECTED_QUANTITY = (int) jSpinner_item_quantity.getValue(); + + if (ITEM_SELECTED >= 0) { + // Get the selected details. + Dictionary ITEM_SELECTED_DETAILS = inventory.find(ITEM_SELECTED); + if (ITEM_SELECTED_DETAILS == null) {return (false);}; + String ITEM_SELECTED_SKU = inventory.list().get(ITEM_SELECTED).toString(); + + // Add to cart. + state = transact.add(ITEM_SELECTED_SKU, ITEM_SELECTED_QUANTITY); + + // Refresh the data. + cart_calculation_refresh(); + }; + return(state); + }; + + private boolean cart_remove() { + /* Remove the item to the cart. + + Returns: (boolean) whether the item had been successfully removed from the cart or not + */ + boolean state = false; + + int ITEM_SELECTED = jList1_Inventory.getSelectedIndex(); + int ITEM_SELECTED_QUANTITY = (int) jSpinner_item_quantity.getValue(); + + if (ITEM_SELECTED >= 0) { + // Get the selected details. + Dictionary ITEM_SELECTED_DETAILS = inventory.find(ITEM_SELECTED); + if (ITEM_SELECTED_DETAILS == null) {return (false);}; + String ITEM_SELECTED_SKU = inventory.list().get(ITEM_SELECTED).toString(); + + // Add to cart. + state = transact.remove(ITEM_SELECTED_SKU, ITEM_SELECTED_QUANTITY); + + // Refresh the data. + cart_calculation_refresh(); + }; + 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(); + }; + }; + + + private 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 jComboBox1; - private javax.swing.JComboBox jComboBox_information_discount_selections; - private javax.swing.JLabel jLabel1; + 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 jPanel2; 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; @@ -316,9 +576,14 @@ public class OnTransact extends javax.swing.JFrame { 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; // End of variables declaration//GEN-END:variables