Details
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
index 0807c09..e05d73f 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
@@ -134,7 +134,7 @@ public class AccountTimelineJson {
for (final InvoiceItem invoiceItem : invoice.getInvoiceItems()) {
if (InvoiceItemType.CREDIT_ADJ.equals(invoiceItem.getInvoiceItemType())) {
final List<AuditLog> auditLogs = invoiceItemsAuditLogs.get(invoiceItem.getId());
- credits.add(new CreditJson(invoiceItem, account.getTimeZone(), auditLogs));
+ credits.add(new CreditJson(invoice, invoiceItem, auditLogs));
}
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
index ce95bb7..3910cd8 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CreditJson.java
@@ -23,7 +23,9 @@ import javax.annotation.Nullable;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
+import org.joda.time.LocalDate;
+import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.util.audit.AuditLog;
@@ -35,43 +37,35 @@ public class CreditJson extends JsonBase {
private final BigDecimal creditAmount;
private final String invoiceId;
private final String invoiceNumber;
- private final DateTime requestedDate;
- private final DateTime effectiveDate;
- private final String reason;
+ private final LocalDate effectiveDate;
private final String accountId;
@JsonCreator
public CreditJson(@JsonProperty("creditAmount") final BigDecimal creditAmount,
@JsonProperty("invoiceId") final String invoiceId,
@JsonProperty("invoiceNumber") final String invoiceNumber,
- @JsonProperty("requestedDate") final DateTime requestedDate,
- @JsonProperty("effectiveDate") final DateTime effectiveDate,
- @JsonProperty("reason") final String reason,
+ @JsonProperty("effectiveDate") final LocalDate effectiveDate,
@JsonProperty("accountId") final String accountId,
@JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
super(auditLogs);
this.creditAmount = creditAmount;
this.invoiceId = invoiceId;
this.invoiceNumber = invoiceNumber;
- this.requestedDate = requestedDate;
this.effectiveDate = effectiveDate;
- this.reason = reason;
this.accountId = accountId;
}
- public CreditJson(final InvoiceItem credit, final DateTimeZone accountTimeZone, final List<AuditLog> auditLogs) {
+ public CreditJson(final Invoice invoice, final InvoiceItem credit, final List<AuditLog> auditLogs) {
super(toAuditLogJson(auditLogs));
+ this.accountId = toString(credit.getAccountId());
this.creditAmount = credit.getAmount();
this.invoiceId = toString(credit.getInvoiceId());
- this.invoiceNumber = null;
- this.requestedDate = null;
- this.effectiveDate = credit.getStartDate().toDateTimeAtStartOfDay(accountTimeZone);
- this.reason = null;
- this.accountId = toString(credit.getAccountId());
+ this.invoiceNumber = invoice.getInvoiceNumber().toString();
+ this.effectiveDate = credit.getStartDate();
}
- public CreditJson(final InvoiceItem credit, final DateTimeZone timeZone) {
- this(credit, timeZone, null);
+ public CreditJson(final Invoice invoice, final InvoiceItem credit) {
+ this(invoice, credit, null);
}
public BigDecimal getCreditAmount() {
@@ -86,18 +80,10 @@ public class CreditJson extends JsonBase {
return invoiceNumber;
}
- public DateTime getRequestedDate() {
- return requestedDate;
- }
-
- public DateTime getEffectiveDate() {
+ public LocalDate getEffectiveDate() {
return effectiveDate;
}
- public String getReason() {
- return reason;
- }
-
public String getAccountId() {
return accountId;
}
@@ -109,9 +95,7 @@ public class CreditJson extends JsonBase {
sb.append("{creditAmount=").append(creditAmount);
sb.append(", invoiceId=").append(invoiceId);
sb.append(", invoiceNumber='").append(invoiceNumber).append('\'');
- sb.append(", requestedDate=").append(requestedDate);
sb.append(", effectiveDate=").append(effectiveDate);
- sb.append(", reason='").append(reason).append('\'');
sb.append(", accountId=").append(accountId);
sb.append('}');
return sb.toString();
@@ -132,21 +116,14 @@ public class CreditJson extends JsonBase {
(creditAmount != null && that.creditAmount != null && creditAmount.compareTo(that.creditAmount) == 0))) {
return false;
}
- if (!((effectiveDate == null && that.effectiveDate == null) ||
- (effectiveDate != null && that.effectiveDate != null && effectiveDate.compareTo(that.effectiveDate) == 0))) {
- return false;
- }
if (invoiceId != null ? !invoiceId.equals(that.invoiceId) : that.invoiceId != null) {
return false;
}
if (invoiceNumber != null ? !invoiceNumber.equals(that.invoiceNumber) : that.invoiceNumber != null) {
return false;
}
- if (reason != null ? !reason.equals(that.reason) : that.reason != null) {
- return false;
- }
- if (!((requestedDate == null && that.requestedDate == null) ||
- (requestedDate != null && that.requestedDate != null && requestedDate.compareTo(that.requestedDate) == 0))) {
+ if (!((effectiveDate == null && that.effectiveDate == null) ||
+ (effectiveDate != null && that.effectiveDate != null && effectiveDate.compareTo(that.effectiveDate) == 0))) {
return false;
}
@@ -158,9 +135,7 @@ public class CreditJson extends JsonBase {
int result = creditAmount != null ? creditAmount.hashCode() : 0;
result = 31 * result + (invoiceId != null ? invoiceId.hashCode() : 0);
result = 31 * result + (invoiceNumber != null ? invoiceNumber.hashCode() : 0);
- result = 31 * result + (requestedDate != null ? requestedDate.hashCode() : 0);
result = 31 * result + (effectiveDate != null ? effectiveDate.hashCode() : 0);
- result = 31 * result + (reason != null ? reason.hashCode() : 0);
return result;
}
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
index b918f42..990b23e 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/CreditResource.java
@@ -35,6 +35,7 @@ import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.account.api.AccountUserApi;
import com.ning.billing.clock.Clock;
+import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceApiException;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoiceUserApi;
@@ -80,8 +81,8 @@ public class CreditResource extends JaxRsResourceBase {
@javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException, AccountApiException {
final TenantContext tenantContext = context.createContext(request);
final InvoiceItem credit = invoiceUserApi.getCreditById(UUID.fromString(creditId), tenantContext);
- final Account account = accountUserApi.getAccountById(credit.getAccountId(), tenantContext);
- final CreditJson creditJson = new CreditJson(credit, account.getTimeZone());
+ final Invoice invoice = invoiceUserApi.getInvoice(credit.getInvoiceId(), tenantContext);
+ final CreditJson creditJson = new CreditJson(invoice, credit);
return Response.status(Response.Status.OK).entity(creditJson).build();
}
@@ -96,7 +97,7 @@ public class CreditResource extends JaxRsResourceBase {
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final Account account = accountUserApi.getAccountById(UUID.fromString(json.getAccountId()), callContext);
- final LocalDate effectiveDate = json.getEffectiveDate().toDateTime(account.getTimeZone()).toLocalDate();
+ final LocalDate effectiveDate = new LocalDate(clock.getUTCNow(), account.getTimeZone());
final InvoiceItem credit;
if (json.getInvoiceId() != null) {
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java
index 132480e..73903c2 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditCollectionJson.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -39,12 +40,10 @@ public class TestCreditCollectionJson extends JaxrsTestSuiteNoDB {
final BigDecimal creditAmount = BigDecimal.TEN;
final String invoiceId = UUID.randomUUID().toString();
final String invoiceNumber = UUID.randomUUID().toString();
- final DateTime requestedDate = clock.getUTCNow();
- final DateTime effectiveDate = clock.getUTCNow();
- final String reason = UUID.randomUUID().toString();
+ final LocalDate effectiveDate = clock.getUTCToday();
final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow());
- final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate,
- effectiveDate, reason, accountId, auditLogs);
+ final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber,
+ effectiveDate, accountId, auditLogs);
final CreditCollectionJson creditCollectionJson = new CreditCollectionJson(accountId, ImmutableList.<CreditJson>of(creditJson));
Assert.assertEquals(creditCollectionJson.getAccountId(), accountId);
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java
index 32c9992..c68d7bd 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestCreditJson.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -35,19 +36,15 @@ public class TestCreditJson extends JaxrsTestSuiteNoDB {
final BigDecimal creditAmount = BigDecimal.TEN;
final String invoiceId = UUID.randomUUID().toString();
final String invoiceNumber = UUID.randomUUID().toString();
- final DateTime requestedDate = clock.getUTCNow();
- final DateTime effectiveDate = clock.getUTCNow();
- final String reason = UUID.randomUUID().toString();
+ final LocalDate effectiveDate = clock.getUTCToday();
final String accountId = UUID.randomUUID().toString();
final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow());
- final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate, effectiveDate,
- reason, accountId, auditLogs);
- Assert.assertEquals(creditJson.getRequestedDate(), requestedDate);
+ final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, effectiveDate,
+ accountId, auditLogs);
Assert.assertEquals(creditJson.getEffectiveDate(), effectiveDate);
Assert.assertEquals(creditJson.getCreditAmount(), creditAmount);
Assert.assertEquals(creditJson.getInvoiceId(), invoiceId);
Assert.assertEquals(creditJson.getInvoiceNumber(), invoiceNumber);
- Assert.assertEquals(creditJson.getReason(), reason);
Assert.assertEquals(creditJson.getAccountId(), accountId);
final String asJson = mapper.writeValueAsString(creditJson);
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
index 9aa5e36..99606af 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
@@ -109,10 +109,8 @@ public class TestInvoiceJsonWithBundleKeys extends JaxrsTestSuiteNoDB {
final BigDecimal creditAmount = BigDecimal.TEN;
final String invoiceId = UUID.randomUUID().toString();
final String invoiceNumber = UUID.randomUUID().toString();
- final DateTime requestedDate = clock.getUTCNow();
- final DateTime effectiveDate = clock.getUTCNow();
- final String reason = UUID.randomUUID().toString();
+ final LocalDate effectiveDate = clock.getUTCToday();
final String accountId = UUID.randomUUID().toString();
- return new CreditJson(creditAmount, invoiceId, invoiceNumber, requestedDate, effectiveDate, reason, accountId, null);
+ return new CreditJson(creditAmount, invoiceId, invoiceNumber, effectiveDate, accountId, null);
}
}
diff --git a/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java b/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
index 5596fd8..654157f 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/KillbillClient.java
@@ -843,8 +843,8 @@ public abstract class KillbillClient extends GuicyKillbillTestSuiteWithEmbeddedD
protected CreditJson createCreditForInvoice(final String accountId, final String invoiceId, final BigDecimal creditAmount,
final DateTime requestedDate, final DateTime effectiveDate) throws IOException {
final CreditJson input = new CreditJson(creditAmount, invoiceId, UUID.randomUUID().toString(),
- requestedDate, effectiveDate,
- UUID.randomUUID().toString(), accountId,
+ effectiveDate.toLocalDate(),
+ accountId,
null);
final String jsonInput = mapper.writeValueAsString(input);
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java b/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java
index 182d068..6ba1f86 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestCredit.java
@@ -22,6 +22,7 @@ import java.util.UUID;
import javax.ws.rs.core.Response.Status;
import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -54,16 +55,15 @@ public class TestCredit extends TestJaxrsBase {
// We can't just compare the object via .equals() due e.g. to the invoice id
assertEquals(objFromJson.getAccountId(), accountJson.getAccountId());
assertEquals(objFromJson.getCreditAmount().compareTo(creditAmount), 0);
- assertEquals(objFromJson.getEffectiveDate().toLocalDate().compareTo(effectiveDate.toLocalDate()), 0);
+ assertEquals(objFromJson.getEffectiveDate().compareTo(effectiveDate.toLocalDate()), 0);
}
@Test(groups = "slow")
public void testAccountDoesNotExist() throws Exception {
- final DateTime requestedDate = clock.getUTCNow();
- final DateTime effectiveDate = clock.getUTCNow();
+ final LocalDate effectiveDate = clock.getUTCToday();
final CreditJson input = new CreditJson(BigDecimal.TEN, UUID.randomUUID().toString(), UUID.randomUUID().toString(),
- requestedDate, effectiveDate,
- UUID.randomUUID().toString(), UUID.randomUUID().toString(), null);
+ effectiveDate,
+ UUID.randomUUID().toString(), null);
final String jsonInput = mapper.writeValueAsString(input);
// Try to create the credit
@@ -73,7 +73,7 @@ public class TestCredit extends TestJaxrsBase {
@Test(groups = "slow")
public void testBadRequest() throws Exception {
- final CreditJson input = new CreditJson(null, null, null, null, null, null, null, null);
+ final CreditJson input = new CreditJson(null, null, null, null, null, null);
final String jsonInput = mapper.writeValueAsString(input);
// Try to create the credit