# Skulitech Enterprise Finance and Procurement Upgrade

**Release date:** 24 July 2026  
**Database migrations:**

- `20260724_008_enterprise_finance_controls.sql`
- `20260724_009_enterprise_procurement_controls.sql`

## Purpose

This upgrade strengthens Skulitech from a fee-collection and requisition system into a controlled institutional finance and source-to-pay platform. It is designed for colleges that need traceable student finance, accrual accounting, budget control, procurement planning, competitive sourcing, stores, supplier invoice matching and controlled payments.

## Finance improvements

### 1. Unallocated receipts and payment identification

Bank or M-Pesa deposits that cannot immediately be matched are recorded once in an unallocated-receipts control account. Finance can later allocate the original receipt to a student, debtor or other-income account without creating a second cash receipt.

Controls include:

- unique external payment references;
- receipt approval and reversal metadata;
- amount received, allocated and available balances;
- student/debtor/other-income allocation types;
- linked general-ledger journals;
- prevention of allocations above the parent receipt;
- integrity checks comparing the receipt total with posted allocations.

### 2. Sponsor-funding control

The existing HELB, bursary, scholarship and funding-agency workflow remains based on one bank receipt followed by non-cash student allocations. Parent and child transactions are kept separate to prevent double receipting.

### 3. Budget commitments

Approved LPOs reserve budget before expenditure is incurred. The control checks:

- annual or monthly approved budget;
- actual expenditure already posted;
- active commitments not yet liquidated;
- available balance before approving an LPO;
- cost centre and budget account;
- commitment release, liquidation and audit history.

A submitted LPO does not consume the budget. The commitment is created during approval under maker-checker control.

### 4. General-ledger hardening

New journals are assigned a transaction UUID and deterministic SHA-256 entry hash. This makes later unauthorised edits detectable while approved correction remains through reversal rather than deletion.

Journal lines also support:

- cost centres;
- project codes;
- approval metadata;
- period-lock enforcement;
- balanced debit and credit validation.

### 5. Bank reconciliation structures

The finance schema now supports:

- multiple institutional bank accounts;
- imported bank-statement fingerprints;
- reconciliation headers and line items;
- matched, unmatched and exception statuses;
- preparer, reviewer and approver roles;
- reconciliation-period reporting.

### 6. Supplier three-way matching

A supplier invoice is posted only after comparison of:

1. approved purchase order;
2. accepted goods receipt;
3. supplier invoice.

The matching engine records the PO amount, gross accepted value, invoice amount, tolerance and variance. An override requires an authorised reason and is restricted to Finance or administrators.

### 7. Fixed assets

The asset register supports:

- asset categories and account mappings;
- asset tags, locations and custodians;
- acquisition and in-service dates;
- cost, residual value and useful life;
- straight-line depreciation runs;
- accumulated depreciation and carrying amount;
- acquisition journals and disposal information;
- period-end depreciation validation.

### 8. Period close

The period-close screen now runs preflight checks for:

- unresolved bank items;
- unallocated receipts;
- pending approvals;
- unmatched supplier invoices;
- active commitments requiring review;
- required fixed-asset depreciation;
- failed checklist items.

A period cannot be closed while failed checks remain unless an authorised override reason is recorded.

## Procurement improvements

### 1. Annual procurement planning

Procurement can prepare annual plans containing:

- financial year and approved plan value;
- procurement category and department;
- cost centre and budget account;
- procurement method;
- quarter;
- estimated quantity, unit cost and amount;
- commitment, order and receipt progress.

### 2. Competitive sourcing

The control centre supports RFQs and tenders through:

- sourcing-event registration;
- issue and closing dates;
- supplier invitations;
- supplier quotations;
- compliance checks;
- technical and financial evaluation weights;
- automatic weighted scores;
- award and non-award status;
- award supplier and value controls.

An LPO linked to a sourcing event must use the awarded supplier and cannot exceed the award value unless it is governed by an approved contract.

### 3. Supplier qualification and risk

The supplier master now records:

- supplier and registration codes;
- KRA PIN and tax-compliance expiry;
- AGPO category;
- insurance expiry;
- payment terms;
- independently verified bank details;
- qualification status;
- risk rating;
- active, inactive or blacklisted status.

