@Override public InvoiceItemJson apply(@Nullable final InvoiceItem input) { return new InvoiceItemJson(input); } })),
final CallContext callContext = context.createContext(createdBy, reason, comment, request); final UUID accountId = UUID.fromString(json.getAccountId()); final LocalDate requestedDate = toLocalDate(accountId, requestedDateTimeString, callContext); final InvoiceItem adjustmentItem; if (json.getAmount() == null) { adjustmentItem = invoiceApi.insertInvoiceItemAdjustment(accountId, UUID.fromString(invoiceId), UUID.fromString(json.getInvoiceItemId()), requestedDate, callContext); adjustmentItem = invoiceApi.insertInvoiceItemAdjustment(accountId, UUID.fromString(invoiceId), UUID.fromString(json.getInvoiceItemId()), requestedDate, json.getAmount(), json.getCurrency(), callContext);
final Currency currency = Currency.MXN; final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow()); final InvoiceItemJson invoiceItemJson = new InvoiceItemJson(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId, bundleId, subscriptionId, planName, phaseName, type, description, startDate, endDate, amount, currency, auditLogs); Assert.assertEquals(invoiceItemJson.getInvoiceItemId(), invoiceItemId); Assert.assertEquals(invoiceItemJson.getInvoiceId(), invoiceId); Assert.assertEquals(invoiceItemJson.getLinkedInvoiceItemId(), linkedInvoiceItemId); Assert.assertEquals(invoiceItemJson.getAccountId(), accountId); Assert.assertEquals(invoiceItemJson.getBundleId(), bundleId); Assert.assertEquals(invoiceItemJson.getSubscriptionId(), subscriptionId); Assert.assertEquals(invoiceItemJson.getPlanName(), planName); Assert.assertEquals(invoiceItemJson.getPhaseName(), phaseName); Assert.assertEquals(invoiceItemJson.getItemType(), type); Assert.assertEquals(invoiceItemJson.getDescription(), description); Assert.assertEquals(invoiceItemJson.getStartDate(), startDate); Assert.assertEquals(invoiceItemJson.getEndDate(), endDate); Assert.assertEquals(invoiceItemJson.getAmount(), amount); Assert.assertEquals(invoiceItemJson.getCurrency(), currency); Assert.assertEquals(invoiceItemJson.getAuditLogs(), auditLogs);
final CallContext callContext = context.createContext(createdBy, reason, comment, request); final Account account = accountUserApi.getAccountById(UUID.fromString(externalChargeJson.getAccountId()), callContext); final Currency currency = Objects.firstNonNull(externalChargeJson.getCurrency(), account.getCurrency()); final InvoiceItem externalCharge; if (externalChargeJson.getBundleId() != null) { externalCharge = invoiceApi.insertExternalChargeForInvoiceAndBundle(account.getId(), invoiceId, UUID.fromString(externalChargeJson.getBundleId()), externalChargeJson.getAmount(), externalChargeJson.getDescription(), requestedDate, currency, callContext); } else { externalCharge = invoiceApi.insertExternalChargeForInvoice(account.getId(), invoiceId, externalChargeJson.getAmount(), externalChargeJson.getDescription(), requestedDate, currency, callContext);
final Map<UUID, BigDecimal> adjustments = new HashMap<UUID, BigDecimal>(); for (final InvoiceItemJson item : json.getAdjustments()) { adjustments.put(UUID.fromString(item.getInvoiceItemId()), item.getAmount());
Mockito.when(invoiceItem.getInvoiceItemType()).thenReturn(InvoiceItemType.FIXED); final InvoiceItemJson invoiceItemJson = new InvoiceItemJson(invoiceItem); Assert.assertEquals(invoiceItemJson.getInvoiceItemId(), invoiceItem.getId().toString()); Assert.assertEquals(invoiceItemJson.getInvoiceId(), invoiceItem.getInvoiceId().toString()); Assert.assertEquals(invoiceItemJson.getLinkedInvoiceItemId(), invoiceItem.getLinkedItemId().toString()); Assert.assertEquals(invoiceItemJson.getAccountId(), invoiceItem.getAccountId().toString()); Assert.assertEquals(invoiceItemJson.getBundleId(), invoiceItem.getBundleId().toString()); Assert.assertEquals(invoiceItemJson.getSubscriptionId(), invoiceItem.getSubscriptionId().toString()); Assert.assertEquals(invoiceItemJson.getPlanName(), invoiceItem.getPlanName()); Assert.assertEquals(invoiceItemJson.getPhaseName(), invoiceItem.getPhaseName()); Assert.assertEquals(invoiceItemJson.getDescription(), invoiceItem.getDescription()); Assert.assertEquals(invoiceItemJson.getStartDate(), invoiceItem.getStartDate()); Assert.assertEquals(invoiceItemJson.getEndDate(), invoiceItem.getEndDate()); Assert.assertEquals(invoiceItemJson.getAmount(), invoiceItem.getAmount()); Assert.assertEquals(invoiceItemJson.getCurrency(), invoiceItem.getCurrency());
final CallContext callContext = context.createContext(createdBy, reason, comment, request); final Account account = accountUserApi.getAccountById(UUID.fromString(externalChargeJson.getAccountId()), callContext); final Currency currency = Objects.firstNonNull(externalChargeJson.getCurrency(), account.getCurrency()); final InvoiceItem externalCharge; if (externalChargeJson.getBundleId() != null) { externalCharge = invoiceApi.insertExternalChargeForBundle(account.getId(), UUID.fromString(externalChargeJson.getBundleId()), externalChargeJson.getAmount(), externalChargeJson.getDescription(), requestedDate, currency, callContext); } else { externalCharge = invoiceApi.insertExternalCharge(account.getId(), externalChargeJson.getAmount(), externalChargeJson.getDescription(), requestedDate, currency, callContext);
private InvoiceItemJson createInvoiceItemJson() { final String invoiceItemId = UUID.randomUUID().toString(); final String invoiceId = UUID.randomUUID().toString(); final String linkedInvoiceItemId = UUID.randomUUID().toString(); final String accountId = UUID.randomUUID().toString(); final String bundleId = UUID.randomUUID().toString(); final String subscriptionId = UUID.randomUUID().toString(); final String planName = UUID.randomUUID().toString(); final String phaseName = UUID.randomUUID().toString(); final String description = UUID.randomUUID().toString(); final LocalDate startDate = clock.getUTCToday(); final LocalDate endDate = clock.getUTCToday(); final String type = "FIXED"; final BigDecimal amount = BigDecimal.TEN; final Currency currency = Currency.MXN; final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow()); return new InvoiceItemJson(invoiceItemId, invoiceId, linkedInvoiceItemId, accountId, bundleId, subscriptionId, planName, phaseName, type, description, startDate, endDate, amount, currency, auditLogs); } }
public InvoiceJson(final Invoice input, final boolean withItems, @Nullable final AccountAuditLogs accountAuditLogs) { super(toAuditLogJson(accountAuditLogs == null ? null : accountAuditLogs.getAuditLogsForInvoice(input.getId()))); this.items = new ArrayList<InvoiceItemJson>(input.getInvoiceItems().size()); if (withItems) { for (final InvoiceItem item : input.getInvoiceItems()) { this.items.add(new InvoiceItemJson(item, accountAuditLogs == null ? null : accountAuditLogs.getAuditLogsForInvoiceItem(item.getId()))); } } this.amount = input.getChargedAmount(); this.currency = input.getCurrency().toString(); this.creditAdj = input.getCreditedAmount(); this.refundAdj = input.getRefundedAmount(); this.invoiceId = input.getId().toString(); this.invoiceDate = input.getInvoiceDate(); this.targetDate = input.getTargetDate(); this.invoiceNumber = input.getInvoiceNumber() == null ? null : String.valueOf(input.getInvoiceNumber()); this.balance = input.getBalance(); this.accountId = input.getAccountId().toString(); this.bundleKeys = null; this.credits = null; }