????????????????????
??????????????????
ÿØÿà
 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';

// 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[] = "(ef.admission_no LIKE '%$search_admission%' OR ef.student_name LIKE '%$search_admission%')";
}
if (!empty($date_from)) {
    $where_conditions[] = "ef.payment_date >= '$date_from'";
}
if (!empty($date_to)) {
    $where_conditions[] = "ef.payment_date <= '$date_to'";
}

$where_clause = '';
if (!empty($where_conditions)) {
    $where_clause = 'WHERE ' . implode(' AND ', $where_conditions);
}

// Fetch extra fee records with accounts data
$sql = "SELECT ef.*, 
               COALESCE(a.extra_fee, 0) as account_extra_fee
        FROM extra_fee ef
        LEFT JOIN accounts a ON ef.admission_no = a.admission_no
        $where_clause
        ORDER BY ef.id DESC";

$result = $conn->query($sql);

// Store all data in array to avoid result consumption issues
$extra_records = array();
if ($result && $result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $extra_records[] = $row;
    }
}

// Totals for all records
$summaryall = ['total_extra_received' => 0, 'total_extra_cumulative' => 0];
$summary_sql = "
    SELECT 
        (SELECT COALESCE(SUM(received_amount), 0) FROM extra_fee) AS total_extra_received,
        (SELECT COALESCE(SUM(extra_fee), 0) FROM accounts) AS total_extra_cumulative
";

if ($res = $conn->query($summary_sql)) {
    if ($row = $res->fetch_assoc()) {
        $summaryall = $row;
    }
}

// For last 30 days received amount
$summary30all = ['today_received' => 0, 'total_received' => 0];
$last30From = date('Y-m-d', strtotime('-29 days'));
$todayDate = date('Y-m-d');

// Today received (extra_fee table)
$today_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_today
              FROM extra_fee
              WHERE payment_date = '$todayDate'";
if ($resT = $conn->query($today_sql)) {
    if ($rowT = $resT->fetch_assoc()) {
        $summary30all['today_received'] = $rowT['total_today'];
    }
}

// Total received in last 30 days
$total30_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_received
                FROM extra_fee
                WHERE payment_date >= '$last30From'";
if ($res30 = $conn->query($total30_sql)) {
    if ($row30 = $res30->fetch_assoc()) {
        $summary30all['total_received'] = $row30['total_received'];
    }
}

// Total extra cumulative from accounts (all records)
$summaryd = ['total_extra_received' => 0, 'total_extra_cumulative' => 0];
$extra_cumulative_sql = "SELECT COALESCE(SUM(extra_fee), 0) AS total_extra_cumulative FROM accounts";
if ($res2 = $conn->query($extra_cumulative_sql)) {
    if ($row2 = $res2->fetch_assoc()) {
        $summaryd['total_extra_cumulative'] = $row2['total_extra_cumulative'];
    }
}

// Totals: Last 7 days
$summary7all = ['today_received' => 0, 'total_received' => 0];
$last7From = date('Y-m-d', strtotime('-6 days'));

// Today received (already calculated above)
$summary7all['today_received'] = $summary30all['today_received'];

// Last 7 days received
$received_sql = "SELECT COALESCE(SUM(received_amount), 0) AS total_received
                 FROM extra_fee
                 WHERE payment_date >= '$last7From'";
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>Extra 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 */
    #extraFeeReportTable {
        width: 100%;
        border-collapse: collapse;
        margin: 20px 0;
        background: white;
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }

    #extraFeeReportTable th {
        background: #e9ecef;
        color: #090909;
        font-weight: 600;
        padding: 12px 8px;
        text-align: left;
        border: 1px solid #adb0b3;
        font-size: 14px;
    }

    #extraFeeReportTable td {
        padding: 10px 8px;
        border: 1px solid #dee2e6;
        vertical-align: middle;
        font-size: 13px;
    }

    #extraFeeReportTable tbody tr:nth-child(even) {
        background-color: #f8f9fa;
    }

    #extraFeeReportTable tbody tr:hover {
        background-color: #e3f2fd;
    }

    .table-responsive {
        overflow-x: auto;
        border-radius: 8px;
        border: 1px solid #dee2e6;
    }

    /* Make table more compact */
    #extraFeeReportTable th:first-child,
    #extraFeeReportTable td:first-child {
        width: 60px;
        text-align: center;
    }

    #extraFeeReportTable th:nth-child(2),
    #extraFeeReportTable 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">Extra Fee Report</h4>
                                </div>
                                <div class="card-body">
                                    <div class="row" style="margin-bottom: 15px;">
                                        <div class="col-md-3">
    <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 Extra Fees: <strong>₹<?php echo number_format((float)$summaryall['total_extra_cumulative'], 2); ?></strong></div>
        <div>Received: <strong>₹<?php echo number_format((float)$summaryall['total_extra_received'], 2); ?></strong></div>
    </div>
