Accounting Patterns in CATS

Terminology

Account (aka Ledger)A grouping of transactions which, when summed together, has a specific, reportable meaning
Account Types

Whether the account records something we have (Asset), something we owe (Liability), or is transforming the item from one account/identifier to another (Turn).

See ???

Event Category

The broad intent behind a particular set of related (and mutually exclusive) Accounts.

See ???

Transaction SetTwo or more transactions that together form a single zero-summed entity. This is the basis of double-entry accounting, in that the sum of positive and negative transactions in a single set will always sum to zero. Where a single transaction set spans more than one Event Category, the sum of each Event Category within the Transaction Set must also equal zero

Why use double-entry accounting?

Use of double-entry accounting simplifies the development of complex stock movement reports and allows the reproduction of a stock-status at any particular point in time.

The document Accounting Patterns by Martin Fowler (see attachment: Accounting (Martin Fowler)) provides a detailed discussion of the benefits of using the accounting patterns.

Transaction Table Design Principles

The following guiding principles have been considered in designing the transaction table for CATS.

  1. The table will only record data elements that have:
    • An identifiable Commodity Type (cereal, pulse, etc.); and 
    • A weight (in Metric Tonne)
  2. Data elements contributing to the CATS KPIs must be included in the transaction table
  3. Data elements that require historical-point-in-time reporting should be included
  4. Conceptually similar events that result in different legal responsibilities or reporting requirementsshould be denominated into separate accounts
    • Adjustments to stock due to losses in the DRMFSS stores and Adjustments to stock due to transporter negligence are conceptually similar: both are stock adjustments. 
    • However, the legal responsibilities are different, and therefore should be registered in separate accounts
  5. Retroactive adjustments to entries in the transaction table will use the difference adjustment accounting method
    • The original transaction record will remain unchanged, and a new set of records will be inserted into the transaction table. 
    • The sum of the original records and all related adjustment records will add to the final, revised amount. 
    • Adjustments are registered in the same accounts the original, and are flagged by the letter ‘A’ in the sub-account field.

Account Management

Accounting Events

The Transaction Table us based around the different commodity-movement events, whether actual or planned, that occur within DRMFSS.

These events are are categorised according to their type and relationship with each other, and follow the logical flow of planning and actual commodity movement activities.

The following diagrams describe the different types of events and associated adjustments.

Normal workflow:

Adjustment workflow:

Account Types

CATS utilizes three types of accounts: Asset, Liability and Turn.

Asset Accounts

As with a bank account, a positive balance in an Asset account indicates a desirable state of affairs, whereas a negative balance, indicating an overdraft, shows that some error has occurred. For example, the account “Stock on Hand” is an asset account. Both the overall balance for this account, and the balance based on each key identifier for this account (DRMFSS Hubs, Commodity Type, /wiki/spaces/CTS/pages/2162693, etc.) should always be zero or greater than zero. A balance less than zero implies that more stock has been taken out of the warehouse than actually exists!

Sum-of-Account States

  • > 0 (Normal)           More detail needed
  • = 0 (Closed)           More detail needed
  • < 0 (Error)              More detail needed

Liability Accounts

As with a bank loan, a negative balance in an Liability account indicates a normal state of affairs, whereas a positive balance, indicating an overpayment, shows that some error has occurred. For example, the account “Stock under Care” is an liability account – as long as the donor has entrusted us with their goods, DRMFSS has an obligation to take care of those goods.Both the overall balance for this account, and the balance based on each key identifier for this account (hub, commodity type, SI, etc.) should always be zero or less than zero (thereby showing the obligation). A balance greater than zero implies that more stock has been repaid to the owner than was originally donated.

Sum-of-Account States

  • > 0 (Error)              More detail needed

  • = 0 (Closed)           More detail needed

  • < 0 (Normal)           More detail needed

Turn Accounts

More detail about Turn Accounts (if there are any)

Sum-of-Account States

  • > 0 (Error)              More detail needed
  • = 0 (Normal)           More detail needed
  • < 0 (Error)              More detail needed

Account Groups

