Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
index cb46580..d8c655c 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
@@ -980,7 +980,7 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
private void notifyOfParentInvoiceCreation(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory, final InvoiceModelDao parentInvoice,
final FutureAccountNotifications callbackDateTime, final InternalCallContext context) {
- DateTime futureNotificationDate = parentInvoice.getCreatedDate();
+ DateTime futureNotificationDate = parentInvoice.getCreatedDate().withTimeAtStartOfDay().plusDays(1);
AccountDateAndTimeZoneContext accountDateAndTimeZone;
if ((callbackDateTime != null) && (callbackDateTime.getAccountDateAndTimeZoneContext() != null)) {
accountDateAndTimeZone = callbackDateTime.getAccountDateAndTimeZoneContext();
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/InvoiceDispatcher.java b/invoice/src/main/java/org/killbill/billing/invoice/InvoiceDispatcher.java
index 7aa89dc..45b41ab 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/InvoiceDispatcher.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/InvoiceDispatcher.java
@@ -711,22 +711,24 @@ public class InvoiceDispatcher {
final InvoiceModelDao invoiceModelDao = invoiceDao.getById(invoiceId, context);
final Invoice invoice = new DefaultInvoice(invoiceModelDao);
- BigDecimal invoiceAmount = InvoiceCalculatorUtils.computeInvoiceBalance(invoice.getCurrency(), invoice.getInvoiceItems(), invoice.getPayments());
+ // BigDecimal invoiceAmount = InvoiceCalculatorUtils.computeInvoiceBalance(invoice.getCurrency(), invoice.getInvoiceItems(), invoice.getPayments());
+ BigDecimal invoiceAmount = invoice.getChargedAmount();
InvoiceModelDao parentInvoice = invoiceDao.getParentDraftInvoice(account.getParentAccountId(), context);
final Long parentAccountRecordId = internalCallContextFactory.getRecordIdFromObject(account.getParentAccountId(), ObjectType.ACCOUNT, buildTenantContext(context));
final InternalCallContext parentContext = new InternalCallContext(context, parentAccountRecordId);
final DateTime today = clock.getNow(account.getTimeZone());
+ final String description = account.getExternalKey().concat(" summary");
if (parentInvoice != null) {
- InvoiceItem invoiceItem = new ParentInvoiceItem(UUID.randomUUID(), today, parentInvoice.getId(), account.getParentAccountId(), account.getId(), invoiceAmount, account.getCurrency());
+ InvoiceItem invoiceItem = new ParentInvoiceItem(UUID.randomUUID(), today, parentInvoice.getId(), account.getParentAccountId(), account.getId(), invoiceAmount, account.getCurrency(), description);
parentInvoice.addInvoiceItem(new InvoiceItemModelDao(invoiceItem));
List<InvoiceModelDao> invoices = new ArrayList<InvoiceModelDao>();
invoices.add(parentInvoice);
invoiceDao.createInvoices(invoices, parentContext);
} else {
parentInvoice = new InvoiceModelDao(account.getParentAccountId(), today.toLocalDate(), account.getCurrency(), InvoiceStatus.DRAFT, true);
- InvoiceItem invoiceItem = new ParentInvoiceItem(UUID.randomUUID(), today, parentInvoice.getId(), account.getParentAccountId(), account.getId(), invoiceAmount, account.getCurrency());
+ InvoiceItem invoiceItem = new ParentInvoiceItem(UUID.randomUUID(), today, parentInvoice.getId(), account.getParentAccountId(), account.getId(), invoiceAmount, account.getCurrency(), description);
parentInvoice.addInvoiceItem(new InvoiceItemModelDao(invoiceItem));
// build account date time zone
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java b/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java
index 7642e72..1c701e8 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java
@@ -152,6 +152,7 @@ public class InvoiceListener {
try {
final InternalCallContext context = internalCallContextFactory.createInternalCallContext(event.getSearchKey2(), event.getSearchKey1(), "CreateParentInvoice", CallOrigin.INTERNAL, UserType.SYSTEM, event.getUserToken());
+ // TODO it may change to Account - #459
final ImmutableAccountData account = accountApi.getImmutableAccountDataById(event.getAccountId(), context);
// catch children invoices and populate the parent summary invoice
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 d85ab27..5b9b907 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
@@ -97,8 +97,8 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem
// 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) {
- this(id, createdDate, invoiceId, accountId, childAccountId, null, null, null, null, null, null, null, null, amount, null, currency, null);
+ final BigDecimal amount, final Currency currency, final String description) {
+ this(id, createdDate, invoiceId, accountId, childAccountId, null, null, description, null, null, null, null, null, amount, null, currency, null);
}
private InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID childAccountId, @Nullable final UUID bundleId,
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 e60f77c..1c3faf4 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
@@ -89,7 +89,7 @@ public class InvoiceItemFactory {
item = new TaxInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, startDate, description, amount, currency, linkedItemId);
break;
case PARENT_SUMMARY:
- item = new ParentInvoiceItem(id, createdDate, invoiceId, accountId, childAccountId, amount, currency);
+ item = new ParentInvoiceItem(id, createdDate, invoiceId, accountId, childAccountId, amount, currency, description);
break;
default:
throw new RuntimeException("Unexpected type of event item " + type);
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/ParentInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/ParentInvoiceItem.java
index cef9630..0dc8c8d 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/ParentInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/ParentInvoiceItem.java
@@ -31,8 +31,8 @@ import com.google.common.base.MoreObjects;
public class ParentInvoiceItem extends InvoiceItemBase {
public ParentInvoiceItem(@Nullable final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID childAccountId,
- final BigDecimal amount, final Currency currency) {
- super(id, createdDate, invoiceId, accountId, childAccountId, amount, currency);
+ final BigDecimal amount, final Currency currency, final String description) {
+ super(id, createdDate, invoiceId, accountId, childAccountId, amount, currency, description);
}
@Override
@@ -42,6 +42,6 @@ public class ParentInvoiceItem extends InvoiceItemBase {
@Override
public String getDescription() {
- return MoreObjects.firstNonNull(description, "Parent summary");
+ return MoreObjects.firstNonNull(description, "Parent summary item");
}
}