use of org.killbill.billing.invoice.model.RecurringInvoiceItem in project killbill by killbill.
the class TestSubscriptionItemTree method testMergeTwoDifferentItems.
@Test(groups = "fast")
public void testMergeTwoDifferentItems() {
final LocalDate startDate = new LocalDate(2014, 1, 1);
final LocalDate endDate = new LocalDate(2014, 2, 1);
final BigDecimal monthlyRate1 = new BigDecimal("12.00");
final BigDecimal monthlyAmount1 = monthlyRate1;
final BigDecimal monthlyRate2 = new BigDecimal("15.00");
final BigDecimal monthlyAmount2 = monthlyRate2;
final SubscriptionItemTree tree = new SubscriptionItemTree(subscriptionId, invoiceId);
final InvoiceItem monthly1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, endDate, monthlyAmount1, monthlyRate1, currency);
tree.addItem(monthly1);
tree.flatten(true);
final InvoiceItem proposed1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, endDate, monthlyAmount2, monthlyRate2, currency);
tree.mergeProposedItem(proposed1);
tree.buildForMerge();
final List<InvoiceItem> expectedResult = Lists.newLinkedList();
final InvoiceItem repair = new RepairAdjInvoiceItem(invoiceId, accountId, startDate, endDate, monthlyAmount1.negate(), currency, monthly1.getId());
expectedResult.add(proposed1);
expectedResult.add(repair);
verifyResult(tree.getView(), expectedResult);
}
use of org.killbill.billing.invoice.model.RecurringInvoiceItem in project killbill by killbill.
the class TestSubscriptionItemTree method testBlockUnblock.
@Test(groups = "fast", description = "https://github.com/killbill/killbill/issues/1205")
public void testBlockUnblock() {
final LocalDate startDate = new LocalDate(2019, 4, 27);
final LocalDate blockDate = new LocalDate(2019, 5, 3);
final LocalDate endDate = new LocalDate(2019, 5, 27);
final BigDecimal rate = new BigDecimal("29.95");
final BigDecimal amount = rate;
final InvoiceItem recurring1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, endDate, amount, rate, currency);
final InvoiceItem repair1 = new RepairAdjInvoiceItem(invoiceId, accountId, blockDate, endDate, new BigDecimal("-23.96"), currency, recurring1.getId());
final SubscriptionItemTree tree = new SubscriptionItemTree(subscriptionId, invoiceId);
tree.addItem(recurring1);
tree.addItem(repair1);
tree.build();
final List<InvoiceItem> expectedResult = Lists.newLinkedList();
expectedResult.add(new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, blockDate, new BigDecimal("5.99"), rate, currency));
verifyResult(tree.getView(), expectedResult);
tree.flatten(true);
tree.buildForMerge();
expectedResult.clear();
expectedResult.addAll(ImmutableList.of(new RepairAdjInvoiceItem(invoiceId, accountId, startDate, blockDate, new BigDecimal("-5.99"), currency, recurring1.getId())));
verifyResult(tree.getView(), expectedResult);
}
use of org.killbill.billing.invoice.model.RecurringInvoiceItem in project killbill by killbill.
the class TestSubscriptionItemTree method testAnnualWithBlocking2.
@Test(groups = "fast")
public void testAnnualWithBlocking2() {
final LocalDate startDate = new LocalDate(2014, 1, 1);
final LocalDate endDate = new LocalDate(2015, 1, 1);
final LocalDate startBlock = new LocalDate(2014, 1, 14);
final LocalDate endBlock = new LocalDate(2014, 2, 8);
final LocalDate newEndDate = new LocalDate(2015, 2, 1);
final BigDecimal yearlyRate = new BigDecimal("100.00");
final BigDecimal yearlyAmount = yearlyRate;
final InvoiceItem annual1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, endDate, yearlyAmount, yearlyRate, currency);
final InvoiceItem repair = new RepairAdjInvoiceItem(invoiceId, accountId, startBlock, endBlock, new BigDecimal("-6.85"), currency, annual1.getId());
final InvoiceItem annual2 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, endDate, newEndDate, yearlyAmount, yearlyRate, currency);
final SubscriptionItemTree tree = new SubscriptionItemTree(subscriptionId, invoiceId);
tree.addItem(annual1);
tree.addItem(repair);
tree.addItem(annual2);
tree.build();
tree.flatten(true);
final InvoiceItem proposed1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, startBlock, BigDecimal.TEN, yearlyAmount, currency);
final InvoiceItem proposed2 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, endBlock, newEndDate, new BigDecimal("90.0"), yearlyAmount, currency);
tree.mergeProposedItem(proposed1);
tree.mergeProposedItem(proposed2);
tree.buildForMerge();
final List<InvoiceItem> expectedResult = Lists.newLinkedList();
expectedResult.addAll(ImmutableList.of());
verifyResult(tree.getView(), expectedResult);
}
use of org.killbill.billing.invoice.model.RecurringInvoiceItem in project killbill by killbill.
the class TestSubscriptionItemTree method testRepairWithSmallItemAdjustment.
@Test(groups = "fast")
public void testRepairWithSmallItemAdjustment() {
final LocalDate startDate = new LocalDate(2014, 1, 1);
final LocalDate itemAdjDate = new LocalDate(2014, 1, 2);
final LocalDate endDate = new LocalDate(2014, 2, 1);
final LocalDate cancelDate = new LocalDate(2014, 1, 23);
final BigDecimal rate1 = new BigDecimal("12.00");
final BigDecimal amount1 = rate1;
final SubscriptionItemTree tree = new SubscriptionItemTree(subscriptionId, invoiceId);
final InvoiceItem initial = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, endDate, amount1, rate1, currency);
final InvoiceItem itemAdj = new ItemAdjInvoiceItem(initial, itemAdjDate, new BigDecimal("-2.00"), currency);
tree.addItem(initial);
tree.addItem(itemAdj);
tree.flatten(true);
final InvoiceItem proposed1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, cancelDate, amount1, rate1, currency);
tree.mergeProposedItem(proposed1);
tree.buildForMerge();
final List<InvoiceItem> expectedResult = Lists.newLinkedList();
final InvoiceItem repair1 = new RepairAdjInvoiceItem(invoiceId, accountId, cancelDate, endDate, new BigDecimal("-3.48"), currency, initial.getId());
expectedResult.add(repair1);
verifyResult(tree.getView(), expectedResult);
}
use of org.killbill.billing.invoice.model.RecurringInvoiceItem in project killbill by killbill.
the class TestSubscriptionItemTree method testMergeCancellationWithMiddleRepair.
@Test(groups = "fast")
public void testMergeCancellationWithMiddleRepair() {
final LocalDate startDate = new LocalDate(2014, 1, 1);
final LocalDate blockDate = new LocalDate(2014, 1, 13);
final LocalDate unblockDate = new LocalDate(2014, 1, 25);
final LocalDate endDate = new LocalDate(2014, 2, 1);
final BigDecimal monthlyRate1 = new BigDecimal("12.00");
final BigDecimal monthlyAmount1 = monthlyRate1;
final SubscriptionItemTree tree = new SubscriptionItemTree(subscriptionId, invoiceId);
final InvoiceItem monthly1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, endDate, monthlyAmount1, monthlyRate1, currency);
tree.addItem(monthly1);
tree.flatten(true);
final InvoiceItem proposed1 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, startDate, blockDate, monthlyAmount1, monthlyRate1, currency);
final InvoiceItem proposed2 = new RecurringInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, null, unblockDate, endDate, monthlyAmount1, monthlyRate1, currency);
tree.mergeProposedItem(proposed1);
tree.mergeProposedItem(proposed2);
tree.buildForMerge();
final List<InvoiceItem> expectedResult = Lists.newLinkedList();
final InvoiceItem repair = new RepairAdjInvoiceItem(invoiceId, accountId, blockDate, unblockDate, new BigDecimal("-4.65"), currency, monthly1.getId());
expectedResult.add(repair);
verifyResult(tree.getView(), expectedResult);
}
Aggregations