40 lines
1.8 KiB
PHP
40 lines
1.8 KiB
PHP
<?php
|
|
// food/admin/payouts.php — تقرير تسويات المطاعم للفترة المطلوبة (توليد لا صرف آلي)
|
|
//
|
|
// ⚠️ هذا يُنتج تقريراً محاسبياً (food_merchant_payouts بحالة pending) — لا يحوّل
|
|
// أموالاً فعلياً. الصرف الفعلي للمطاعم والسائقين خارج نطاق هذه الوحدة حتى يُؤكَّد
|
|
// عقد S2S مخصص لذلك (انظر التنبيهات في food/functions.php حول foodWalletMove).
|
|
require_once __DIR__ . '/../connect_admin.php';
|
|
|
|
$merchantId = filterRequest('merchant_id', 'int');
|
|
$periodStart = filterRequest('period_start');
|
|
$periodEnd = filterRequest('period_end');
|
|
requireFoodFields(['merchant_id', 'period_start', 'period_end']);
|
|
|
|
$st = $food_con->prepare(
|
|
"SELECT COUNT(*) orders_count, COALESCE(SUM(items_total),0) gross_amount, COALESCE(SUM(commission_amount),0) commission_amount
|
|
FROM food_orders
|
|
WHERE merchant_id=? AND status='delivered' AND delivered_at BETWEEN ? AND ?"
|
|
);
|
|
$st->execute([$merchantId, $periodStart, $periodEnd]);
|
|
$summary = $st->fetch();
|
|
|
|
$netPayout = (int)$summary['gross_amount'] - (int)$summary['commission_amount'];
|
|
|
|
$food_con->prepare(
|
|
"INSERT INTO food_merchant_payouts (merchant_id, period_start, period_end, orders_count, gross_amount, commission_amount, net_payout, status)
|
|
VALUES (?,?,?,?,?,?,?,'pending')"
|
|
)->execute([
|
|
$merchantId, $periodStart, $periodEnd, $summary['orders_count'],
|
|
$summary['gross_amount'], $summary['commission_amount'], $netPayout,
|
|
]);
|
|
|
|
jsonSuccess([
|
|
'merchant_id' => $merchantId,
|
|
'orders_count' => (int)$summary['orders_count'],
|
|
'gross_amount' => (int)$summary['gross_amount'],
|
|
'commission_amount' => (int)$summary['commission_amount'],
|
|
'net_payout' => $netPayout,
|
|
'status' => 'pending',
|
|
], 'Payout report generated');
|