Details
diff --git a/api/src/main/java/com/ning/billing/ErrorCode.java b/api/src/main/java/com/ning/billing/ErrorCode.java
index bc20699..c3b55a1 100644
--- a/api/src/main/java/com/ning/billing/ErrorCode.java
+++ b/api/src/main/java/com/ning/billing/ErrorCode.java
@@ -244,6 +244,9 @@ public enum ErrorCode {
PAYMENT_NO_SUCH_PAYMENT(7020, "Payment %s does not exist"),
PAYMENT_NO_DEFAULT_PAYMENT_METHOD(7021, "Account %s does not have a default payment method set"),
PAYMENT_DEL_DEFAULT_PAYMENT_METHOD(7022, "Cannot delete default payment method for account %s"),
+ PAYMENT_NO_SUCH_REFUND(7023, "Refund %s does not exist"),
+ PAYMENT_NO_SUCH_SUCCESS_PAYMENT(7024, "Payment %s did not succeed"),
+ PAYMENT_REFUND_AMOUNT_TOO_LARGE(7025, "Refund amount if larger than payment"),
PAYMENT_PLUGIN_TIMEOUT(7100, "Plugin timeout for account %s and invoice %s"),
PAYMENT_PLUGIN_ACCOUNT_INIT(7101, "Account initialization for account %s and plugin % s failed: %s"),
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoicePayment.java b/api/src/main/java/com/ning/billing/invoice/api/InvoicePayment.java
index 880fc2b..102eb64 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoicePayment.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoicePayment.java
@@ -39,6 +39,8 @@ public interface InvoicePayment extends Entity {
UUID getLinkedInvoicePaymentId();
+ UUID getPaymentCookieId();
+
public enum InvoicePaymentType {
ATTEMPT,
CHARGED_BACK,
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java b/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java
index a71783a..54e03bf 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoicePaymentApi.java
@@ -42,7 +42,7 @@ public interface InvoicePaymentApi {
public void notifyOfPaymentAttempt(UUID invoiceId, BigDecimal amountOutstanding, Currency currency, UUID paymentAttemptId, DateTime paymentAttemptDate, CallContext context);
- public InvoicePayment createRefund(UUID paymentAttemptId, BigDecimal amount, boolean isInvoiceAdjusted, CallContext context) throws InvoiceApiException;
+ public InvoicePayment createRefund(UUID paymentAttemptId, BigDecimal amount, boolean isInvoiceAdjusted, UUID paymentCookieId, CallContext context) throws InvoiceApiException;
public InvoicePayment createChargeback(UUID invoicePaymentId, BigDecimal amount, CallContext context) throws InvoiceApiException;
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java b/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
index c8f9b2f..479966a 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -31,8 +31,17 @@ public interface PaymentApi {
public Payment createPayment(final Account account, final UUID invoiceId, final BigDecimal amount, final CallContext context)
throws PaymentApiException;
- public Refund createRefund(final Account account, final UUID paymentId, final CallContext context)
- throws PaymentApiException;
+ public Refund getRefund(final UUID refundId)
+ throws PaymentApiException;
+
+ public Refund createRefund(final Account account, final UUID paymentId, final BigDecimal refundAmount, final boolean isAdjusted, final CallContext context)
+ throws PaymentApiException;
+
+ public List<Refund> getAccountRefunds(final Account account)
+ throws PaymentApiException;
+
+ public List<Refund> getPaymentRefunds(final UUID paymentId)
+ throws PaymentApiException;
public List<Payment> getInvoicePayments(final UUID invoiceId)
throws PaymentApiException;
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentApiException.java b/api/src/main/java/com/ning/billing/payment/api/PaymentApiException.java
index 2ef846d..aa69bd0 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentApiException.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentApiException.java
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -18,11 +18,16 @@ package com.ning.billing.payment.api;
import com.ning.billing.BillingExceptionBase;
import com.ning.billing.ErrorCode;
import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.invoice.api.InvoiceApiException;
public class PaymentApiException extends BillingExceptionBase {
private static final long serialVersionUID = 39445033L;
+ public PaymentApiException(final InvoiceApiException e) {
+ super(e, e.getCode(), e.getMessage());
+ }
+
public PaymentApiException(final AccountApiException e) {
super(e, e.getCode(), e.getMessage());
}
diff --git a/api/src/main/java/com/ning/billing/payment/api/Refund.java b/api/src/main/java/com/ning/billing/payment/api/Refund.java
index e769e54..ed2e15c 100644
--- a/api/src/main/java/com/ning/billing/payment/api/Refund.java
+++ b/api/src/main/java/com/ning/billing/payment/api/Refund.java
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -15,6 +15,15 @@
*/
package com.ning.billing.payment.api;
-public interface Refund {
+import java.math.BigDecimal;
+import java.util.UUID;
+
+import com.ning.billing.catalog.api.Currency;
+public interface Refund {
+ public UUID getId();
+ public UUID getPaymentId();
+ public boolean isAdjusted();
+ public BigDecimal getRefundAmount();
+ public Currency getCurrency();
}
diff --git a/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentPluginApi.java b/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentPluginApi.java
index 10b329e..5f8fe2d 100644
--- a/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentPluginApi.java
+++ b/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentPluginApi.java
@@ -33,8 +33,11 @@ public interface PaymentPluginApi {
public PaymentInfoPlugin getPaymentInfo(UUID paymentId)
throws PaymentPluginApiException;
- public List<PaymentInfoPlugin> processRefund(Account account)
- throws PaymentPluginApiException;
+ public void processRefund(Account account, UUID paymentId, BigDecimal refundAmout)
+ throws PaymentPluginApiException;
+
+ public int getNbRefundForPaymentAmount(final Account account, final UUID paymentId, final BigDecimal refundAmount)
+ throws PaymentPluginApiException;
public String createPaymentProviderAccount(Account account)
throws PaymentPluginApiException;
diff --git a/api/src/main/java/com/ning/billing/util/dao/ObjectType.java b/api/src/main/java/com/ning/billing/util/dao/ObjectType.java
index a158e77..b67e847 100644
--- a/api/src/main/java/com/ning/billing/util/dao/ObjectType.java
+++ b/api/src/main/java/com/ning/billing/util/dao/ObjectType.java
@@ -22,9 +22,10 @@ public enum ObjectType {
BUNDLE("subscription bundle"),
INVOICE("invoice"),
PAYMENT("payment"),
- RECURRING_INVOICE_ITEM("recurring_invoice_item"),
+ INVOICE_ITEM("invoice item"),
SUBSCRIPTION("subscription"),
- PAYMENT_METHOD("payment method");
+ PAYMENT_METHOD("payment method"),
+ REFUND("refund");
private final String objectName;
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java
index a73fab7..be8aa79 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/invoice/DefaultInvoicePaymentApi.java
@@ -111,8 +111,8 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
@Override
public InvoicePayment createRefund(UUID paymentAttemptId,
- BigDecimal amount, boolean isInvoiceAdjusted, CallContext context)
+ BigDecimal amount, boolean isInvoiceAdjusted, UUID paymentCookieId, CallContext context)
throws InvoiceApiException {
- return dao.createRefund(paymentAttemptId, amount, isInvoiceAdjusted, context);
+ return dao.createRefund(paymentAttemptId, amount, isInvoiceAdjusted, paymentCookieId, context);
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index c0539a9..b09e347 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -298,12 +298,13 @@ public class DefaultInvoiceDao implements InvoiceDao {
@Override
public InvoicePayment createRefund(final UUID paymentAttemptId,
- final BigDecimal amount, final boolean isInvoiceAdjusted, final CallContext context)
+ final BigDecimal amount, final boolean isInvoiceAdjusted, final UUID paymentCookieId, final CallContext context)
throws InvoiceApiException {
return invoicePaymentSqlDao.inTransaction(new Transaction<InvoicePayment, InvoicePaymentSqlDao>() {
@Override
public InvoicePayment inTransaction(final InvoicePaymentSqlDao transactional, final TransactionStatus status) throws Exception {
+
final InvoicePayment payment = transactional.getByPaymentAttemptId(paymentAttemptId.toString());
if (payment == null) {
throw new InvoiceApiException(ErrorCode.INVOICE_PAYMENT_BY_ATTEMPT_NOT_FOUND, paymentAttemptId);
@@ -322,7 +323,7 @@ public class DefaultInvoiceDao implements InvoiceDao {
final InvoicePayment refund = new DefaultInvoicePayment(UUID.randomUUID(), InvoicePaymentType.REFUND, paymentAttemptId,
- payment.getInvoiceId(), context.getCreatedDate(), requestedPositiveAmount.negate(), payment.getCurrency(), payment.getId());
+ payment.getInvoiceId(), context.getCreatedDate(), requestedPositiveAmount.negate(), payment.getCurrency(), paymentCookieId, payment.getId());
transactional.create(refund, context);
// Retrieve invoice after the Refund
@@ -382,7 +383,7 @@ public class DefaultInvoiceDao implements InvoiceDao {
throw new InvoiceApiException(ErrorCode.INVOICE_PAYMENT_NOT_FOUND, invoicePaymentId.toString());
} else {
final InvoicePayment chargeBack = new DefaultInvoicePayment(UUID.randomUUID(), InvoicePaymentType.CHARGED_BACK, null,
- payment.getInvoiceId(), context.getCreatedDate(), requestedChargedBackAmout.negate(), payment.getCurrency(), payment.getId());
+ payment.getInvoiceId(), context.getCreatedDate(), requestedChargedBackAmout.negate(), payment.getCurrency(), null, payment.getId());
invoicePaymentSqlDao.create(chargeBack, context);
return chargeBack;
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
index 209285b..443f07a 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
@@ -67,7 +67,7 @@ public interface InvoiceDao {
InvoicePayment postChargeback(final UUID invoicePaymentId, final BigDecimal amount, final CallContext context) throws InvoiceApiException;
InvoicePayment createRefund(UUID paymentAttemptId,
- BigDecimal amount, boolean isInvoiceAdjusted, CallContext context) throws InvoiceApiException;
+ BigDecimal amount, boolean isInvoiceAdjusted, UUID paymentCookieId, CallContext context) throws InvoiceApiException;
BigDecimal getRemainingAmountPaid(final UUID invoicePaymentId);
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java
index ed5b2c3..6ca968d 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.java
@@ -111,10 +111,11 @@ public interface InvoicePaymentSqlDao extends EntitySqlDao<InvoicePayment>, Tran
final BigDecimal amount = result.getBigDecimal("amount");
final String currencyString = result.getString("currency");
final Currency currency = (currencyString == null) ? null : Currency.valueOf(currencyString);
+ final UUID paymentCookieId = getUUID(result, "payment_cookie_id");
final UUID linkedInvoicePaymentId = getUUID(result, "linked_invoice_payment_id");
return new DefaultInvoicePayment(id, type, paymentAttemptId, invoiceId, paymentAttemptDate,
- amount, currency, linkedInvoicePaymentId);
+ amount, currency, paymentCookieId, linkedInvoicePaymentId);
}
}
@@ -136,6 +137,7 @@ public interface InvoicePaymentSqlDao extends EntitySqlDao<InvoicePayment>, Tran
q.bind("amount", payment.getAmount());
final Currency currency = payment.getCurrency();
q.bind("currency", (currency == null) ? null : currency.toString());
+ q.bind("paymentCookieId", uuidToString(payment.getPaymentCookieId()));
q.bind("linkedInvoicePaymentId", uuidToString(payment.getLinkedInvoicePaymentId()));
}
};
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java
index 08371ed..6145f07 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoicePayment.java
@@ -33,16 +33,17 @@ public class DefaultInvoicePayment extends EntityBase implements InvoicePayment
private final DateTime paymentDate;
private final BigDecimal amount;
private final Currency currency;
- private final UUID reversedInvoicePaymentId;
+ private final UUID paymentCookieId;
+ private final UUID linkedInvoicePaymentId;
public DefaultInvoicePayment(final InvoicePaymentType type, final UUID paymentAttemptId, final UUID invoiceId, final DateTime paymentDate,
final BigDecimal amount, final Currency currency) {
- this(UUID.randomUUID(), type, paymentAttemptId, invoiceId, paymentDate, amount, currency, null);
+ this(UUID.randomUUID(), type, paymentAttemptId, invoiceId, paymentDate, amount, currency, null, null);
}
public DefaultInvoicePayment(final UUID id, final InvoicePaymentType type, final UUID paymentAttemptId, final UUID invoiceId, final DateTime paymentDate,
- @Nullable final BigDecimal amount, @Nullable final Currency currency,
- @Nullable final UUID reversedInvoicePaymentId) {
+ @Nullable final BigDecimal amount, @Nullable final Currency currency, final UUID paymentCookieId,
+ @Nullable final UUID linkedInvoicePaymentId) {
super(id);
this.type = type;
this.paymentAttemptId = paymentAttemptId;
@@ -50,7 +51,8 @@ public class DefaultInvoicePayment extends EntityBase implements InvoicePayment
this.invoiceId = invoiceId;
this.paymentDate = paymentDate;
this.currency = currency;
- this.reversedInvoicePaymentId = reversedInvoicePaymentId;
+ this.paymentCookieId = paymentCookieId;
+ this.linkedInvoicePaymentId = linkedInvoicePaymentId;
}
@Override
@@ -85,6 +87,12 @@ public class DefaultInvoicePayment extends EntityBase implements InvoicePayment
@Override
public UUID getLinkedInvoicePaymentId() {
- return reversedInvoicePaymentId;
+ return linkedInvoicePaymentId;
}
+
+ @Override
+ public UUID getPaymentCookieId() {
+ return paymentCookieId;
+ }
+
}
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg
index f201331..a028cf6 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg
+++ b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoicePaymentSqlDao.sql.stg
@@ -8,6 +8,7 @@ invoicePaymentFields(prefix) ::= <<
<prefix>payment_attempt_date,
<prefix>amount,
<prefix>currency,
+ <prefix>payment_cookie_id,
<prefix>linked_invoice_payment_id,
<prefix>created_by,
<prefix>created_date
@@ -16,13 +17,13 @@ invoicePaymentFields(prefix) ::= <<
create() ::= <<
INSERT INTO invoice_payments(<invoicePaymentFields()>)
VALUES(:id, :type, :invoiceId, :paymentAttemptId, :paymentAttemptDate, :amount, :currency,
- :linkedInvoicePaymentId, :userName, :createdDate);
+ :paymentCookieId, :linkedInvoicePaymentId, :userName, :createdDate);
>>
batchCreateFromTransaction() ::= <<
INSERT INTO invoice_payments(<invoicePaymentFields()>)
VALUES(:id, :type, :invoiceId, :paymentAttemptId, :paymentAttemptDate, :amount, :currency,
- :linkedInvoicePaymentId, :userName, :createdDate);
+ :paymentCookieId, :linkedInvoicePaymentId, :userName, :createdDate);
>>
getByPaymentAttemptId() ::= <<
@@ -51,7 +52,7 @@ getPaymentsForInvoice() ::= <<
notifyOfPaymentAttempt() ::= <<
INSERT INTO invoice_payments(<invoicePaymentFields()>)
VALUES(:id, :type, :invoiceId, :paymentAttemptId, :paymentAttemptDate, :amount, :currency,
- :linkedInvoicePaymentId, :userName, :createdDate);
+ :paymentCookieId, :linkedInvoicePaymentId, :userName, :createdDate);
>>
getInvoicePayment() ::= <<
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql b/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql
index a408d3c..b6bd51f 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql
+++ b/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql
@@ -52,6 +52,7 @@ CREATE TABLE invoice_payments (
payment_attempt_date datetime NOT NULL,
amount numeric(10,4) NOT NULL,
currency char(3) NOT NULL,
+ payment_cookie_id char(36) DEFAULT NULL,
linked_invoice_payment_id char(36) DEFAULT NULL,
created_by varchar(50) NOT NULL,
created_date datetime NOT NULL,
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
index af2c854..a049bcf 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/MockInvoicePaymentApi.java
@@ -108,7 +108,7 @@ public class MockInvoicePaymentApi implements InvoicePaymentApi {
if (existingPayment != null) {
invoicePayments.add(new DefaultInvoicePayment(UUID.randomUUID(), InvoicePaymentType.CHARGED_BACK, null, null, DateTime.now(DateTimeZone.UTC), amount,
- Currency.USD, existingPayment.getId()));
+ Currency.USD, null, existingPayment.getId()));
}
return existingPayment;
@@ -168,7 +168,7 @@ public class MockInvoicePaymentApi implements InvoicePaymentApi {
@Override
public InvoicePayment createRefund(UUID paymentAttemptId,
- BigDecimal amount, boolean isInvoiceAdjusted, CallContext context)
+ BigDecimal amount, boolean isInvoiceAdjusted, UUID paymentCookieId, CallContext context)
throws InvoiceApiException {
// TODO Auto-generated method stub
return null;
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
index a2e8a34..da91371 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
@@ -260,7 +260,7 @@ public class MockInvoiceDao implements InvoiceDao {
@Override
public InvoicePayment createRefund(UUID paymentAttemptId,
- BigDecimal amount, boolean isInvoiceAdjusted, CallContext context)
+ BigDecimal amount, boolean isInvoiceAdjusted, UUID paymentCookieId, CallContext context)
throws InvoiceApiException {
// TODO Auto-generated method stub
return null;
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java
index 160038e..bf8c4a4 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/TestInvoiceDao.java
@@ -584,7 +584,7 @@ public class TestInvoiceDao extends InvoiceDaoTestBase {
balance = invoiceDao.getAccountBalance(accountId);
assertEquals(balance.compareTo(new BigDecimal("0.00")), 0);
- invoiceDao.createRefund(paymentAttemptId, refund1, withAdjustment, context);
+ invoiceDao.createRefund(paymentAttemptId, refund1, withAdjustment, null, context);
balance = invoiceDao.getAccountBalance(accountId);
if (withAdjustment) {
assertEquals(balance.compareTo(BigDecimal.ZERO), 0);
@@ -678,7 +678,7 @@ public class TestInvoiceDao extends InvoiceDaoTestBase {
assertEquals(cba.compareTo(new BigDecimal("10.00")), 0);
// PARTIAL REFUND on the payment
- invoiceDao.createRefund(paymentAttemptId, refundAmount, withAdjustment, context);
+ invoiceDao.createRefund(paymentAttemptId, refundAmount, withAdjustment, null, context);
balance = invoiceDao.getAccountBalance(accountId);
assertEquals(balance.compareTo(expectedFinalBalance), 0);
@@ -745,7 +745,7 @@ public class TestInvoiceDao extends InvoiceDaoTestBase {
assertEquals(cba.compareTo(new BigDecimal("10.00")), 0);
// partial REFUND on the payment (along with CBA generated by the system)
- final InvoicePayment refund = new DefaultInvoicePayment(UUID.randomUUID(), InvoicePaymentType.ATTEMPT, UUID.randomUUID(), invoice1.getId(), new DateTime(), rate2.negate(), Currency.USD, payment.getId());
+ final InvoicePayment refund = new DefaultInvoicePayment(UUID.randomUUID(), InvoicePaymentType.ATTEMPT, UUID.randomUUID(), invoice1.getId(), new DateTime(), rate2.negate(), Currency.USD, null, payment.getId());
invoicePaymentDao.create(refund, context);
final CreditBalanceAdjInvoiceItem cbaItem2 = new CreditBalanceAdjInvoiceItem(invoice1.getId(), accountId, new DateTime(), rate2.negate(), Currency.USD);
invoiceItemSqlDao.create(cbaItem2, context);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java b/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java
index a9b2627..114fa8d 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/tests/TestChargeBacks.java
@@ -259,7 +259,7 @@ public class TestChargeBacks {
zombie.addResult("getAmount", amount);
zombie.addResult("getCurrency", CURRENCY);
zombie.addResult("getLinkedInvoicePaymentId", BrainDeadProxyFactory.ZOMBIE_VOID);
-
+ zombie.addResult("getPaymentCookieId", BrainDeadProxyFactory.ZOMBIE_VOID);
invoicePaymentApi.notifyOfPaymentAttempt(payment, context);
return payment;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index 1b3f9ce..38a3a74 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -65,6 +65,7 @@ import com.ning.billing.jaxrs.json.CustomFieldJson;
import com.ning.billing.jaxrs.json.InvoiceEmailJson;
import com.ning.billing.jaxrs.json.PaymentJsonSimple;
import com.ning.billing.jaxrs.json.PaymentMethodJson;
+import com.ning.billing.jaxrs.json.RefundJson;
import com.ning.billing.jaxrs.util.Context;
import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
import com.ning.billing.jaxrs.util.TagHelper;
@@ -72,6 +73,7 @@ import com.ning.billing.payment.api.Payment;
import com.ning.billing.payment.api.PaymentApi;
import com.ning.billing.payment.api.PaymentApiException;
import com.ning.billing.payment.api.PaymentMethod;
+import com.ning.billing.payment.api.Refund;
import com.ning.billing.util.api.CustomFieldUserApi;
import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.dao.ObjectType;
@@ -125,7 +127,11 @@ public class AccountResource extends JaxRsResourceBase {
final AccountJson json = new AccountJson(account);
return Response.status(Status.OK).entity(json).build();
} catch (AccountApiException e) {
- return Response.status(Status.NO_CONTENT).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
}
@@ -147,7 +153,11 @@ public class AccountResource extends JaxRsResourceBase {
});
return Response.status(Status.OK).entity(result).build();
} catch (AccountApiException e) {
- return Response.status(Status.NO_CONTENT).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
}
@@ -165,7 +175,11 @@ public class AccountResource extends JaxRsResourceBase {
final AccountJson json = new AccountJson(account);
return Response.status(Status.OK).entity(json).build();
} catch (AccountApiException e) {
- return Response.status(Status.NO_CONTENT).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_KEY.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
}
@@ -252,7 +266,11 @@ public class AccountResource extends JaxRsResourceBase {
final AccountTimelineJson json = new AccountTimelineJson(account, invoices, payments, bundlesTimeline);
return Response.status(Status.OK).entity(json).build();
} catch (AccountApiException e) {
- return Response.status(Status.NO_CONTENT).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
} catch (PaymentApiException e) {
log.error(e.getMessage());
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
@@ -276,7 +294,11 @@ public class AccountResource extends JaxRsResourceBase {
return Response.status(Status.OK).entity(invoiceEmailJson).build();
} catch (AccountApiException e) {
- return Response.status(Status.NOT_FOUND).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
}
@@ -299,7 +321,11 @@ public class AccountResource extends JaxRsResourceBase {
return Response.status(Status.OK).build();
} catch (AccountApiException e) {
- return Response.status(Status.NOT_FOUND).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
}
@@ -321,7 +347,7 @@ public class AccountResource extends JaxRsResourceBase {
}
return Response.status(Status.OK).entity(result).build();
} catch (PaymentApiException e) {
- return Response.status(Status.NOT_FOUND).build();
+ return Response.status(Status.BAD_REQUEST).build();
}
}
@@ -342,9 +368,11 @@ public class AccountResource extends JaxRsResourceBase {
final UUID paymentMethodId = paymentApi.addPaymentMethod(data.getPluginName(), account, isDefault, data.getPluginDetail(), context.createContext(createdBy, reason, comment));
return uriBuilder.buildResponse(PaymentMethodResource.class, "getPaymentMethod", paymentMethodId, uriInfo.getBaseUri().toString());
} catch (AccountApiException e) {
- final String error = String.format("Failed to create account %s", json);
- log.info(error, e);
- return Response.status(Status.BAD_REQUEST).entity(error).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
} catch (PaymentApiException e) {
final String error = String.format("Failed to create payment Method %s", json);
log.info(error, e);
@@ -376,7 +404,11 @@ public class AccountResource extends JaxRsResourceBase {
} catch (PaymentApiException e) {
return Response.status(Status.NOT_FOUND).build();
} catch (AccountApiException e) {
- return Response.status(Status.NOT_FOUND).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
}
@@ -394,7 +426,11 @@ public class AccountResource extends JaxRsResourceBase {
paymentApi.setDefaultPaymentMethod(account, UUID.fromString(paymentMethodId), context.createContext(createdBy, reason, comment));
return Response.status(Status.OK).build();
} catch (AccountApiException e) {
- return Response.status(Status.BAD_REQUEST).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
} catch (PaymentApiException e) {
return Response.status(Status.NOT_FOUND).build();
} catch (IllegalArgumentException e) {
@@ -402,6 +438,38 @@ public class AccountResource extends JaxRsResourceBase {
}
}
+
+ /*
+ * ************************** REFUNDS ********************************
+ */
+ @GET
+ @Path("/{accountId:" + UUID_PATTERN + "}/" + REFUNDS)
+ @Produces(APPLICATION_JSON)
+ public Response getRefunds(@PathParam("accountId") final String accountId) {
+
+ try {
+ final Account account = accountApi.getAccountById(UUID.fromString(accountId));
+ List<Refund> refunds = paymentApi.getAccountRefunds(account);
+ List<RefundJson> result = new ArrayList<RefundJson>(Collections2.transform(refunds, new Function<Refund, RefundJson>() {
+ @Override
+ public RefundJson apply(Refund input) {
+ return new RefundJson(input);
+ }
+ }));
+ return Response.status(Status.OK).entity(result).build();
+ } catch (AccountApiException e) {
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
+ } catch (PaymentApiException e) {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
+ }
+
+
+
/*
* ************************* CUSTOM FIELDS *****************************
*/
@@ -518,7 +586,11 @@ public class AccountResource extends JaxRsResourceBase {
} catch (RuntimeException e) {
return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
} catch (AccountApiException e) {
- return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
+ }
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java
index 2ce2493..c08c01a 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/ChargebackResource.java
@@ -159,6 +159,7 @@ public class ChargebackResource implements JaxrsResource {
return Response.status(Response.Status.NO_CONTENT).entity(error).build();
}
+ // STEPH that does not seem to work, we need to find the correct attempt
final UUID paymentAttemptId = attempts.iterator().next().getId();
final InvoicePayment invoicePayment = invoicePaymentApi.getInvoicePayment(paymentAttemptId);
if (invoicePayment == null) {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java
index 16c6bc5..984f633 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxrsResource.java
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -79,6 +79,9 @@ public interface JaxrsResource {
public static final String PAYMENTS = "payments";
public static final String PAYMENTS_PATH = PREFIX + "/" + PAYMENTS;
+ public static final String REFUNDS = "refunds";
+ public static final String REFUNDS_PATH = PREFIX + "/" + "refunds";
+
public static final String PAYMENT_METHODS = "paymentMethods";
public static final String PAYMENT_METHODS_PATH = PREFIX + "/" + PAYMENT_METHODS;
public static final String PAYMENT_METHODS_DEFAULT_PATH_POSTFIX = "setDefault";
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java
index bdff8e8..8dc98a9 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -42,10 +42,11 @@ import com.ning.billing.util.tag.Tag;
import com.ning.billing.util.tag.TagDefinition;
public abstract class JaxRsResourceBase implements JaxrsResource {
- private final JaxrsUriBuilder uriBuilder;
- private final TagUserApi tagUserApi;
- private final TagHelper tagHelper;
- private final CustomFieldUserApi customFieldUserApi;
+
+ protected final JaxrsUriBuilder uriBuilder;
+ protected final TagUserApi tagUserApi;
+ protected final TagHelper tagHelper;
+ protected final CustomFieldUserApi customFieldUserApi;
protected abstract ObjectType getObjectType();
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
index 5f53ab3..264c620 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
@@ -26,14 +26,30 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import com.google.inject.Inject;
+import com.ning.billing.ErrorCode;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.account.api.AccountData;
+import com.ning.billing.account.api.AccountUserApi;
+import com.ning.billing.jaxrs.json.AccountJson;
import com.ning.billing.jaxrs.json.CustomFieldJson;
+import com.ning.billing.jaxrs.json.RefundJson;
import com.ning.billing.jaxrs.util.Context;
import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
import com.ning.billing.jaxrs.util.TagHelper;
+import com.ning.billing.payment.api.Payment;
+import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.payment.api.PaymentApiException;
+import com.ning.billing.payment.api.Refund;
import com.ning.billing.util.api.CustomFieldUserApi;
import com.ning.billing.util.api.TagUserApi;
import com.ning.billing.util.dao.ObjectType;
@@ -48,13 +64,70 @@ public class PaymentResource extends JaxRsResourceBase {
private static final String TAG_URI = JaxrsResource.TAGS + "/{" + ID_PARAM_NAME + ":" + UUID_PATTERN + "}";
private final Context context;
+ private final PaymentApi paymentApi;
+ private final AccountUserApi accountApi;
@Inject
- public PaymentResource(final JaxrsUriBuilder uriBuilder, final TagUserApi tagUserApi,
- final TagHelper tagHelper, final CustomFieldUserApi customFieldUserApi,
- final Context context) {
+ public PaymentResource(final JaxrsUriBuilder uriBuilder,
+ final AccountUserApi accountApi,
+ final PaymentApi paymentApi,
+ final TagUserApi tagUserApi,
+ final TagHelper tagHelper,
+ final CustomFieldUserApi customFieldUserApi,
+ final Context context) {
super(uriBuilder, tagUserApi, tagHelper, customFieldUserApi);
this.context = context;
+ this.paymentApi = paymentApi;
+ this.accountApi = accountApi;
+ }
+
+
+ @GET
+ @Path("/{paymentId:" + UUID_PATTERN + "}/" + REFUNDS)
+ @Produces(APPLICATION_JSON)
+ public Response getRefunds(@PathParam("paymentId") final String paymentId) {
+
+ try {
+ List<Refund> refunds = paymentApi.getPaymentRefunds(UUID.fromString(paymentId));
+ List<RefundJson> result = new ArrayList<RefundJson>(Collections2.transform(refunds, new Function<Refund, RefundJson>() {
+ @Override
+ public RefundJson apply(Refund input) {
+ return new RefundJson(input);
+ }
+ }));
+ return Response.status(Status.OK).entity(result).build();
+ } catch (PaymentApiException e) {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
+ }
+
+ @POST
+ @Path("/{paymentId:" + UUID_PATTERN + "}/" + REFUNDS)
+ @Consumes(APPLICATION_JSON)
+ @Produces(APPLICATION_JSON)
+ public Response createRefund(final RefundJson json,
+ @PathParam("paymentId") final String paymentId,
+ @HeaderParam(HDR_CREATED_BY) final String createdBy,
+ @HeaderParam(HDR_REASON) final String reason,
+ @HeaderParam(HDR_COMMENT) final String comment) {
+
+ try {
+ final UUID paymentUuid = UUID.fromString(paymentId);
+ final Payment payment = paymentApi.getPayment(paymentUuid);
+
+ final Account account = accountApi.getAccountById(payment.getAccountId());
+
+ Refund result = paymentApi.createRefund(account, paymentUuid, json.getRefundAmount(), json.isAdjusted(), context.createContext(createdBy, reason, comment));
+ return uriBuilder.buildResponse(RefundResource.class, "getRefund", result.getId());
+ } catch (AccountApiException e) {
+ if (e.getCode() == ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID.getCode()) {
+ return Response.status(Status.NO_CONTENT).build();
+ } else {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
+ } catch (PaymentApiException e) {
+ return Response.status(Status.BAD_REQUEST).build();
+ }
}
@GET
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/RefundResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/RefundResource.java
index 05acf58..63e72c0 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/RefundResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/RefundResource.java
@@ -16,6 +16,68 @@
package com.ning.billing.jaxrs.resources;
-public class RefundResource {
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.ning.billing.jaxrs.json.RefundJson;
+import com.ning.billing.jaxrs.util.Context;
+import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
+import com.ning.billing.jaxrs.util.TagHelper;
+import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.payment.api.PaymentApiException;
+import com.ning.billing.payment.api.Refund;
+import com.ning.billing.util.api.CustomFieldUserApi;
+import com.ning.billing.util.api.TagUserApi;
+import com.ning.billing.util.dao.ObjectType;
+
+
+@Path(JaxrsResource.REFUNDS_PATH)
+public class RefundResource extends JaxRsResourceBase {
+
+ private static final Logger log = LoggerFactory.getLogger(RefundResource.class);
+
+ private final PaymentApi paymentApi;
+
+ @Inject
+ public RefundResource(final JaxrsUriBuilder uriBuilder,
+ final PaymentApi paymentApi,
+ final TagUserApi tagUserApi,
+ final TagHelper tagHelper,
+ final CustomFieldUserApi customFieldUserApi,
+ final Context context) {
+ super(uriBuilder, tagUserApi, tagHelper, customFieldUserApi);
+ this.paymentApi = paymentApi;
+ }
+
+ @GET
+ @Path("/{refundId:" + UUID_PATTERN + "}")
+ @Produces(APPLICATION_JSON)
+ public Response getRefund(@PathParam("refundId") final String refundId) {
+ try {
+ Refund refund = paymentApi.getRefund(UUID.fromString(refundId));
+ return Response.status(Status.OK).entity(new RefundJson(refund)).build();
+ } catch (PaymentApiException e) {
+ // STEPH NO_CONTENT if oes not exist
+ return Response.status(Status.BAD_REQUEST).build();
+ }
+ }
+
+ @Override
+ protected ObjectType getObjectType() {
+ return ObjectType.REFUND;
+ }
}
diff --git a/payment/src/main/resources/com/ning/billing/payment/ddl.sql b/payment/src/main/resources/com/ning/billing/payment/ddl.sql
index b8fa010..69db6a2 100644
--- a/payment/src/main/resources/com/ning/billing/payment/ddl.sql
+++ b/payment/src/main/resources/com/ning/billing/payment/ddl.sql
@@ -1,4 +1,24 @@
+DROP TABLE IF EXISTS refunds;
+CREATE TABLE refunds (
+ record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
+ id char(36) NOT NULL,
+ account_id char(36) COLLATE utf8_bin NOT NULL,
+ payment_id char(36) COLLATE utf8_bin NOT NULL,
+ amount decimal(8,2),
+ currency char(3),
+ is_adjusted tinyint(1),
+ refund_status varchar(50),
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ updated_by varchar(50) NOT NULL,
+ updated_date datetime NOT NULL,
+ PRIMARY KEY (record_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+CREATE UNIQUE INDEX refunds_id ON refunds(id);
+CREATE INDEX refunds_pay ON refunds(payment_id);
+CREATE INDEX refunds_accnt ON refunds(account_id);
+
DROP TABLE IF EXISTS payments;
CREATE TABLE payments (
record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
index fb6a281..ce1a17c 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2010-2011 Ning, Inc.
*
* Ning licenses this file to you under the Apache License, version 2.0
@@ -24,6 +24,7 @@ import java.util.Map;
import java.util.UUID;
import com.ning.billing.payment.api.PaymentStatus;
+import com.ning.billing.payment.dao.RefundModelDao.RefundStatus;
import com.ning.billing.util.callcontext.CallContext;
public class MockPaymentDao implements PaymentDao {
@@ -167,4 +168,36 @@ public class MockPaymentDao implements PaymentDao {
}
}
}
+
+ @Override
+ public RefundModelDao insertRefund(RefundModelDao refundInfo,
+ CallContext context) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void updateRefundStatus(UUID refundId, RefundStatus status,
+ CallContext context) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public RefundModelDao getRefund(UUID refundId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<RefundModelDao> getRefundsForPayment(UUID paymentId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<RefundModelDao> getRefundsForAccount(UUID accountId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
diff --git a/util/src/test/java/com/ning/billing/util/tag/dao/TestAuditedTagDao.java b/util/src/test/java/com/ning/billing/util/tag/dao/TestAuditedTagDao.java
index 2bb6a37..c21cf14 100644
--- a/util/src/test/java/com/ning/billing/util/tag/dao/TestAuditedTagDao.java
+++ b/util/src/test/java/com/ning/billing/util/tag/dao/TestAuditedTagDao.java
@@ -95,7 +95,7 @@ public class TestAuditedTagDao {
final String definitionName = UUID.randomUUID().toString().substring(0, 5);
final String description = UUID.randomUUID().toString().substring(0, 5);
final UUID objectId = UUID.randomUUID();
- final ObjectType objectType = ObjectType.RECURRING_INVOICE_ITEM;
+ final ObjectType objectType = ObjectType.INVOICE_ITEM;
// Verify the initial state
Assert.assertEquals(eventsListener.getEvents().size(), 0);