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();
?>