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 @@ + + + + + +