Update: 2026-08-07 05:56:50

This commit is contained in:
Hamza-Ayed
2026-08-07 05:56:50 +03:00
parent 7a932580a3
commit 67465df000
14 changed files with 1257 additions and 9 deletions
+30
View File
@@ -261,3 +261,33 @@ function getMoneyHardCap(string $currency): float
// ‏والصرف الخاطئ لا يُسترد.
return $caps[strtoupper($currency)] ?? min($caps);
}
/**
* ‏تسعير داخلي للرحلات التي تُنشأ خادمياً (الحجز المسبق).
*
* ⚠️ ‏ليس بديلاً عن ride/pricing/get.php — ذاك محرك كامل فيه الذروة
* ‏وإضافات المطار والخصومات المناطقية، ويُستدعى من التطبيق مع رمز سعر
* ‏موقَّع. هذه دالة أبسط لمسار واحد لا يملك رمزاً ولا جلسة راكب.
*
* ‏المكوّنات هي نفسها التي تُسوَّى بها الرحلة في finish_ride_updates.php:
* فتحة العداد + المسافة × سعر الكيلومتر + الزمن × سعر الدقيقة
*
* ‏فالنتيجة متسقة مع ما سيُحاسَب عليه الراكب فعلاً عند الإنهاء، وأي فرق
* ‏يبقى في صالحه لا ضده (لا تُحتسب إضافات الذروة هنا).
*/
function computeInternalRidePrice(array $kazan, string $carType,
float $distanceKm, int $durationSeconds): float
{
$startPrice = (float) ($kazan['startPrice'] ?? 0);
$perKm = getPerKmRate($carType, $kazan);
$perMin = getPerMinRate($kazan);
// ‏حد أدنى للمسافة المحتسبة — يمنع رحلة بمسافة صفر من إنتاج سعر صفر
// ‏إن وصلت بيانات ناقصة.
$km = max(0.2, $distanceKm);
$minutes = max(1.0, $durationSeconds / 60.0);
$price = $startPrice + ($km * $perKm) + ($minutes * $perMin);
return round(max(0.0, $price), 2);
}