????????????????????
??????????????????
ÿØÿà
 JFIF      ÿÛ C      


!"$"$ÿÛ C    
ÿÂ p 
" ÿÄ     
         ÿÄ             ÿÚ 
   ÕÔË®

(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

adadasdasdasasdasdas


.....................................................................................................................................????????????????????
??????????????????
ÿØÿà
 JFIF      ÿÛ C      


!"$"$ÿÛ C    
ÿÂ p 
" ÿÄ     
         ÿÄ             ÿÚ 
   ÕÔË®

(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

adadasdasdasasdasdas


.....................................................................................................................................<?php
include('session.php');
include 'connection.php';


$userId = $_SESSION['userid'];


// Get search filters
$search_admission = isset($_GET['search_admission']) ? mysqli_real_escape_string($conn, $_GET['search_admission']) : '';
$date_from = isset($_GET['date_from']) ? mysqli_real_escape_string($conn, $_GET['date_from']) : '';
$date_to = isset($_GET['date_to']) ? mysqli_real_escape_string($conn, $_GET['date_to']) : '';

// Build the WHERE clause for filters
$where_conditions = [];
if (!empty($search_admission)) {
    $where_conditions[] = "(f.admission_no LIKE '%$search_admission%' OR f.student_name LIKE '%$search_admission%')";
}
if (!empty($date_from)) {
    $where_conditions[] = "f.payment_date >= '$date_from'";
}
if (!empty($date_to)) {
    $where_conditions[] = "f.payment_date <= '$date_to'";
}

$where_clause = '';
if (!empty($where_conditions)) {
    $where_clause = 'WHERE ' . implode(' AND ', $where_conditions);
}

// Fetch fee records with accounts data

$where_clause = "WHERE f.addedby = '$userId'"; // You can append more conditions if needed

$sql = "SELECT f.*, 
               COALESCE(a.due_amount, f.total_fee) as account_due_amount,
               COALESCE(a.paid_amount, 0) as account_paid_amount,
               COALESCE(a.received_amount, 0) as account_received_amount
        FROM fees f 
        LEFT JOIN accounts a ON f.admission_no = a.admission_no
        $where_clause
        ORDER BY f.id DESC";

$result = $conn->query($sql);

// Store all data in array to avoid result consumption issues
$fee_records = array();
if ($result && $result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $fee_records[] = $row;
    }
}



// Fee Report SQl Code
// Fee Report SQL Start Here
// Totals for logged in user records (fees with addedby, accounts without)
$summaryall = ['total_received' => 0, 'total_due' => 0];
$summary_sql = "
    SELECT 
        (SELECT COALESCE(SUM(received_amount), 0) 
         FROM fees 
         WHERE addedby = '$userId') AS total_received,
        (SELECT COALESCE(SUM(due_amount), 0) 
         FROM accounts) AS total_due";

if ($res = $conn->query($summary_sql)) {
    if ($row = $res->fetch_assoc()) {
        $summaryall = $row;
    }
}

// Totals FEE Course Amount (no addedby filter for accounts table)
$summarytotal = ['total_fees' => 0, 'total_due' => 0];
$summary_sql = "
    SELECT 
        (SELECT COALESCE(SUM(total_fees), 0) 
         FROM accounts) AS total_fees,
        (SELECT COALESCE(SUM(due_amount), 0) 
         FROM accounts) AS total_due";

if ($res = $conn->query($summary_sql)) {
    if ($row = $res->fetch_assoc()) {
        $summarytotal = $row;
    }
}

// For last 30 days received amount for logged in user
$summary30all = ['today_received' => 0, 'total_received' => 0];
$last30From = date('Y-m-d', strtotime('-29 days'));
$todayDate = date('Y-m-d');

// Today received for logged in user
$today_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_today
              FROM fees
              WHERE payment_date = '$todayDate' AND addedby = '$userId'";
if ($resT = $conn->query($today_sql)) {
    if ($rowT = $resT->fetch_assoc()) {
        $summary30all['today_received'] = $rowT['total_today'];
    }
}

// Total received in last 30 days for logged in user
$total30_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_received
                FROM fees
                WHERE payment_date >= '$last30From' AND addedby = '$userId'";
if ($res30 = $conn->query($total30_sql)) {
    if ($row30 = $res30->fetch_assoc()) {
        $summary30all['total_received'] = $row30['total_received'];
    }
}

// Query 2: Total due for logged in user
$summaryd = ['total_received' => 0, 'total_due' => 0];
$due_sql = "SELECT COALESCE(SUM(due_amount), 0) AS total_due FROM accounts ";
if ($res2 = $conn->query($due_sql)) {
    if ($row2 = $res2->fetch_assoc()) {
        $summaryd['total_due'] = $row2['total_due'];
    }
}

// Query 2: Total due from accounts (no addedby filter)
$summaryd = ['total_received' => 0, 'total_due' => 0];
$due_sql = "SELECT COALESCE(SUM(due_amount), 0) AS total_due FROM accounts";
if ($res2 = $conn->query($due_sql)) {
    if ($row2 = $res2->fetch_assoc()) {
        $summaryd['total_due'] = $row2['total_due'];
    }
}

// Totals: Today and last 7 days for logged in user
$summary7all = ['today_received' => 0, 'total_received' => 0];
$last7From = date('Y-m-d', strtotime('-6 days'));

// Today received for logged in user
$today_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_today
              FROM fees
              WHERE payment_date = '$todayDate' AND addedby = '$userId'";
if ($resT = $conn->query($today_sql)) {
    if ($rowT = $resT->fetch_assoc()) {
        $summary7all['today_received'] = $rowT['total_today'];
    }
}

// Last 7 days received for logged in user
$received_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_received
                 FROM fees
                 WHERE payment_date >= '$last7From' AND addedby = '$userId'";
if ($res1 = $conn->query($received_sql)) {
    if ($row1 = $res1->fetch_assoc()) {
        $summary7all['total_received'] = $row1['total_received'];
    }
}






$a = 0;
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Fee Report |Xcel Training Institute</title>
    <!-- Favicon icon -->
    <link rel="icon" type="image/png" href="../images/logo-wide.png">
    <!-- Base Styling  -->
    <link rel="stylesheet" href="assets/main/css/fonts.css">
    <link rel="stylesheet" href="assets/main/css/style.css">
    <script src="https://code.jquery.com/jquery-3.6.4.min.js" integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8=" crossorigin="anonymous"></script>
    <style>
    .btn{
        background-color: #007bff;
        border: none;
        color: white;
        padding: 8px 15px;
        text-align: center;
        text-decoration: none;
        display: inline-block;
        font-size: 14px;
        margin: 4px 2px;
        cursor: pointer;
        border-radius: 4px;
    }
    .btn-primary { background-color: #007bff; }
    .btn-info { background-color: #17a2b8; }
    .btn-success { background-color: #28a745; }
    .btn-warning { background-color: #ffc107; color: #212529; }
    .btn-danger { background-color: #dc3545; }

    .filter-row {
        background: #f8f9fa;
        padding: 15px;
        margin-bottom: 20px;
        border-radius: 5px;
        border: 1px solid #dee2e6;
    }

    .detail-icon {
        color: #007bff;
        cursor: pointer;
        font-size: 18px;
        margin: 0 5px;
    }
    .detail-icon:hover {
        color: #0056b3;
    }

    /* Modal Styles */
    .modal {
        display: none;
        position: fixed;
        z-index: 1000;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0,0,0,0.5);
    }
    .modal-content {
        background-color: #fefefe;
        margin: 5% auto;
        padding: 20px;
        border: 1px solid #888;
        width: 80%;
        max-width: 800px;
        border-radius: 10px;
        max-height: 80vh;
        overflow-y: auto;
    }
    .close {
        color: #aaa;
        float: right;
        font-size: 28px;
        font-weight: bold;
        cursor: pointer;
    }
    .close:hover,
    .close:focus {
        color: black;
    }
    .student-info {
        background: #f8f9fa;
        padding: 15px;
        border-radius: 5px;
        margin-bottom: 20px;
    }
    .payment-history {
        margin-top: 20px;
    }
    .payment-row {
        background: #fff;
        border: 1px solid #dee2e6;
        margin-bottom: 10px;
        padding: 10px;
        border-radius: 5px;
    }
    .summary-box {
        background: #e9ecef;
        padding: 15px;
        border-radius: 5px;
        margin-bottom: 20px;
    }

    /* Table Styling */
    #feeReportTable {
        width: 100%;
        border-collapse: collapse;
        margin: 20px 0;
        background: white;
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }

    #feeReportTable th {
        background: #e9ecef;
        color: #090909;
        font-weight: 600;
        padding: 12px 8px;
        text-align: left;
        border: 1px solid #adb0b3;
        font-size: 14px;
    }

    #feeReportTable td {
        padding: 10px 8px;
        border: 1px solid #dee2e6;
        vertical-align: middle;
        font-size: 13px;
    }

    #feeReportTable tbody tr:nth-child(even) {
        background-color: #f8f9fa;
    }

    #feeReportTable tbody tr:hover {
        background-color: #e3f2fd;
    }

    .table-responsive {
        overflow-x: auto;
        border-radius: 8px;
        border: 1px solid #dee2e6;
    }

    /* Make table more compact */
    #feeReportTable th:first-child,
    #feeReportTable td:first-child {
        width: 60px;
        text-align: center;
    }

    #feeReportTable th:nth-child(2),
    #feeReportTable td:nth-child(2) {
        width: 70px;
        text-align: center;
    }
    </style>
