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 boolean apply(final Invoice input) { return input.getStatus() == InvoiceStatus.DRAFT; } }).orNull();
@Override public InvoiceStatus getStatus() { return invoice.getStatus(); }
@Test(groups = "slow") public void testVoidInvoice() throws Exception { // try to void invoice invoiceUserApi.voidInvoice(invoiceId, callContext); final Invoice invoice = invoiceUserApi.getInvoice(invoiceId, callContext); Assert.assertEquals(invoice.getStatus(), InvoiceStatus.VOID); }
@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); }
Mockito.when(invoice.getCurrency()).thenReturn(currency); Mockito.when(invoice.isMigrationInvoice()).thenReturn(false); Mockito.when(invoice.getStatus()).thenReturn(InvoiceStatus.COMMITTED);
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(invoices.size(), 1); assertEquals(invoices.get(0).getInvoiceItems().size(), 1); assertEquals(invoices.get(0).getStatus(), InvoiceStatus.DRAFT); assertEquals(invoices.get(0).getId(), invoiceId); assertEquals(invoices.get(0).getInvoiceItems().size(), 2); assertEquals(invoices.get(0).getStatus(), InvoiceStatus.DRAFT); assertEquals(invoices.get(0).getId(), invoiceId); assertEquals(invoices.get(0).getInvoiceItems().size(), 3); assertEquals(invoices.get(0).getStatus(), InvoiceStatus.DRAFT); assertEquals(invoices.get(0).getId(), invoiceId); assertEquals(invoices.get(0).getInvoiceItems().size(), 4); assertEquals(invoices.get(0).getStatus(), InvoiceStatus.COMMITTED); assertEquals(invoices.size(), 2); assertEquals(invoices.get(1).getInvoiceItems().size(), 1); assertEquals(invoices.get(1).getStatus(), InvoiceStatus.COMMITTED);
assertEquals(invoices.size(), 1); final Invoice trialInvoice = invoices.get(0); assertEquals(trialInvoice.getStatus(), InvoiceStatus.DRAFT); assertEquals(firstNonTrialInvoice.getStatus(), InvoiceStatus.DRAFT); assertEquals(firstNonTrialInvoice.getInvoiceDate(), new LocalDate(2017, 07, 16)); assertEquals(invoices.get(1).getStatus(), InvoiceStatus.DRAFT); assertEquals(invoices.get(2).getStatus(), InvoiceStatus.COMMITTED);
this.status = input.getStatus(); this.creditAdj = input.getCreditedAmount(); this.refundAdj = input.getRefundedAmount();
assertEquals(parentInvoice.getStatus(), InvoiceStatus.DRAFT); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getStatus(), InvoiceStatus.COMMITTED); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getChargedAmount().compareTo(BigDecimal.valueOf(19.95)), 0);
assertEquals(parentInvoice.getStatus(), InvoiceStatus.COMMITTED); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getChargedAmount().compareTo(BigDecimal.valueOf(29.95)), 0);
assertEquals(invoices.get(1).getStatus(), InvoiceStatus.VOID);
assertEquals(parentInvoice.getStatus(), InvoiceStatus.COMMITTED); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getChargedAmount().compareTo(BigDecimal.valueOf(249.95)), 0); assertEquals(parentInvoice.getStatus(), InvoiceStatus.COMMITTED); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getChargedAmount().compareTo(BigDecimal.valueOf(249.95)), 0);
assertEquals(parentInvoice.getStatus(), InvoiceStatus.DRAFT); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getStatus(), InvoiceStatus.DRAFT); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getStatus(), InvoiceStatus.COMMITTED); assertEquals(parentInvoice.getBalance().compareTo(BigDecimal.ZERO), 0);
assertEquals(parentInvoice.getStatus(), InvoiceStatus.COMMITTED); assertTrue(parentInvoice.isParentInvoice()); assertEquals(parentInvoice.getBalance().compareTo(BigDecimal.ZERO), 0);