getMessage()); } startSession(); requireLogin(); requireRole(['admin', 'manager', 'supplier']); // Auto-detect fish_types column names $fish_name_col = 'fish_name'; $fish_tamil_col = null; try { $conn = getDbConnection(); $result = $conn->query("DESCRIBE fish_types"); $columns = []; while ($row = $result->fetch_assoc()) { $columns[] = $row['Field']; } // Check for English name column if (in_array('fish_name_english', $columns)) { $fish_name_col = 'fish_name_english'; } elseif (in_array('fish_name', $columns)) { $fish_name_col = 'fish_name'; } elseif (in_array('name', $columns)) { $fish_name_col = 'name'; } // Check for Tamil name column if (in_array('fish_name_tamil', $columns)) { $fish_tamil_col = 'fish_name_tamil'; } elseif (in_array('tamil_name', $columns)) { $fish_tamil_col = 'tamil_name'; } } catch (Exception $e) { // Use defaults } // Get current user info $user_role = $_SESSION['role']; $user_id = $_SESSION['user_id']; // Pagination $page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1; $per_page = 50; $offset = ($page - 1) * $per_page; // Filters $from_date = $_GET['from_date'] ?? ''; $to_date = $_GET['to_date'] ?? ''; $fish_filter = $_GET['fish_id'] ?? ''; $supplier_filter = $_GET['supplier_id'] ?? ''; // Build query based on role $where_clauses = []; $params = []; $types = ""; if ($user_role === 'supplier') { $where_clauses[] = "s.supplier_id = ?"; $params[] = $user_id; $types .= "i"; } if ($from_date) { $where_clauses[] = "s.supply_date >= ?"; $params[] = $from_date; $types .= "s"; } if ($to_date) { $where_clauses[] = "s.supply_date <= ?"; $params[] = $to_date; $types .= "s"; } if ($fish_filter) { $where_clauses[] = "s.fish_id = ?"; $params[] = $fish_filter; $types .= "i"; } if ($supplier_filter && hasRole(['admin', 'manager'])) { $where_clauses[] = "s.supplier_id = ?"; $params[] = $supplier_filter; $types .= "i"; } $where_sql = !empty($where_clauses) ? "WHERE " . implode(" AND ", $where_clauses) : ""; // Get total count try { $count_sql = "SELECT COUNT(*) as total FROM supply s $where_sql"; $count_result = !empty($params) ? fetchSingle($count_sql, $types, $params) : fetchSingle($count_sql); $total_records = $count_result ? $count_result['total'] : 0; $total_pages = ceil($total_records / $per_page); } catch (Exception $e) { $total_records = 0; $total_pages = 0; $error = "Error counting records: " . $e->getMessage(); } // Build fish columns for query $fish_select = "f.$fish_name_col as fish_name"; if ($fish_tamil_col) { $fish_select .= ", f.$fish_tamil_col as fish_name_tamil"; } // Get supplies try { $sql = " SELECT s.*, u.full_name as supplier_name, u.role as supplier_role, $fish_select FROM supply s JOIN users u ON s.supplier_id = u.user_id JOIN fish_types f ON s.fish_id = f.fish_id $where_sql ORDER BY s.supply_date DESC, s.created_at DESC LIMIT $per_page OFFSET $offset "; $supplies = !empty($params) ? fetchAll($sql, $types, $params) : fetchAll($sql); } catch (Exception $e) { $supplies = []; $error = "Error loading supplies: " . $e->getMessage(); } // Get summary try { $summary_sql = " SELECT SUM(weight_kg) as total_weight, SUM(total_amount) as total_amount FROM supply s $where_sql "; $summary_result = !empty($params) ? fetchSingle($summary_sql, $types, $params) : fetchSingle($summary_sql); $total_weight = $summary_result ? floatval($summary_result['total_weight']) : 0; $total_amount = $summary_result ? floatval($summary_result['total_amount']) : 0; } catch (Exception $e) { $total_weight = 0; $total_amount = 0; } // Get fish types for filter try { $fish_types = fetchAll("SELECT fish_id, $fish_name_col as fish_name FROM fish_types WHERE status = 'active' ORDER BY $fish_name_col"); } catch (Exception $e) { $fish_types = []; } // Get suppliers for filter $suppliers = []; if (hasRole(['admin', 'manager'])) { try { $suppliers = fetchAll("SELECT user_id, full_name, role FROM users WHERE (role = 'supplier' OR role = 'manager') AND status = 'active' ORDER BY full_name"); } catch (Exception $e) { $suppliers = []; } } // Success/error messages $success_message = ''; $error_message = isset($error) ? $error : ''; if (isset($_GET['success'])) { if ($_GET['success'] === 'deleted') { $success_message = 'Supply entry deleted successfully!'; } } if (isset($_GET['error'])) { if ($_GET['error'] === 'invalid') { $error_message = 'Invalid supply entry ID'; } elseif ($_GET['error'] === 'notfound') { $error_message = 'Supply entry not found'; } elseif ($_GET['error'] === 'permission') { $error_message = 'You do not have permission to delete this entry'; } } $page_title = 'View Supplies'; require_once __DIR__ . '/../includes/header.php'; ?>

View All Supplies

Filter Supplies

Clear
Total Weight
kg
entries
Total Amount
Supply value

Supply Records

➕ Add Supply
1): ?>
Date Supplier Fish Type Weight (kg) Rate/kg Total Amount Notes Actions
format('d-m-Y') : $supply['supply_date']; ?> Manager
30) echo '...'; } else { echo '-'; } ?> ✏️ 🗑️
Page Total:
Grand Total:
1): ?>
1): ?> ← Previous Page of Next →
📦

No supply records found

No supplies found matching your filters. Try adjusting the date range or filters. Start by adding your first supply entry

➕ Add Supply