@Override public int compare(final Invoice i1, final Invoice i2) { final LocalDate d1 = i1.getInvoiceDate(); final LocalDate d2 = i2.getInvoiceDate(); if (d1.compareTo(d2) == 0) { return i1.hashCode() - i2.hashCode(); // consistent (arbitrary) resolution for tied dates } return d1.compareTo(d2); } }
public Invoice createInvoice(final LocalDate date, final BigDecimal balance, final List<InvoiceItem> invoiceItems) { final Invoice invoice = Mockito.mock(Invoice.class); Mockito.when(invoice.getBalance()).thenReturn(balance); Mockito.when(invoice.getInvoiceDate()).thenReturn(date); Mockito.when(invoice.getInvoiceItems()).thenReturn(invoiceItems); Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID()); return invoice; }
@Test(groups = "fast") public void testEarliest() { final BillingStateCalculator calc = createBSCalc(); final SortedSet<Invoice> invoices = calc.unpaidInvoicesForAccount(new UUID(0L, 0L), internalCallContext); Assert.assertEquals(calc.earliest(invoices).getInvoiceDate(), now); } }
public BillingState calculateBillingState(final ImmutableAccountData account, final InternalCallContext context) throws OverdueException { final SortedSet<Invoice> unpaidInvoices = unpaidInvoicesForAccount(account.getId(), context); final int numberOfUnpaidInvoices = unpaidInvoices.size(); final BigDecimal unpaidInvoiceBalance = sumBalance(unpaidInvoices); LocalDate dateOfEarliestUnpaidInvoice = null; UUID idOfEarliestUnpaidInvoice = null; final Invoice invoice = earliest(unpaidInvoices); if (invoice != null) { dateOfEarliestUnpaidInvoice = invoice.getInvoiceDate(); idOfEarliestUnpaidInvoice = invoice.getId(); } final PaymentResponse responseForLastFailedPayment = PaymentResponse.INSUFFICIENT_FUNDS; //TODO MDW final List<Tag> accountTags = tagApi.getTags(account.getId(), ObjectType.ACCOUNT, context); final Tag[] tags = accountTags.toArray(new Tag[accountTags.size()]); return new BillingState(account.getId(), numberOfUnpaidInvoices, unpaidInvoiceBalance, dateOfEarliestUnpaidInvoice, idOfEarliestUnpaidInvoice, responseForLastFailedPayment, tags); }
public Account createAccount(final LocalDate dateOfLastUnPaidInvoice) throws SubscriptionBaseApiException, AccountApiException { final UUID accountId = UUID.randomUUID(); final Account account = Mockito.mock(Account.class); Mockito.when(account.getId()).thenReturn(accountId); Mockito.when(account.getTimeZone()).thenReturn(DateTimeZone.UTC); Mockito.when(accountInternalApi.getAccountById(Mockito.eq(account.getId()), Mockito.<InternalTenantContext>any())).thenReturn(account); final Invoice invoice = Mockito.mock(Invoice.class); Mockito.when(invoice.getInvoiceDate()).thenReturn(dateOfLastUnPaidInvoice); Mockito.when(invoice.getBalance()).thenReturn(BigDecimal.TEN); Mockito.when(invoice.getStatus()).thenReturn(InvoiceStatus.COMMITTED); Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID()); final InvoiceItem item = Mockito.mock(InvoiceItem.class); final List<InvoiceItem> items = new ArrayList<InvoiceItem>(); items.add(item); Mockito.when(invoice.getInvoiceItems()).thenReturn(items); final List<Invoice> invoices = new ArrayList<Invoice>(); invoices.add(invoice); Mockito.when(invoiceInternalApi.getUnpaidInvoicesByAccountId(Mockito.<UUID>any(), Mockito.<LocalDate>any(), Mockito.<InternalTenantContext>any())).thenReturn(invoices); final Tag tag = Mockito.mock(Tag.class); Mockito.when(tag.getObjectId()).thenReturn(accountId); Mockito.when(tag.getObjectType()).thenReturn(ObjectType.ACCOUNT); Mockito.when(tag.getTagDefinitionId()).thenReturn(ControlTagType.TEST.getId()); final List<Tag> tags = new ArrayList<Tag>(); tags.add(tag); Mockito.when(tagInternalApi.getTags(Mockito.eq(account.getId()), Mockito.eq(ObjectType.ACCOUNT), Mockito.<InternalTenantContext>any())) .thenReturn(tags); return account; }
@Override public LocalDate getInvoiceDate() { return invoice.getInvoiceDate(); }
@Override public int compare(final Invoice i1, final Invoice i2) { final LocalDate d1 = i1.getInvoiceDate(); final LocalDate d2 = i2.getInvoiceDate(); if (d1.compareTo(d2) == 0) { return i1.hashCode() - i2.hashCode(); // consistent (arbitrary) resolution for tied dates } return d1.compareTo(d2); } }
@Override public String getFormattedInvoiceDate() { final LocalDate invoiceDate = invoice.getInvoiceDate(); if (invoiceDate == null) { return ""; } else { return Strings.nullToEmpty(invoiceDate.toString(dateFormatter)); } }
@Override public int compare(final Invoice i1, final Invoice i2) { return i2.getInvoiceDate().compareTo(i1.getInvoiceDate()); } });
@Override public int compare(final Invoice i1, final Invoice i2) { return i2.getInvoiceDate().compareTo(i1.getInvoiceDate()); } });
public static Invoice buildInvoice(final Account account) { final Invoice invoice = Mockito.mock(Invoice.class); Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID()); // To work-around org.mockito.exceptions.misusing.UnfinishedStubbingException final UUID accountId = account.getId(); final Currency currency = account.getCurrency(); Mockito.when(invoice.getAccountId()).thenReturn(accountId); Mockito.when(invoice.getInvoiceDate()).thenReturn(new LocalDate()); Mockito.when(invoice.getCurrency()).thenReturn(currency); Mockito.when(invoice.getInvoiceItems()).thenReturn(new LinkedList<InvoiceItem>()); return invoice; }
public BillingState calculateBillingState(final ImmutableAccountData account, final InternalCallContext context) throws OverdueException { final SortedSet<Invoice> unpaidInvoices = unpaidInvoicesForAccount(account.getId(), context); final int numberOfUnpaidInvoices = unpaidInvoices.size(); final BigDecimal unpaidInvoiceBalance = sumBalance(unpaidInvoices); LocalDate dateOfEarliestUnpaidInvoice = null; UUID idOfEarliestUnpaidInvoice = null; final Invoice invoice = earliest(unpaidInvoices); if (invoice != null) { dateOfEarliestUnpaidInvoice = invoice.getInvoiceDate(); idOfEarliestUnpaidInvoice = invoice.getId(); } final PaymentResponse responseForLastFailedPayment = PaymentResponse.INSUFFICIENT_FUNDS; //TODO MDW final List<Tag> accountTags = tagApi.getTags(account.getId(), ObjectType.ACCOUNT, context); final Tag[] tags = accountTags.toArray(new Tag[accountTags.size()]); return new BillingState(account.getId(), numberOfUnpaidInvoices, unpaidInvoiceBalance, dateOfEarliestUnpaidInvoice, idOfEarliestUnpaidInvoice, responseForLastFailedPayment, tags); }
private Invoice createInvoice() { final LocalDate startDate = new LocalDate(new DateTime().minusMonths(1), DateTimeZone.UTC); final LocalDate endDate = new LocalDate(DateTimeZone.UTC); final BigDecimal price1 = new BigDecimal("29.95"); final BigDecimal price2 = new BigDecimal("59.95"); final Invoice dummyInvoice = Mockito.mock(Invoice.class); Mockito.when(dummyInvoice.getInvoiceDate()).thenReturn(startDate); Mockito.when(dummyInvoice.getInvoiceNumber()).thenReturn(42); Mockito.when(dummyInvoice.getCurrency()).thenReturn(Currency.USD); Mockito.when(dummyInvoice.getChargedAmount()).thenReturn(price1.add(price2)); Mockito.when(dummyInvoice.getPaidAmount()).thenReturn(BigDecimal.ZERO); Mockito.when(dummyInvoice.getBalance()).thenReturn(price1.add(price2)); final List<InvoiceItem> items = new ArrayList<InvoiceItem>(); items.add(createInvoiceItem(price1, "Domain 1", startDate, endDate, "ning-plus")); items.add(createInvoiceItem(price2, "Domain 2", startDate, endDate, "ning-pro")); Mockito.when(dummyInvoice.getInvoiceItems()).thenReturn(items); return dummyInvoice; }
private InvoiceItem mergeCBAItem(final List<InvoiceItem> invoiceItems, InvoiceItem mergedCBAItem, final InvoiceItem item) { if (mergedCBAItem == null) { mergedCBAItem = item; } else { // This is really just to be safe - they should always have the same currency if (!mergedCBAItem.getCurrency().equals(item.getCurrency())) { invoiceItems.add(item); } else { mergedCBAItem = new CreditBalanceAdjInvoiceItem(invoice.getId(), invoice.getAccountId(), invoice.getInvoiceDate(), mergedCBAItem.getAmount().add(item.getAmount()), mergedCBAItem.getCurrency()); } } return mergedCBAItem; }
@Override public Void apply(@Nullable final Void input) { try { invoiceUserApi.insertInvoiceItemAdjustment(account.getId(), invoice.getId(), invoice.getInvoiceItems().get(itemNb - 1).getId(), invoice.getInvoiceDate(), null, null, null, callContext); } catch (final InvoiceApiException e) { fail(e.toString()); } return null; } }, events);
private InvoiceItem mergeInvoiceAdjustmentItem(final List<InvoiceItem> invoiceItems, InvoiceItem mergedInvoiceAdjustment, final InvoiceItem item) { if (mergedInvoiceAdjustment == null) { mergedInvoiceAdjustment = item; } else { // This is really just to be safe - they should always have the same currency if (!mergedInvoiceAdjustment.getCurrency().equals(item.getCurrency())) { invoiceItems.add(item); } else { mergedInvoiceAdjustment = new CreditAdjInvoiceItem(invoice.getId(), invoice.getAccountId(), invoice.getInvoiceDate(), mergedInvoiceAdjustment.getDescription(), mergedInvoiceAdjustment.getAmount().add(item.getAmount()), mergedInvoiceAdjustment.getCurrency(), mergedInvoiceAdjustment.getItemDetails()); } } return mergedInvoiceAdjustment; }
public void checkInvoicesEqual(final InvoiceModelDao retrievedInvoice, final Invoice invoice) { Assert.assertEquals(retrievedInvoice.getId(), invoice.getId()); Assert.assertEquals(retrievedInvoice.getAccountId(), invoice.getAccountId()); Assert.assertEquals(retrievedInvoice.getCurrency(), invoice.getCurrency()); Assert.assertEquals(retrievedInvoice.getInvoiceDate(), invoice.getInvoiceDate()); Assert.assertEquals(retrievedInvoice.getTargetDate(), invoice.getTargetDate()); Assert.assertEquals(retrievedInvoice.getInvoiceItems().size(), invoice.getInvoiceItems().size()); Assert.assertEquals(retrievedInvoice.getInvoicePayments().size(), invoice.getPayments().size()); }
@Test(groups = "slow") public void testCreationAndRetrievalByAccount() throws EntityPersistenceException { final UUID accountId = account.getId(); final Invoice invoice = new DefaultInvoice(accountId, clock.getUTCToday(), clock.getUTCToday(), Currency.USD); final LocalDate invoiceDate = invoice.getInvoiceDate(); invoiceUtil.createInvoice(invoice, context); final List<InvoiceModelDao> invoices = invoiceDao.getInvoicesByAccount(false, context); assertNotNull(invoices); assertEquals(invoices.size(), 1); final InvoiceModelDao thisInvoice = invoices.get(0); assertEquals(invoice.getAccountId(), accountId); assertTrue(thisInvoice.getInvoiceDate().compareTo(invoiceDate) == 0); assertEquals(thisInvoice.getCurrency(), Currency.USD); assertEquals(thisInvoice.getInvoiceItems().size(), 0); assertTrue(InvoiceModelDaoHelper.getRawBalanceForRegularInvoice(thisInvoice).compareTo(BigDecimal.ZERO) == 0); }
public InvoiceModelDao(final Invoice invoice) { this(invoice.getId(), invoice.getCreatedDate(), invoice.getAccountId(), invoice.getInvoiceNumber(), invoice.getInvoiceDate(), invoice.getTargetDate(), invoice.getCurrency(), invoice.isMigrationInvoice(), invoice.getStatus(), invoice.isParentInvoice()); }
public InvoiceJson(final Invoice input, final String bundleKeys, final List<CreditJson> credits, final List<AuditLog> auditLogs) { this(input.getChargedAmount(), input.getCurrency(), input.getStatus(), input.getCreditedAmount(), input.getRefundedAmount(), input.getId(), input.getInvoiceDate(), input.getTargetDate(), String.valueOf(input.getInvoiceNumber()), input.getBalance(), input.getAccountId(), bundleKeys, credits, null, input.isParentInvoice(), input.getParentInvoiceId(), input.getParentAccountId(), toAuditLogJson(auditLogs)); }