Table of Contents |
---|
...
The purpose of practical tasks in the implementation of CRUD API to insert/updating/obtaining the order line number with which the invoice line is associated.
Useful links and information
Full flow - Onboarding.postman_collection.json - Download this collection that allows you to create an order with an order line as well as an invoice and an invoice line based on the order line.
Apply last update from sub-module.PNG - How to set your sub module on specific commit or branch
Tasks
1. Create/Update schema → mod-invoice-storage
First of all we need to define JSON schema "po_line_vs_invoice_line.json" for model which should contain next fields :
Name | Type | Mandatory | Description | Note |
---|---|---|---|---|
id | UUID | Y | Unique identifier. | This field is mandatory for RMB |
poLineId | UUID | Y | Reference on order line | |
poLineNumber | Pattern | Y | Number of the order line | The same pattern as in the po_line.json |
invoiceLineId | UUID | Y | Reference on invoice line | |
invoiceLineNumber | String | Y | Number of the invoice line |
On the FOLIO project JSON schema is used to define models which will be used as REST request/response and also save in the PostgreSQL : https://json-schema.org/
https://github.com/folio-org/acq-models → This is the central repository for the models of the various acquisition modules.
1.1 Please create schema "po_line_vs_invoice_line.json" in the mod-invoice-storage/schemas of theacq-models. Also add examplemod-invoice-storage/examples.
...
Note : Don't merge your PR and just provide for review
! Important (issue with module upgrade and load sample and reference)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{{okapiprotocol}}://{{okapiurl}}:{{okapiport}}/_/proxy/tenants/{{xokapitenant}}/install?tenantParameters=loadSample=false,loadReference=false
12:49
@Override
public Future<Integer> loadData(TenantAttributes attributes, String tenantId, Map<String, String> headers, Context vertxContext) {
// log.info("postTenant");
// Vertx vertx = vertxContext.owner();
// Parameter parameter = new Parameter().withKey(PARAMETER_LOAD_SYSTEM).withValue("true");
// attributes.getParameters().add(parameter);
//
// TenantLoading tl = new TenantLoading();
// buildDataLoadingParameters(attributes, tl);
//
// DBClient client = new DBClient(vertxContext, headers);
//
// return Future.succeededFuture()
// .compose(v -> migration(attributes, "mod-invoice-storage-5.2.0",
// () -> migrationService.syncOrderPoNumbersWithInvoicePoNumbers(headers, vertxContext)))
// .compose(v -> {
//
// Promise<Integer> promise = Promise.promise();
//
// tl.perform(attributes, headers, vertx, res -> {
// if (res.failed()) {
// promise.fail(res.cause());
// } else {
// promise.complete(res.result());
// }
// });
// return promise.future();
// })
// .onFailure(throwable -> Future.failedFuture(throwable.getCause()));
return Future.succeededFuture(0);
} |
3. Define business GET APIs → mod-invoice
...