$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'); ?>
شاشة موحدة لمراجعة أداء الفترة بين = e($startDate) ?> و= e($endDate) ?>.
آخر 8 فواتير داخل الفترة المحددة.
| الرقم | العميل | الإجمالي | التاريخ |
|---|---|---|---|
| = e($invoice['code']) ?> | = e($payload['customer_name'] ?? '') ?> | = e(format_money((float)($payload['grand_total'] ?? 0))) ?> | = e(record_created_date($invoice)) ?> |
ملخص آخر الأوامر المستلمة والمكتملة.
آخر المقبوضات والمدفوعات والمصروفات خلال الفترة.
| النوع | الوصف | القيمة | التاريخ |
|---|---|---|---|
| = e(match ((string)$row['record_type']) { 'customer_payment' => 'مقبوض', 'supplier_payment' => 'مدفوع', 'expense_entry' => 'مصروف', default => (string)$row['record_type'] }) ?> | = e($row['title']) ?> | = e(format_money((float)($payload['amount'] ?? 0))) ?> | = e(record_created_date($row)) ?> |
حسب قيمة الفواتير داخل الفترة.
حسب إجمالي الكميات المتحركة في المخزون.
تجميع حسب الفئة.