Update: 2026-08-07 02:32:14
This commit is contained in:
@@ -31,12 +31,24 @@ function computePassengerCancelFee(
|
||||
$rideId,
|
||||
array $ride,
|
||||
$driverId,
|
||||
string &$exemptReason
|
||||
string &$exemptReason,
|
||||
&$currency = null
|
||||
): float {
|
||||
// العملة تُحسم من الدولة دائماً، حتى مع الإعفاء: التطبيق يحتاجها ليعرض
|
||||
// "الإلغاء مجاني" أو "سيُخصم 1.20 دينار" بوحدة صحيحة.
|
||||
$currency = 'SYP';
|
||||
// ── إعفاء ١: لا سائق قَبِل بعد ──────────────────────────
|
||||
// لا أحد تحرّك، فلا أحد يستحق تعويضاً. وهذه أغلب حالات الإلغاء.
|
||||
if (empty($driverId) || (string) $driverId === '0') {
|
||||
$exemptReason = 'no_driver_assigned';
|
||||
try {
|
||||
$stmtCur = $con->prepare("SELECT currency, country FROM kazan LIMIT 1");
|
||||
$stmtCur->execute();
|
||||
$rowCur = $stmtCur->fetch(PDO::FETCH_ASSOC) ?: [];
|
||||
$currency = !empty($rowCur['currency'])
|
||||
? (string) $rowCur['currency']
|
||||
: getCurrencyByCountry((string) ($rowCur['country'] ?? 'Syria'));
|
||||
} catch (PDOException $e) { /* الافتراضي يكفي */ }
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
@@ -45,6 +57,11 @@ function computePassengerCancelFee(
|
||||
$stmtKazan->execute();
|
||||
$kazan = $stmtKazan->fetch(PDO::FETCH_ASSOC) ?: [];
|
||||
|
||||
// العمود currency هو المرجع، وgetCurrencyByCountry احتياط إن كان فارغاً.
|
||||
$currency = !empty($kazan['currency'])
|
||||
? (string) $kazan['currency']
|
||||
: getCurrencyByCountry((string) ($kazan['country'] ?? 'Syria'));
|
||||
|
||||
$cap = (float) ($kazan['passengerCancelCap'] ?? 0);
|
||||
if ($cap <= 0) {
|
||||
// الرسم معطّل لهذه الدولة — الافتراضي حتى تضبطه الإدارة.
|
||||
@@ -103,7 +120,7 @@ function computePassengerCancelFee(
|
||||
$fee = round(min($fee, $cap, PASSENGER_CANCEL_ABSOLUTE_CAP), 2);
|
||||
|
||||
error_log("[cancel_fee] ride=$rideId رسم إلغاء: {$approachKm}كم"
|
||||
. " + {$billableMinutes}د = $fee (سقف $cap)");
|
||||
. " + {$billableMinutes}د = $fee $currency (سقف $cap)");
|
||||
|
||||
return max(0.0, $fee);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user