fix loyalty points display
This commit is contained in:
@@ -206,15 +206,12 @@ public class SaleDetailFragment extends Fragment {
|
||||
binding.llEmployeeDiscount.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (sale.getPointsDiscountAmount() != null && sale.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||
binding.llLoyaltyDiscount.setVisibility(View.VISIBLE);
|
||||
binding.tvSaleLoyaltyDiscount.setText("-$" + String.format(Locale.getDefault(), "%.2f", sale.getPointsDiscountAmount()));
|
||||
if (sale.getPointsUsed() != null) {
|
||||
binding.tvLoyaltyDiscountLabel.setText("Loyalty Discount (" + sale.getPointsUsed() + " pts):");
|
||||
}
|
||||
} else if (sale.getLoyaltyDiscountAmount() != null && sale.getLoyaltyDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||
if (sale.getLoyaltyDiscountAmount() != null && sale.getLoyaltyDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||
binding.llLoyaltyDiscount.setVisibility(View.VISIBLE);
|
||||
binding.tvSaleLoyaltyDiscount.setText("-$" + String.format(Locale.getDefault(), "%.2f", sale.getLoyaltyDiscountAmount()));
|
||||
if (sale.getPointsUsed() != null && sale.getPointsUsed() > 0) {
|
||||
binding.tvLoyaltyDiscountLabel.setText("Loyalty Discount (" + sale.getPointsUsed() + " pts):");
|
||||
}
|
||||
} else {
|
||||
binding.llLoyaltyDiscount.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ public class SaleResponse {
|
||||
private BigDecimal employeeDiscountAmount;
|
||||
private BigDecimal loyaltyDiscountAmount;
|
||||
private Integer pointsEarned;
|
||||
private Integer pointsUsed;
|
||||
private String channel;
|
||||
private Long couponId;
|
||||
private Long cartId;
|
||||
@@ -145,6 +146,14 @@ public class SaleResponse {
|
||||
this.pointsEarned = pointsEarned;
|
||||
}
|
||||
|
||||
public Integer getPointsUsed() {
|
||||
return pointsUsed;
|
||||
}
|
||||
|
||||
public void setPointsUsed(Integer pointsUsed) {
|
||||
this.pointsUsed = pointsUsed;
|
||||
}
|
||||
|
||||
public String getChannel() {
|
||||
return channel;
|
||||
}
|
||||
|
||||
@@ -73,6 +73,9 @@ public class Sale {
|
||||
@Column(nullable = false)
|
||||
private Integer pointsEarned = 0;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Integer pointsUsed = 0;
|
||||
|
||||
@OneToMany(mappedBy = "sale", cascade = CascadeType.ALL)
|
||||
private List<SaleItem> items = new ArrayList<>();
|
||||
|
||||
@@ -224,6 +227,14 @@ public class Sale {
|
||||
this.pointsEarned = pointsEarned;
|
||||
}
|
||||
|
||||
public Integer getPointsUsed() {
|
||||
return pointsUsed;
|
||||
}
|
||||
|
||||
public void setPointsUsed(Integer pointsUsed) {
|
||||
this.pointsUsed = pointsUsed;
|
||||
}
|
||||
|
||||
public List<SaleItem> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
@@ -200,6 +200,7 @@ public class SaleService {
|
||||
sale.setEmployeeDiscountAmount(BigDecimal.ZERO);
|
||||
sale.setLoyaltyDiscountAmount(loyaltyDiscountRefunded);
|
||||
sale.setPointsEarned(0);
|
||||
sale.setPointsUsed(0);
|
||||
} else {
|
||||
if (request.getItems() == null || request.getItems().isEmpty()) {
|
||||
throw new BusinessException("At least one item is required");
|
||||
@@ -254,6 +255,7 @@ public class SaleService {
|
||||
pointsDeducted = toPointsUsed(loyaltyDiscount);
|
||||
}
|
||||
sale.setLoyaltyDiscountAmount(loyaltyDiscount);
|
||||
sale.setPointsUsed(pointsDeducted);
|
||||
|
||||
BigDecimal finalTotal = subtotalAmount.subtract(couponDiscount).subtract(employeeDiscount).subtract(loyaltyDiscount);
|
||||
sale.setTotalAmount(finalTotal.max(BigDecimal.ZERO));
|
||||
@@ -376,6 +378,7 @@ public class SaleService {
|
||||
response.setEmployeeDiscountAmount(sale.getEmployeeDiscountAmount());
|
||||
response.setLoyaltyDiscountAmount(sale.getLoyaltyDiscountAmount());
|
||||
response.setPointsEarned(sale.getPointsEarned());
|
||||
response.setPointsUsed(sale.getPointsUsed());
|
||||
response.setChannel(sale.getChannel());
|
||||
if (sale.getCoupon() != null) {
|
||||
response.setCouponId(sale.getCoupon().getCouponId());
|
||||
|
||||
@@ -841,6 +841,7 @@ public class SaleController {
|
||||
double subtotal = sale.getSubtotalAmount() != null ? sale.getSubtotalAmount().doubleValue() : 0.0;
|
||||
double couponDiscount = sale.getCouponDiscountAmount() != null ? sale.getCouponDiscountAmount().doubleValue() : 0.0;
|
||||
double loyaltyDiscount = sale.getLoyaltyDiscountAmount() != null ? sale.getLoyaltyDiscountAmount().doubleValue() : 0.0;
|
||||
int pointsUsed = sale.getPointsUsed() != null ? sale.getPointsUsed() : 0;
|
||||
return new SaleDetail(
|
||||
sale.getSaleId().intValue(),
|
||||
sale.getSaleDate(),
|
||||
@@ -852,7 +853,8 @@ public class SaleController {
|
||||
sale.getCustomerName(),
|
||||
subtotal,
|
||||
couponDiscount,
|
||||
loyaltyDiscount
|
||||
loyaltyDiscount,
|
||||
pointsUsed
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ public class SaleDetailDialogController {
|
||||
@FXML private javafx.scene.layout.HBox hbDetailCouponDiscount;
|
||||
@FXML private Label lblDetailCouponDiscount;
|
||||
@FXML private javafx.scene.layout.HBox hbDetailLoyaltyDiscount;
|
||||
@FXML private Label lblDetailLoyaltyDiscountTitle;
|
||||
@FXML private Label lblDetailLoyaltyDiscount;
|
||||
@FXML private Label lblTotal;
|
||||
@FXML private Button btnRefund;
|
||||
@@ -86,6 +87,11 @@ public class SaleDetailDialogController {
|
||||
|
||||
if (sale.getLoyaltyDiscountAmount() > 0.001) {
|
||||
lblDetailLoyaltyDiscount.setText("-" + currency.format(sale.getLoyaltyDiscountAmount()));
|
||||
if (sale.getPointsUsed() > 0) {
|
||||
lblDetailLoyaltyDiscountTitle.setText("Loyalty Discount (" + sale.getPointsUsed() + " pts):");
|
||||
} else {
|
||||
lblDetailLoyaltyDiscountTitle.setText("Loyalty Discount:");
|
||||
}
|
||||
hbDetailLoyaltyDiscount.setVisible(true);
|
||||
hbDetailLoyaltyDiscount.setManaged(true);
|
||||
} else {
|
||||
|
||||
@@ -15,8 +15,9 @@ public class SaleDetail {
|
||||
private final double subtotalAmount;
|
||||
private final double couponDiscountAmount;
|
||||
private final double loyaltyDiscountAmount;
|
||||
private final int pointsUsed;
|
||||
|
||||
public SaleDetail(int saleId, LocalDateTime saleDate, double totalAmount, String paymentMethod, String employeeName, boolean refund, ObservableList<SaleDetailItem> items, String customerName, double subtotalAmount, double couponDiscountAmount, double loyaltyDiscountAmount) {
|
||||
public SaleDetail(int saleId, LocalDateTime saleDate, double totalAmount, String paymentMethod, String employeeName, boolean refund, ObservableList<SaleDetailItem> items, String customerName, double subtotalAmount, double couponDiscountAmount, double loyaltyDiscountAmount, int pointsUsed) {
|
||||
this.saleId = saleId;
|
||||
this.saleDate = saleDate;
|
||||
this.totalAmount = totalAmount;
|
||||
@@ -28,6 +29,7 @@ public class SaleDetail {
|
||||
this.subtotalAmount = subtotalAmount;
|
||||
this.couponDiscountAmount = couponDiscountAmount;
|
||||
this.loyaltyDiscountAmount = loyaltyDiscountAmount;
|
||||
this.pointsUsed = pointsUsed;
|
||||
}
|
||||
|
||||
public int getSaleId() {
|
||||
@@ -74,6 +76,10 @@ public class SaleDetail {
|
||||
return loyaltyDiscountAmount;
|
||||
}
|
||||
|
||||
public int getPointsUsed() {
|
||||
return pointsUsed;
|
||||
}
|
||||
|
||||
public static class SaleDetailItem {
|
||||
private final int prodId;
|
||||
private final String productName;
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
</HBox>
|
||||
<HBox fx:id="hbDetailLoyaltyDiscount" spacing="8.0" alignment="CENTER_RIGHT" visible="false" managed="false">
|
||||
<children>
|
||||
<Label text="Loyalty Discount:" textFill="#27ae60"><font><Font size="12.0" /></font></Label>
|
||||
<Label fx:id="lblDetailLoyaltyDiscountTitle" text="Loyalty Discount:" textFill="#27ae60"><font><Font size="12.0" /></font></Label>
|
||||
<Label fx:id="lblDetailLoyaltyDiscount" textFill="#27ae60"><font><Font size="12.0" /></font></Label>
|
||||
</children>
|
||||
</HBox>
|
||||
|
||||
Reference in New Issue
Block a user