Files
Siro/backend/food/admin/payouts.php
T

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');