????????????????????
??????????????????
ÿØÿà
 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';

// Start session for flash messages if not already
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

$user = 'xceljsr_db';
$password = 'xcel@123#$';
$database = 'xceljsr_db';
$servername = 'localhost';
$mysqli = new mysqli($servername, $user, $password, $database);

// Checking for connections
if ($mysqli->connect_error) {
    $_SESSION['error'] = 'Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error;
    header('Location: extra-fee.php');
    exit;
}

// Check if form is submitted
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Sanitize and validate inputs
    $admission_no = mysqli_real_escape_string($mysqli, $_POST['admission_no'] ?? '');
    $student_name = mysqli_real_escape_string($mysqli, $_POST['student_name'] ?? '');
    $fathers_name = mysqli_real_escape_string($mysqli, $_POST['fathers_name'] ?? '');
    $mobile_no = mysqli_real_escape_string($mysqli, $_POST['mobile_no'] ?? '');
    $course_name = mysqli_real_escape_string($mysqli, $_POST['course_name'] ?? '');
    $payment_for = mysqli_real_escape_string($mysqli, $_POST['payment_for'] ?? '');
    $reason = mysqli_real_escape_string($mysqli, $_POST['reason'] ?? '');
    $received_amount = floatval($_POST['received_amount'] ?? 0);
    $extra_paid_fee = floatval($_POST['extra_paid_fee'] ?? 0);  // This is the cumulative value from form
    $payment_mode = mysqli_real_escape_string($mysqli, $_POST['payment_mode'] ?? '');
    $payment_date = mysqli_real_escape_string($mysqli, $_POST['payment_date'] ?? date('Y-m-d'));
    $transaction_id = mysqli_real_escape_string($mysqli, $_POST['transaction_id'] ?? '');
    $bank_upi = mysqli_real_escape_string($mysqli, $_POST['bank_upi'] ?? '');
    $extra_fee_no = mysqli_real_escape_string($mysqli, $_POST['extra_fee_no'] ?? '');
    $addedby = $_SESSION['uid'];  // From session

    // Validation
    $errors = [];
    if (empty($admission_no)) $errors[] = 'Admission No is required.';
    if (empty($payment_for)) $errors[] = 'Payment For is required.';
    if ($received_amount <= 0) $errors[] = 'Received Amount must be greater than 0.';
    if (empty($extra_fee_no)) $errors[] = 'Extra Fee No is required.';

    if (!empty($errors)) {
        $_SESSION['error'] = implode(', ', $errors);
        header('Location: extra-fee.php');
        exit;
    }

    // Begin transaction for atomicity (insert + update)
    $mysqli->autocommit(FALSE);

    try {
        // Insert into extra_fee table
        $insert_sql = "INSERT INTO extra_fee (extra_fee_no, admission_no, student_name, payment_for, reason, received_amount, extra_paid_fee, payment_mode, payment_date, transaction_id, bank_upi, addedby) 
                       VALUES ('$extra_fee_no', '$admission_no', '$student_name', '$payment_for', '$reason', $received_amount, $extra_paid_fee, '$payment_mode', '$payment_date', '$transaction_id', '$bank_upi', '$addedby')";
        
        if (!$mysqli->query($insert_sql)) {
            throw new Exception('Error inserting extra fee: ' . $mysqli->error);
        }

        // Update accounts table: add received_amount to extra_fee
        $update_sql = "UPDATE accounts SET extra_fee = extra_fee + $received_amount WHERE admission_no = '$admission_no'";
        if (!$mysqli->query($update_sql)) {
            throw new Exception('Error updating accounts: ' . $mysqli->error);
        }

        // If no rows updated (no account exists), you might want to handle that - for now, assume it exists or insert if needed
        if ($mysqli->affected_rows == 0) {
            // Optional: Insert a new account record if doesn't exist
            $default_total = 0;  // Or fetch from admissions if needed
            $insert_account_sql = "INSERT INTO accounts (admission_no, total_fees, due_amount, paid_amount, received_amount, extra_fee) 
                                   VALUES ('$admission_no', $default_total, $default_total, 0, 0, $received_amount)";
            if (!$mysqli->query($insert_account_sql)) {
                throw new Exception('Error creating account: ' . $mysqli->error);
            }
        }

        $mysqli->commit();
        $_SESSION['success'] = 'Extra Fee created successfully!';
        header('Location: extra-fee.php');
        exit;

    } catch (Exception $e) {
        $mysqli->rollback();
        $_SESSION['error'] = $e->getMessage();
        header('Location: extra-fee.php');
        exit;
    }

} else {
    $_SESSION['error'] = 'Invalid request method.';
    header('Location: extra-fee.php');
    exit;
}

$mysqli->close();
?>