ACTFAS

Authors
  • avatar
    Name
    Paul Bonnette
    Twitter
application-development

ACTFAS stands for ARAMARK's Correctional Trust Fund Accounting System

Way back around 1997 I built ACTFAS using Delphi, a successor to Turbo Pascal. It was a client-server Windows application. Like the name suggests it was built for ARAMARK, a fortune 500 company.

Project Objectives

  • Track inmate funds - intake inmate funds and track them for use in commissary.
  • Track products - allow staff to track what can be sold to inmates.
  • Track inventory - track how many products are in inventory.
  • Track orders - track who ordered what and charge for only what was delivered.
  • Receive orders - using telephony, OMR, and manual entry allow staff and inmates to enter in and edit their orders.
  • Track Commissary Restrictions - make sure banned items are not sold to inmates.
  • Track & Comply with Court Orders - track and comply with court orders.
  • Track and offer Indigent products - give some products to inmates who could not afford anything.

Track Inmate Funds

Intake of an inmate into custody usually began with a deposit of funds onto an inmate's balance. These funds were then available for purchasing commissary. Orders were deducted against the inmate's balance. Visitors could deposit more funds. Upon release or transfer the system allowed funds to be removed from the inmate's account.

Tracking Inventory

Many products were for sale. These were usually small and inexpensive food items.
The system was smart enough to handle box quantities where the buying of a box of, say candy bars, would make the salable item quantity go up by 24.
It also handled assemblies where one product was part of another product. Later I would build inventory control systems using the lessons learned in ACTFAS.

Tracking Orders

The system tracked orders deducting inventory and inmate funds.

It also handled indigent items, court orders and custom logic which often affected what indigent inmates would receive automatically.

Receiving Orders

Orders could be received into the system any number of ways:

  • Inmates write down what they want - Terrible idea. Hard to read.
  • ORM scanner - I Developed an Optical Mark Recognition (OMR or "bubble") scanner program. Worked well. Inmate simply filled in the bubbles!
  • Telephony - Developed a telephony program (written in C) allowing inmates to place orders using a standard phone. Controlled a Dialogic telephony card. Worked well.
OMR Scanner

Application Architecture

ACTFAS was written in Delphi, a successor to TurboPascal, with an Interbase database engine. If memory serves it included installation disks.

Interbase was used for it's support of transactions, sql, triggers and procedures. Interbase support came bundled with the Delphi IDE.

Later Interbase open sourced its database engine, giving rise to Firebird.

Scope & Integrations

This project was massive. As senior software engineer I:

  • Built the application UI
  • Engineered the database tables, stored procedures, and triggers
  • Built the telephony application
  • Built the OMR scanner application
  • Built the mainframe and other integrations
  • Built the installation disks
  • Provided support and updates

Locations

This project included installation into at least a dozen locations and at one time served San Bernadino and Santa Anna, California prison systems as well as many others.

I no longer write client/server Windows application but sympathize with those who still do.