[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: details.php
<?php require_once '../config/database.php'; require_once '../config/functions.php'; requireAuth('accountant'); $shift_id = $_GET['id'] ?? ''; if (!$shift_id) { header("Location: /shifts/manage.php"); exit; } // Get shift details $stmt = $pdo->prepare(" SELECT s.*, u.full_name as representative_name, u.phone as representative_phone, su.full_name as started_by_name, eu.full_name as ended_by_name FROM shifts s JOIN users u ON s.representative_id = u.id LEFT JOIN users su ON s.started_by = su.id LEFT JOIN users eu ON s.ended_by = eu.id WHERE s.id = ? "); $stmt->execute([$shift_id]); $shift = $stmt->fetch(); if (!$shift) { header("Location: /shifts/manage.php?error=shift_not_found"); exit; } // Get shift products $stmt = $pdo->prepare(" SELECT sp.*, p.name, p.unit, p.price FROM shift_products sp JOIN products p ON sp.product_id = p.id WHERE sp.shift_id = ? ORDER BY p.name ASC "); $stmt->execute([$shift_id]); $shift_products = $stmt->fetchAll(); // Get shift invoices $stmt = $pdo->prepare(" SELECT i.*, c.name as client_name FROM invoices i JOIN clients c ON i.client_id = c.id WHERE i.shift_id = ? ORDER BY i.created_at DESC "); $stmt->execute([$shift_id]); $invoices = $stmt->fetchAll(); // Get shift payments $stmt = $pdo->prepare(" SELECT p.*, c.name as client_name FROM payments p JOIN clients c ON p.client_id = c.id WHERE p.shift_id = ? ORDER BY p.created_at DESC "); $stmt->execute([$shift_id]); $payments = $stmt->fetchAll(); // Get shift returns $stmt = $pdo->prepare(" SELECT r.*, c.name as client_name, p.name as product_name FROM returns r JOIN clients c ON r.client_id = c.id JOIN products p ON r.product_id = p.id WHERE r.shift_id = ? AND r.status = 'approved' ORDER BY r.processed_at DESC "); $stmt->execute([$shift_id]); $returns = $stmt->fetchAll(); // Calculate totals $total_invoices = array_sum(array_column($invoices, 'invoice_total')); $total_payments = array_sum(array_column($payments, 'amount')); $total_returns = array_sum(array_column($returns, 'return_value')); $cash_balance = $shift['opening_cash'] + $total_payments - $total_returns; ?> <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>تفاصيل الوردية - <?= htmlspecialchars($shift['representative_name']) ?></title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.rtl.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> <style> .shift-header { background: linear-gradient(135deg, #198754, #20c997); color: white; border-radius: 15px; } .status-active { color: #198754; } .status-closed { color: #6c757d; } .status-requested { color: #ffc107; } .status-end-requested { color: #fd7e14; } .whatsapp-btn { background: #25d366; border: none; color: white; } .whatsapp-btn:hover { background: #128c7e; color: white; } </style> </head> <body class="bg-light"> <div class="container-fluid mt-4"> <div class="d-flex justify-content-between align-items-center mb-4"> <h2><i class="fas fa-clock me-2"></i>تفاصيل الوردية</h2> <div> <button class="btn whatsapp-btn me-2" onclick="sendShiftSummary()"> <i class="fab fa-whatsapp me-1"></i>إرسال ملخص واتساب </button> <a href="/shifts/manage.php" class="btn btn-outline-secondary"> <i class="fas fa-arrow-left me-1"></i>العودة </a> </div> </div> <!-- Shift Header --> <div class="shift-header p-4 mb-4"> <div class="row"> <div class="col-md-6"> <h3><?= htmlspecialchars($shift['representative_name']) ?></h3> <p class="mb-1">الهاتف: <?= htmlspecialchars($shift['representative_phone']) ?></p> <p class="mb-0"> الحالة: <span class="status-<?= str_replace('_', '-', $shift['status']) ?>"> <?php $status_text = [ 'requested' => 'طلب بدء', 'active' => 'نشطة', 'end_requested' => 'طلب إنهاء', 'closed' => 'مغلقة' ]; echo $status_text[$shift['status']]; ?> </span> </p> </div> <div class="col-md-6 text-end"> <?php if ($shift['started_at']): ?> <p class="mb-1">بدأت: <?= date('Y-m-d H:i', strtotime($shift['started_at'])) ?></p> <p class="mb-1">بواسطة: <?= htmlspecialchars($shift['started_by_name']) ?></p> <?php endif; ?> <?php if ($shift['ended_at']): ?> <p class="mb-1">انتهت: <?= date('Y-m-d H:i', strtotime($shift['ended_at'])) ?></p> <p class="mb-0">بواسطة: <?= htmlspecialchars($shift['ended_by_name']) ?></p> <?php endif; ?> </div> </div> </div> <!-- Statistics --> <div class="row mb-4"> <div class="col-md-2 mb-3"> <div class="card text-center"> <div class="card-body"> <h5 class="text-primary"><?= count($invoices) ?></h5> <small>فاتورة</small> </div> </div> </div> <div class="col-md-2 mb-3"> <div class="card text-center"> <div class="card-body"> <h5 class="text-info"><?= formatCurrency($total_invoices) ?></h5> <small>إجمالي المبيعات</small> </div> </div> </div> <div class="col-md-2 mb-3"> <div class="card text-center"> <div class="card-body"> <h5 class="text-success"><?= count($payments) ?></h5> <small>دفعة</small> </div> </div> </div> <div class="col-md-2 mb-3"> <div class="card text-center"> <div class="card-body"> <h5 class="text-success"><?= formatCurrency($total_payments) ?></h5> <small>إجمالي المدفوعات</small> </div> </div> </div> <div class="col-md-2 mb-3"> <div class="card text-center"> <div class="card-body"> <h5 class="text-warning"><?= count($returns) ?></h5> <small>مرتجع</small> </div> </div> </div> <div class="col-md-2 mb-3"> <div class="card text-center"> <div class="card-body"> <h5 class="text-danger"><?= formatCurrency($cash_balance) ?></h5> <small>رصيد النقد</small> </div> </div> </div> </div> <!-- Tabs --> <ul class="nav nav-tabs" id="shiftTabs" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="products-tab" data-bs-toggle="tab" data-bs-target="#products" type="button"> <i class="fas fa-boxes me-1"></i>المنتجات </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="invoices-tab" data-bs-toggle="tab" data-bs-target="#invoices" type="button"> <i class="fas fa-file-invoice me-1"></i>الفواتير (<?= count($invoices) ?>) </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="payments-tab" data-bs-toggle="tab" data-bs-target="#payments" type="button"> <i class="fas fa-money-bill me-1"></i>المدفوعات (<?= count($payments) ?>) </button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="returns-tab" data-bs-toggle="tab" data-bs-target="#returns" type="button"> <i class="fas fa-undo me-1"></i>المرتجعات (<?= count($returns) ?>) </button> </li> </ul> <div class="tab-content" id="shiftTabsContent"> <!-- Products Tab --> <div class="tab-pane fade show active" id="products" role="tabpanel"> <div class="card"> <div class="card-header"> <h5 class="mb-0">مخزون الوردية</h5> </div> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead class="table-light"> <tr> <th>المنتج</th> <th>المخصص</th> <th>المباع</th> <th>المرتجع</th> <th>المتبقي</th> <th>النسبة المباعة</th> </tr> </thead> <tbody> <?php foreach ($shift_products as $product): ?> <?php $sold_percentage = $product['assigned_quantity'] > 0 ? ($product['sold_quantity'] / $product['assigned_quantity']) * 100 : 0; ?> <tr> <td><?= htmlspecialchars($product['name']) ?></td> <td><?= $product['assigned_quantity'] ?> <?= htmlspecialchars($product['unit']) ?></td> <td><?= $product['sold_quantity'] ?> <?= htmlspecialchars($product['unit']) ?></td> <td><?= $product['returned_quantity'] ?> <?= htmlspecialchars($product['unit']) ?></td> <td><?= $product['remaining_quantity'] ?> <?= htmlspecialchars($product['unit']) ?></td> <td> <div class="progress" style="height: 20px;"> <div class="progress-bar bg-success" style="width: <?= $sold_percentage ?>%"> <?= number_format($sold_percentage, 1) ?>% </div> </div> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> <!-- Invoices Tab --> <div class="tab-pane fade" id="invoices" role="tabpanel"> <div class="card"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead class="table-light"> <tr> <th>رقم الفاتورة</th> <th>العميل</th> <th>التاريخ</th> <th>الإجمالي</th> <th>المدفوع</th> <th>المتبقي</th> <th>الحالة</th> </tr> </thead> <tbody> <?php foreach ($invoices as $invoice): ?> <tr> <td><?= htmlspecialchars($invoice['invoice_number']) ?></td> <td><?= htmlspecialchars($invoice['client_name']) ?></td> <td><?= date('Y-m-d H:i', strtotime($invoice['created_at'])) ?></td> <td><?= formatCurrency($invoice['invoice_total']) ?></td> <td><?= formatCurrency($invoice['amount_paid_at_creation']) ?></td> <td><?= formatCurrency($invoice['remaining_amount']) ?></td> <td> <?php $status_class = [ 'paid' => 'success', 'partially_paid' => 'warning', 'unpaid' => 'danger' ]; $status_text = [ 'paid' => 'مدفوعة', 'partially_paid' => 'جزئية', 'unpaid' => 'غير مدفوعة' ]; ?> <span class="badge bg-<?= $status_class[$invoice['status']] ?>"> <?= $status_text[$invoice['status']] ?> </span> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> <!-- Payments Tab --> <div class="tab-pane fade" id="payments" role="tabpanel"> <div class="card"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead class="table-light"> <tr> <th>رقم الإيصال</th> <th>العميل</th> <th>التاريخ</th> <th>المبلغ</th> <th>النوع</th> </tr> </thead> <tbody> <?php foreach ($payments as $payment): ?> <tr> <td><?= htmlspecialchars($payment['receipt_number']) ?></td> <td><?= htmlspecialchars($payment['client_name']) ?></td> <td><?= date('Y-m-d H:i', strtotime($payment['created_at'])) ?></td> <td><?= formatCurrency($payment['amount']) ?></td> <td> <span class="badge bg-<?= $payment['payment_type'] === 'linked_to_invoice' ? 'info' : 'success' ?>"> <?= $payment['payment_type'] === 'linked_to_invoice' ? 'مرتبط بفاتورة' : 'دفعة منفصلة' ?> </span> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> <!-- Returns Tab --> <div class="tab-pane fade" id="returns" role="tabpanel"> <div class="card"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead class="table-light"> <tr> <th>رقم المرتجع</th> <th>العميل</th> <th>المنتج</th> <th>الكمية</th> <th>القيمة</th> <th>تاريخ الموافقة</th> </tr> </thead> <tbody> <?php foreach ($returns as $return): ?> <tr> <td><?= htmlspecialchars($return['return_number']) ?></td> <td><?= htmlspecialchars($return['client_name']) ?></td> <td><?= htmlspecialchars($return['product_name']) ?></td> <td><?= $return['quantity'] ?></td> <td><?= formatCurrency($return['return_value']) ?></td> <td><?= date('Y-m-d H:i', strtotime($return['processed_at'])) ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script> function sendShiftSummary() { const phone = '<?= htmlspecialchars($shift['representative_phone']) ?>'; const repName = '<?= htmlspecialchars($shift['representative_name']) ?>'; const invoiceCount = <?= count($invoices) ?>; const totalSales = '<?= formatCurrency($total_invoices) ?>'; const paymentCount = <?= count($payments) ?>; const totalPayments = '<?= formatCurrency($total_payments) ?>'; const returnCount = <?= count($returns) ?>; const totalReturns = '<?= formatCurrency($total_returns) ?>'; const cashBalance = '<?= formatCurrency($cash_balance) ?>'; const shiftDate = '<?= date('Y-m-d', strtotime($shift['started_at'])) ?>'; const message = `ملخص الوردية\n\n` + `المندوب: ${repName}\n` + `التاريخ: ${shiftDate}\n\n` + `احصائيات اليوم:\n` + `الفواتير: ${invoiceCount} فاتورة\n` + `اجمالي المبيعات: ${totalSales}\n` + `المدفوعات: ${paymentCount} دفعة بقيمة ${totalPayments}\n` + `المرتجعات: ${returnCount} مرتجع بقيمة ${totalReturns}\n` + `رصيد النقد: ${cashBalance}\n\n` + `حسابات عربية بن فريش\n` + `تقرير تلقائي من النظام`; const whatsappUrl = `https://wa.me/${phone.replace('+', '')}?text=${encodeURIComponent(message)}`; window.open(whatsappUrl, '_blank'); } </script> </body> </html>
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.87 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285