From be07381bc0c251ba5740f348efc1b56dec66a06a Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Wed, 15 Apr 2026 15:46:46 -0600 Subject: [PATCH] fix sale and adoption bugs --- .../java/com/petshop/backend/controller/SaleController.java | 2 +- .../java/com/petshop/backend/dto/adoption/AdoptionRequest.java | 1 + .../main/java/com/petshop/backend/dto/sale/SaleItemRequest.java | 1 + .../src/main/java/com/petshop/backend/service/SaleService.java | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/petshop/backend/controller/SaleController.java b/backend/src/main/java/com/petshop/backend/controller/SaleController.java index cdb64c78..dffa63e4 100644 --- a/backend/src/main/java/com/petshop/backend/controller/SaleController.java +++ b/backend/src/main/java/com/petshop/backend/controller/SaleController.java @@ -40,7 +40,7 @@ public class SaleController { } @PostMapping - @PreAuthorize("hasRole('STAFF')") + @PreAuthorize("hasAnyRole('STAFF', 'ADMIN')") public ResponseEntity createSale(@Valid @RequestBody SaleRequest request) { return ResponseEntity.status(HttpStatus.CREATED).body(saleService.createSale(request)); } diff --git a/backend/src/main/java/com/petshop/backend/dto/adoption/AdoptionRequest.java b/backend/src/main/java/com/petshop/backend/dto/adoption/AdoptionRequest.java index 7fb9ceac..0a45996f 100644 --- a/backend/src/main/java/com/petshop/backend/dto/adoption/AdoptionRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/adoption/AdoptionRequest.java @@ -20,6 +20,7 @@ public class AdoptionRequest { private Long employeeId; + @NotNull(message = "Source store ID is required") private Long sourceStoreId; private String paymentMethod; diff --git a/backend/src/main/java/com/petshop/backend/dto/sale/SaleItemRequest.java b/backend/src/main/java/com/petshop/backend/dto/sale/SaleItemRequest.java index 94e094c3..dad7011a 100644 --- a/backend/src/main/java/com/petshop/backend/dto/sale/SaleItemRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/sale/SaleItemRequest.java @@ -9,6 +9,7 @@ public class SaleItemRequest { private Long prodId; @NotNull(message = "Quantity is required") + @Positive(message = "Quantity must be positive") private Integer quantity; public Long getProdId() { diff --git a/backend/src/main/java/com/petshop/backend/service/SaleService.java b/backend/src/main/java/com/petshop/backend/service/SaleService.java index b53a4c4c..bb86d34c 100644 --- a/backend/src/main/java/com/petshop/backend/service/SaleService.java +++ b/backend/src/main/java/com/petshop/backend/service/SaleService.java @@ -172,7 +172,7 @@ public class SaleService { BigDecimal refundTotal; if (originalSubtotal != null && originalSubtotal.compareTo(BigDecimal.ZERO) > 0) { - BigDecimal ratio = subtotalAmount.divide(originalSubtotal, 10, RoundingMode.HALF_UP); + BigDecimal ratio = subtotalAmount.abs().divide(originalSubtotal, 10, RoundingMode.HALF_UP); refundTotal = originalSale.getTotalAmount().abs().multiply(ratio).negate().setScale(2, RoundingMode.HALF_UP); if (originalSale.getLoyaltyDiscountAmount() != null) { loyaltyDiscountRefunded = originalSale.getLoyaltyDiscountAmount().multiply(ratio).setScale(2, RoundingMode.HALF_UP);