The supplier-administration page includes a compliance-update form for existing suppliers. Expired or ineligible suppliers are blocked from approved LPOs. Bank-transfer vouchers require independently verified supplier bank details.

### 4. Contract management

Contracts and framework agreements include:

- contract number, type and owner;
- sourcing-event and supplier links;
- start and end dates;
- contract value and committed value;
- payment terms;
- performance-bond reference;
- renewal-alert period;
- terms and conditions;
- approval metadata.

LPO approval checks the supplier, contract period and remaining contract value.

### 5. Controlled LPO workflow

The LPO workflow now separates preparation from approval:

1. prepare a Draft or Submitted LPO;
2. validate supplier, award or contract links;
3. load line items from an approved requisition;
4. confirm the LPO base amount equals the requisition lines;
5. approve through maker-checker control;
6. create the budget commitment;
7. update the requisition and procurement-plan progress;
8. issue the LPO for receiving.

### 6. Goods receiving and inspection

Goods receipt notes operate at line level and record:

- ordered, previously received and outstanding quantity;
- delivered, accepted and rejected quantity;
- rejection reason;
- warehouse;
- stock item or non-stock/service classification;
- delivery note and inspector;
- accepted and rejected value;
- stock-posting status.

Accepted quantities cannot exceed either delivered quantities or outstanding LPO quantities.

### 7. Stores and inventory

The new stores functions include:

- warehouses and custodians;
- item codes, categories and units;
- preferred suppliers;
- quantity on hand and average cost;
- reorder level, reorder quantity and maximum level;
- lead time;
- stock receipt, issue, return and adjustment movements;
- running balance and source reference;
- prevention of negative stock;
- reorder alerts on the dashboard.

### 8. Supplier performance

Supplier scorecards evaluate:

- delivery;
- quality;
- price/value;
- service;
- compliance.

The average score produces a rating and automatically updates supplier risk. Corrective actions can be recorded for poor performance.

### 9. Payment vouchers and deductions

Supplier payment follows a maker-checker workflow:

1. create a voucher from an approved/matched creditor invoice;
2. calculate gross, withholding tax, other deductions and net cash;
3. approve by a different officer unless an administrator is applying an authorised exception;
4. validate supplier payment eligibility and bank verification;
5. post the creditor settlement and general-ledger journal;
6. update the supplier invoice and LPO payment status.

The accounting entry settles the creditor at gross value, credits bank at net value and credits withholding-tax or other-deduction liabilities separately.

## Navigation

### Finance

- Finance Control Centre
- Unallocated Receipts
- Budget Commitments
- Supplier Three-Way Matching
- Fixed Assets
- Period Close

### Procurement

- Procurement Control Centre
- Annual Procurement Plan
- RFQs, Tenders and Awards
- Contracts
- LPOs
- Stores
- Goods Receipts
- Supplier Performance
- Payment Vouchers

## Installation on Windows XAMPP

1. Back up the current database and application folder.
2. Replace the application folder with this upgraded package.
3. Open Command Prompt in `C:\xampp\htdocs\college_erp`.
4. Run:

   ```bat
   C:\xampp\php\php.exe bin\migrate.php
   ```

5. Run the integrity checks:

   ```bat
   C:\xampp\php\php.exe bin\check_integrity.php
   ```

6. Log in as System Admin, Finance or Procurement Officer and confirm the new menu items.
7. Configure budgets, cost centres, bank accounts, supplier compliance and approval roles before processing live transactions.

## Deployment cautions

- Test the migrations on a copy of the production database first.
- Do not edit a migration after it has been recorded in `schema_migrations`.
- Review legacy suppliers and mark valid vendors as qualified; verify their bank details before bank-transfer vouchers are approved.
- Review legacy LPO status and totals after migration. The migration backfills `total_amount` and `approval_status` from existing records.
- Keep database and application backups before the first live transaction.
- The package was PHP-syntax validated in the build environment. A live MySQL/MariaDB server was not available there, so the migrations must still be executed and tested on the institution's staging database.
