query("INSERT INTO fee_collections (student_id, category_id, fee_amount, paid_amount, due_amount, payment_mode, transaction_no, payment_date, remarks, status) VALUES ('$student_id', '$category_id', '$fee_amount', '$paid_amount', '$due_amount', '$payment_mode', '$transaction_no', '$payment_date', '$remarks', '$status')"); echo ''; exit(); } // Search student by enrollment/roll number $student_data = null; $fee_breakdown = []; $show_debug = false; if(isset($_POST['search_student']) && !empty($_POST['enrollment_no'])) { $enrollment_no = mysqli_real_escape_string($con, $_POST['enrollment_no']); $stu_query = $con->query("SELECT s.*, c.course_name, c.id as course_id, ce.institute_name FROM students s LEFT JOIN courses c ON s.course_id = c.id LEFT JOIN centers ce ON s.center_id = ce.id WHERE s.enrollment_no = '$enrollment_no' AND s.status = 1"); if($stu_query->num_rows > 0) { $student_data = $stu_query->fetch_assoc(); $course_name = $student_data['course_name']; $course_id = $student_data['course_id']; $show_debug = true; // Debug ON // Try multiple queries to find matching fees // 1. Exact match $fee_structures = $con->query("SELECT fs.*, fc.category_name FROM fee_structure fs LEFT JOIN fee_categories fc ON fs.category_id = fc.id WHERE fs.class_name = '$course_name' AND fs.status = 1 ORDER BY fc.id ASC"); // 2. If no exact match, try LIKE if($fee_structures->num_rows == 0) { $fee_structures = $con->query("SELECT fs.*, fc.category_name FROM fee_structure fs LEFT JOIN fee_categories fc ON fs.category_id = fc.id WHERE fs.class_name LIKE '%$course_name%' AND fs.status = 1 ORDER BY fc.id ASC"); } // 3. If still no match, try matching by course_id pattern if($fee_structures->num_rows == 0) { // Extract number from course name (e.g., "9th" from "9th Class") preg_match('/(\d+)/', $course_name, $matches); if(!empty($matches[1])) { $class_num = $matches[1]; $fee_structures = $con->query("SELECT fs.*, fc.category_name FROM fee_structure fs LEFT JOIN fee_categories fc ON fs.category_id = fc.id WHERE fs.class_name LIKE '%$class_num%' AND fs.status = 1 ORDER BY fc.id ASC"); } } $total_fee = 0; $total_paid = 0; if($fee_structures && $fee_structures->num_rows > 0) { while($fs = $fee_structures->fetch_assoc()) { $paid_query = $con->query("SELECT SUM(paid_amount) as paid FROM fee_collections WHERE student_id = '".$student_data['id']."' AND category_id = '".$fs['category_id']."'"); $paid_for_category = $paid_query->fetch_assoc()['paid'] ?? 0; $due = $fs['fee_amount'] - $paid_for_category; $fee_breakdown[] = [ 'category_id' => $fs['category_id'], 'category_name' => $fs['category_name'], 'fee_amount' => $fs['fee_amount'], 'frequency' => $fs['frequency'], 'paid' => $paid_for_category, 'due' => max(0, $due), 'status' => ($due <= 0) ? 'Paid' : (($paid_for_category > 0) ? 'Partial' : 'Due') ]; $total_fee += $fs['fee_amount']; $total_paid += $paid_for_category; } } $student_data['total_fee'] = $total_fee; $student_data['total_paid'] = $total_paid; $student_data['balance'] = $total_fee - $total_paid; } else { echo ''; } } // Fetch fee categories $categories = $con->query("SELECT * FROM fee_categories WHERE status = 1 ORDER BY category_name ASC"); // Fetch fee collections $collections = $con->query("SELECT fc.*, s.name, s.enrollment_no, s.father, fct.category_name FROM fee_collections fc LEFT JOIN students s ON fc.student_id = s.id LEFT JOIN fee_categories fct ON fc.category_id = fct.id ORDER BY fc.id DESC"); ?>
Course Name: = $course_name ?> | Course ID: = $course_id ?>
Fee Records Found: = count($fee_breakdown) ?>
| Fee Category | Total Amount | Frequency | Paid | Due | Status | Action |
|---|---|---|---|---|---|---|
| = htmlspecialchars($fb['category_name']) ?> | ₹ = number_format($fb['fee_amount'], 2) ?> | = $fb['frequency'] ?> | ₹ = number_format($fb['paid'], 2) ?> | ₹ = number_format($fb['due'], 2) ?> | = $fb['status'] ?> | 0): ?> Paid |
| Total | ₹ = number_format($student_data['total_fee'], 2) ?> | ₹ = number_format($student_data['total_paid'], 2) ?> | ₹ = number_format($student_data['balance'], 2) ?> | |||
No fee structure found for course: = $course_name ?>
Please add fee structure for this class in Fee Structure Management.
| #ID | Student Name | Enroll. No. | Category | Fee Amount | Paid | Due | Mode | Date | Status |
|---|---|---|---|---|---|---|---|---|---|
| #= $col['id'] ?> | = htmlspecialchars($col['name']) ?> | = htmlspecialchars($col['enrollment_no']) ?> | = htmlspecialchars($col['category_name']) ?> | ₹ = number_format($col['fee_amount'], 2) ?> | ₹ = number_format($col['paid_amount'], 2) ?> | ₹ = number_format($col['due_amount'], 2) ?> | = htmlspecialchars($col['payment_mode']) ?> | = date('d-M-Y', strtotime($col['payment_date'])) ?> | = $col['status'] ?> |
| No fee collections found | |||||||||