updated code

enable finalization
store transaction status checking
This commit is contained in:
buzzcode2007 2024-02-28 10:45:31 +08:00
parent a37e9240bb
commit eee0848dff

View file

@ -4,9 +4,6 @@
*/
package tech.iBeans.POSware.Lite;
// Import local modules.
import tech.iBeans.POSware.Lite.inventory.*;
import tech.iBeans.POSware.Lite.receipt.*;
import java.text.DecimalFormat;
// Import global modules.
@ -17,9 +14,10 @@ import java.util.*;
* @author eleven
*/
public class transact {
public static Dictionary<String, Dictionary> items = new Hashtable<>();
public static Dictionary<String, Dictionary<String, Object>> items = new Hashtable<>();
public static Dictionary<String, Float> price = new Hashtable<>();
public static Boolean state = false;
public static Boolean progress = false;
/*
{item: {
@ -41,6 +39,7 @@ public class transact {
/* Initialize the variables, setting them with default values.
*/
progress = true;
items = new Hashtable<>();
price = new Hashtable<>();
@ -66,7 +65,8 @@ public class transact {
return(state);
}
public static Dictionary calculate() {
@SuppressWarnings("unchecked")
public static Dictionary<String, Float> calculate() {
/* Calculate the subtotal, total, and VAT.
Returns: (Dictionary) the contents of the price variable
@ -84,17 +84,17 @@ public class transact {
while (items_list.hasMoreElements()) {
String item = items_list.nextElement();
if (((Dictionary) items.get(item).get("price")).get("tax") != null) {
price.put("tax", (float) price.get("tax") + (float) ((Dictionary) items.get(item).get("price")).get("tax"));
if (((Dictionary<String, Object>) items.get(item).get("price")).get("tax") != null) {
price.put("tax", (float) price.get("tax") + (float) ((Dictionary<String, Object>) items.get(item).get("price")).get("tax"));
};
if (((Dictionary) items.get(item).get("price")).get("subtotal") != null) {
price.put("subtotal", (float) price.get("subtotal") + (float) ((Dictionary) items.get(item).get("price")).get("subtotal"));
if (((Dictionary<String, Object>) items.get(item).get("price")).get("subtotal") != null) {
price.put("subtotal", (float) price.get("subtotal") + (float) ((Dictionary<String, Object>) items.get(item).get("price")).get("subtotal"));
};
if (((Dictionary) items.get(item).get("price")).get("total") != null) {
price.put("total", (float) price.get("total") + (float) ((Dictionary) items.get(item).get("price")).get("total"));
if (((Dictionary<String, Object>) items.get(item).get("price")).get("total") != null) {
price.put("total", (float) price.get("total") + (float) ((Dictionary<String, Object>) items.get(item).get("price")).get("total"));
};
if (((Dictionary) items.get(item).get("price")).get("discount") != null) {
price.put("discount", (float) price.get("discount") + (float) ((Dictionary) items.get(item).get("price")).get("discount"));
if (((Dictionary<String, Object>) items.get(item).get("price")).get("discount") != null) {
price.put("discount", (float) price.get("discount") + (float) ((Dictionary<String, Object>) items.get(item).get("price")).get("discount"));
};
};
@ -108,9 +108,10 @@ public class transact {
return(price);
};
@SuppressWarnings("unchecked")
public static Dictionary<String, Float> calculate(String SKU, int QUANTITY) {
inventory.refresh();
Dictionary item_details = inventory.items.get(SKU);
Dictionary<String, Object> item_details = inventory.items.get(SKU);
// Create an output dictionary.
Dictionary<String, Float> item_pricing = new Hashtable<>();
@ -174,11 +175,11 @@ public class transact {
Returns: (boolean) the calculation state
*/
if (QUANTITY == 0) {return(false);}
if (QUANTITY == 0 || !progress) {return(false);}
else if (QUANTITY < 0) {return(remove(SKU, QUANTITY));};
// containing the current data's information
Dictionary ITEM_CURRENT_DATA = items.get(SKU);
Dictionary<String, Object> ITEM_CURRENT_DATA = items.get(SKU);
// check if the item exists
if (ITEM_CURRENT_DATA != null) {
@ -218,11 +219,11 @@ public class transact {
Returns: (boolean) the removal state
*/
if (QUANTITY == 0) {return(false);}
if (QUANTITY == 0 || !progress) {return(false);}
else if (QUANTITY < 0) {return(add(SKU, QUANTITY));};
// containing the current data's information
Dictionary ITEM_CURRENT_DATA = items.get(SKU);
Dictionary<String, Object> ITEM_CURRENT_DATA = items.get(SKU);
// check if the item exists. There's no need to remove an item that's already been removed.
if (ITEM_CURRENT_DATA != null) {
@ -252,15 +253,24 @@ public class transact {
public static void pay() {
/* Initialize the payment process of the transaction. */
if (state && progress) {
// Can only run when the transaction is active (you don't want to pay again right after you've paid, right?)
payment.init(Float.valueOf(FORMAT_DECIMAL.format(Float.valueOf(price.get("total").toString()))));
};
};
public static void finalise() {
/* Finalize the transaction. */
// TODO Replace this section with wrapping up the payment, "saving" the receipt, and then initializing it.
// receipt.finalise();
// Can only be run if the payment has been confirmed
if (payment.state != null) {
if (payment.OK && payment.state) {
progress = false; // no more modifications
price.put("change", payment.change);
receipt.payment(price);
};
};
}
receipt.finish();
};
};