Index Controller Documentation
File: /controllers/index.php
Purpose: Main dashboard and system entry point with comprehensive business intelligence
Last Updated: December 20, 2024
Total Functions: 35+
Lines of Code: ~3,500+
๐ Overview
The Index Controller serves as the main dashboard and central hub of the ERP19 system. It provides:
- โข Dashboard analytics and business intelligence
- โข Financial summaries and KPIs
- โข Sales and purchase reporting
- โข Client and supplier debt tracking
- โข System initialization functions
- โข Database management utilities
- โข Multi-language support
- โข Network payment processing
- โข Backup and restore functionality
Primary Functions
- โ Dashboard analytics display
- โ Financial KPI calculations
- โ Sales performance metrics
- โ Client debt summaries
- โ Supplier payment tracking
- โ Inventory status overview
- โ System health monitoring
- โ Database backup management
- โ Multi-store analytics
- โ Network payment integration
Related Controllers
- โข login.php - Authentication entry point
- โข sellbillController.php - Sales operations
- โข buyBillController.php - Purchase operations
- โข clientController.php - Customer management
- โข supplierController.php - Supplier management
๐๏ธ Database Tables
Primary Analytics Tables
| Table Name | Purpose | Key Columns |
|---|---|---|
| **sellbill** | Sales transactions | sellbillid, sellbillclientid, sellbilltotalbill, sellbilldate |
| **buybill** | Purchase transactions | buybillid, buybillsupplierid, buyibilltotalbill, buybilldate |
| **client** | Customer accounts | clientid, clientname, clientdebt, clientarea |
| **supplier** | Supplier accounts | supplierid, suppliername, suppliercurrentDebt |
| **save** | Cash registers/safes | saveid, savename, savevalue |
| **store** | Inventory locations | storeid, storename, storebalance |
| Table Name | Purpose | Key Columns |
|---|---|---|
| **clientdebtchange** | Customer debt history | clientid, clientdebtchangeamount, clientdebtchangedate |
| **supplierdebtchange** | Supplier debt history | supplierid, supplierdebtchangeamount, supplierdebtchangedate |
| **dailyentry** | Journal entries | dailyentryid, entryComment, entryDate |
| **capital** | Company capital | capitalid, capitalvalue, capitaldate |
| Table Name | Purpose | Key Columns |
|---|---|---|
| **programsettings** | System configuration | programsettingsid, companyname, roundnumbers |
| **user** | System users | userid, username, usergroupid, saveid |
| **usergroup** | User roles | usergroupid, usergroupname, permissions |
| **newdbbackup** | Backup tracking | backupid, backupname, backupdate |
๐ Key Functions
1. Default Dashboard - Main Analytics Display
Location: Line 763
Purpose: Display comprehensive business dashboard with KPIs
Process Flow:
1. Load user permissions and settings
2. Calculate financial summaries
3. Generate sales and purchase analytics
4. Process client and supplier debt summaries
5. Display inventory status
6. Show system health metrics
Dashboard Components:
- โข Total sales and profit metrics
- โข Customer debt summaries
- โข Supplier payment status
- โข Cash flow indicators
- โข Inventory turnover
- โข User activity logs
2. search() - Financial Search and Analytics
Location: Line 1933
Purpose: Advanced financial search with date range filtering
Function Signature:
function search($saveid, $processid, $startDate, $endDate) {
// Comprehensive financial analysis
}
Process Flow:
1. Apply date range filters
2. Filter by cash register (save)
3. Process transaction types
4. Calculate running totals
5. Generate detailed reports
Analytics Generated:
- โข Daily/weekly/monthly summaries
- โข Cash flow by register
- โข Transaction type breakdowns
- โข Profit margin analysis
3. showAll() - Sales Transaction Summary
Location: Line 2342
Purpose: Comprehensive sales transaction analysis
Function Signature:
function showAll($startDate, $endDate) {
// Process all sales transactions
}
Metrics Calculated:
- โข Total sales revenue
- โข Average transaction value
- โข Customer purchase patterns
- โข Product performance
- โข Discount analysis
- โข Payment method breakdown
4. showBuyBill() - Purchase Analysis
Location: Line 2774
Purpose: Purchase transaction analytics and supplier performance
Function Signature:
function showBuyBill($from, $to) {
// Analyze purchase transactions
}
Supplier Analytics:
- โข Purchase volume by supplier
- โข Payment terms analysis
- โข Cost trend analysis
- โข Supplier performance metrics
- โข Inventory turnover rates
5. clientdebt() - Customer Debt Analysis
Location: Line 3338
Purpose: Comprehensive customer debt tracking and analysis
Debt Metrics:
- โข Total outstanding debt
- โข Aging analysis (30/60/90 days)
- โข Payment history trends
- โข Credit limit utilization
- โข Risk assessment indicators
6. supplierdebt() - Supplier Payment Analysis
Location: Line 3350
Purpose: Track supplier payments and outstanding balances
Payment Analytics:
- โข Outstanding payables
- โข Payment scheduling
- โข Discount opportunities
- โข Cash flow impact
- โข Vendor relationship metrics
7. Network Payment Integration
Location: Line 1207
Purpose: Process network payment transactions
Functions:
- โข
yesterdayNetworkDailyEntry()- Process previous day network payments - โข
saveDailyEntry()- Save network transaction entries - โข
calcEntryValue()- Calculate network fees and commissions
8. System Initialization Functions
firstlogin()
Location: Line 1329
Purpose: First-time system setup and initialization
insertUserGroup(), insertUser(), insertSave()
Location: Lines 1532-1614
Purpose: Create default system data
insertInitialCapitalValue()
Location: Line 1648
Purpose: Setup initial company capital
9. Database Management Functions
backup_tables()
Location: Line 1777
Purpose: Automated database backup with retention policies
CHECKdatabase(), repardatabase()
Location: Lines 1734-1776
Purpose: Database health monitoring and repair
๐ Workflows
Workflow 1: Dashboard Load Process
๐ URL Routes & Actions
| URL Parameter | Function Called | Description |
|---|---|---|
| `do=` (empty) | Default dashboard | Main business intelligence dashboard |
| `do=bill` | Test mode | Testing and development mode |
| `do=compo` | Component test | Component testing mode |
| `do=godo` | Go mode | Special operational mode |
| `do=change_lang` | Language switch | Change system language |
| `do=run` | Run analytics | Execute specific analytics |
| `do=show3` | Show by day | Daily breakdown view |
- โข
from- Start date for analytics - โข
to- End date for analytics - โข
saveid- Cash register filter - โข
processid- Process type filter - โข
showbyday- Daily breakdown toggle
๐ Security & Permissions
User-Based Access Control
// User permission checks
$userData = $myUserRecord->load($_SESSION['userid']);
if ($userData->viewbills == 0) {
// Restrict to user's own transactions
}
if ($userData->viewclients == 0) {
// Restrict to user's own customers
}
Store-Level Security
// Store access restrictions
$userStores = explode(',', $_SESSION['storeids']);
// Filter data by accessible stores
Financial Data Protection
- โข Profit visibility based on user group
- โข Cost price restrictions
- โข Sensitive financial data masking
- โข Audit trail for financial queries
๐ Performance Considerations
Dashboard Optimization
1. Caching Strategy: Dashboard metrics cached for 5-15 minutes
2. Lazy Loading: Load charts and heavy analytics on demand
3. Query Optimization: Indexed date range queries
4. Data Aggregation: Pre-calculated summary tables
Database Performance
// Optimized query patterns
$query = "SELECT SUM(sellbilltotalbill) as total_sales
FROM sellbill
WHERE sellbilldate >= ? AND sellbilldate <= ?
AND conditions = 0";
Memory Management
- โข Pagination for large result sets
- โข Stream processing for reports
- โข Resource cleanup after operations
- โข Connection pooling for analytics
๐ Common Issues & Troubleshooting
1. Dashboard Loading Slowly
Issue: Dashboard takes 10+ seconds to load
Cause: Heavy analytics queries without optimization
Debug:
// Check query performance
$start = microtime(true);
$result = $dao->complexAnalyticsQuery();
$time = microtime(true) - $start;
echo "Query time: {$time} seconds";
Fix:
-- Add indexes for date range queries
CREATE INDEX idx_sellbill_date ON sellbill(sellbilldate);
CREATE INDEX idx_buybill_date ON buybill(buybilldate);
2. Incorrect Financial Calculations
Issue: KPI numbers don't match detailed reports
Cause: Different query conditions or date handling
Debug:
// Verify query conditions
echo "Sales Query: " . $salesQuery;
echo "Profit Query: " . $profitQuery;
// Check date format consistency
echo "Date format: " . date('Y-m-d', strtotime($inputDate));
3. Permission Errors
Issue: Users see data they shouldn't access
Cause: Missing permission checks or incorrect filtering
Fix:
// Always check user permissions
if (!hasPermission('view_financial_data')) {
throw new Exception('Access denied');
}
// Apply store filters
$storeFilter = getUserStoreFilter($_SESSION['userid']);
$query .= " AND storeid IN ({$storeFilter})";
4. Memory Issues with Large Datasets
Issue: Script timeout or memory exhaustion
Cause: Loading too much data at once
Fix:
// Use pagination and limits
$limit = 1000;
$offset = 0;
while (true) {
$batch = getDataBatch($offset, $limit);
if (empty($batch)) break;
processBatch($batch);
$offset += $limit;
unset($batch); // Free memory
}
๐งช Testing Scenarios
Test Case 1: Dashboard Performance
1. Login as different user types
2. Access dashboard with large date ranges
3. Verify load times under 3 seconds
4. Check KPI accuracy against manual calculations
5. Test with different store permissions
Test Case 2: Financial Calculations
1. Create test transactions
2. Check dashboard calculations
3. Compare with detailed reports
4. Verify profit margins
5. Test edge cases (refunds, discounts)
Test Case 3: Multi-User Scenarios
1. Test concurrent dashboard access
2. Verify user-specific data filtering
3. Check permission enforcement
4. Test store access restrictions
Test Case 4: Data Integrity
1. Create backdated transactions
2. Check historical KPI accuracy
3. Verify date range filtering
4. Test timezone handling
๐ Business Intelligence Features
Sales Analytics
- โข Revenue trends and forecasting
- โข Customer lifetime value
- โข Product performance analysis
- โข Seasonal pattern recognition
- โข Sales team performance
Financial Analytics
- โข Profit margin analysis
- โข Cash flow forecasting
- โข Debt aging reports
- โข Payment pattern analysis
- โข Financial ratio calculations
Operational Analytics
- โข Inventory turnover rates
- โข Supplier performance metrics
- โข Store productivity analysis
- โข User activity tracking
- โข System utilization metrics
๐ Related Documentation
- โข CLAUDE.md - PHP 8.2 migration guide
- โข sellbillController.php - Sales operations
- โข buyBillController.php - Purchase operations
- โข clientReportsController.php - Customer reports
- โข supplierController.php - Supplier management
Documented By: AI Assistant
Review Status: โ Complete
Performance Review: โ ๏ธ Optimization recommended for large datasets
Next Review: When dashboard performance improvements are implemented