@Override public LocalDate getTargetDate() { return invoice.getTargetDate(); }
private LocalDate adjustTargetDate(final Iterable<Invoice> existingInvoices, final LocalDate targetDate) { if (existingInvoices == null) { return targetDate; } LocalDate maxDate = targetDate; for (final Invoice invoice : existingInvoices) { if ((invoice.getTargetDate() != null) && invoice.getTargetDate().isAfter(maxDate)) { maxDate = invoice.getTargetDate(); } } return maxDate; }
@Test(groups = "slow") public void testDryRunTargetDatesInTheFuture() throws Exception { final DateTime initialCreationDate = new DateTime(2014, 1, 2, 0, 0, 0, 0, testTimeZone); clock.setTime(initialCreationDate); final Account account = createAccountWithNonOsgiPaymentMethod(getAccountData(0)); // Create the monthly createBaseEntitlementAndCheckForCompletion(account.getId(), "bundleKey", "Shotgun", ProductCategory.BASE, BillingPeriod.MONTHLY, NextEvent.CREATE, NextEvent.BLOCK, NextEvent.INVOICE); final List<ExpectedInvoiceItemCheck> expectedInvoices = new ArrayList<ExpectedInvoiceItemCheck>(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2014, 2, 1), new LocalDate(2014, 3, 1), InvoiceItemType.RECURRING, new BigDecimal("249.95"))); Invoice dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), new LocalDate(2014, 2, 28), DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2014, 2, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2014, 3, 1), new LocalDate(2014, 4, 1), InvoiceItemType.RECURRING, new BigDecimal("249.95"))); dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), new LocalDate(2014, 3, 1), DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2014, 3, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2014, 4, 1), new LocalDate(2014, 5, 1), InvoiceItemType.RECURRING, new BigDecimal("249.95"))); dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), new LocalDate(2014, 4, 1), DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2014, 4, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2014, 5, 1), new LocalDate(2014, 6, 1), InvoiceItemType.RECURRING, new BigDecimal("249.95"))); dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), new LocalDate(2014, 5, 3), DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2014, 5, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); }
@Test(groups = "slow") public void testDryRunTargetDateWithLeadingProration() throws Exception { final DateTime initialCreationDate = new DateTime(2014, 1, 2, 0, 0, 0, 0, testTimeZone); clock.setTime(initialCreationDate); // billing date for the monthly final int billingDay = 14; final Account account = createAccountWithNonOsgiPaymentMethod(getAccountData(billingDay)); // Create the monthly createBaseEntitlementAndCheckForCompletion(account.getId(), "bundleKey", "Shotgun", ProductCategory.BASE, BillingPeriod.MONTHLY, NextEvent.CREATE, NextEvent.BLOCK, NextEvent.INVOICE); final List<ExpectedInvoiceItemCheck> expectedInvoices = new ArrayList<ExpectedInvoiceItemCheck>(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2014, 2, 1), new LocalDate(2014, 2, 14), InvoiceItemType.RECURRING, new BigDecimal("104.82"))); Invoice dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), new LocalDate(2014, 2, 13), DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2014, 2, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2014, 2, 14), new LocalDate(2014, 3, 14), InvoiceItemType.RECURRING, new BigDecimal("249.95"))); dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), new LocalDate(2014, 2, 14), DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2014, 2, 14)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); }
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()); }
final LocalDate today = clock.getUTCToday(); Mockito.when(invoice.getInvoiceDate()).thenReturn(today); Mockito.when(invoice.getTargetDate()).thenReturn(today); Mockito.when(invoice.getCurrency()).thenReturn(currency); Mockito.when(invoice.isMigrationInvoice()).thenReturn(false);
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)); }
assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2017, 5, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear();
assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2015, 2, 14)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2015, 2, 3)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2015, 2, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear();
assertEquals(invoices.size(), 1); assertEquals(invoices.get(0).getInvoiceItems().size(), 1); assertEquals(invoices.get(0).getTargetDate(), new LocalDate(2018, 11, 30)); assertEquals(invoices.get(0).getInvoiceItems().get(0).getStartDate(), new LocalDate(2018, 11, 30)); assertEquals(invoices.get(1).getTargetDate(), new LocalDate(2018, 12, 30)); assertEquals(invoices.get(1).getInvoiceItems().get(0).getStartDate(), new LocalDate(2018, 12, 30)); assertEquals(invoices.get(1).getInvoiceItems().get(0).getEndDate(), new LocalDate(2019, 1, 30));
this.invoiceId = input.getId(); this.invoiceDate = input.getInvoiceDate(); this.targetDate = input.getTargetDate(); this.invoiceNumber = input.getInvoiceNumber() == null ? null : String.valueOf(input.getInvoiceNumber()); this.balance = input.getBalance();
assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2018, 2, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2018, 2, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2018, 2, 1)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices);
lastInvoice.getInvoiceDate(), lastInvoice.getTargetDate(), lastInvoice.getCurrency(), false, InvoiceStatus.COMMITTED, false);
expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2015, 2, 14), new LocalDate(2015, 3, 14), InvoiceItemType.RECURRING, new BigDecimal("29.95"))); dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), null, dryRunUpcomingInvoiceWithFilterArg1, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2015, 2, 14)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear(); expectedInvoices.add(new ExpectedInvoiceItemCheck(new LocalDate(2015, 2, 14), new LocalDate(2015, 3, 14), InvoiceItemType.RECURRING, new BigDecimal("29.95"))); dryRunInvoice = invoiceUserApi.triggerDryRunInvoiceGeneration(account.getId(), null, dryRunUpcomingInvoiceWithFilterArg2, callContext); assertEquals(dryRunInvoice.getTargetDate(), new LocalDate(2015, 2, 14)); invoiceChecker.checkInvoiceNoAudits(dryRunInvoice, expectedInvoices); expectedInvoices.clear();
debugBuilder.append(String.format("Invoice id=[%s], targetDate=[%s]", invoice.getId(), invoice.getTargetDate())); for (final InvoiceItem actualInvoiceItem : actual) { debugBuilder.append(String.format("\n type=[%s] startDate=[%s] endDate=[%s] amount=[%s]", actualInvoiceItem.getInvoiceItemType(), actualInvoiceItem.getStartDate(), actualInvoiceItem.getEndDate(), actualInvoiceItem.getAmount()));