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 / notification / elements / trait / payoutcompensation.php

payoutcompensation.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at admin/helpers/src/notification/elements/trait/payoutcompensation.php

66 lines 2.0 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 Alessio Gaggii - E4J s.r.l.
6 * @copyright Copyright (C) 2026 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 * Postflight trait for notification elements that need to update the total payout
16 * as well as the OTA commissions.
17 *
18 * @since 1.18.7 (J) - 1.8.7 (WP)
19 */
20 trait VBONotificationElementsTraitPayoutcompensation
21 {
22 /**
23 * @inheritDoc
24 *
25 * @see VBONotificationElements::postflight()
26 */
27 public function postflight()
28 {
29 $ota_res_id = $this->getOTAReservationID();
30 $channel = $this->getChannel();
31 $data = (array) $this->get('data', []);
32
33 if (empty($ota_res_id) || empty($channel) || (empty($data['total_payout']) && empty($data['commissions']))) {
34 // no interesting payload data information to process
35 return;
36 }
37
38 // access the reservation model
39 $model = VBOModelReservation::getInstance();
40
41 // fetch the OTA booking details
42 $booking = $model
43 ->setFilters([
44 'ota_id' => $ota_res_id,
45 'channel' => $channel,
46 ])
47 ->search();
48
49 if (!$booking) {
50 // booking not found
51 return;
52 }
53
54 if (stripos($channel, 'booking.com') !== false && !empty($data['status']) && strcasecmp($data['status'], 'paid')) {
55 // in case of Booking.com payout update notification with "status" different than "paid" do not update the payout
56 $data['total_payout'] = null;
57 }
58
59 // update either the payout amount, compensation or both
60 $model->updatePayoutCompensation([
61 'payout' => $data['total_payout'] ?? null,
62 'compensation' => $data['commissions'] ?? null,
63 ], $booking[0]);
64 }
65 }
66