Details
diff --git a/catalog/src/test/resources/catalogTest.xml b/catalog/src/test/resources/catalogTest.xml
index 78e4449..d15d55f 100644
--- a/catalog/src/test/resources/catalogTest.xml
+++ b/catalog/src/test/resources/catalogTest.xml
@@ -448,7 +448,7 @@
</finalPhase>
</plan>
- <plan name="shotgun-monthly">
+ <plan name="shotgun-monthly" prettyName="Shotgun Monthly">
<product>Shotgun</product>
<initialPhases>
<phase type="TRIAL">
@@ -1220,14 +1220,14 @@
</recurring>
</finalPhase>
</plan>
- <plan name="bullets-usage-in-arrear">
+ <plan name="bullets-usage-in-arrear" prettyName="Bullet Monthly Plan">
<product>Bullets</product>
- <finalPhase type="EVERGREEN">
+ <finalPhase type="EVERGREEN" prettyName="Bullet Monthly Plan Evergreen">
<duration>
<unit>UNLIMITED</unit>
</duration>
<usages>
- <usage name="bullets-usage-in-arrear-usage" billingMode="IN_ARREAR" usageType="CONSUMABLE">
+ <usage name="bullets-usage-in-arrear-usage" prettyName="Bullet Usage In Arrear" billingMode="IN_ARREAR" usageType="CONSUMABLE">
<billingPeriod>MONTHLY</billingPeriod>
<tiers>
<tier>
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
index 3869400..f59f5d8 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
@@ -144,7 +144,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
@Override
public String getPrettyPlanName() {
- return getPlanName();
+ return Strings.nullToEmpty(translator.getTranslation(item.getPrettyPlanName()));
}
@Override
@@ -154,7 +154,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
@Override
public String getPrettyPhaseName() {
- return getPhaseName();
+ return Strings.nullToEmpty(translator.getTranslation(item.getPrettyPhaseName()));
}
@Override
@@ -164,7 +164,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
@Override
public String getPrettyUsageName() {
- return getUsageName();
+ return Strings.nullToEmpty(translator.getTranslation(item.getPrettyUsageName()));
}
@Override
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
index 2bc9ccc..8ad9cc1 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
@@ -55,6 +55,9 @@ public class InvoiceItemJson extends JsonBase {
private final String planName;
private final String phaseName;
private final String usageName;
+ private final String prettyPlanName;
+ private final String prettyPhaseName;
+ private final String prettyUsageName;
private final String itemType;
private final String description;
private final LocalDate startDate;
@@ -74,6 +77,9 @@ public class InvoiceItemJson extends JsonBase {
@JsonProperty("planName") final String planName,
@JsonProperty("phaseName") final String phaseName,
@JsonProperty("usageName") final String usageName,
+ @JsonProperty("prettyPlanName") final String prettyPlanName,
+ @JsonProperty("prettyPhaseName") final String prettyPhaseName,
+ @JsonProperty("prettyUsageName") final String prettyUsageName,
@JsonProperty("itemType") final String itemType,
@JsonProperty("description") final String description,
@JsonProperty("startDate") final LocalDate startDate,
@@ -93,6 +99,9 @@ public class InvoiceItemJson extends JsonBase {
this.planName = planName;
this.phaseName = phaseName;
this.usageName = usageName;
+ this.prettyPlanName = prettyPlanName;
+ this.prettyPhaseName = prettyPhaseName;
+ this.prettyUsageName = prettyUsageName;
this.itemType = itemType;
this.description = description;
this.startDate = startDate;
@@ -105,7 +114,9 @@ public class InvoiceItemJson extends JsonBase {
public InvoiceItemJson(final InvoiceItem item, final List<InvoiceItem> childItems, @Nullable final List<AuditLog> auditLogs) {
this(toString(item.getId()), toString(item.getInvoiceId()), toString(item.getLinkedItemId()),
toString(item.getAccountId()), toString(item.getChildAccountId()), toString(item.getBundleId()), toString(item.getSubscriptionId()),
- item.getPlanName(), item.getPhaseName(), item.getUsageName(), item.getInvoiceItemType().toString(),
+ item.getPlanName(), item.getPhaseName(), item.getUsageName(),
+ item.getPrettyPlanName(), item.getPrettyPhaseName(), item.getPrettyUsageName(),
+ item.getInvoiceItemType().toString(),
item.getDescription(), item.getStartDate(), item.getEndDate(),
item.getAmount(), item.getCurrency().name(), toInvoiceItemJson(childItems), toAuditLogJson(auditLogs));
}
@@ -186,7 +197,7 @@ public class InvoiceItemJson extends JsonBase {
@Override
public String getPrettyPlanName() {
- return planName;
+ return prettyPlanName;
}
@Override
@@ -196,7 +207,7 @@ public class InvoiceItemJson extends JsonBase {
@Override
public String getPrettyPhaseName() {
- return phaseName;
+ return prettyPhaseName;
}
@Override
@@ -206,7 +217,7 @@ public class InvoiceItemJson extends JsonBase {
@Override
public String getPrettyUsageName() {
- return usageName;
+ return prettyUsageName;
}
@Override
@@ -285,6 +296,18 @@ public class InvoiceItemJson extends JsonBase {
return usageName;
}
+ public String getPrettyPlanName() {
+ return prettyPlanName;
+ }
+
+ public String getPrettyPhaseName() {
+ return prettyPhaseName;
+ }
+
+ public String getPrettyUsageName() {
+ return prettyUsageName;
+ }
+
public String getItemType() {
return itemType;
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index b89a910..a7ad890 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -562,6 +562,9 @@ public class InvoiceResource extends JaxRsResourceBase {
input.getPlanName(),
input.getPhaseName(),
input.getUsageName(),
+ input.getPrettyPlanName(),
+ input.getPrettyPhaseName(),
+ input.getPrettyUsageName(),
input.getItemType(),
input.getDescription(),
input.getStartDate(),
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
index bd54e91..42f51ba 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceItemJsonSimple.java
@@ -21,14 +21,13 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.LocalDate;
-import org.mockito.Mockito;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoiceItemType;
import org.killbill.billing.jaxrs.JaxrsTestSuiteNoDB;
+import org.mockito.Mockito;
+import org.testng.Assert;
+import org.testng.annotations.Test;
import static org.killbill.billing.jaxrs.JaxrsTestUtils.createAuditLogsJson;
@@ -54,8 +53,10 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuiteNoDB {
final Currency currency = Currency.MXN;
final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow());
final InvoiceItemJson invoiceItemJson = new InvoiceItemJson(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId, childAccountId,
- bundleId, subscriptionId, planName, phaseName, usageName, type, description,
- startDate, endDate, amount, currency.name(), null, auditLogs);
+ bundleId, subscriptionId, planName, phaseName, usageName,
+ null, null, null,
+ type, description,
+ startDate, endDate, amount, currency.name(), null, auditLogs);
Assert.assertEquals(invoiceItemJson.getInvoiceItemId(), invoiceItemId);
Assert.assertEquals(invoiceItemJson.getInvoiceId(), invoiceId);
Assert.assertEquals(invoiceItemJson.getLinkedInvoiceItemId(), linkedInvoiceItemId);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java
index c7c7ddc..5d909f1 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestUsage.java
@@ -19,6 +19,8 @@ package org.killbill.billing.jaxrs;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.killbill.billing.ErrorCode;
import org.killbill.billing.catalog.api.BillingPeriod;
import org.killbill.billing.catalog.api.PriceListSet;
@@ -26,11 +28,15 @@ import org.killbill.billing.catalog.api.ProductCategory;
import org.killbill.billing.client.KillBillClientException;
import org.killbill.billing.client.model.Account;
import org.killbill.billing.client.model.Bundle;
+import org.killbill.billing.client.model.InvoiceItem;
+import org.killbill.billing.client.model.Invoices;
import org.killbill.billing.client.model.RolledUpUsage;
import org.killbill.billing.client.model.Subscription;
import org.killbill.billing.client.model.SubscriptionUsageRecord;
import org.killbill.billing.client.model.UnitUsageRecord;
import org.killbill.billing.client.model.UsageRecord;
+import org.killbill.billing.invoice.api.InvoiceItemType;
+import org.killbill.billing.util.api.AuditLevel;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -114,6 +120,25 @@ public class TestUsage extends TestJaxrsBase {
Assert.assertEquals(retrievedUsage4.getRolledUpUnits().size(), 1);
Assert.assertEquals(retrievedUsage4.getRolledUpUnits().get(0).getUnitType(), "bullets");
Assert.assertEquals((long) retrievedUsage4.getRolledUpUnits().get(0).getAmount(), 5);
+
+ clock.addMonths(1);
+ crappyWaitForLackOfProperSynchonization();
+
+
+ final Invoices invoices = killBillClient.getInvoicesForAccount(accountJson.getAccountId(), true, false, false, AuditLevel.MINIMAL, requestOptions);
+ Assert.assertEquals(invoices.size(), 2);
+
+ final InvoiceItem usageItem = Iterables.tryFind(invoices.get(1).getItems(), new Predicate<InvoiceItem>() {
+ @Override
+ public boolean apply(final InvoiceItem input) {
+ return InvoiceItemType.valueOf(input.getItemType()) == InvoiceItemType.USAGE;
+ }
+ }).orNull();
+ Assert.assertNotNull(usageItem);
+
+ Assert.assertEquals(usageItem.getPrettyPlanName(), "Bullet Monthly Plan");
+ Assert.assertEquals(usageItem.getPrettyPhaseName(), "Bullet Monthly Plan Evergreen");
+ Assert.assertEquals(usageItem.getPrettyUsageName(), "Bullet Usage In Arrear");
}
@Test(groups = "slow", description = "Test tracking ID already exists")