}
private MultitenancyInvoice getPastInvoiceById(UserRegistry registry,
int invoiceId) throws Exception {
BillingManager billingManager = Util.getBillingManager();
BillingEngine billingEngine =
billingManager.getBillingEngine(StratosConstants.MULTITENANCY_SCHEDULED_TASK_ID);
Invoice invoice = billingEngine.getInvoice(invoiceId);
if (invoice == null) {
return null;
}
Customer customer = getCurrentCustomer(registry, billingEngine);
if (customer == null || customer.getId() != invoice.getCustomer().getId()) {
String msg = "Trying to looking at an invoice of another customer, customer: " +
(customer == null ? "unknown" : customer.getId()) + ", invoice: " +
invoice.getId() + ".";
log.error(msg);
throw new Exception(msg);
}
MultitenancyInvoice multitenancyInvoice = new MultitenancyInvoice();
multitenancyInvoice.setInvoiceId(invoice.getId());
multitenancyInvoice.setBillingDate(invoice.getDate());
multitenancyInvoice.setBoughtForward(invoice.getBoughtForward().serializeToString());
multitenancyInvoice.setCarriedForward(invoice.getCarriedForward().serializeToString());
multitenancyInvoice.setStartDate(invoice.getStartDate());
multitenancyInvoice.setEndDate(invoice.getEndDate());
multitenancyInvoice.setTotalCost(invoice.getTotalCost().serializeToString());
multitenancyInvoice.setTotalPayments(invoice.getTotalPayment().serializeToString());
List<Subscription> subscriptions = invoice.getSubscriptions();
MultitenancySubscription[] multitenancySubscriptions =
new MultitenancySubscription[subscriptions.size()];
for (int i = 0; i < subscriptions.size(); i++) {
Subscription subscription = subscriptions.get(i);
MultitenancySubscription multitenancySubscription = new MultitenancySubscription();
multitenancySubscription.setSubscribedPackage(subscription.getItem().getName());
multitenancySubscription.setActiveSince(subscription.getActiveSince());
multitenancySubscription.setActiveUntil(subscription.getActiveUntil());
multitenancySubscription.setActive(subscription.isActive());
// now iterating the items
List<Item> billedItems = billingEngine.getBilledItems(subscription);
BilledEntry[] itemEntries = new BilledEntry[billedItems.size()];
for (int j = 0; j < billedItems.size(); j++) {
Item billedItem = billedItems.get(j);
if (billedItem.getName().equals(multitenancySubscription.getSubscribedPackage())) {
// ignoring the parent item..