There different events within CATS are are two broad types of events within CATS:
  1. Actual: those events resulting in change to a physical commodity; and 
  2. Planned: the registration of an intention to do something to the commodities
    • A number of separate Plans can exist within CATS, each with a specific meaning
    • Each individual Plan has a specific meaning for reporting (A Dispatch Plan, a Receipt Plan, etc.)
    • A Plan can be compared against either the Actual status or against another Plan to obtain a comparative status. For example, compare the Dispatch Plan against the Receipts Plan to determine future warehouse usage

While the separation between ‘Actual’ and ‘Planned’ is logical and obvious, the separation between the different types of Plan is less clear. One way to determine whether two events belong together is: does one event have a direct, automatic impact in the other.

For example:

From this, it initially looks as though all three items belong in a single plan.

However:

  • When a region makes a Relief request for the allocation of their assigned commodities, an RRD is issued, and the amount remaining to that region in the HRD is automatically reduced. In this case, the RRD and the HRD belong together in a single plan
  • When a region makes a PSNP request for the allocation of their assigned commodities, an RRD is issued, and the amount remaining to that region in their PSNP Annual Plan is automatically reduced. In this case, the RRD and the Annual Plan belong in a single plan
  • As a result of the annual requirements of both Relief and PSNPDRMFSS, along with donors and NGOs formulates the total requirements for the year, and issues a call for donations. Resulting from this, donors pledgeto supply a certain quantity of food.
    • When a pledge is made, this does not automatically mean that the goods will materialise – only that a promise has been made. Thus, the pledge cannot be taken as a guarantee of supply until the Gift Certificate has been processed, and WFP has indicated what portion of that Gift Certificate will become the property of DRMFSS. 
    • An increase or decrease in amount pledged does not automatically impact the the HRD or the PSNP Annual Plan, and therefore must be considered as a separate plan.

Separating different event categories still allows for useful comparison between different plans: the amount stated in the HRD plan, for example, can be compared against the amount stated in the Pledges Plan, to determine the still-unmet donation shortfalls. 

The following rules apply:

  • While a single Account Set may impact multiple Event Categories (usually when a ‘Plan’ event triggers a physical commodity movement), the individual transactions within the account set must always sum to zero within their own Event Category. For example, within a single Account Set containing both ‘Plan – Commodity Utilization’ and ‘Actual Movement’ Event Categories:
    • The negative ‘Plan – Commodity Utilization’ Event Category transaction must be matched by one or more positive ‘Plan – Commodity Utilization’ Event Categories, so that the sum of all ‘Plan – Commodity Utilization’ Event Categories totals zero
    • The negative ‘Actual Movement’ Event Category within the same Transaction Set must be matched by one or more positive ‘Actual Movement’ Event Categories, so that the sum of all ‘Actual Movement’ Event Categories within the transaction set totals zero.

Actual - Physical Commodity Movement

This Event Category records movements that change the status of a physical commodity in some way. This can either be a geographical relocation of a commodity, granting or removal of access to a physical commodity (as in a loan or swap), or the removal or addition of a physical commodity from a location.

All transactions in this Event Category must be backed by a paper document (usually a waybill) of some kind, and it must be possible to reconcile quantities in this category with quantities in warehouse stores or in transit.

Sum-of-Event-Category

< 0 (error)More commodities have been distributed than DRMFSS has access to
= 0 (closed)All commodities have been distributed to beneficiaries
> 0 (normal)Physical commodities remain to be distributed to beneficiaries

Planning - Commodity Utilisation

This Event Category records the current status of the planned distribution of commodities. All transactions in this Event Category must be backed by an official document of some kind (published HRD, signed RRD, etc)

Sum-of-Event-Category States

< 0 (??)???
= 0 (??)???
> 0 (??)???

Planning - Pledges

This Event Category records ???. All transactions in this Event Category must be backed by an official document of some kind (??????).

Sum-of-Event-Category States

< 0 (??)???
= 0 (??)???
> 0 (??)???

Events that Affect Transaction Table

Requirement Stream

