prepare($check_sql); $stmt->bind_param("is", $category_id, $subcategory_name); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $error = "A subcategory with this name already exists in the selected category"; } else { // Insert new subcategory $sql = "INSERT INTO expense_subcategories (category_id, subcategory_name, description, status, created_at) VALUES (?, ?, ?, 'active', NOW())"; $stmt = $conn->prepare($sql); $stmt->bind_param("iss", $category_id, $subcategory_name, $description); if ($stmt->execute()) { $new_id = $conn->insert_id(); logActivity($_SESSION['user_id'], 'CREATE', 'expense_subcategories', "Created subcategory: $subcategory_name"); $success = "Subcategory '$subcategory_name' created successfully!"; // Clear form $subcategory_name = ''; $description = ''; } else { $error = "Failed to create subcategory: " . $stmt->error; } } } catch (Exception $e) { $error = "Database error: " . $e->getMessage(); } } } // Get subcategories by category $subcategories_by_category = []; $all_subcategories = fetchAll(" SELECT s.*, c.category_name FROM expense_subcategories s JOIN expense_categories c ON s.category_id = c.category_id ORDER BY c.category_name, s.subcategory_name "); foreach ($all_subcategories as $sub) { $subcategories_by_category[$sub['category_name']][] = $sub; } $page_title = 'Add Expense Subcategory'; require_once __DIR__ . '/../includes/header.php'; ?>

➕ Add Expense Subcategory

Create New Subcategory

No categories available. Create a category first.
Cancel

Existing Subcategories

$subcats): ?>

( subcategories)


No subcategories yet. Create your first one!

💡 Example Subcategories

['Diesel', 'Petrol', 'Gas'], 'Maintenance' => ['Vehicle Repair', 'Equipment Repair', 'Cleaning'], 'Utilities' => ['Electricity', 'Water', 'Internet'], 'Wages' => ['Full-time Staff', 'Part-time Staff', 'Daily Wages'], 'Ice' => ['Block Ice', 'Flake Ice', 'Ice Storage'], 'Transportation' => ['Delivery', 'Pickup', 'Freight'] ]; foreach ($examples as $category => $subs): ?>