</head>

<body>
    <div id="main-wrapper" class="show">

        <?php include "sidebar.php"; ?>
        <?php include "header.php"; ?>

        <div class="content-body">
            <div class="warper container-fluid">
                <div class="new-patients main_container">
                    
                    <div class="row">
                        <div class="col-lg-12">
                            <div class="card">
                                <div class="card-header">
                                    <h4 class="card-title">Fee Report</h4>
                                </div>
                                <div class="card-body">

                                <div class="row" style="margin-bottom: 15px;">
                                    
                                 <div class="col-md-3">
    <a href="fee-report.php" style="text-decoration: none; color: inherit;">
        <div class="summary-box" style="
            background-color: #f6c23e;
            padding: 20px; 
            border-radius: 10px; 
            box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
        ">
            <h5 style="margin: 0 0 12px 0; font-weight: 600;">Totals</h5>
            <!-- <div>Total Fees: <strong>₹<?php echo number_format((float)$summarytotal['total_fees'], 2); ?></strong></div> -->
            <div>Received: <strong>₹<?php echo number_format((float)$summaryall['total_received'], 2); ?></strong></div>
            <!-- <div>Due: <strong>₹<?php echo number_format((float)$summaryall['total_due'], 2); ?></strong></div> -->
        </div>
    </a>