Requirement document:
    • Requirement document [-]: for each FDP and for each round we need to register the commodities
    • Requirement document plan [+]: The transaction will specify the weight of commodity

Receipt Stream

Pledge: Commodity promised by donor or other organizations for DRMFSS

  • Pledge receipt [+]: the amount received by DRMFSS from donor organizations per commodity
  • Requirement document plan [-]: this resets what has been registered in the requirements document event.

Gift certificate: occurs when DRMFSS is informed about the amount of incoming commodity.

  • Gift [+]: donated amount by donor specifying the donation type (Donation, Loan from other donors, in-advance delivery, Local Purchase)
  • Pledge receipt [-]: represents what has been registered on the positive side of the pledge event

Receive allocation: a receiving plan for each hub allocated by logistics at the federal level

  • Receivable [+]: the total amount of commodity to be received by hubs
  • Gift [-]: resets what have been registered during gift certificate event.

Hub receipts: occurs when donor commodities arrive at the hub’s Stores

  • Goods on Hand [+]: the total amount arrived at the hubs
  • Goods under care [-]: the total amount arrived at the hubs broken down by donor.
  • Statistics [+]: the total amount arrived at the hub’s
  • Receivable [-]: Resets what have been registered during the receive allocation event

Dispatch Stream

RRD document: final allocation of commodities destined for FDPs

  • Requirement document [+]: resets the requirement document registered during planning
  • Pledged to FDP [-]: broken down allocation of commodities for each FDP

Hub assignments/committing:  assignment of SI and project code for each FDP allocation

  • Pledged to FDP [+]: resets what has been registered during RRD document
  • Committed to FDP [-]: registers the committed for each FDP together with SI and project code and designated pickup Hub?

Dispatch: happens when cargo is leaving the hubs to FDPs or Other hubs

  • Goods in transit [+]: dispatched quantities broken down by [FDP or Other Hub], SI and project code.
  • Goods on hand [-]: dispatched quantity that balances the hub receipts together with SI and project code
  • Committed to FDP [+]: dispatched quantity that draws down the amount during registration of hub committing
  • Statistics [-]: the total amount of commodities that is leaving the hubs

FDP receipt: when commodities have arrived at FDPs and a corresponding delivery receipt is issued (when the delivery receipt is presented to DRMFSS by the transportation company).

  • Delivery receipt [+]: the total amount of commodities reaching the FDPs broken down by SI/project
  • Delivery receipt (sub account – Lost) [+]: the total amount commodities lost during transit/transport
  • Goods in transit [-]: balances the total amount dispatched from hubs

Distribution: when the FDP have actually distributed the commodities to beneficiaries and sent to DRMFSS payroll/distribution documents.

  • Goods under care [+]: balances the amount during hub receipt
  • Delivery receipt [-]: balances the total amount during receipt.

Adjustment Stream

Adjustment for receive planning discrepancies (Differences between plan and actual receipt). Variation between receive allocation and actual receiving: when there is a variation in any of the registered attributes recorded at the moment of the receive allocation; and the actual cargo arrived at the hub. The attributes expected to change are commodity, SI and/or hub.Example: Received plan of 5000mt of wheat are planed to arrive at Adama hub but actually it is redirected to Dire Dawa.

  • Receivable (Adjustment) [-]: this will balance the receive allocation with the planned attributes (commodity, SI, hub)
  • Receivable (Adjustment) [+]: the attributes (commodity/SI/hub) reflecting the actual received

Cross program borrowing. When PSNP commodities are distributed for relief program and vice-versa variation in program between hub assignment and the actual dispatch. Generally speaking this event covers all the other cases when any of the other attributes will change between planning and dispatch. The following attributes are foreseen to be changed: commodity, program, FDP, SI. Example: 5000mt of wheat is assigned for PSNP but the actual quantity for that program is only 3000mt so we take the balance of 2000mt from Relief.

  • Committed to FDP (Adjustment) [+]: this will balance the hub assignment with the assigned attributes (program, commodity, SI, FDP)
  • Committed to FDP (Adjustment) [+]: the attributes (program, commodity, SI, FDP) reflecting the actual dispatch.