</div>

                                        <div class="col-md-3">
    <div class="summary-box" style="
        background-color: #1cc88a;
        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>Total Extra: <strong>₹<?php echo number_format((float)$summaryd['total_extra_cumulative'], 2); ?></strong></div>
    </div>
</div>

                                        <div class="col-md-3">
    <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;">Last 7days</h5>
        <div>Received: <strong>₹<?php echo number_format((float)$summary7all['total_received'], 2); ?></strong></div>
         <div>Total Extra: <strong>₹<?php echo number_format((float)$summaryd['total_extra_cumulative'], 2); ?></strong></div>
    </div>
</div>
                                        <div class="col-md-3">
    <div class="summary-box" style="
        background-color: #1cc88a;
        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>Total Extra: <strong>₹<?php echo number_format((float)$summaryd['total_extra_cumulative'], 2); ?></strong></div>
    </div>
</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="extra-fee-report.php" class="btn btn-secondary">Clear</a>
                                                </div>
                                            </div>
                                        </form>
                                    </div>

                                    <!-- Extra Fee Report Table -->
                                    <div class="table-responsive">
                                        <table id="extraFeeReportTable" class="display nowrap">
                                            <thead>
                                                <tr>
                                                    <th>S.No.</th>
                                                    <th>Details</th>
                                                    <th>Extra Fee No</th>
                                                    <th>Admission No</th>
                                                    <th>Student Name</th>
                                                    <th>Payment For</th>
                                                    <th>Received Amount</th>
                                                    <th>Payment Date</th>
                                                    <th>AddedBy</th>
                                                    <th>Payment Mode</th>
                                                    <th>Transaction ID</th>
                                                    <th>Bank/UPI</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                            <?php 
                                            // Display data from array
                                            if (empty($extra_records)) {
                                                echo '<tr><td colspan="12" style="text-align: center; color: #6c757d; padding: 20px;">No extra fee records found</td></tr>';
                                            } else {
                                                foreach($extra_records as $row):
                                            ?>
                                                    <tr>
                                                        <td><?php echo ++$a; ?></td>
                                                        <td>
                                                            <span class="fas fa-info-circle detail-icon" 
                                                                  onclick="showExtraStudentDetails('<?php echo htmlspecialchars($row['admission_no']); ?>')" 
                                                                  title="View Student Details">
                                                            </span>
                                                        </td>
                                                        <td><?php echo htmlspecialchars($row['extra_fee_no'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['admission_no'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['student_name'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['payment_for'] ?? ''); ?></td>
                                                        <td>₹<?php echo number_format(floatval($row['received_amount'] ?? 0), 2); ?></td>
                                                        <td><?php echo $row['payment_date'] ? date('d-m-Y', strtotime($row['payment_date'])) : ''; ?></td>
                                                        <td><?php echo htmlspecialchars($row['addedby'] ?? ''); ?></td>
                                                        <td><?php echo htmlspecialchars($row['payment_mode'] ?? ''); ?></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 (same as original, but for extra fees) -->
<div id="studentDetailsModal" class="modal">
    <div class="modal-content">
        <span class="close">&times;</span>
        <h2 id="modalTitle">Extra Fee Student Details</h2>
        <div id="modalBody">
            <!-- Content will be loaded here -->
        </div>
    </div>
</div>

    <script>
// Global modal setup (must be outside functions for global access)
var modal = document.getElementById("studentDetailsModal");
var span = document.getElementsByClassName("close")[0];

// Modal close handlers (same as original)
if (span) {
    span.onclick = function() {
        modal.style.display = "none";
    }
}

window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}

// Function to show extra student details (called from onclick in table)
function showExtraStudentDetails(admission_no) {
    if (!modal) {
        console.error('Modal element not found! Check HTML ID="studentDetailsModal"');
        alert('Modal not found. Please refresh the page.');
        return;
    }
    
    modal.style.display = "block";  // This line was failing—now modal is global
    
    // Show loading
    document.getElementById("modalBody").innerHTML = '<div style="text-align: center; padding: 20px;"><i class="fas fa-spinner fa-spin"></i> Loading...</div>';
    
    // Fetch details via AJAX
    $.post("get_extra_student_details.php", {admission_no: admission_no}, function(response) {
        console.log('Raw response from get_extra_student_details.php:', response);  // DEBUG: Log for troubleshooting
        console.log('Response type:', typeof response);
        
        var data;
        
        // Handle auto-parsed object (jQuery JSON) or string
        if (jQuery.isPlainObject(response) || typeof response === 'object') {
            data = response;
            console.log('Using pre-parsed data:', data);  // DEBUG
        } else if (typeof response === 'string') {
            try {
                data = JSON.parse(response);
                console.log('Parsed JSON data:', data);  // DEBUG
            } catch (e) {
                console.error('JSON Parse Error:', e, response);
                document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">Error parsing response: ' + e.message + '</div>';
                return;
            }
        } else {
            console.error('Unexpected response type:', typeof response, response);
            document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">Unexpected response from server.</div>';
            return;
        }
        
        if (data.success) {
            displayExtraStudentDetails(data.student, data.account, data.payments);
        } else if (data.error) {
            document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">Server Error: ' + data.error + '</div>';
        } else {
            document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">' + (data.message || 'Unknown error - no student found.') + '</div>';
        }
    }).fail(function(xhr, status, error) {
        console.error('AJAX Error fetching details:', status, error, xhr.responseText);  // DEBUG
        document.getElementById("modalBody").innerHTML = '<div class="alert alert-danger">Failed to load details: ' + error + '. Check if get_extra_student_details.php exists.</div>';
    });
}

// Function to display extra student details in modal (adapted for extra fees)
function displayExtraStudentDetails(student, account, payments) {
    var html = '';
    
    // Update modal title
    document.getElementById("modalTitle").innerHTML = 'Extra Fee Details for ' + (student.student_name || 'Student');
    
    // Student Info Section
    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 || 'N/A') + '</div>';
    html += '<div class="col-md-6"><strong>Father\'s Name:</strong> ' + (student.fathers_name || 'N/A') + '</div>';
    html += '<div class="col-md-6"><strong>Admission No:</strong> ' + (student.admission_no || 'N/A') + '</div>';
    html += '<div class="col-md-6"><strong>Mobile:</strong> ' + (student.mobile_no || student.contact_personal || 'N/A') + '</div>';  // Fallback to contact_personal
    html += '<div class="col-md-6"><strong>Course:</strong> ' + (student.course || 'N/A') + '</div>';
    html += '<div class="col-md-6"><strong>DOB:</strong> ' + (student.dob || 'N/A') + '</div>';
    html += '<div class="col-md-6"><strong>Email:</strong> ' + (student.email_id || 'N/A') + '</div>';
    html += '<div class="col-md-12"><strong>Present Address:</strong> ' + (student.present_address || 'N/A') + '</div>';
    html += '</div>';
    html += '</div>';
    
    // Account Summary Section (highlight extra_fee)
    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 || 0).toFixed(2) + '</div>';
    html += '<div class="col-md-3"><strong>Due Amount:</strong><br>₹' + parseFloat(account.due_amount || 0).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 class="col-md-6"><strong><em>Extra Fee Cumulative:</em></strong><br><strong>₹' + parseFloat(account.extra_fee || 0).toFixed(2) + '</strong> <span class="text-success">(Extra Fees Only)</span></div>';  // Highlighted
    html += '</div>';
    html += '</div>';
    
    // Extra Fee Payment History Section
    html += '<div class="payment-history">';
    html += '<h4>Extra Fee 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-1"><strong>#' + (index + 1) + '</strong></div>';
            html += '<div class="col-md-2">₹' + parseFloat(payment.received_amount || 0).toFixed(2) + '</div>';
            html += '<div class="col-md-2">' + (payment.payment_date ? new Date(payment.payment_date).toLocaleDateString('en-IN') : 'N/A') + '</div>';
            html += '<div class="col-md-2"><strong>For:</strong> ' + (payment.payment_for || 'N/A') + '</div>';
            html += '<div class="col-md-2"><strong>Reason:</strong> ' + (payment.reason || '-') + '</div>';
            html += '<div class="col-md-2">Mode: ' + (payment.payment_mode || 'N/A') + '</div>';
            html += '<div class="col-md-1">ID: ' + (payment.transaction_id || '-') + '</div>';
            html += '</div>';
            html += '</div>';
        });
        html += '<div class="mt-2"><small>Total Extra Payments: ' + payments.length + '</small></div>';
    } else {
        html += '<div class="payment-row"><em>No extra fee payment history found for this student.</em></div>';
    }
    
    html += '</div>';
    
    // Set the HTML in modal body
    document.getElementById("modalBody").innerHTML = html;
    console.log('Modal populated successfully');  // DEBUG
}

// Ensure jQuery is ready (wrap in document.ready if not already)
$(document).ready(function() {
    console.log('Extra Fee Report JS Loaded - Modal Ready');  // DEBUG: Confirm setup
});
</script>

    <!-- popper js -->
    <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>

    <!-- 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>

    <!--