@TimedResource @GET @Path("/byNumber/{invoiceNumber:" + NUMBER_PATTERN + "}/") @Produces(APPLICATION_JSON) @ApiOperation(value = "Retrieve an invoice by number", response = InvoiceJson.class) @ApiResponses(value = {@ApiResponse(code = 404, message = "Invoice not found")}) public Response getInvoiceByNumber(@PathParam("invoiceNumber") final Integer invoiceNumber, @QueryParam(QUERY_INVOICE_WITH_ITEMS) @DefaultValue("false") final boolean withItems, @QueryParam(QUERY_INVOICE_WITH_CHILDREN_ITEMS) @DefaultValue("false") final boolean withChildrenItems, @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode, @javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException { final TenantContext tenantContext = context.createTenantContextNoAccountId(request); final Invoice invoice = invoiceApi.getInvoiceByNumber(invoiceNumber, tenantContext); final List<InvoiceItem> childInvoiceItems = withChildrenItems ? invoiceApi.getInvoiceItemsByParentInvoice(invoice.getId(), tenantContext) : null; final AccountAuditLogs accountAuditLogs = auditUserApi.getAccountAuditLogs(invoice.getAccountId(), auditMode.getLevel(), tenantContext); final InvoiceJson json = new InvoiceJson(invoice, withItems, childInvoiceItems, accountAuditLogs); return Response.status(Status.OK).entity(json).build(); }
@TimedResource @GET @Path("/byItemId/{itemId:" + UUID_PATTERN + "}/") @Produces(APPLICATION_JSON) @ApiOperation(value = "Retrieve an invoice by invoice item id", response = InvoiceJson.class) @ApiResponses(value = {@ApiResponse(code = 404, message = "Invoice not found")}) public Response getInvoiceByItemId(@PathParam("itemId") final UUID invoiceItemId, @QueryParam(QUERY_INVOICE_WITH_ITEMS) @DefaultValue("false") final boolean withItems, @QueryParam(QUERY_INVOICE_WITH_CHILDREN_ITEMS) @DefaultValue("false") final boolean withChildrenItems, @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode, @javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException { final TenantContext tenantContext = context.createTenantContextNoAccountId(request); final Invoice invoice = invoiceApi.getInvoiceByInvoiceItem(invoiceItemId, tenantContext); final List<InvoiceItem> childInvoiceItems = withChildrenItems ? invoiceApi.getInvoiceItemsByParentInvoice(invoice.getId(), tenantContext) : null; final AccountAuditLogs accountAuditLogs = auditUserApi.getAccountAuditLogs(invoice.getAccountId(), auditMode.getLevel(), tenantContext); final InvoiceJson json = new InvoiceJson(invoice, withItems, childInvoiceItems, accountAuditLogs); return Response.status(Status.OK).entity(json).build(); }
@TimedResource @GET @Path("/{invoiceId:" + UUID_PATTERN + "}/") @Produces(APPLICATION_JSON) @ApiOperation(value = "Retrieve an invoice by id", response = InvoiceJson.class) @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid invoice id supplied"), @ApiResponse(code = 404, message = "Invoice not found")}) public Response getInvoice(@PathParam("invoiceId") final UUID invoiceId, @QueryParam(QUERY_INVOICE_WITH_ITEMS) @DefaultValue("false") final boolean withItems, @QueryParam(QUERY_INVOICE_WITH_CHILDREN_ITEMS) @DefaultValue("false") final boolean withChildrenItems, @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode, @javax.ws.rs.core.Context final HttpServletRequest request) throws InvoiceApiException { final TenantContext tenantContext = context.createTenantContextNoAccountId(request); final Invoice invoice = invoiceApi.getInvoice(invoiceId, tenantContext); if (invoice == null) { throw new InvoiceApiException(ErrorCode.INVOICE_NOT_FOUND, invoiceId); } final List<InvoiceItem> childInvoiceItems = withChildrenItems ? invoiceApi.getInvoiceItemsByParentInvoice(invoice.getId(), tenantContext) : null; final AccountAuditLogs accountAuditLogs = auditUserApi.getAccountAuditLogs(invoice.getAccountId(), auditMode.getLevel(), tenantContext); final InvoiceJson json = new InvoiceJson(invoice, withItems, childInvoiceItems, accountAuditLogs); return Response.status(Status.OK).entity(json).build(); }
final List<InvoiceItem> childrenInvoiceItems = invoiceUserApi.getInvoiceItemsByParentInvoice(parentInvoice.getId(), callContext); assertEquals(childrenInvoiceItems.size(), 2); assertEquals(childrenInvoiceItems.get(0).getAccountId(), child1Account.getId()); assertEquals(invoiceUserApi.getInvoiceItemsByParentInvoice(child1Invoices.get(1).getId(), callContext).size(), 0);
final List<InvoiceItem> childrenInvoiceItems = invoiceUserApi.getInvoiceItemsByParentInvoice(parentInvoice.getId(), callContext); assertEquals(childrenInvoiceItems.size(), 1); assertEquals(childrenInvoiceItems.get(0).getAccountId(), childAccount.getId()); assertEquals(invoiceUserApi.getInvoiceItemsByParentInvoice(childInvoices.get(1).getId(), callContext).size(), 0);