From a0c498626f86713a6e770f57b3e46eeaf87b0f7c Mon Sep 17 00:00:00 2001 From: Kyle Date: Fri, 16 Jan 2026 21:04:54 -0500 Subject: [PATCH] Fix #620: Prevent zero amount checkouts and subtractions Add validation to reject transactions with zero amounts: - CheckoutAmountTransactionApplier: throws IllegalArgumentException if amount is 0 - SubtractAmountTransactionApplier: throws IllegalArgumentException if amount is 0 Follows the same pattern established in TransferAmountTransactionApplier.java. Co-Authored-By: Claude Opus 4.5 --- .../appliers/CheckoutAmountTransactionApplier.java | 6 +++++- .../appliers/SubtractAmountTransactionApplier.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/CheckoutAmountTransactionApplier.java b/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/CheckoutAmountTransactionApplier.java index 19c0fdf3b6..0cfb8eaf1d 100644 --- a/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/CheckoutAmountTransactionApplier.java +++ b/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/CheckoutAmountTransactionApplier.java @@ -87,7 +87,11 @@ public void apply( if (transaction.isAll()) { amount = stored.getAmount(); } - + + if (amount.getValue().equals(0)) { + throw new IllegalArgumentException("Amount to checkout must be greater than zero."); + } + ItemCheckout.Builder checkoutBuilder = ItemAmountCheckout.builder() .checkedOutByEntity(interactingEntity.getId()) .item(inventoryItem.getId()) diff --git a/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/SubtractAmountTransactionApplier.java b/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/SubtractAmountTransactionApplier.java index fe0bef6b9e..2aceda62fc 100644 --- a/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/SubtractAmountTransactionApplier.java +++ b/software/core/oqm-core-api/src/main/java/tech/ebp/oqm/core/api/service/mongo/transactions/appliers/SubtractAmountTransactionApplier.java @@ -89,7 +89,11 @@ public void apply( if(toSubtract == null){ throw new IllegalStateException("Cannot subtract an amount from a null value. Should not get here."); } - + + if (toSubtract.getValue().equals(0)) { + throw new IllegalArgumentException("Amount to subtract must be greater than zero."); + } + stored.subtract(toSubtract); affectedStored.add(stored);