PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.15
VikBooking Hotel Booking Engine & PMS v1.8.15
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / admin / helpers / src / rms / pace / data / metric / adr.php

adr.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at admin/helpers/src/rms/pace/data/metric/adr.php

53 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking
4 * @subpackage core
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2025 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 /**
15 * RMS Pace Data Metric ADR (Average Daily Rate) implementation.
16 *
17 * @since 1.18.6 (J) - 1.8.6 (WP)
18 */
19 final class VBORmsPaceDataMetricAdr extends VBORmsPaceDataMetric
20 {
21 /**
22 * @inheritDoc
23 */
24 public function extract(VBORmsPaceDataperiod $paceDataPeriod, ?array $periodPaceMetrics = null)
25 {
26 // list of booking room rates
27 $roomRates = [];
28
29 // iterate all bookings affecting the current period
30 foreach ($paceDataPeriod as $booking) {
31 if ($booking['status'] != 'confirmed') {
32 // exclude non-confirmed reservations
33 continue;
34 }
35 foreach (($booking['_rooms'] ?? []) as $bookingRoom) {
36 if (!empty($bookingRoom['room_cost'])) {
37 $netRoomCost = VikBooking::sayCostMinusIva($bookingRoom['room_cost'], $bookingRoom['idprice'] ?? 0);
38 $roomRates[] = (float) $netRoomCost;
39 } elseif (!empty($bookingRoom['cust_cost'])) {
40 $netRoomCost = VikBooking::sayPackageMinusIva($bookingRoom['cust_cost'], $bookingRoom['cust_idiva']);
41 $roomRates[] = (float) $netRoomCost;
42 }
43 }
44 }
45
46 if (!$roomRates) {
47 return 0;
48 }
49
50 return round(array_sum($roomRates) / count($roomRates), 2);
51 }
52 }
53