Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Requirements:
Jira
serverFOLIO Issue Tracker
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId6ccf3fe4-3301-368a-983e-20c466b11a49
keyFOLIO-2269

...

1. Circulation

The most relevant example from circulation is when the item status is changed as part of circulation processes.

...

Using an example from above, during a check in, a loan might be closed and request fulfilment might start. It might be that both of these operations need to be reversed if one fails (it might also be that repeating the process is acceptable).

2. Orders

Spike: Spike: Guarantee of the PO Line status up-to-date

2.1 Automatically adjust order status based on poLine's paymentStatus and receivingStatus

Story: 

Jira
serverFOLIO Issue Tracker
serverId6ccf3fe4-3301-368a-983e-20c466b11a49
keyMODORDERS-218

...

The event bus message is sent for particular cases: PO Line is successfully updated or receiving/check-in successfully resulted to PO Line receiving status update. The order status handler is registered for event bus consumer. The handler receives array of order ids and performs needed logic.

2.2 Ensure receiptStatus consistency between piece and poLine

Story: 

Jira
serverFOLIO Issue Tracker
serverId6ccf3fe4-3301-368a-983e-20c466b11a49
keyMODORDERS-173

...

The receiptStatus of PO Line is calculated whenever a related Piece record's receivingStatus is changed. This happens asynchronously via the vertx event bus.

3. Invoices

3.1 Calculate Invoice Totals

Story: 

Jira
serverFOLIO Issue Tracker
serverId6ccf3fe4-3301-368a-983e-20c466b11a49
keyMODINVOICE-52

Whenever an invoice is created, updated or retrieved, the invoice.subTotal, invoice.adjustmentsTotal, and invoice.total need to be calculated and returned in the response.

Current solution

Calculating "on the fly" on GET request - invoice totals are never persisted - the only exception is if invoice.lockTotal == true, then invoice.total is persisted and never replaced w/ a calculated value.

3.2 Avoiding partially paid invoices

Spike: Spike: Avoiding partially paid invoices POC

...

Either all or none of these need to be successfully processed; we can't have partially paid invoices. This corresponds to distributed transaction where the context of several modules is used. This presents a challenge of scale. There could feasibly be hundreds of payments for an invoice.

Current solution

Combination of temporary tables and DB transactions.