@GET @Path("/{creditId:" + UUID_PATTERN + "}") @Produces(APPLICATION_JSON) public Response getCredit(@PathParam("creditId") final String creditId, @javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException, AccountApiException { final TenantContext tenantContext = context.createContext(request); final InvoiceItem credit = invoiceUserApi.getCreditById(UUID.fromString(creditId), tenantContext); final Invoice invoice = invoiceUserApi.getInvoice(credit.getInvoiceId(), tenantContext); final CreditJson creditJson = new CreditJson(invoice, credit); return Response.status(Response.Status.OK).entity(creditJson).build(); }
public CreditJson(final Invoice invoice, final InvoiceItem credit, final List<AuditLog> auditLogs) { super(toAuditLogJson(auditLogs)); this.accountId = toString(credit.getAccountId()); this.creditAmount = credit.getAmount(); this.invoiceId = toString(credit.getInvoiceId()); this.invoiceNumber = invoice.getInvoiceNumber().toString(); this.effectiveDate = credit.getStartDate(); }
@Test(groups = "fast") public void testJson() throws Exception { final BigDecimal creditAmount = BigDecimal.TEN; final String invoiceId = UUID.randomUUID().toString(); final String invoiceNumber = UUID.randomUUID().toString(); final LocalDate effectiveDate = clock.getUTCToday(); final String accountId = UUID.randomUUID().toString(); final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow()); final CreditJson creditJson = new CreditJson(creditAmount, invoiceId, invoiceNumber, effectiveDate, accountId, auditLogs); Assert.assertEquals(creditJson.getEffectiveDate(), effectiveDate); Assert.assertEquals(creditJson.getCreditAmount(), creditAmount); Assert.assertEquals(creditJson.getInvoiceId(), invoiceId); Assert.assertEquals(creditJson.getInvoiceNumber(), invoiceNumber); Assert.assertEquals(creditJson.getAccountId(), accountId); final String asJson = mapper.writeValueAsString(creditJson); final CreditJson fromJson = mapper.readValue(asJson, CreditJson.class); Assert.assertEquals(fromJson, creditJson); } }
@POST @Consumes(APPLICATION_JSON) @Produces(APPLICATION_JSON) public Response createCredit(final CreditJson json, @HeaderParam(HDR_CREATED_BY) final String createdBy, @HeaderParam(HDR_REASON) final String reason, @HeaderParam(HDR_COMMENT) final String comment, @javax.ws.rs.core.Context final HttpServletRequest request, @javax.ws.rs.core.Context final UriInfo uriInfo) throws AccountApiException, InvoiceApiException { final CallContext callContext = context.createContext(createdBy, reason, comment, request); final Account account = accountUserApi.getAccountById(UUID.fromString(json.getAccountId()), callContext); final LocalDate effectiveDate = new LocalDate(clock.getUTCNow(), account.getTimeZone()); final InvoiceItem credit; if (json.getInvoiceId() != null) { // Apply an invoice level credit credit = invoiceUserApi.insertCreditForInvoice(account.getId(), UUID.fromString(json.getInvoiceId()), json.getCreditAmount(), effectiveDate, account.getCurrency(), callContext); } else { // Apply a account level credit credit = invoiceUserApi.insertCredit(account.getId(), json.getCreditAmount(), effectiveDate, account.getCurrency(), callContext); } return uriBuilder.buildResponse(uriInfo, CreditResource.class, "getCredit", credit.getId()); }
private CreditJson createCreditJson() { final BigDecimal creditAmount = BigDecimal.TEN; final String invoiceId = UUID.randomUUID().toString(); final String invoiceNumber = UUID.randomUUID().toString(); final LocalDate effectiveDate = clock.getUTCToday(); final String accountId = UUID.randomUUID().toString(); return new CreditJson(creditAmount, invoiceId, invoiceNumber, effectiveDate, accountId, null); } }
if (InvoiceItemType.CREDIT_ADJ.equals(invoiceItem.getInvoiceItemType())) { final List<AuditLog> auditLogs = accountAuditLogs.getAuditLogsForInvoiceItem(invoiceItem.getId()); credits.add(new CreditJson(invoice, invoiceItem, auditLogs));