diff --git a/RRPSS/bin/.gitignore b/RRPSS/bin/.gitignore new file mode 100644 index 0000000..07f75cc --- /dev/null +++ b/RRPSS/bin/.gitignore @@ -0,0 +1,44 @@ +/Alacarte.class +/AlacarteController.class +/Category.class +/CategoryController.class +/ClosedOrderController.class +/Customer.class +/Discount.class +/DiscountController.class +/DiscountCoupon.class +/DiscountOrder.class +/Invoice.class +/Membership.class +/MenuItem.class +/MenuItemController.class +/OpenOrderController.class +/Order.class +/OrderController.class +/OrderItems.class +/Person.class +/PromoPackage.class +/PromoPackageController.class +/RRPSS_App.class +/Reservation.class +/SaleRevenue.class +/Staff.class +/StaffController.class +/Table.class +/TableController.class +/Tax.class +/TaxOrder.class +/UpdateOrderController.class +/ViewOrderController.class +/iCalculateDiscount.class +/iClosedOrder.class +/iCouponDiscount.class +/iDiscount.class +/iDiscountCalculator.class +/iMemberDiscount.class +/iOpenOrder.class +/iTaxCalculator.class +/iUpdateOrderController.class +/iViewOrderController.class +/SalesRevenueController.class +/SaleRevenueController.class diff --git a/RRPSS/bin/ClosedOrderController.class b/RRPSS/bin/ClosedOrderController.class index 0e2a289..51bec55 100644 Binary files a/RRPSS/bin/ClosedOrderController.class and b/RRPSS/bin/ClosedOrderController.class differ diff --git a/RRPSS/bin/Order.class b/RRPSS/bin/Order.class index fa7550e..40e3ce4 100644 Binary files a/RRPSS/bin/Order.class and b/RRPSS/bin/Order.class differ diff --git a/RRPSS/bin/OrderController.class b/RRPSS/bin/OrderController.class index 4fc19c8..de55af2 100644 Binary files a/RRPSS/bin/OrderController.class and b/RRPSS/bin/OrderController.class differ diff --git a/RRPSS/bin/RRPSS_App.class b/RRPSS/bin/RRPSS_App.class index 1686bfe..5dd45c1 100644 Binary files a/RRPSS/bin/RRPSS_App.class and b/RRPSS/bin/RRPSS_App.class differ diff --git a/RRPSS/bin/SaleRevenue.class b/RRPSS/bin/SaleRevenue.class index abf9ec0..128cd1a 100644 Binary files a/RRPSS/bin/SaleRevenue.class and b/RRPSS/bin/SaleRevenue.class differ diff --git a/RRPSS/src/ClosedOrderController.java b/RRPSS/src/ClosedOrderController.java index d3191b5..8d8e588 100644 --- a/RRPSS/src/ClosedOrderController.java +++ b/RRPSS/src/ClosedOrderController.java @@ -54,7 +54,7 @@ public double CalculateDiscount(Order order, ArrayList membershipDisco System.out.println("Apply Discount?(Y/N): "); String isApply = sc.nextLine(); - if(isApply == "N") + if(isApply.equalsIgnoreCase("N")) return 0; PrintDiscountOption(); diff --git a/RRPSS/src/Order.java b/RRPSS/src/Order.java index f95c4a2..9524ffc 100644 --- a/RRPSS/src/Order.java +++ b/RRPSS/src/Order.java @@ -152,6 +152,16 @@ public void addTaxOrder(Tax tax, double taxPrice) taxOrderArray.add(newTaxOrder); } + public boolean isOrderClosed() + { + if(endTimeStamp == null) + { + return false; + } else { + return true; + } + } + private boolean isNumeric(String str){ return str != null && str.matches("[0-9.]+"); } diff --git a/RRPSS/src/OrderController.java b/RRPSS/src/OrderController.java index 575e6c7..ca42b42 100644 --- a/RRPSS/src/OrderController.java +++ b/RRPSS/src/OrderController.java @@ -84,9 +84,9 @@ public void CloseOrder(ArrayList taxList, ArrayList membershipDis closedOC.CloseOrder(order, taxList, membershipDiscount); } - - - + public Map getAllOrders() + { + return this.orderMap; + } - } diff --git a/RRPSS/src/RRPSS_App.java b/RRPSS/src/RRPSS_App.java index 75bf645..69da833 100644 --- a/RRPSS/src/RRPSS_App.java +++ b/RRPSS/src/RRPSS_App.java @@ -10,7 +10,7 @@ public class RRPSS_App { static CategoryController categoryController; static PromoPackageController promopackagecontroller; static AlacarteController alacartecontroller; - + static SaleRevenue salerevenue; static ArrayList membershipDiscount = new ArrayList(); static ArrayList couponDiscount = new ArrayList(); @@ -24,9 +24,10 @@ public static void main(String[] args) { categoryController = new CategoryController(); alacartecontroller = new AlacarteController(); promopackagecontroller = new PromoPackageController(); + salerevenue = new SaleRevenue(); int choice; - Scanner sc = new Scanner(System.in); + System.out.println("Restaurant Reservation and Point of Sale System (RRPSS)"); System.out.println("========================================================"); @@ -36,6 +37,7 @@ public static void main(String[] args) { for(int i = 0; i < tables.length; i++) tables[i] = new Table(i+1); int ordernum = 1; + Scanner sc = new Scanner(System.in); do{ System.out.println("(1) View/Create/Update/Remove Menu Item"); @@ -49,7 +51,7 @@ public static void main(String[] args) { System.out.print("Enter Choice: "); choice = sc.nextInt(); System.out.println(); - + switch(choice) { case 1: @@ -68,6 +70,7 @@ public static void main(String[] args) { case 6: break; case 7: + salerevenue.generateNewSalesReport(sc, orderController.getAllOrders(), alacartecontroller.getAllAlacarteItems(), promopackagecontroller.getAllPromoItems()); break; case 8: System.exit(0); diff --git a/RRPSS/src/SaleRevenue.java b/RRPSS/src/SaleRevenue.java index 1687ecc..b091c47 100644 --- a/RRPSS/src/SaleRevenue.java +++ b/RRPSS/src/SaleRevenue.java @@ -1,3 +1,9 @@ +import java.util.List; +import java.util.Map; +import java.util.Scanner; +import java.time.*; +import java.time.format.DateTimeFormatter; + public class SaleRevenue { private int reportID; private String reportName; @@ -5,7 +11,6 @@ public class SaleRevenue { private double totalRevenue; private Order[] orderList; - public int getReportID() { return reportID; @@ -55,4 +60,98 @@ public void setOrderList(Order[] orderList) { this.orderList = orderList; } + + public void generateNewSalesReport(Scanner sc, Map orders, List alacarteitem, List pp) + { + System.out.println("Enter Report ID: "); + this.reportID = sc.nextInt(); + + System.out.println("Enter Report Name: "); + this.reportName = sc.next(); + + System.out.println("Generate report by day or month?"); + System.out.println("D - Day, M - Month"); + String dayormonth = sc.next(); + + String inputdate = ""; + + if(dayormonth.equalsIgnoreCase("D")) + { + this.periodByDay = true; + System.out.println("Enter Date(E.g. 02-Dec): "); + } else { + this.periodByDay = false; + System.out.println("Enter Month(E.g. Dec): "); + } + inputdate = sc.next(); + + double totalrevenue = 0; + + System.out.println("====================================="); + System.out.printf("Report ID: %d\n", this.reportID); + System.out.printf("Report Name: %s\n", this.reportName); + System.out.printf("Report Date: %s\n", inputdate); + System.out.println("====================================="); + + System.out.println("Alacarte Name\t\tRevenue($)"); + System.out.println("-------------------------------------"); + double alrev = 0; + for(Alacarte al: alacarteitem) + { + double itemrev = getItemRevenue(orders, inputdate, al); + totalrevenue += itemrev; + alrev += itemrev; + System.out.printf("%-16s\t%.2f\n",al.getItemName(),itemrev); + } + + System.out.println("-------------------------------------"); + System.out.println("Alacarte Total: " + alrev); + System.out.println("====================================="); + System.out.println("Promo Name\t\tRevenue($)"); + System.out.println("-------------------------------------"); + double promorev = 0; + for(PromoPackage promo: pp) + { + double itemrev = getItemRevenue(orders, inputdate, promo); + totalrevenue += itemrev; + promorev += itemrev; + System.out.printf("%-16s\t%.2f\n",promo.getItemName(),itemrev); + } + System.out.println("-------------------------------------"); + System.out.println("Promo Total: " + promorev); + System.out.println("====================================="); + + System.out.println("Total Revenue: " + totalrevenue); + System.out.println(); + } + + private double getItemRevenue(Map orders, String inputdate, MenuItem mi) + { + DateTimeFormatter bydaydtf = DateTimeFormatter.ofPattern("dd-MMM"); + DateTimeFormatter bymondtf = DateTimeFormatter.ofPattern("MMM"); + double itemrevenue = 0; + String orderenddate = ""; + + for(Map.Entry e : orders.entrySet()) + { + Order currentorder = e.getValue(); + + if(currentorder.getOrderItem(mi.getItemName()) != null && currentorder.isOrderClosed() == true) + { + if(this.periodByDay == true) + { + orderenddate = currentorder.getEndTimeStamp().format(bydaydtf); + } else { + orderenddate = currentorder.getEndTimeStamp().format(bymondtf); + } + + if(currentorder.isOrderClosed() == true && orderenddate.equalsIgnoreCase(inputdate)) + { + itemrevenue += currentorder.getOrderItem(mi.getItemName()).getSubTotal(); + } + } + } + + return itemrevenue; + } } diff --git a/RRPSS/src/SaleRevenueController.java b/RRPSS/src/SaleRevenueController.java new file mode 100644 index 0000000..b741447 --- /dev/null +++ b/RRPSS/src/SaleRevenueController.java @@ -0,0 +1,12 @@ +import java.util.Scanner; + +public class SaleRevenueController { + private SaleRevenue sr; + private OrderController oc; + private AlacarteController ac; + private PromoPackageController ppc; + + + + +}