Adjustments on annual stock take. When there is a difference in store number, SI between the storekeeper book and goods on hands account.

  • Goods on hand (Adjustment) [-]: with the quantity difference between the inventory and the storekeeper’s books quantity.
  • Goods under care (Adjustment) [+]: with the quantity difference between the inventory and the storekeeper’s books quantity.

Requirements planning adjustment. This happens when there is a variation in Requirement Planning

  • Requirement document (Adjustment) [-]: with the quantity difference between the previous and the actual plan.
  • Requirement document plan (Adjustment) [+]: with the quantity difference between the previous and the actual plan.

Accounts

Planning - Commodity Utilization

Requirement Document

Describes the amount of commodities planned by the HRD document and not assigned to any RRD.

 

Account Code 

RDU (Requirements Document Unassigned)

Account Type

Liability

Sum-of-Account States 

< 0 (Normal):    Part of the plan remains unassigned

= 0 (Closed):     The plan has been fully assigned

> 0 (Error):         More has been assigned than was originally anticipated

Mandatory attributes 

  • RegionId:      The region needing the planned commodities
  • ProgramId:   The programme (Relief, PSNP, other(?)) to which commodities are assigned
  • Month:          The planned distribution month
  • Round:           More information needed

Reporting

  • Adding - values for this account indicates total quantity requested by each region/programme/etc
  • Adding + values for this account indicates the total quantity allocated to each region/programme/etc
  • Adding all values (- and +) for this account indicates total unfulfilled allocations for each region/programme/etc

 

Events/Use cases

  • Requirement document
  • RRD document 

Counter accounts

  • Regional document plan
  • Pledged to FDP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Requirement Document Plan

 

Describes the amount of commodities planned by the HRD document and not pledged by donors

Account Code

RDP (Requirements Document Unassigned)

Account Type

Asset

Expected Account Value

< 0 (Error):         ??

= 0 (Closed):     ??

> 0 (Normal):    ??

Mandatory attributes

  • RegionId:      The region needing the planned commodities
  • ProgramId:   Relief, PSNP, other(?) 

Reporting

A negative sum indicates the total quantity of commodities pledged by donors.

A positive sum indicates the total quantity commodities requested by the regions.

The total sum indicates the total quantity of commodities that are requested but not pledged by donors.

If the total sum is negative, it indicates that Donors have pledged more than the request.

Events/Use cases

  • Requirement document
  • Pledge

Counter accounts

Regional document

Pledged receipt

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Pledge Receipt

Promises by donors against HRD document

Mandatory attributes

ProgramId, Donor,

Reporting

A negative sum indicates the total amount of gifts effected by the donor.

A positive sum indicates the total quantity commodities pledged.

The total sum indicates the total quantity of commodities that are pledged but not yet gifted.

Events/Use cases

  • Pledge
  • Gift

Counter accounts

Request document plan

Gift

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

Gift

Donations expected to arrive at hubs from donors

 

Mandatory attributes

ProgramId, Donor, Commodity Source, Gift Type (Loan, Local Purchase, Donation and In advance delivery)

Reporting

A negative sum indicates the total amount of gifts allocated to be received by hubs.

A positive sum indicates the total quantity of commodities donated by the donors.

The total sum indicates the total quantity of commodities that are gifted but not allocated to be received.

Events/Use cases

  • Gift/Local purchase
  • Receive allocation

Counter accounts

Pledge receipt

Receivable

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Receivable

Commodities due to arrive at hubs

Mandatory attributes

ProgramId, Donor, Hub, SI/Project Code

Reporting

A negative sum indicates the total amount of received commodities.

A positive sum indicates the total quantity of commodities allocated to be received.

The total sum indicates the total quantity of commodities that are allocated but not received.

A negative total sum indicates an overdrawn amount of commodities

Events/Use cases

  • Receipt
  • Receive allocation

Counter accounts

Goods on hand

Gift

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Goods on Hand

Inventory

Mandatory attributes

ProgramId, Donor, Hub, SI/Project Code, Store, Stack

Reporting

