killbill-uncached

payment: Fixes #212 Remove amount validation for chargeback

1/28/2016 8:12:57 PM

Details

diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/ChargebackOperation.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/ChargebackOperation.java
index a2993a6..cf477d5 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/ChargebackOperation.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/ChargebackOperation.java
@@ -17,14 +17,11 @@
 
 package org.killbill.billing.payment.core.sm.payments;
 
-import java.math.BigDecimal;
-
 import org.killbill.automaton.OperationResult;
 import org.killbill.billing.payment.api.PaymentApiException;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.core.sm.PaymentAutomatonDAOHelper;
 import org.killbill.billing.payment.core.sm.PaymentStateContext;
-import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
 import org.killbill.billing.payment.dispatcher.PluginDispatcher;
 import org.killbill.billing.payment.plugin.api.PaymentPluginApiException;
 import org.killbill.billing.payment.plugin.api.PaymentPluginStatus;
@@ -50,28 +47,6 @@ public class ChargebackOperation extends PaymentOperation {
     @Override
     protected PaymentTransactionInfoPlugin doCallSpecificOperationCallback() throws PaymentPluginApiException {
         logger.debug("Starting CHARGEBACK for payment {} ({} {})", paymentStateContext.getPaymentId(), paymentStateContext.getAmount(), paymentStateContext.getCurrency());
-
-        final PaymentPluginStatus status;
-        if (!paymentStateContext.getOnLeavingStateExistingTransactions().isEmpty()) {
-            final Iterable<PaymentTransactionModelDao> purchaseTransactions = getOnLeavingStateExistingTransactionsForType(TransactionType.PURCHASE);
-            final Iterable<PaymentTransactionModelDao> captureTransactions = getOnLeavingStateExistingTransactionsForType(TransactionType.CAPTURE);
-            final Iterable<PaymentTransactionModelDao> refundTransactions = getOnLeavingStateExistingTransactionsForType(TransactionType.REFUND);
-            final Iterable<PaymentTransactionModelDao> chargebackTransactions = getOnLeavingStateExistingTransactionsForType(TransactionType.CHARGEBACK);
-
-            final BigDecimal purchasedAmount = getSumAmount(purchaseTransactions);
-            final BigDecimal capturedAmount = getSumAmount(captureTransactions);
-            final BigDecimal refundedAmount = getSumAmount(refundTransactions);
-            final BigDecimal chargebackAmount = getSumAmount(chargebackTransactions);
-            final BigDecimal chargebackAvailableAmount = purchasedAmount.add(capturedAmount).subtract(refundedAmount.add(chargebackAmount));
-
-            if (paymentStateContext.getAmount().compareTo(chargebackAvailableAmount) > 0) {
-                status = PaymentPluginStatus.ERROR;
-            } else {
-                status = PaymentPluginStatus.PROCESSED;
-            }
-        } else {
-            status = PaymentPluginStatus.PROCESSED;
-        }
         return new DefaultNoOpPaymentInfoPlugin(paymentStateContext.getPaymentId(),
                                                 paymentStateContext.getTransactionId(),
                                                 TransactionType.CHARGEBACK,
@@ -79,7 +54,7 @@ public class ChargebackOperation extends PaymentOperation {
                                                 paymentStateContext.getCurrency(),
                                                 null,
                                                 null,
-                                                status,
+                                                PaymentPluginStatus.PROCESSED,
                                                 null,
                                                 null);
     }