File "payment_proof.php"

Full Path: /home/leadltht/fastlinkinternet.com/administrator/data-provider/admin/payment_proof.php
File size: 12.79 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// Enable error reporting for debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// Database connection
$conn = new mysqli("server329", "leadltht_prazey1982", "prazey1982123456", "leadltht_fastlinkinternet");

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Handle status update
if (isset($_POST['update_status'])) {
    $id = $_POST['id'];
    $status = $_POST['status'];

    $update_sql = "UPDATE pop SET Status = ? WHERE id = ?";
    $update_stmt = $conn->prepare($update_sql);
    if ($update_stmt === false) {
        die("Error preparing statement: " . $conn->error);
    }
    $update_stmt->bind_param('si', $status, $id);

    if ($update_stmt->execute()) {
        if ($status == 'Approved') {
            echo "<script>alert('Status updated to Approved successfully.'); window.location.href = 'https://fastlinkinternet.com/administrator/data-provider/admin/?page=approved_payment_proof';</script>";
        } elseif ($status == 'Declined') {
            echo "<script>alert('Status updated to Declined successfully.'); window.location.href = 'https://fastlinkinternet.com/administrator/data-provider/admin/?page=declined_payment_proof';</script>";
        } else {
            echo "<script>alert('Status updated successfully.'); window.location.href = 'https://fastlinkinternet.com/administrator/data-provider/admin/?page=payment_proof';</script>";
        }
    } else {
        echo "Error updating status: " . $conn->error;
    }
}

// Handle delete action
if (isset($_POST['delete_payment'])) {
    $id = $_POST['id'];

    $delete_sql = "DELETE FROM pop WHERE id = ?";
    $delete_stmt = $conn->prepare($delete_sql);
    if ($delete_stmt === false) {
        die("Error preparing statement: " . $conn->error);
    }
    $delete_stmt->bind_param('i', $id);

    if ($delete_stmt->execute()) {
        echo "<script>alert('Payment deleted successfully.'); window.location.href = 'https://fastlinkinternet.com/administrator/data-provider/admin/?page=payment_proof';</script>";
    } else {
        echo "Error deleting payment: " . $conn->error;
    }
}

// Fetch and sort payment proofs
$sort_column = isset($_GET['sort']) ? $_GET['sort'] : 'PaymentDate';
$sort_order = isset($_GET['order']) && $_GET['order'] == 'desc' ? 'desc' : 'asc';
$search = isset($_GET['search']) ? $_GET['search'] : '';

$sql = "SELECT * FROM pop WHERE ClientName LIKE ? AND Status = 'Pending' ORDER BY $sort_column $sort_order";
$stmt = $conn->prepare($sql);
$search_param = "%" . $search . "%";
$stmt->bind_param('s', $search_param);
$stmt->execute();
$result = $stmt->get_result();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Payment Proofs</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <style>
        .status-approved {
            color: green;
            font-weight: bold;
        }
        .status-declined {
            color: red;
            font-weight: bold;
        }
        .status-pending {
            color: blue;
            font-weight: bold;
        }
        .hidden {
            display: none;
        }
        .sortable {
            cursor: pointer;
        }
    </style>
