killbill-memoizeit
Changes
invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java 6(+6 -0)
Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceItemModelDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceItemModelDao.java
index e814a69..1f8e56a 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceItemModelDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceItemModelDao.java
@@ -47,13 +47,15 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
private BigDecimal rate;
private Currency currency;
private UUID linkedItemId;
+ private Integer quantity;
+ private String itemDetails;
public InvoiceItemModelDao() { /* For the DAO mapper */ }
public InvoiceItemModelDao(final UUID id, final DateTime createdDate, final InvoiceItemType type, final UUID invoiceId, final UUID accountId,
final UUID childAccountId, final UUID bundleId, final UUID subscriptionId, final String description, final String planName,
final String phaseName, final String usageName, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount,
- final BigDecimal rate, final Currency currency, final UUID linkedItemId) {
+ final BigDecimal rate, final Currency currency, final UUID linkedItemId, final Integer quantity, final String itemDetails) {
super(id, createdDate, createdDate);
this.type = type;
this.invoiceId = invoiceId;
@@ -71,6 +73,24 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
this.rate = rate;
this.currency = currency;
this.linkedItemId = linkedItemId;
+ this.quantity = quantity;
+ this.itemDetails = itemDetails;
+ }
+ public InvoiceItemModelDao(final UUID id, final DateTime createdDate, final InvoiceItemType type, final UUID invoiceId, final UUID accountId,
+ final UUID childAccountId, final UUID bundleId, final UUID subscriptionId, final String description, final String planName,
+ final String phaseName, final String usageName, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount,
+ final BigDecimal rate, final Currency currency, final UUID linkedItemId) {
+ this(id, createdDate, type, invoiceId, accountId, childAccountId, bundleId, subscriptionId, description, planName, phaseName, usageName,
+ startDate, endDate, amount, rate, currency, linkedItemId, null, null);
+
+ }
+
+ public InvoiceItemModelDao(final DateTime createdDate, final InvoiceItemType type, final UUID invoiceId, final UUID accountId,
+ final UUID bundleId, final UUID subscriptionId, final String description, final String planName,
+ final String phaseName, final String usageName, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount,
+ final BigDecimal rate, final Currency currency, final UUID linkedItemId, final Integer quantity, final String itemDetails) {
+ this(UUIDs.randomUUID(), createdDate, type, invoiceId, accountId, null, bundleId, subscriptionId, description, planName, phaseName, usageName,
+ startDate, endDate, amount, rate, currency, linkedItemId, quantity, itemDetails);
}
public InvoiceItemModelDao(final DateTime createdDate, final InvoiceItemType type, final UUID invoiceId, final UUID accountId,
@@ -78,13 +98,13 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
final String phaseName, final String usageName, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount,
final BigDecimal rate, final Currency currency, final UUID linkedItemId) {
this(UUIDs.randomUUID(), createdDate, type, invoiceId, accountId, null, bundleId, subscriptionId, description, planName, phaseName, usageName,
- startDate, endDate, amount, rate, currency, linkedItemId);
+ startDate, endDate, amount, rate, currency, linkedItemId, null, null);
}
public InvoiceItemModelDao(final InvoiceItem invoiceItem) {
this(invoiceItem.getId(), invoiceItem.getCreatedDate(), invoiceItem.getInvoiceItemType(), invoiceItem.getInvoiceId(), invoiceItem.getAccountId(), invoiceItem.getChildAccountId(), invoiceItem.getBundleId(),
invoiceItem.getSubscriptionId(), invoiceItem.getDescription(), invoiceItem.getPlanName(), invoiceItem.getPhaseName(), invoiceItem.getUsageName(), invoiceItem.getStartDate(), invoiceItem.getEndDate(),
- invoiceItem.getAmount(), invoiceItem.getRate(), invoiceItem.getCurrency(), invoiceItem.getLinkedItemId());
+ invoiceItem.getAmount(), invoiceItem.getRate(), invoiceItem.getCurrency(), invoiceItem.getLinkedItemId(), invoiceItem.getQuantity(), invoiceItem.getItemDetails());
}
/*
@@ -159,6 +179,10 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
return linkedItemId;
}
+ public Integer getQuantity() { return quantity; }
+
+ public String getItemDetails() { return itemDetails; }
+
public void setType(final InvoiceItemType type) {
this.type = type;
}
@@ -223,6 +247,10 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
this.linkedItemId = linkedItemId;
}
+ public void setQuantity(final Integer quantity) { this.quantity = quantity; }
+
+ public void setItemDetails(final String itemDetails) { this.itemDetails = itemDetails; }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("InvoiceItemModelDao{");
@@ -242,6 +270,8 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
sb.append(", rate=").append(rate);
sb.append(", currency=").append(currency);
sb.append(", linkedItemId=").append(linkedItemId);
+ sb.append(", quantity=").append(quantity);
+ sb.append(", itemDetails=").append(itemDetails);
sb.append('}');
return sb.toString();
}
@@ -308,6 +338,12 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
if (type != that.type) {
return false;
}
+ if (quantity != null ? !quantity.equals(that.quantity) : that.quantity != null) {
+ return false;
+ }
+ if (itemDetails != null ? !itemDetails.equals(that.itemDetails) : that.itemDetails != null) {
+ return false;
+ }
return true;
}
@@ -331,6 +367,8 @@ public class InvoiceItemModelDao extends EntityModelDaoBase implements EntityMod
result = 31 * result + (rate != null ? rate.hashCode() : 0);
result = 31 * result + (currency != null ? currency.hashCode() : 0);
result = 31 * result + (linkedItemId != null ? linkedItemId.hashCode() : 0);
+ result = 31 * result + (quantity != null ? quantity.hashCode() : 0);
+ result = 31 * result + (itemDetails != null ? itemDetails.hashCode() : 0);
return result;
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java
index 0e6ea00..329d2f1 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java
@@ -53,23 +53,40 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem
/* RepairAdjInvoiceItem */
protected final UUID linkedItemId;
+ /* Usage details */
+ protected final Integer quantity;
+ protected final String itemDetails;
public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String description,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, final UUID reversedItemId) {
- this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, reversedItemId);
+ this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, reversedItemId, null, null);
+ }
+
+ public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ @Nullable final UUID subscriptionId, @Nullable final String description,
+ final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, final UUID reversedItemId,
+ @Nullable final Integer quantity, @Nullable final String itemDetails) {
+ this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, reversedItemId, quantity, itemDetails);
}
// For parent invoices
public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID childAccountId,
final BigDecimal amount, final Currency currency, final String description) {
- this(id, createdDate, invoiceId, accountId, childAccountId, null, null, description, null, null, amount, null, currency, null);
+ this(id, createdDate, invoiceId, accountId, childAccountId, null, null, description, null, null, amount, null, currency, null, null, null);
+ }
+
+ public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID childAccountId, @Nullable final UUID bundleId,
+ @Nullable final UUID subscriptionId, @Nullable final String description,
+ @Nullable final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency,
+ final UUID reversedItemId){
+ this(id, createdDate, invoiceId, accountId, childAccountId, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, reversedItemId, null, null);
}
private InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID childAccountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String description,
@Nullable final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency,
- final UUID reversedItemId) {
+ final UUID reversedItemId,@Nullable final Integer quantity,@Nullable final String itemDetails) {
super(id, createdDate, createdDate);
this.invoiceId = invoiceId;
this.accountId = accountId;
@@ -83,6 +100,8 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem
this.currency = currency;
this.rate = rate;
this.linkedItemId = reversedItemId;
+ this.quantity = quantity;
+ this.itemDetails = itemDetails;
}
@Override
@@ -172,6 +191,11 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem
return null;
}
+ @Override
+ public Integer getQuantity() { return quantity; }
+
+ @Override
+ public String getItemDetails() { return itemDetails; }
@Override
public boolean equals(final Object o) {
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
index 6ad9068..9ad25ce 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
@@ -40,15 +40,30 @@ public abstract class InvoiceItemCatalogBase extends InvoiceItemBase implements
public InvoiceItemCatalogBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, @Nullable final UUID linkedItemId) {
- this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, null, null, null, startDate, endDate, amount, rate, currency, linkedItemId);
+ this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, null, null, null, startDate, endDate, amount, rate, currency, linkedItemId, null, null);
}
+ public InvoiceItemCatalogBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
+ final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, @Nullable final UUID linkedItemId,
+ @Nullable final Integer quantity, @Nullable final String itemDetails) {
+ this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, null, null, null, startDate, endDate, amount, rate, currency, linkedItemId, quantity, itemDetails);
+ }
public InvoiceItemCatalogBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
@Nullable final String prettyPlanName, @Nullable final String prettyPhaseName, @Nullable final String prettyUsageName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, @Nullable final UUID linkedItemId) {
- super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, linkedItemId);
+ this(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, prettyPlanName, prettyPhaseName, prettyUsageName, startDate, endDate, amount, rate, currency, linkedItemId, null, null);
+ }
+
+
+ public InvoiceItemCatalogBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+ @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
+ @Nullable final String prettyPlanName, @Nullable final String prettyPhaseName, @Nullable final String prettyUsageName,
+ final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, @Nullable final UUID linkedItemId,
+ @Nullable final Integer quantity, @Nullable final String itemDetails) {
+ super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, linkedItemId, quantity, itemDetails);
this.planName = planName;
this.phaseName = phaseName;
this.usageName = usageName;
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java
index e8eef20..b93a20f 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java
@@ -69,6 +69,8 @@ public class InvoiceItemFactory {
final BigDecimal rate = invoiceItemModelDao.getRate();
final Currency currency = invoiceItemModelDao.getCurrency();
final UUID linkedItemId = invoiceItemModelDao.getLinkedItemId();
+ final Integer quantity = invoiceItemModelDao.getQuantity();
+ final String itemDetails = invoiceItemModelDao.getItemDetails();
final InvoiceItemType type = invoiceItemModelDao.getType();
@@ -101,7 +103,7 @@ public class InvoiceItemFactory {
item = new ItemAdjInvoiceItem(id, createdDate, invoiceId, accountId, startDate, description, amount, currency, linkedItemId);
break;
case USAGE:
- item = new UsageInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, prettyPlanName, prettyPlanPhaseName, prettyUsageName, startDate, endDate, description, amount, currency);
+ item = new UsageInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, prettyPlanName, prettyPlanPhaseName, prettyUsageName, startDate, endDate, description, amount, currency, quantity, itemDetails);
break;
case TAX:
item = new TaxInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, prettyPlanName, prettyPlanPhaseName, prettyUsageName, startDate, description, amount, currency, linkedItemId);
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java
index 3f66f69..0af4a8e 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java
@@ -35,14 +35,21 @@ public class UsageInvoiceItem extends InvoiceItemCatalogBase {
public UsageInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId,
final String planName, final String phaseName, final String usageName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
- this(UUIDs.randomUUID(), null, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, null, null, null, startDate, endDate, null, amount, currency);
+ this(UUIDs.randomUUID(), null, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, null, null, null, startDate, endDate, null, amount, currency, null, null);
+ }
+
+ public UsageInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId,
+ final String planName, final String phaseName, final String usageName,
+ final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, @Nullable final Integer quantity, @Nullable final String itemDetails) {
+ this(UUIDs.randomUUID(), null, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, null, null, null, startDate, endDate, null, amount, currency, quantity, itemDetails);
}
public UsageInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID bundleId,
final UUID subscriptionId, final String planName, final String phaseName, final String usageName,
final String prettyPlanName, final String prettyPhaseName, final String prettyUsageName,
- final LocalDate startDate, final LocalDate endDate, @Nullable final String description, final BigDecimal amount, final Currency currency) {
- super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, prettyPlanName, prettyPhaseName, prettyUsageName, startDate, endDate, amount, null, currency, null);
+ final LocalDate startDate, final LocalDate endDate, @Nullable final String description, final BigDecimal amount, final Currency currency,
+ @Nullable final Integer quantity, @Nullable final String itemDetails) {
+ super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, prettyPlanName, prettyPhaseName, prettyUsageName, startDate, endDate, amount, null, currency, null, quantity, itemDetails);
}
@Override
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 f59f5d8..c411381 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
@@ -193,6 +193,12 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
}
@Override
+ public Integer getQuantity() { return item.getQuantity(); }
+
+ @Override
+ public String getItemDetails() { return item.getItemDetails(); }
+
+ @Override
public boolean matches(final Object other) {
throw new UnsupportedOperationException();
}
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceItemSqlDao.sql.stg b/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceItemSqlDao.sql.stg
index c7596b4..eccd1c5 100644
--- a/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceItemSqlDao.sql.stg
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceItemSqlDao.sql.stg
@@ -19,6 +19,8 @@ tableFields(prefix) ::= <<
, <prefix>rate
, <prefix>currency
, <prefix>linked_item_id
+, <prefix>quantity
+, <prefix>item_details
, <prefix>created_by
, <prefix>created_date
>>
@@ -40,6 +42,8 @@ tableValues() ::= <<
, :rate
, :currency
, :linkedItemId
+, :quantity
+, :itemDetails
, :createdBy
, :createdDate
>>
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql b/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
index 52f4ee7..f2bce36 100644
--- a/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
@@ -20,6 +20,8 @@ CREATE TABLE invoice_items (
rate numeric(15,9) NULL,
currency varchar(3) NOT NULL,
linked_item_id varchar(36),
+ quantity int,
+ item_details text,
created_by varchar(50) NOT NULL,
created_date datetime NOT NULL,
account_record_id bigint /*! unsigned */ not null,
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/migration/V20180123114605__invoice_item_quantity_item_details.sql b/invoice/src/main/resources/org/killbill/billing/invoice/migration/V20180123114605__invoice_item_quantity_item_details.sql
new file mode 100644
index 0000000..a78535d
--- /dev/null
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/migration/V20180123114605__invoice_item_quantity_item_details.sql
@@ -0,0 +1,2 @@
+alter table invoice_items add column quantity int after linked_item_id;
+alter table invoice_items add column item_details text after quantity;
\ No newline at end of file
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 8ad9cc1..7de2870 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
@@ -64,6 +64,8 @@ public class InvoiceItemJson extends JsonBase {
private final LocalDate endDate;
private final BigDecimal amount;
private final String currency;
+ private final Integer quantity;
+ private final String itemDetails;
private List<InvoiceItemJson> childItems;
@JsonCreator
@@ -87,7 +89,9 @@ public class InvoiceItemJson extends JsonBase {
@JsonProperty("amount") final BigDecimal amount,
@JsonProperty("currency") final String currency,
@JsonProperty("childItems") final List<InvoiceItemJson> childItems,
- @JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
+ @JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs,
+ @JsonProperty("quantity") final Integer quantity,
+ @JsonProperty("itemDetails") final String itemDetails) {
super(auditLogs);
this.invoiceItemId = invoiceItemId;
this.invoiceId = invoiceId;
@@ -109,6 +113,8 @@ public class InvoiceItemJson extends JsonBase {
this.amount = amount;
this.currency = currency;
this.childItems = childItems;
+ this.quantity = quantity;
+ this.itemDetails = itemDetails;
}
public InvoiceItemJson(final InvoiceItem item, final List<InvoiceItem> childItems, @Nullable final List<AuditLog> auditLogs) {
@@ -118,7 +124,8 @@ public class InvoiceItemJson extends JsonBase {
item.getPrettyPlanName(), item.getPrettyPhaseName(), item.getPrettyUsageName(),
item.getInvoiceItemType().toString(),
item.getDescription(), item.getStartDate(), item.getEndDate(),
- item.getAmount(), item.getCurrency().name(), toInvoiceItemJson(childItems), toAuditLogJson(auditLogs));
+ item.getAmount(), item.getCurrency().name(), toInvoiceItemJson(childItems), toAuditLogJson(auditLogs),
+ item.getQuantity(), item.getItemDetails());
}
private static List<InvoiceItemJson> toInvoiceItemJson(final List<InvoiceItem> childItems) {
@@ -231,6 +238,12 @@ public class InvoiceItemJson extends JsonBase {
}
@Override
+ public Integer getQuantity() { return quantity; }
+
+ @Override
+ public String getItemDetails() { return itemDetails; }
+
+ @Override
public boolean matches(final Object o) {
return false;
}
@@ -336,6 +349,10 @@ public class InvoiceItemJson extends JsonBase {
return childItems;
}
+ public Integer getQuantity() { return quantity; }
+
+ public String getItemDetails() { return itemDetails; }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
@@ -355,6 +372,8 @@ public class InvoiceItemJson extends JsonBase {
sb.append(", endDate=").append(endDate);
sb.append(", amount=").append(amount);
sb.append(", currency=").append(currency);
+ sb.append(", quantity=").append(quantity);
+ sb.append(", itemDetails=").append(itemDetails);
sb.append(", childItems=").append(childItems);
sb.append('}');
return sb.toString();
@@ -421,6 +440,12 @@ public class InvoiceItemJson extends JsonBase {
if (childItems != null ? !childItems.equals(that.childItems) : that.childItems != null) {
return false;
}
+ if (quantity != null ? !quantity.equals(that.quantity) : that.quantity != null) {
+ return false;
+ }
+ if (itemDetails != null ? !itemDetails.equals(that.itemDetails) : that.itemDetails != null) {
+ return false;
+ }
return true;
}
@@ -443,6 +468,8 @@ public class InvoiceItemJson extends JsonBase {
result = 31 * result + (amount != null ? amount.hashCode() : 0);
result = 31 * result + (currency != null ? currency.hashCode() : 0);
result = 31 * result + (childItems != null ? childItems.hashCode() : 0);
+ result = 31 * result + (quantity != null ? quantity.hashCode() : 0);
+ result = 31 * result + (itemDetails != null ? itemDetails.hashCode() : 0);
return result;
}
}
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 2bb186c..354f8ab 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
@@ -578,7 +578,9 @@ public class InvoiceResource extends JaxRsResourceBase {
input.getAmount(),
accountCurrency.name(),
null,
- null);
+ null,
+ input.getQuantity(),
+ input.getItemDetails());
}
}
});
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 42f51ba..3e72b3c 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
@@ -56,7 +56,7 @@ public class TestInvoiceItemJsonSimple extends JaxrsTestSuiteNoDB {
bundleId, subscriptionId, planName, phaseName, usageName,
null, null, null,
type, description,
- startDate, endDate, amount, currency.name(), null, auditLogs);
+ startDate, endDate, amount, currency.name(), null, auditLogs, null, null);
Assert.assertEquals(invoiceItemJson.getInvoiceItemId(), invoiceItemId);
Assert.assertEquals(invoiceItemJson.getInvoiceId(), invoiceId);
Assert.assertEquals(invoiceItemJson.getLinkedInvoiceItemId(), linkedInvoiceItemId);
diff --git a/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java b/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java
index fa16ee5..1627a6d 100644
--- a/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java
+++ b/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java
@@ -42,6 +42,8 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem
protected final BigDecimal amount;
protected final Currency currency;
protected final String usageName;
+ protected final Integer quantity;
+ protected final String itemDetails;
public MockRecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
final String planName, final String phaseName, final String usageName, final LocalDate startDate, final LocalDate endDate,
@@ -52,12 +54,12 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem
public MockRecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName, final String usageName,
final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final BigDecimal rate, final UUID reversedItemId) {
this(UUID.randomUUID(), invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName,
- startDate, endDate, amount, currency, rate, reversedItemId);
+ startDate, endDate, amount, currency, rate, reversedItemId, null, null);
}
public MockRecurringInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId, final String planName, final String phaseName,
final String usageName, final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency,
- final BigDecimal rate, final UUID reversedItemId) {
+ final BigDecimal rate, final UUID reversedItemId, final Integer quantity, final String itemDetails) {
super(id);
this.invoiceId = invoiceId;
this.accountId = accountId;
@@ -72,6 +74,8 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem
this.currency = currency;
this.rate = rate;
this.reversedItemId = reversedItemId;
+ this.quantity = quantity;
+ this.itemDetails = itemDetails;
}
@Override
@@ -165,6 +169,12 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem
}
@Override
+ public Integer getQuantity() { return quantity; }
+
+ @Override
+ public String getItemDetails() { return itemDetails; }
+
+ @Override
public boolean matches(final Object other) {
throw new UnsupportedOperationException();
}