$endDate) { [$startDate, $endDate] = [$endDate, $startDate]; } $salesInvoices = filter_records_by_date(fetch_records('sales_invoice'), $startDate, $endDate); $purchaseOrders = filter_records_by_date(fetch_records('purchase_order'), $startDate, $endDate); $receivedPurchases = array_values(array_filter($purchaseOrders, static fn (array $row): bool => (string)($row['status'] ?? '') === 'received')); $manufacturingOrders = filter_records_by_date(fetch_records('manufacturing_order'), $startDate, $endDate); $completedManufacturing = array_values(array_filter($manufacturingOrders, static fn (array $row): bool => (string)($row['status'] ?? '') === 'completed')); $customerPayments = filter_records_by_date(fetch_records('customer_payment'), $startDate, $endDate); $supplierPayments = filter_records_by_date(fetch_records('supplier_payment'), $startDate, $endDate); $expenses = filter_records_by_date(fetch_records('expense_entry'), $startDate, $endDate); $stockMovements = filter_records_by_date(fetch_records('stock_movement'), $startDate, $endDate); $salesTotal = 0.0; $topCustomers = []; foreach ($salesInvoices as $invoice) { $payload = $invoice['payload_data']; $amount = (float)($payload['grand_total'] ?? 0); $salesTotal += $amount; $customerName = (string)($payload['customer_name'] ?? 'عميل غير محدد'); if (!isset($topCustomers[$customerName])) { $topCustomers[$customerName] = 0.0; } $topCustomers[$customerName] += $amount; } arsort($topCustomers); $topCustomers = array_slice($topCustomers, 0, 5, true); $purchaseTotal = 0.0; foreach ($receivedPurchases as $purchase) { $purchaseTotal += (float)($purchase['payload_data']['grand_total'] ?? 0); } $manufacturedQty = 0.0; foreach ($completedManufacturing as $order) { $manufacturedQty += (float)($order['payload_data']['produced_qty'] ?? 0); } $receiptsTotal = 0.0; foreach ($customerPayments as $payment) { $receiptsTotal += (float)($payment['payload_data']['amount'] ?? 0); } $supplierPaymentsTotal = 0.0; foreach ($supplierPayments as $payment) { $supplierPaymentsTotal += (float)($payment['payload_data']['amount'] ?? 0); } $expensesTotal = 0.0; $expenseBreakdown = []; foreach ($expenses as $expense) { $payload = $expense['payload_data']; $amount = (float)($payload['amount'] ?? 0); $expensesTotal += $amount; $category = expense_category_label((string)($payload['category'] ?? 'other')); if (!isset($expenseBreakdown[$category])) { $expenseBreakdown[$category] = 0.0; } $expenseBreakdown[$category] += $amount; } arsort($expenseBreakdown); $productActivity = []; foreach ($stockMovements as $movement) { $payload = $movement['payload_data']; $productName = (string)($payload['product_name'] ?? 'صنف غير محدد'); if (!isset($productActivity[$productName])) { $productActivity[$productName] = 0.0; } $productActivity[$productName] += abs((float)($payload['qty_change'] ?? 0)); } arsort($productActivity); $productActivity = array_slice($productActivity, 0, 5, true); $profitEstimate = $salesTotal - $purchaseTotal - $expensesTotal; $netCashflow = $receiptsTotal - $supplierPaymentsTotal - $expensesTotal; render_header('التقارير التنفيذية', 'تقارير ERP تشغيلية موحدة للمبيعات والمشتريات والتصنيع والمحاسبة مع فلترة حسب التاريخ.', 'reports'); ?>

التقارير التنفيذية

شاشة موحدة لمراجعة أداء الفترة بين و.

فواتير المبيعات
فاتورة خلال الفترة
مشتريات مستلمة
أمر شراء مستلم
إنتاج مكتمل
أمر تصنيع مكتمل
حركات المخزون
إجمالي الإضافات والخصومات
مقبوضات العملاء
حركة قبض
مدفوعات الموردين
حركة دفع
المصروفات
قيد مصروف
صافي النقدية
مقبوضات - مدفوعات - مصروفات

أحدث فواتير المبيعات

آخر 8 فواتير داخل الفترة المحددة.

الرقمالعميلالإجماليالتاريخ
لا توجد فواتير مبيعات ضمن الفترة المحددة.

المشتريات والتصنيع

ملخص آخر الأوامر المستلمة والمكتملة.

أوامر شراء مستلمة
لا توجد مشتريات مستلمة في هذه الفترة.
أوامر تصنيع مكتملة
لا توجد أوامر تصنيع مكتملة في هذه الفترة.

الحركة المالية

آخر المقبوضات والمدفوعات والمصروفات خلال الفترة.

strcmp((string)($b['created_at'] ?? ''), (string)($a['created_at'] ?? ''))); ?>
النوعالوصفالقيمةالتاريخ
'مقبوض', 'supplier_payment' => 'مدفوع', 'expense_entry' => 'مصروف', default => (string)$row['record_type'] }) ?>
لا توجد حركة مالية ضمن الفترة المحددة.

مؤشرات الربحية

الربح المتوقع
صافي التدفق النقدي
المبيعات - المشتريات
إجمالي المصروفات

أفضل العملاء

حسب قيمة الفواتير داخل الفترة.

$amount): ?>
لا توجد بيانات مبيعات كافية لحساب أفضل العملاء.

أكثر الأصناف حركة

حسب إجمالي الكميات المتحركة في المخزون.

$qty): ?>
لا توجد حركات مخزون ضمن الفترة المحددة.

تحليل المصروفات

تجميع حسب الفئة.

$amount): ?>
لا توجد مصروفات ضمن الفترة المحددة.