A negative sum indicates the total amount of dispatched

A positive sum indicates the total quantity of received commodities

The total sum indicates the balance in the stores

Events/Use cases

  • Receipt
  • Dispatch

Counter accounts

Goods in transit

Receivable

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Goods Under Care

Liability account of donor balances

Mandatory attributes

ProgramId, Donor

Reporting

A negative sum indicates the total quantity of commodities arrived at hubs

A positive sum indicates the total quantity of commodities distributed to beneficiaries

The total sum indicates the commodities that have arrived at DRMFSS hubs but not yet arrived to beneficiaries

Events/Use cases

  • Delivery note
  • Receipt

Counter accounts

Delivery receipt

Goods on hand

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Statistics

Available inventory by store

Mandatory attributes

ProgramId, Hub, Store

Reporting

A negative sum indicates the total quantity of commodities dispatched from stores

A positive sum indicates the total quantity of commodities received into stores

The total sum indicates commodities available in the store

Events/Use cases

  • Receipt
  • Dispatch

Counter accounts

Gifts

Committed to FDP

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Committed to FDP

Commodities that are due to dispatched

 

Mandatory attributes

ProgramId, FDP, Hub, Donor, SI/Project

Reporting

A negative sum indicates the total quantity of commodities assigned FDP for dispatching

A positive sum indicates the total quantity of commodities that are actually dispatched to FDPs

The total sum indicates commodities which are allocated but not yet dispatched

Events/Use cases

  • FDP assignment
  • Dispatch

Counter accounts

Pledged to FDP

Statistics

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Goods in Trasit

Commodities on the way to FDP / Other Hubs

Mandatory attributes

ProgramId, Source Hub, Destination (FDP/Other Hub), Donor,  SI/Project,

Reporting

A negative sum indicates the total quantity of commodities unloaded at the FDP

A positive sum indicates the total quantity of commodities that were dispatched from the corresponding hub

The total sum indicates commodities which are on the road between hubs and FDPs

Events/Use cases

  • Dispatch
  • FDP Receipt

Counter accounts

Goods on hand

Delivery receipt

Lost in transit/damage

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Delivery Receipt

 

Stock at FDPs

 

Mandatory attributes

ProgramId, FDP, Donor, SI/Project

Reporting

A negative sum indicates the total quantity of commodities distributed to beneficiaries

A positive sum indicates the total quantity of commodities that are received at the FDP

The total sum indicates inventory at the FDP

Events/Use cases

  • FDP Receipt
  • Delivery note

Counter accounts

Dispatch

Goods under care

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Sub Accounts

 

  • A’ represent adjustment sub-accounts that will be used whenever there is an adjustment for the respective account.
  • L’ represents loss. In any phase of the actual delivery a commodity is lost this sub account will be moved with the lost quantity.
  • D’ represents damages. Whenever a commodity is damaged we move this account with the damaged quantity.

CATS KPI and Reporting

CATS KPIs will be calculated from the transactions table as follows.

  1. Requirements are the total quantity of commodities to be provided to the beneficiaries. It can be calculated from the positive sum of Requirement document plan account plus the total balance of the corresponding adjustment accounts.
  2. Allocation is the total quantity of commodities that have been requested by the region.  It can be calculated from the positive sum of Requirement document plan account plus the total balance of the corresponding adjustment accounts grouped by region.
  3. Receipt is the total quantity of commodities that have been received by DRMFSS hubs. This value is calculated from the positive balance of Goods on hand account plus the total balance of the corresponding adjustment accounts.
  4. Dispatch is the total quantity of commodities leaving DRMFSS warehouses. This value is calculated from the balance of Goods in transit account.
  5. Delivery is the total quantity of commodities delivered to the FDP or Woreda. This value is calculated from the positive sum of Delivery receipt account plus the total balance of the corresponding adjustment accounts grouped by FDP or Woreda.
  6. Distribution is the total quantity of commodities signed for by the beneficiaries. This value is calculated from the negative balance of Delivery receipt account plus the total balance of the corresponding adjustment accounts grouped by FDP or Woreda.