Author | Andrei Makaranka | ||||||||
---|---|---|---|---|---|---|---|---|---|
JIRA task |
| ||||||||
Business Requirements | |||||||||
Architects Review |
| ||||||||
PO review |
|
Table of Contents | ||
---|---|---|
|
...
Version | Date | Owner | Description | Reason |
---|---|---|---|---|
v1.0 | 06.14.2022 | Andrei Makaranka | Initial version | |
v2.0 | 06.22.2022 | Schema changed and WBS added | ||
v2.1 | 06.30.2022 | Status for preview added | ||
v3.0 | 07.07.20202022 | Andrei Makaranka | Redesign and rollover logs functionality added | Requirements changed |
Overview
...
v4.0 | 08.03.2022 | Andrei Makaranka | Rename "action" field tp "rolloverType" |
Overview
Allow user to generate a rollover report that will tell the user what errors may occur if rolling over with current data.
...
- Ledger Fiscal Year Rollover already implemented.
- It is likely that we will be creating upwards of 75000 - 100000 encumbrances during this process. (statistics from Library).
- Prepare report with Unpaid invoices is UI responsibility.
...
Property | Type | Read Only | Default | Required | Notes |
---|---|---|---|---|---|
actionrolloverType | enum ["Preview", "Commit", "Rollback"] | truefalse | Commit | Y |
|
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "$schema": "http://json-schema.org/draft-04/schema#", "description": "Contains a list of budgets generated during the rollover. Also budgets include all calculated mounts", "type": "object", "properties": { "budgets": { "description": "The list of fiscal year rollover errors", "type": "array", "items": { "$ref": "ledger_fiscal_year_rollover_budget.json" } }, "totalRecords": { "description": "The number of records contained in this collection", "type": "integer", "minimum": 0 } }, "additionalProperties": false, "required": [ "budgets", "totalRecords" ] } |
Create new DB Table "ledger_fiscal_year_rollover_
...
budget" → schema.json
In the database will be stored records with type of "ledger_fiscal_year_rollover_budget"
Create ledger fiscal year rollover Logs schemas
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "tableName": "ledger_fiscal_year_rollover_ |
...
ledgerRolloverId
UUID
...
Y
...
budget",
"fromModuleVersion": "mod-finance-storage-8.1.7",
"withMetadata": true,
"index": [
{
"fieldName": "ledgerRolloverId",
"tOps": "ADD",
"caseSensitive": false,
"removeAccents": true
},
{
"fieldName": "fundId",
"tOps": "ADD",
"caseSensitive": false,
"removeAccents": true
},
{
"fieldName": "fiscalYearId"
}
],
"foreignKeys": [
{
"fieldName": "ledgerRolloverId",
"targetTable": "ledger_fiscal_year_rollover",
"tableAlias": "ledgerFYROBudget",
"targetTableAlias": "ledgerFYRO",
"tOps": "ADD"
}
]
} |
Create ledger fiscal year rollover Logs schemas
Schema name : ledger_fiscal_year_rollover_log
Property | Type | Read Only | Default | Required | Notes |
---|---|---|---|---|---|
ledgerRolloverId | UUID | true | NA | Y | |
startDate | date-time | true | NA | Y | This is "creratedDate" from rollover metadata. |
endDate | date-time | true | NA | This is "updatedDate" from rollover metadata. Should be provided only when "status" is "Success" or "Error". | |
rolloverStatus | ramls/acq-models/mod-finance/schemas/rollover_status.json | true | NA | Y | |
errorsLink | String or pattern | true | NA | N | If possible Link should included environment URL : https://okapi-bugfest-lotus.int.aws.folio.org/finance/ledger-rollovers-errors?query=ledgerRolloverId=={id}fff-e-errors |
budgetsLink | String or pattern | true | NA | N | If possible Link should included environment URL : https://okapi-bugfest-lotus.int.aws.folio.org/finance/ledger-rollovers-budgets? |
query=ledgerRolloverId=={id}fff- | |||||
ledgerRolloverType | enum ["Preview", "Commit", "Rollback"] | true | NA | Y |
Schema name : ledger_fiscal_year_rollover_log_collection
...
Ledger Rollover generated Budgets Business API
Method | Path | Request | Response | Description | Interface | Notes |
---|---|---|---|---|---|---|
GET | /finance/ledger-rollovers-budgets/{id} | NA | ledger_fiscal_year_rollover_budget | GET budgets of the ledger fiscal year rollover by id | finance.ledger-rollovers-budgets.item.get | Status : 200 |
GET | /finance/ledger-rollovers-budgets | NA | ledger_fiscal_year_rollover_budget_collection | GET budgets of the ledger fiscal year rollovers | finance.ledger-rollovers-budgets.collection.get | Status : 200 |
Ledger Rollover generated Budgets Storage API
Method | Path | Request | Response | Description | Interface | Notes |
---|---|---|---|---|---|---|
GET | /finance/ledger-rollovers-budgets/{id} | NA | ledger_fiscal_year_rollover_budget | GET budgets of the ledger fiscal year rollover by id | finance.ledger-rollovers-budgets.item.get | Status : 200 |
GET | /finance/ledger-rollovers-budgets | NA | ledger_fiscal_year_rollover_budget_collection | GET budgets of the ledger fiscal year rollovers | finance.ledger-rollovers-budgets.collection.get | Status : 200 |
Ledger Rollover Logs Business API
Method | Path | Request | Response | Description | Interface | Notes | Interface | Notes | |
---|---|---|---|---|---|---|---|---|---|
GET | /finance/ledger-rollovers-logs/{id} | NA | ledger_fiscal_year_rollover_log | GET logs of the ledger fiscal year rollover by id | finance.ledger-rollovers-logs.item.get | Status : 200 | |||
GET | /finance/ledger-rollovers-logs | /{id}NA | ledger_fiscal_year_rollover_log_collection | GET logs of the ledger fiscal year | rollover by idrollovers | finance.ledger-rollovers-logs. | itemcollection.get | Status : 200 | |
GET | /finance/ledger-rollovers-logs | NA | ledger_fiscal_year_rollover_log_collection | GET logs of the ledger fiscal year rollovers | finance.ledger-rollovers-logs.collection.get | Status : 200 |
Preview Ledger Rollover Storage API
Method | Path | Request | Response | Description | Interface | Notes |
---|---|---|---|---|---|---|
GET | /finance-storage/ledger-rollovers-logs/{id} | NA | ledger_fiscal_year_rollover_log | GET logs of the ledger fiscal year rollover by id | finance-storage.ledger-rollovers-logs.item.get | Status : 200 |
GET | /finance-storage/ledger-rollovers-logs | NA |
Design
Work Breakdown Structure
Work | Comments | Story | ~ Estimate | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
2.1. Create ledger fiscal year rollover Budget schemas | acq-models, mod-finance-storage, mod-finance |
| 1 | ||||||||
2 |
| mod-finance-storage |
| 1 | ||||||||
3 | Work | Comments | Story | ~ Estimate | 1 |
| acq-models, mod-finance-storage, mod-finance
|
Design
Work Breakdown Structure
mod-finance |
| 1 | ||||||||||||
4 |
| mod-finance-storage All all open technical questions should be resolved |
| 15 | ||||||||||
2 |
| mod5 |
| mod-finance-storage |
| 1 | ||||||||
3 |
| mod-finance |
| 1 | ||||||||||
4 |
| mod-finance-storage All all open technical questions should be resolved |
| 5 | ||||||||||
5 | Update ledger rollover SQL script with preview rollover logic and store results in the preview rollover table6 | Implement Preview rollover flow and update budgets with all calculated amounts
1.1 Rollover script run (field LedgerFiscalYearRollover."action" = "Preview") 2. Update delete rollover logic : org.folio.service.rollover.LedgerRolloverService#deleteRollover. Rollover record deletion should happened together with rollover budgets in scope of one DB transaction | mod-finance-storage |
| ||||||||||
6 | Implement Preview rollover flow and update budgets with all calculated amounts
1.2 Retrieve result of preview from table "preview_7 | Replace unique index in the table "ledger_fiscal_year_rollover" with uniqueness logic in the code
2.1 If incoming rollover is real with action ", where budgets amounts will be partially filled (MODFISTO-323) 2.2 If incoming rollover is real with action "Preview", then rollover record should not be unique for pair "ledgerId, fromFiscalYearId" and it possible to have many previews for one ledger and same fiscal year. | mod-finance-storage |
| ||||||||||
78 |
| mod-finance |
| |||||||||||
89 |
| mod-finance |
|
...