58 lines
3.1 KiB
PHP
58 lines
3.1 KiB
PHP
<?php
|
|
// food/courier/earnings.php — ملخص أرباح التوصيل للسائق (اليوم/الأسبوع/الشهر)
|
|
// المبالغ من food_orders.delivery_fee للطلبات المسلَّمة فقط — نفس ما يُقيَّد في
|
|
// food_order_payments (courier_payout)، والتسوية الفعلية خارج نطاق هذا الملف.
|
|
require_once __DIR__ . '/../connect_courier.php';
|
|
|
|
$sums = $food_con->prepare(
|
|
"SELECT
|
|
COUNT(*) AS total_orders,
|
|
COALESCE(SUM(delivery_fee),0) AS total_earnings,
|
|
COALESCE(SUM(CASE WHEN DATE(delivered_at)=CURDATE() THEN delivery_fee END),0) AS today_earnings,
|
|
COUNT(CASE WHEN DATE(delivered_at)=CURDATE() THEN 1 END) AS today_orders,
|
|
COALESCE(SUM(CASE WHEN delivered_at >= (NOW() - INTERVAL 7 DAY) THEN delivery_fee END),0) AS week_earnings,
|
|
COUNT(CASE WHEN delivered_at >= (NOW() - INTERVAL 7 DAY) THEN 1 END) AS week_orders,
|
|
COALESCE(SUM(CASE WHEN delivered_at >= (NOW() - INTERVAL 30 DAY) THEN delivery_fee END),0) AS month_earnings,
|
|
COUNT(CASE WHEN delivered_at >= (NOW() - INTERVAL 30 DAY) THEN 1 END) AS month_orders
|
|
FROM food_orders
|
|
WHERE courier_id=? AND status='delivered'"
|
|
);
|
|
$sums->execute([$food_courier_id]);
|
|
$row = $sums->fetch() ?: [];
|
|
|
|
// ديون التحصيل النقدي غير المسوّاة — السائق يحتاج يعرف كم عليه قبل ما يفاجأ بخصم
|
|
$owedSt = $food_con->prepare(
|
|
"SELECT COALESCE(SUM(p.amount),0) AS owed
|
|
FROM food_order_payments p
|
|
JOIN food_orders o ON o.id = p.order_id
|
|
WHERE o.courier_id=? AND p.type='cash_settlement' AND p.status='pending'"
|
|
);
|
|
$owedSt->execute([$food_courier_id]);
|
|
|
|
// آخر 7 أيام مفصّلة — للرسم البياني في التطبيق
|
|
$dailySt = $food_con->prepare(
|
|
"SELECT DATE(delivered_at) AS day, COUNT(*) AS orders_count, COALESCE(SUM(delivery_fee),0) AS earnings
|
|
FROM food_orders
|
|
WHERE courier_id=? AND status='delivered' AND delivered_at >= (NOW() - INTERVAL 7 DAY)
|
|
GROUP BY DATE(delivered_at)
|
|
ORDER BY day DESC"
|
|
);
|
|
$dailySt->execute([$food_courier_id]);
|
|
|
|
jsonSuccess([
|
|
'today_earnings' => (int)($row['today_earnings'] ?? 0),
|
|
'today_orders' => (int)($row['today_orders'] ?? 0),
|
|
'week_earnings' => (int)($row['week_earnings'] ?? 0),
|
|
'week_orders' => (int)($row['week_orders'] ?? 0),
|
|
'month_earnings' => (int)($row['month_earnings'] ?? 0),
|
|
'month_orders' => (int)($row['month_orders'] ?? 0),
|
|
'total_earnings' => (int)($row['total_earnings'] ?? 0),
|
|
'total_orders' => (int)($row['total_orders'] ?? 0),
|
|
'pending_cash_owed' => (int)($owedSt->fetch()['owed'] ?? 0),
|
|
'daily' => array_map(static fn($d) => [
|
|
'day' => $d['day'],
|
|
'orders_count' => (int)$d['orders_count'],
|
|
'earnings' => (int)$d['earnings'],
|
|
], $dailySt->fetchAll()),
|
|
]);
|