</head>
<body>
<div class="container mt-5">
    <h2 class="mb-4">Payment Proofs</h2>
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>#</th>
                <th class="sortable" onclick="sortTable('PaymentDate')">Payment Date</th>
                <th class="sortable" onclick="sortTable('ReceiptNumber')">Receipt Number</th>
                <th class="sortable" onclick="sortTable('PaymentMethod')">Payment Method</th>
                <th class="sortable" onclick="sortTable('ClientName')">Client Name</th>
                <th class="sortable" onclick="sortTable('AmountReceived')">Amount Received</th>
                <th class="sortable" onclick="sortTable('AmountPaid')">Amount Paid</th>
                <th class="sortable" onclick="sortTable('Status')">Status</th>
                <th>Actions</th>
                <th>Delete</th>
            </tr>
        </thead>
        <tbody>
            <?php
            if ($result->num_rows > 0) {
                $counter = 1;
                while ($row = $result->fetch_assoc()) {
                    $status_class = '';
                    switch ($row['Status']) {
                        case 'Approved':
                            $status_class = 'status-approved';
                            break;
                        case 'Declined':
                            $status_class = 'status-declined';
                            break;
                        case 'Pending':
                            $status_class = 'status-pending';
                            break;
                        default:
                            $status_class = '';
                            break;
                    }
                    echo "<tr>
                        <td>{$counter}</td>
                        <td>{$row['PaymentDate']}</td>
                        <td>{$row['ReceiptNumber']}</td>
                        <td>{$row['PaymentMethod']}</td>
                        <td>{$row['ClientName']}</td>
                        <td><input type='text' class='form-control' value='{$row['AmountReceived']}' readonly></td>
                        <td><input type='text' class='form-control' id='amount_paid_{$row['id']}' name='amount_paid' value='{$row['AmountPaid']}'></td>
                        <td class='{$status_class}'>{$row['Status']}</td>
                        <td>
                            <form method='post' action='' class='status-form'>
                                <input type='hidden' name='id' value='{$row['id']}'>
                                <select name='status' class='form-control status-select'>
                                    <option value='Approved' " . ($row['Status'] == 'Approved' ? 'selected' : '') . ">Approved</option>
                                    <option value='Declined' " . ($row['Status'] == 'Declined' ? 'selected' : '') . ">Declined</option>
                                    <option value='Pending' " . ($row['Status'] == 'Pending' ? 'selected' : '') . ">Pending</option>
                                </select>
                                <button type='submit' name='update_status' class='btn btn-primary mt-2'>Update Status</button>
                            </form>
                            <div class='details-form hidden'>
                                <form method='post' action='save_payment_details.php'>
                                    <input type='hidden' name='id' value='{$row['id']}'>
                                    <div class='form-group'>
                                        <label for='payment_date'>Payment Date</label>
                                        <input type='date' class='form-control' name='payment_date' value='{$row['PaymentDate']}' readonly>
                                    </div>
                                    <div class='form-group'>
                                        <label for='receipt_number'>Receipt Number</label>
                                        <input type='text' class='form-control' name='receipt_number' value='{$row['ReceiptNumber']}' readonly>
                                    </div>
                                    <div class='form-group'>
                                        <label for='payment_method'>Payment Method</label>
                                        <input type='text' class='form-control' name='payment_method' value='{$row['PaymentMethod']}' readonly>
                                    </div>
                                    <div class='form-group'>
                                        <label for='client_name'>Client Name</label>
                                        <input type='text' class='form-control' name='client_name' value='{$row['ClientName']}' readonly>
                                    </div>
                                    <div class='form-group'>
                                        <label for='amount_paid'>Amount Paid</label>
                                        <input type='text' class='form-control' id='amount_paid_form_{$row['id']}' name='amount_paid' value='{$row['AmountPaid']}'>
                                    </div>
                                    <div class='form-group'>
                                        <label for='note'>Note</label>
                                        <textarea class='form-control' name='note'>{$row['note']}</textarea>
                                    </div>
                                    <div class='form-group'>
                                        <label for='name_of_payment'>Name of Payment</label>
                                        <input type='text' class='form-control' id='name_of_payment_{$row['id']}' name='name_of_payment' value=''>
                                    </div>
                                    <div class='form-group'>
                                        <label>Categories</label>
                                        <div>
                                            <label><input type='checkbox' name='categories[]' value='Balance From Previous Bills' data-id='{$row['id']}'> Balance From Previous Bills</label>
                                        </div>
                                        <div>
                                            <label><input type='checkbox' name='categories[]' value='Installation Fee' data-id='{$row['id']}'> Installation Fee</label>
                                        </div>
                                        <div>
                                            <label><input type='checkbox' name='categories[]' value='Net Monthly Fee' data-id='{$row['id']}'> Net Monthly Fee</label>
                                        </div>
                                    </div>
                                    <button type='submit' class='btn btn-primary'>Save</button>
                                </form>
                            </div>
                        </td>
                        <td>
                            <form method='post' action='' class='delete-form'>
                                <input type='hidden' name='id' value='{$row['id']}'>
                                <button type='submit' name='delete_payment' class='btn btn-danger'>Delete</button>
                            </form>
                        </td>
                    </tr>";
                    $counter++;
                }
            } else {
                echo "<tr><td colspan='10' class='text-center'>No payment proofs found.</td></tr>";
            }
            ?>
        </tbody>
    </table>
</div>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
    $(document).ready(function(){
        // Show the form if the status is "Approved"
        $('.status-select').change(function(){
            var selectedStatus = $(this).val();
            var detailsForm = $(this).closest('td').find('.details-form');
            if (selectedStatus == 'Approved') {
                detailsForm.removeClass('hidden');
            } else {
                detailsForm.addClass('hidden');
            }
        });

        // Update the Amount Paid and Name of Payment when the form is shown
        $('.details-form').each(function() {
            var rowId = $(this).closest('tr').find('input[name="id"]').val();
            $(this).find('#amount_paid_form_' + rowId).val($('#amount_paid_' + rowId).val());
        });

        // Set the name_of_payment based on the selected category
        $('input[name="categories[]"]').change(function(){
            var rowId = $(this).data('id');
            var selectedCategories = [];
            $('input[name="categories[]"]:checked').each(function(){
                selectedCategories.push($(this).val());
            });
            $('#name_of_payment_' + rowId).val(selectedCategories.join(', '));
        });
    });

    function sortTable(column) {
        var currentUrl = new URL(window.location.href);
        var currentSort = currentUrl.searchParams.get('sort');
        var currentOrder = currentUrl.searchParams.get('order');
        var newOrder = 'asc';
        if (currentSort === column && currentOrder === 'asc') {
            newOrder = 'desc';
        }
        currentUrl.searchParams.set('sort', column);
        currentUrl.searchParams.set('order', newOrder);
        window.location.href = currentUrl.href;
    }
</script>

</body>
</html>
<?php
$conn->close();
?>