Page tree

Versions Compared

Key

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

...

APIs

Business Logic Module

MethodPathRequestResponseDescriptionInterfaceNotes
POST/finance/groupsgroupgroupCreate a groupfinance.groups
GET/finance/groups/<id>NAgroupGET groupby Idfinance.groups
GET/finance/groupsCQL Querycollection<group>Search/List groupsfinance.groups
PUT/finance/groups/<id>groupgroupUpdate a groupfinance.groups
DELETE/finance/groups/<id>NA204Delete a groupfinance.groups
GET/finance/groups/<id>/budgets

CQL Query,

Fiscal Year Query (req)

collection<budget>List budgets in this groupfinance.groups

Queries view API: Group + Budget + Fund/Group/FY (by groupId, fiscalYearId, group.acqUnits)

  • returns array of budget

Enforces acquisition units based on group's assignments, ignores budget/fund acq. units.

The fiscalYear query arg is the UUID of a fiscal-year record

POST/finance/group-fund-fiscal-yearsgroup_fund_fy204Create a groupFundFYfinance.group-fund-fiscal-years
GET/finance/group-fund-fiscal-yearsCQL Querycollection<group_fund_fy>Search/List groupFundFYfinance.group-fund-fiscal-years
DELETE/finance/group-fund-fiscal-years/<id>NA204Delete a groupFundFYfinance.group-fund-fiscal-years

Storage Module

MethodPathRequestResponseDescriptionInterfaceNotes
POST/finance-storage/groupsgroupgroupCreate a groupfinance-storage.groups
GET/finance-storage/groups/<id>NAgroupGET group by Idfinance-storage.groups
GET/finance-storage/groupsCQL Querycollection<group>Search/List groupsfinance-storage.groups
PUT/finance-storage/groups/<id>groupgroupUpdate a groupfinance-storage.groups
DELETE/finance-storage/groups/<id>NA204Delete a groupfinance-storage.groups

Updating the GroupFundFY table

As you can see above, there is not API for directly manipulating the GroupFundFY records.  These records are automatically updated by the storage module when related changes are made.

  • When a Fund is associated with a Group, create a GroupFundFY record for the current FY(s) and any in the future.
  • When a FiscalYear is created, create a new GroupFundFY record for each existing Fund/Group pair where Group has status = active.  (only if fiscalYear startDate > now)

The approach we're taking will result in GroupFundFY  records being creating which may never be used - this is especially true in cases where there are simultaneous or overlapping fiscal years, e.g. Texas Fiscal Year (TFY19) and Qatar Fisal Year (QFY19) might both have similar or overlapping periods, but apply to two separate campuses, each with their own finances.  A given ledger would only really apply to one or the other, but GroupFundFY records would be created for both.  We need to do this to support rollover.  The GroupFundFY records themselves are quite small, so it shouldn't be too much of a problem.

For now we don't have to worry about managing GroupFundFY records upon update or delete of a ledger or FiscalYear.  The plan is to implement a soft delete on both so reference integrity should be maintained without intervention.

The GroupFundFY records should be created in the storage module in database transactions, possibly via trigger functions.

...


POST/finance-storage/group-fund-fiscal-yearsgroup_fund_fy204Create a groupFundFYfinance-storage.group-fund-fiscal-years
GET/finance-storage/group-fund-fiscal-years/<id>NAgroup_fund_fyGET groupFundFY by Idfinance-storage.group-fund-fiscal-yearsmay not be needed, but can't hurt
GET/finance-storage/group-fund-fiscal-yearsCQL Querycollection<group_fund_fy>Search/List groupFundFYfinance-storage.group-fund-fiscal-years
PUT/finance-storage/group-fund-fiscal-years/<id>group_fund_fygroup_fund_fyUpdate a groupFundFYfinance-storage.group-fund-fiscal-yearsmay not be needed, but can't hurt
DELETE/finance-storage/group-fund-fiscal-years/<id>NA204Delete a groupFundFYfinance-storage.group-fund-fiscal-years

Ledgers

  • Record with info that doesn't change from FY to FY
  • Ledger/FY table will be needed to track per FY information (e.g. summary #s)

...