invoiceApi.insertCredit(account.getId(), remainingRequestPayment, clock.getUTCToday(), account.getCurrency(), true, "pay all invoices", null, pluginProperties, callContext);
} else { credit = invoiceUserApi.insertCredit(account.getId(), json.getCreditAmount(), effectiveDate, account.getCurrency(), autoCommit, json.getDescription(), json.getItemDetails(), pluginProperties, callContext);
@Test(groups = "slow", description = "Verify invoice/account balance with migrated invoice. Verify account credit is not consumed and that invoice/account balance does not take into account migrated invoice.") public void testMigratedInvoiceWithAccountCredit() throws Exception { // Add credit on the account invoiceUserApi.insertCredit(accountId, BigDecimal.TEN, null, accountCurrency, true, null, null, null, callContext); final UUID invoiceId = invoiceUserApi.createMigrationInvoice(accountId, null, ImmutableList.<InvoiceItem>of(new FixedPriceInvoiceItem(UUID.randomUUID(), clock.getUTCNow(), null, accountId, null, null, null, "foo", "bar", null, null, BigDecimal.ONE, accountCurrency)), callContext); final Invoice invoice1 = invoiceUserApi.getInvoice(invoiceId, callContext); assertEquals(invoice1.getBalance().compareTo(BigDecimal.ZERO), 0); // Verify credit is **not applied** against migration invoice final BigDecimal accountBalance0 = invoiceUserApi.getAccountBalance(accountId, callContext); assertEquals(accountBalance0.compareTo(new BigDecimal("-10.0")), 0); final BigDecimal accountCBA0 = invoiceUserApi.getAccountCBA(accountId, callContext); assertEquals(accountCBA0.compareTo(BigDecimal.TEN), 0); }
@Test(groups = "slow", description = "Verify invoice/account balance with a WRITTEN_OFF invoice. Verify behavior when WRITTEN_OFF tag is added after credit was added to invoice" ) public void testWrittenOffInvoiceWithAccountCredit() throws Exception { // Add credit on the account invoiceUserApi.insertCredit(accountId, BigDecimal.TEN, null, accountCurrency, true, null, null, null, callContext); final BigDecimal accountBalance0 = invoiceUserApi.getAccountBalance(accountId, callContext); assertEquals(accountBalance0.compareTo(new BigDecimal("-10.0")), 0); final BigDecimal accountCBA0 = invoiceUserApi.getAccountCBA(accountId, callContext); assertEquals(accountCBA0.compareTo(BigDecimal.TEN), 0); // Create new invoice with one charge and expect account credit to be used final List<InvoiceItem> items = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(new ExternalChargeInvoiceItem(UUID.randomUUID(), clock.getUTCNow(), null, accountId, null, null, null, null, new BigDecimal("13.5"), accountCurrency, null)), true, null, callContext); assertEquals(items.size(), 1); final BigDecimal accountBalance1 = invoiceUserApi.getAccountBalance(accountId, callContext); assertEquals(accountBalance1.compareTo(new BigDecimal("3.5")), 0); final BigDecimal accountCBA1 = invoiceUserApi.getAccountCBA(accountId, callContext); assertEquals(accountCBA1.compareTo(BigDecimal.ZERO), 0); // Tag invoice with WRITTEN_OFF and expect balance to now show as Zero tagUserApi.addTag(items.get(0).getInvoiceId(), ObjectType.INVOICE, ControlTagType.WRITTEN_OFF.getId(), callContext); final BigDecimal accountBalance2 = invoiceUserApi.getAccountBalance(accountId, callContext); assertEquals(accountBalance2.compareTo(BigDecimal.ZERO), 0); final BigDecimal accountCBA2 = invoiceUserApi.getAccountCBA(accountId, callContext); assertEquals(accountCBA2.compareTo(BigDecimal.ZERO), 0); }
@Test(groups = "slow", description = "Verify invoice/account balance with DRAFT invoice. Verify that invoice/account balance are ZERO in DRAFT mode but becomes visible after it hasa been COMMITTED." ) public void testDraftInvoiceWithAccountCredit() throws Exception { // Add credit on the account invoiceUserApi.insertCredit(accountId, BigDecimal.TEN, null, accountCurrency, true, null, null, null, callContext); // Create new invoice with one charge and expect account credit to be used final List<InvoiceItem> items = invoiceUserApi.insertExternalCharges(accountId, clock.getUTCToday(), ImmutableList.<InvoiceItem>of(new ExternalChargeInvoiceItem(UUID.randomUUID(), clock.getUTCNow(), null, accountId, null, null, null, null, new BigDecimal("4.0"), accountCurrency, null)), false, null, callContext); assertEquals(items.size(), 1); final UUID invoiceId = items.get(0).getInvoiceId(); final Invoice invoice1 = invoiceUserApi.getInvoice(invoiceId, callContext); assertEquals(invoice1.getStatus(), InvoiceStatus.DRAFT); // Verify CBA was *NOT* applied against DRAFT invoice assertEquals(invoice1.getInvoiceItems().size(), 1); // And balance is ZERO because DRAFT mode assertEquals(invoice1.getBalance().compareTo(BigDecimal.ZERO), 0); // Verify credit is not applied against migration invoice final BigDecimal accountBalance0 = invoiceUserApi.getAccountBalance(accountId, callContext); assertEquals(accountBalance0.compareTo(new BigDecimal("-10.0")), 0); final BigDecimal accountCBA0 = invoiceUserApi.getAccountCBA(accountId, callContext); assertEquals(accountCBA0.compareTo(BigDecimal.TEN), 0); invoiceUserApi.commitInvoice(invoiceId, callContext); final Invoice invoice2 = invoiceUserApi.getInvoice(invoiceId, callContext); assertEquals(invoice2.getStatus(), InvoiceStatus.COMMITTED); // Verify this time credit was applied against COMMITTED invoice assertEquals(invoice2.getBalance().compareTo(BigDecimal.ZERO), 0); final BigDecimal accountBalance1 = invoiceUserApi.getAccountBalance(accountId, callContext); assertEquals(accountBalance1.compareTo(new BigDecimal("-6.0")), 0); final BigDecimal accountCBA1 = invoiceUserApi.getAccountCBA(accountId, callContext); assertEquals(accountCBA1.compareTo(new BigDecimal("6.0")), 0); }
invoiceUserApi.insertCredit(accountId, BigDecimal.TEN, null, accountCurrency, true, null, null, null, callContext);
invoiceUserApi.insertCredit(account.getId(), new BigDecimal("100"), clock.getUTCToday(), account.getCurrency(), true, "VIP", null, null, callContext); assertListenerStatus();
invoiceUserApi.insertCredit(childAccount.getId(), new BigDecimal("250"), new LocalDate(clock.getUTCNow(), childAccount.getTimeZone()), childAccount.getCurrency(), true, null, null, null, callContext); assertListenerStatus();
invoiceUserApi.insertCredit(account.getId(), new BigDecimal("300"), new LocalDate(clock.getUTCNow(), account.getTimeZone()), account.getCurrency(), true, null, null, null, callContext); assertListenerStatus();
invoiceUserApi.insertCredit(childAccount.getId(), BigDecimal.TEN, clock.getUTCToday(), Currency.USD, true, "test", null, null, callContext); assertListenerStatus();
invoiceUserApi.insertCredit(childAccount.getId(), BigDecimal.TEN, clock.getUTCToday(), Currency.USD, true, "test", null, null, callContext); assertListenerStatus();
invoiceUserApi.insertCredit(account.getId(), new BigDecimal("100"), clock.getUTCToday(), account.getCurrency(), true, "VIP", null, null, callContext); assertListenerStatus();
invoiceUserApi.insertCredit(account.getId(), accountBalance, new LocalDate(2012, 06, 30), account.getCurrency(), true, "credit invoice", null, null, callContext); assertListenerStatus();