</div>


                                        <div class="col-md-3">
                                        <a href="fee-report.php" style="text-decoration: none; color: inherit;">
    <div class="summary-box" style="
        background-color: #1cc88a;
        /* color: white;  */
        padding: 20px; 
        border-radius: 10px; 
        box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
    ">
        <h5 style="margin: 0 0 12px 0; font-weight: 600;">Last 30days</h5>
        <div>Received: <strong>₹<?php echo number_format((float)$summary30all['total_received'], 2); ?></strong></div>
     </div>
                                        </a>
</div>


                                        <div class="col-md-3">
                                        <a href="fee-report.php" style="text-decoration: none; color: inherit;">
    <div class="summary-box" style="
        background-color: #f6c23e;
        /* color: white;  */
        padding: 20px; 
        border-radius: 10px; 
        box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
    ">
        <h5 style="margin: 0 0 12px 0; font-weight: 600;">Last 7days</h5>
        <div>Received: <strong>₹<?php echo number_format((float)$summary7all['total_received'], 2); ?></strong></div>
     </div>
                                        </a>
</div>

                                        <div class="col-md-3">
                                        <a href="fee-report.php" style="text-decoration: none; color: inherit;">

    <div class="summary-box" style="
        background-color: #1cc88a;
        /* color: white;  */
        padding: 20px; 
        border-radius: 10px; 
        box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
    ">
        <h5 style="margin: 0 0 12px 0; font-weight: 600;">Today</h5>
        <div>Received: <strong>₹<?php echo number_format((float)$summary7all['today_received'], 2); ?></strong></div>
     </div>
    </a>
