From 2b4fcfe24c7e9cb9497befe744b858c529ec0ac4 Mon Sep 17 00:00:00 2001
From: Alex <78383757+Lextical@users.noreply.github.com>
Date: Tue, 14 Apr 2026 22:33:10 -0600
Subject: [PATCH] maade it so sales display points earned
---
.../detailfragments/SaleDetailFragment.java | 10 +++++++
.../main/res/layout/fragment_sale_detail.xml | 24 +++++++++++++++
.../controllers/SaleController.java | 29 ++++++++++++++++---
.../petshopdesktop/modelviews/sale-view.fxml | 6 ++++
4 files changed, 65 insertions(+), 4 deletions(-)
diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/SaleDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/SaleDetailFragment.java
index 8a4dff16..4963b272 100644
--- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/SaleDetailFragment.java
+++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/SaleDetailFragment.java
@@ -111,6 +111,7 @@ public class SaleDetailFragment extends Fragment {
binding.llLoyaltyPoints.setVisibility(View.GONE);
binding.cbUseLoyaltyPoints.setChecked(false);
}
+ updateTotal();
});
}
@@ -420,6 +421,15 @@ public class SaleDetailFragment extends Fragment {
}
binding.tvSaleDetailTotal.setText("Total: $" + String.format(Locale.getDefault(), "%.2f", total));
+
+ CustomerDTO customer = viewModel.getSelectedCustomerData().getValue();
+ if (customer != null && !viewModel.isViewOnly()) {
+ int pointsToEarn = total.max(BigDecimal.ZERO).intValue();
+ binding.tvPointsToEarn.setText("+" + pointsToEarn + " pts");
+ binding.llPointsToEarn.setVisibility(View.VISIBLE);
+ } else {
+ binding.llPointsToEarn.setVisibility(View.GONE);
+ }
}
private void saveSale() {
diff --git a/android/app/src/main/res/layout/fragment_sale_detail.xml b/android/app/src/main/res/layout/fragment_sale_detail.xml
index e92f83d4..7a5f66ec 100644
--- a/android/app/src/main/res/layout/fragment_sale_detail.xml
+++ b/android/app/src/main/res/layout/fragment_sale_detail.xml
@@ -444,6 +444,30 @@
android:textColor="@color/accent_coral"
android:layout_gravity="end"
android:layout_marginTop="12dp"/>
+
+
+
+
+
diff --git a/desktop/src/main/java/org/example/petshopdesktop/controllers/SaleController.java b/desktop/src/main/java/org/example/petshopdesktop/controllers/SaleController.java
index 39ed6b51..8eaaf7af 100644
--- a/desktop/src/main/java/org/example/petshopdesktop/controllers/SaleController.java
+++ b/desktop/src/main/java/org/example/petshopdesktop/controllers/SaleController.java
@@ -199,6 +199,12 @@ public class SaleController {
@FXML
private Label lblLoyaltyDiscount;
+ @FXML
+ private HBox hbPointsToEarn;
+
+ @FXML
+ private Label lblPointsToEarn;
+
private final ObservableList cartItems = FXCollections.observableArrayList();
private final ObservableList saleItems = FXCollections.observableArrayList();
private FilteredList filteredSales;
@@ -389,12 +395,15 @@ public class SaleController {
task.setOnSucceeded(event -> {
selectedCustomerData = task.getValue();
- if (selectedCustomerData != null && selectedCustomerData.getLoyaltyPoints() != null && selectedCustomerData.getLoyaltyPoints() >= 20) {
- lblLoyaltyPoints.setText(selectedCustomerData.getLoyaltyPoints() + " pts available");
+ if (selectedCustomerData != null) {
+ int pts = selectedCustomerData.getLoyaltyPoints() != null ? selectedCustomerData.getLoyaltyPoints() : 0;
+ lblLoyaltyPoints.setText(pts + " pts available");
lblLoyaltyPoints.setVisible(true);
lblLoyaltyPoints.setManaged(true);
- chkUseLoyaltyPoints.setVisible(true);
- chkUseLoyaltyPoints.setManaged(true);
+ boolean canRedeem = pts >= 20;
+ chkUseLoyaltyPoints.setVisible(canRedeem);
+ chkUseLoyaltyPoints.setManaged(canRedeem);
+ if (!canRedeem) chkUseLoyaltyPoints.setSelected(false);
} else {
lblLoyaltyPoints.setVisible(false);
lblLoyaltyPoints.setManaged(false);
@@ -701,6 +710,8 @@ public class SaleController {
hbCouponDiscount.setManaged(false);
hbLoyaltyDiscount.setVisible(false);
hbLoyaltyDiscount.setManaged(false);
+ hbPointsToEarn.setVisible(false);
+ hbPointsToEarn.setManaged(false);
cbCustomer.setValue(null);
selectedCustomerData = null;
lblLoyaltyPoints.setVisible(false);
@@ -875,6 +886,16 @@ public class SaleController {
}
lblCartTotal.setText(currency.format(Math.max(0, total.doubleValue())));
+
+ if (selectedCustomerData != null) {
+ int pointsToEarn = (int) Math.max(0, total.doubleValue());
+ lblPointsToEarn.setText("+" + pointsToEarn + " pts");
+ hbPointsToEarn.setVisible(true);
+ hbPointsToEarn.setManaged(true);
+ } else {
+ hbPointsToEarn.setVisible(false);
+ hbPointsToEarn.setManaged(false);
+ }
}
private BigDecimal calculateCouponDiscount(BigDecimal subtotal) {
diff --git a/desktop/src/main/resources/org/example/petshopdesktop/modelviews/sale-view.fxml b/desktop/src/main/resources/org/example/petshopdesktop/modelviews/sale-view.fxml
index 20f9ae16..666c2898 100644
--- a/desktop/src/main/resources/org/example/petshopdesktop/modelviews/sale-view.fxml
+++ b/desktop/src/main/resources/org/example/petshopdesktop/modelviews/sale-view.fxml
@@ -173,6 +173,12 @@
+
+
+
+
+
+