@Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } });
@Override public String toString() { return "DefaultInvoice [items=" + invoiceItems + ", payments=" + payments + ", id=" + id + ", accountId=" + accountId + ", invoiceDate=" + invoiceDate + ", targetDate=" + targetDate + ", currency=" + currency + ", amountPaid=" + getPaidAmount() + "]"; } }
@Test(groups = "slow") public void testGetInvoiceItemsByAccountId() throws EntityPersistenceException { final UUID accountId = account.getId(); final UUID bundleId = UUID.randomUUID(); final LocalDate targetDate = new LocalDate(2011, 5, 23); final DefaultInvoice invoice = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice, true, context); final UUID invoiceId = invoice.getId(); final LocalDate startDate = new LocalDate(2011, 3, 1); final BigDecimal rate = new BigDecimal("20.00"); final UUID subscriptionId = UUID.randomUUID(); final RecurringInvoiceItem item = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, "test plan", "test phase", startDate, startDate.plusMonths(1), rate, rate, Currency.USD); invoiceUtil.createInvoiceItem(item, context); final List<InvoiceItemModelDao> items = invoiceUtil.getInvoiceItemByAccountId(context); assertEquals(items.size(), 1); }
final RefundAdjInvoiceItem refundAdjInvoiceItem = new RefundAdjInvoiceItem(fixedItem.getInvoiceId(), fixedItem.getAccountId(), fixedItem.getStartDate(), BigDecimal.ONE.negate(), fixedItem.getCurrency()); final DefaultInvoice invoice = new DefaultInvoice(fixedItem.getInvoiceId(), fixedItem.getAccountId(), null, new LocalDate(), new LocalDate(), Currency.USD, false); invoice.addInvoiceItem(fixedItem); invoice.addInvoiceItem(repairAdjInvoiceItem); invoice.addInvoiceItem(creditBalanceAdjInvoiceItem); invoice.addInvoiceItem(creditAdjInvoiceItem); invoice.addInvoiceItem(creditBalanceAdjInvoiceItem2); invoice.addInvoiceItem(refundAdjInvoiceItem); invoice.addPayment(new DefaultInvoicePayment(InvoicePaymentType.ATTEMPT, UUID.randomUUID(), invoice.getId(), clock.getUTCNow(), BigDecimal.TEN, Currency.USD, Currency.USD)); invoice.addPayment(new DefaultInvoicePayment(InvoicePaymentType.REFUND, UUID.randomUUID(), invoice.getId(), clock.getUTCNow(), BigDecimal.ONE.negate(), Currency.USD, Currency.USD)); Assert.assertEquals(invoice.getBalance().doubleValue(), 0.00); Assert.assertEquals(invoice.getCreditedAmount().doubleValue(), 11.00); Assert.assertEquals(invoice.getRefundedAmount().doubleValue(), -1.00);
private void createInvoiceAndPaymentCreationEvents(final Account account) { final DefaultInvoice invoice = new DefaultInvoice(account.getId(), clock.getUTCToday(), clock.getUTCToday(), ACCOUNT_CURRENCY); final FixedPriceInvoiceItem invoiceItem = new FixedPriceInvoiceItem(invoice.getId(), account.getId(), bundleId, subscriptionId, "somePlan", "somePhase", clock.getUTCToday(), INVOICE_AMOUNT, ACCOUNT_CURRENCY); invoice.addInvoiceItem(invoiceItem); Mockito.when(invoiceInternalApi.getInvoicesByAccountId(Mockito.eq(account.getId()), Mockito.<InternalCallContext>any())).thenReturn(ImmutableList.<Invoice>of(invoice)); // It doesn't really matter what the events contain - the listener will go back to the db invoiceCreationNotification = new DefaultInvoiceCreationEvent(invoice.getId(), account.getId(), INVOICE_AMOUNT, ACCOUNT_CURRENCY, null, 1L, 1L); paymentInfoNotification = new DefaultPaymentInfoEvent(account.getId(), invoice.getId(), null, INVOICE_AMOUNT, -1, PaymentStatus.UNKNOWN, null, clock.getUTCNow(), 1L, 1L); }
public DefaultInvoice(final InvoiceModelDao invoiceModelDao) { this(invoiceModelDao.getId(), invoiceModelDao.getCreatedDate(), invoiceModelDao.getAccountId(), invoiceModelDao.getInvoiceNumber(), invoiceModelDao.getInvoiceDate(), invoiceModelDao.getTargetDate(), invoiceModelDao.getCurrency(), invoiceModelDao.getProcessedCurrency(), invoiceModelDao.isMigrated()); addInvoiceItems(Collections2.transform(invoiceModelDao.getInvoiceItems(), new Function<InvoiceItemModelDao, InvoiceItem>() { @Override public InvoiceItem apply(final InvoiceItemModelDao input) { return InvoiceItemFactory.fromModelDao(input); } })); addPayments(Collections2.transform(invoiceModelDao.getInvoicePayments(), new Function<InvoicePaymentModelDao, InvoicePayment>() { @Override public InvoicePayment apply(final InvoicePaymentModelDao input) { return new DefaultInvoicePayment(input); } })); }
final Invoice invoice1 = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice1, true, context); final DefaultInvoice invoice2 = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice2, true, context); final UUID invoiceId2 = invoice2.getId();
@Override public Invoice apply(final InvoiceModelDao invoiceModelDao) { return new DefaultInvoice(invoiceModelDao); } }
final Invoice invoice1 = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice1, true, context); final DefaultInvoice invoice2 = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice2, true, context); final UUID invoiceId2 = invoice2.getId();
@Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } }));
final Invoice invoice1 = new DefaultInvoice(accountId, clock.getUTCToday(), clock.getUTCToday(), Currency.USD); final InvoiceItem fixedItem1 = new FixedPriceInvoiceItem(invoice1.getId(), invoice1.getAccountId(), null, null, UUID.randomUUID().toString(), UUID.randomUUID().toString(), clock.getUTCToday(), BigDecimal.TEN, Currency.USD); final DefaultInvoice invoice2 = new DefaultInvoice(accountId, clock.getUTCToday(), clock.getUTCToday(), Currency.USD); final InvoiceItem fixedItem2 = new FixedPriceInvoiceItem(invoice2.getId(), invoice1.getAccountId(), null, null, UUID.randomUUID().toString(), UUID.randomUUID().toString(), clock.getUTCToday(), new BigDecimal("5"), Currency.USD); final CreditBalanceAdjInvoiceItem creditBalanceAdjInvoiceItem2 = new CreditBalanceAdjInvoiceItem(fixedItem2.getInvoiceId(), fixedItem2.getAccountId(), invoiceUtil.verifyInvoice(invoice2.getId(), 0.00, -5.00, context); invoiceUtil.verifyInvoice(invoice2.getId(), 0.00, -5.00, context);
@Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } }));
final Invoice invoice1 = new DefaultInvoice(accountId, clock.getUTCToday(), clock.getUTCToday(), Currency.USD); final InvoiceItem fixedItem1 = new FixedPriceInvoiceItem(invoice1.getId(), invoice1.getAccountId(), null, null, UUID.randomUUID().toString(), UUID.randomUUID().toString(), clock.getUTCToday(), BigDecimal.TEN, Currency.USD); final DefaultInvoice invoice2 = new DefaultInvoice(accountId, clock.getUTCToday(), clock.getUTCToday(), Currency.USD); final InvoiceItem fixedItem2 = new FixedPriceInvoiceItem(invoice2.getId(), invoice1.getAccountId(), null, null, UUID.randomUUID().toString(), UUID.randomUUID().toString(), clock.getUTCToday(), new BigDecimal("5"), Currency.USD); final CreditBalanceAdjInvoiceItem creditBalanceAdjInvoiceItem2 = new CreditBalanceAdjInvoiceItem(fixedItem2.getInvoiceId(), fixedItem2.getAccountId(), final DefaultInvoice invoice3 = new DefaultInvoice(accountId, clock.getUTCToday(), clock.getUTCToday(), Currency.USD); final InvoiceItem fixedItem3 = new FixedPriceInvoiceItem(invoice3.getId(), invoice1.getAccountId(), null, null, UUID.randomUUID().toString(), UUID.randomUUID().toString(), clock.getUTCToday(), new BigDecimal("5"), Currency.USD); final CreditBalanceAdjInvoiceItem creditBalanceAdjInvoiceItem3 = new CreditBalanceAdjInvoiceItem(fixedItem3.getInvoiceId(), fixedItem3.getAccountId(), invoiceUtil.verifyInvoice(invoice2.getId(), 0.00, -5.00, context); invoiceUtil.verifyInvoice(invoice3.getId(), 0.00, -5.00, context); invoiceUtil.verifyInvoice(invoice2.getId(), 0.00, -5.00, context); invoiceUtil.verifyInvoice(invoice3.getId(), 0.00, -5.00, context);
@Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } })); //no need to fetch, invoicing is off on this account
final Invoice invoice1 = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice1, true, context); final DefaultInvoice invoice2 = new DefaultInvoice(accountId, clock.getUTCToday(), targetDate, Currency.USD); invoiceUtil.createInvoice(invoice2, true, context); final UUID invoiceId2 = invoice2.getId();
@Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } }));
@Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } }));
@Override public Invoice apply(final InvoiceModelDao invoiceModelDao) { return new DefaultInvoice(invoiceModelDao); } }
@Override public Collection<Invoice> getUnpaidInvoicesByAccountId(final UUID accountId, final LocalDate upToDate, final InternalTenantContext context) { return Collections2.transform(dao.getUnpaidInvoicesByAccountId(accountId, upToDate, context), new Function<InvoiceModelDao, Invoice>() { @Override public Invoice apply(final InvoiceModelDao input) { return new DefaultInvoice(input); } }); }
@Override public Invoice getInvoiceById(final UUID invoiceId, final InternalTenantContext context) throws InvoiceApiException { return new DefaultInvoice(dao.getById(invoiceId, context)); }