</div>

                                    </div>
                                    
                                    <!-- Filter Section -->
                                    <div class="filter-row">
                                        <form method="GET" action="">
                                            <div class="row">
                                                <div class="col-xl-3">
                                                    <label>Search (Admission No / Student Name)</label>
                                                    <input type="text" class="form-control" name="search_admission" value="<?php echo htmlspecialchars($search_admission); ?>" placeholder="Enter admission no or student name">
                                                </div>
                                                <div class="col-xl-3">
                                                    <label>Date From</label>
                                                    <input type="date" class="form-control" name="date_from" value="<?php echo htmlspecialchars($date_from); ?>">
                                                </div>
                                                <div class="col-xl-3">
                                                    <label>Date To</label>
                                                    <input type="date" class="form-control" name="date_to" value="<?php echo htmlspecialchars($date_to); ?>">
                                                </div>
                                                <div class="col-xl-3">
                                                    <label>&nbsp;</label><br>
                                                    <button type="submit" class="btn btn-primary">Filter</button>
                                                    <a href="fee-report.php" class="btn btn-secondary">Clear</a>
                                                </div>
                                            </div>
                                        </form>
                                    </div>

                                    <!-- Fee Report Table -->
                                    <div class="table-responsive">
                                        <table id="feeReportTable" class="display nowrap">
                                            <thead>
                                                <tr>
                                                    <th>S.No.</th>
                                                    <th>Details</th>
                                                    <th>MR No</th>
                                                    <th>Admission No</th>
                                                    <th>Student Name</th>
                                                    <th>Course</th>
                                                    <th>Total Fee</th>
                                                    <th>Due Amount</th>
                                                    <th>Received Amount</th>
                                                    <th>Status</th>
                                                    <th>Payment Date</th>
                                                    <th>Transaction ID</th>
                                                    <th>Bank/UPI</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                            <?php 
                                            // Display data from array
                                            if (empty($fee_records)) {
                                                echo '<tr><td colspan="12" style="text-align: center; color: #6c757d; padding: 20px;">No fee records found</td></tr>';
                                            } else {
                                                foreach($fee_records as $row):
                                            ?>
                                                    <tr>
                                                        <td><?php echo ++$a; ?></td>
                                                        <td>
                                                            <span class="fas fa-info-circle detail-icon" 
                                                                  onclick="showStudentDetails('<?php echo htmlspecialchars($row['admission_no']); ?>')" 
                                                                  title="View Student Details">
                                                            </span>
                                                        </td>
                                                        <td><?php echo htmlspecialchars($row['mr_no'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['admission_no'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['student_name'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['course_name'] ?? ''); ?></td>
                                                        <td>₹<?php echo number_format(floatval($row['total_fee'] ?? 0), 2); ?></td>
                                                        <td>₹<?php echo number_format(floatval($row['account_due_amount'] ?? 0), 2); ?></td>
                                                        <td>₹<?php echo number_format(floatval($row['received_amount'] ?? 0), 2); ?></td>
                                                        <td><?php echo htmlspecialchars($row['fee_status'] ?? ''); ?></td>
                                                        <td><?php echo $row['payment_date'] ? date('d-m-Y', strtotime($row['payment_date'])) : ''; ?></td>
                                                        <td><?php echo htmlspecialchars($row['transaction_id'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['bank_upi'] ?? ''); ?></td>
                                                    </tr>
                                            <?php 
                                                endforeach;
                                            }
                                            ?>
                                            </tbody>
                                        </table>
                                    </div>

                                </div>
                            </div>
                        </div>
                    </div>
                    
                </div>
            </div>
        </div>
        <!-- End section content -->

        <?php include('footer.php'); ?>
    </div>

    <!-- Student Details Modal -->
    <div id="studentDetailsModal" class="modal">
        <div class="modal-content">
            <span class="close">&times;</span>
            <h2 id="modalTitle">Student Details</h2>
            <div id="modalBody">
                <!-- Content will be loaded here -->
            </div>
        </div>
    </div>

    <script>
    // Modal functionality
    var modal = document.getElementById("studentDetailsModal");
    var span = document.getElementsByClassName("close")[0];

    span.onclick = function() {
        modal.style.display = "none";
    }

    window.onclick = function(event) {
        if (event.target == modal) {
            modal.style.display = "none";
        }
    }

    // Function to show student details
    function showStudentDetails(admission_no) {
        modal.style.display = "block";
        
        // Show loading
        document.getElementById("modalBody").innerHTML = '<div style="text-align: center; padding: 20px;"><i class="fas fa-spinner fa-spin"></i> Loading...</div>';
        
        // Fetch student details via AJAX
        $.post("get_student_details.php", {admission_no: admission_no}, function(response) {
            console.log('Raw response:', response);
            console.log('Response type:', typeof response);
            
            var data;
            
            // Check if response is already parsed by jQuery
            if (typeof response === 'object') {
                data = response;
            } else {
                try {
                    data = JSON.parse(response);
                } catch (e) {
                    console.error('JSON Parse Error:', e);
                    document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">Error parsing response: ' + e.message + '</div>';
                    return;
                }
            }
            
            if (data.success) {
                displayStudentDetails(data.student, data.account, data.payments);
            } else {
                document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">' + data.message + '</div>';
            }
        }).fail(function(xhr, status, error) {
            console.error('AJAX Error:', status, error);
            document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">Failed to load student details: ' + error + '</div>';
        });
    }

    // Function to display student details in modal
    function displayStudentDetails(student, account, payments) {
        var html = '';
        
        // Student Info
        html += '<div class="student-info">';
        html += '<h4>Student Information</h4>';
        html += '<div class="row">';
        html += '<div class="col-md-6"><strong>Name:</strong> ' + student.student_name + '</div>';
        html += '<div class="col-md-6"><strong>Father\'s Name:</strong> ' + student.fathers_name + '</div>';
        html += '<div class="col-md-6"><strong>Admission No:</strong> ' + student.admission_no + '</div>';
        html += '<div class="col-md-6"><strong>Mobile:</strong> ' + student.mobile_no + '</div>';
        html += '<div class="col-md-6"><strong>Course:</strong> ' + student.course_name + '</div>';
        html += '<div class="col-md-6"><strong>Course Fee:</strong> ₹' + parseFloat(student.total_fee).toFixed(2) + '</div>';
        html += '</div>';
        html += '</div>';
        
        // Account Summary
        html += '<div class="summary-box">';
        html += '<h4>Account Summary</h4>';
        html += '<div class="row">';
        html += '<div class="col-md-3"><strong>Total Fees:</strong><br>₹' + parseFloat(account.total_fees || student.total_fee).toFixed(2) + '</div>';
        html += '<div class="col-md-3"><strong>Due Amount:</strong><br>₹' + parseFloat(account.due_amount || student.total_fee).toFixed(2) + '</div>';
        html += '<div class="col-md-3"><strong>Paid Amount:</strong><br>₹' + parseFloat(account.paid_amount || 0).toFixed(2) + '</div>';
        html += '<div class="col-md-3"><strong>Total Received:</strong><br>₹' + parseFloat(account.received_amount || 0).toFixed(2) + '</div>';
        html += '</div>';
        html += '</div>';
        
        // Payment History
        html += '<div class="payment-history">';
        html += '<h4>Payment History</h4>';
        
        if (payments && payments.length > 0) {
            payments.forEach(function(payment, index) {
                html += '<div class="payment-row">';
                html += '<div class="row">';
                html += '<div class="col-md-2"><strong>Payment #' + (index + 1) + '</strong></div>';
                html += '<div class="col-md-2">₹' + parseFloat(payment.received_amount).toFixed(2) + '</div>';
                html += '<div class="col-md-2">' + payment.payment_date + '</div>';
                html += '<div class="col-md-2">MR: ' + payment.mr_no + '</div>';
                html += '<div class="col-md-2">' + (payment.transaction_id || '-') + '</div>';
                html += '<div class="col-md-2">' + (payment.bank_upi || '-') + '</div>';
                html += '</div>';
                html += '</div>';
            });
        } else {
            html += '<div class="payment-row">No payment history found</div>';
        }
        
        html += '</div>';
        
        document.getElementById("modalBody").innerHTML = html;
    }
    </script>

    <!-- Include other scripts -->
   <script src="assets/plugins/popper/popper.min.js"></script>

    <!-- Bootstrap -->
    <script src="assets/plugins/bootstrap/js/bootstrap.js"></script>

    <!-- Moment -->
    <script src="assets/plugins/moment/moment.min.js"></script>

    <!-- Date Range Picker -->
    <script src="assets/plugins/daterangepicker/daterangepicker.min.js"></script>

    <!-- Datatable -->
    <script src="assets/plugins/datatables/jquery.dataTables.min.js"></script>
    <script src="assets/js/init-tdatatable.js"></script>

    <!-- DataTables Buttons (CDN) for export) -->
    <link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.4.1/css/buttons.dataTables.min.css">
    <script src="https://cdn.datatables.net/buttons/2.4.1/js/dataTables.buttons.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
    <script src="https://cdn.datatables.net/buttons/2.4.1/js/buttons.html5.min.js"></script>
    <script src="https://cdn.datatables.net/buttons/2.4.1/js/buttons.print.min.js"></script>

    <script>
    // Initialize export buttons on fee report table
    (function(){
      if (!jQuery.fn.dataTable) return;
      if (!jQuery.fn.dataTable.Buttons) return;
      var sel = '#feeReportTable';
      if (!jQuery(sel).length) return;
      try { jQuery(sel).DataTable().destroy(); } catch(e) {}
      jQuery(sel).DataTable({
        order: [[0,'desc']],
        dom: 'Bfrtip',
        buttons: [
          {extend: 'copy', title: 'Fee Report'},
          {extend: 'csv', title: 'Fee Report'},
          {extend: 'excel', title: 'Fee Report'},
          {extend: 'pdf', title: 'Fee Report'},
          {extend: 'print', title: 'Fee Report'}
        ]
      });
    })();
    </script>

    <!-- Chart js -->
    <script src="assets/plugins/chart/chart/Chart.min.js"></script>
    <script src="assets/js/charts-custom.js"></script>

    <!-- Main Custom JQuery -->
    <script src="assets/js/toggleFullScreen.js"></script>
    <script src="assets/js/main.js"></script>
</body>
</html>