PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.8
VikBooking Hotel Booking Engine & PMS v1.8.8
1.8.16 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 All 37 releases
vikbooking / admin / helpers / src / taxonomy / summary.php

summary.php in VikBooking Hotel Booking Engine & PMS 1.8.8, at admin/helpers/src/taxonomy/summary.php

265 lines 5.4 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) 2022 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 * Taxonomy summary class.
16 *
17 * @since 1.16.0 (J) - 1.6.0 (WP)
18 */
19 class VBOTaxonomySummary
20 {
21 /**
22 * The tax summary associative array.
23 *
24 * @var array
25 */
26 protected static $summary = [];
27
28 /**
29 * The tax names associative array.
30 *
31 * @var array
32 */
33 protected static $tax_names = [];
34
35 /**
36 * Starts a new summary array.
37 *
38 * @return array
39 */
40 public static function start()
41 {
42 static::$summary = [];
43
44 return [];
45 }
46
47 /**
48 * Adds a tax amount to a tax rate.
49 *
50 * @param float $rate the tax aliquot (rate).
51 * @param float|int $amount the amount of taxes.
52 * @param string $name the name of the tax.
53 *
54 * @return void
55 */
56 public static function addTax($rate, $amount = 0, $name = null)
57 {
58 $rate = (float)$rate;
59
60 if (!isset(static::$summary[$rate])) {
61 static::$summary[$rate] = 0;
62 }
63
64 static::$summary[$rate] += $amount;
65
66 if (!empty($name)) {
67 static::$tax_names[$rate] = $name;
68 }
69 }
70
71 /**
72 * Adds a tax amount to a tax rate from a given rate plan ID.
73 *
74 * @param int $ratep_id the rate plan ID.
75 * @param float|int $amount the amount of taxes.
76 *
77 * @return float|int the tax rate applied.
78 */
79 public static function addRatePlanTax($ratep_id, $amount = 0)
80 {
81 list($rate, $name) = static::getTaxRatePlan($ratep_id);
82
83 static::addTax($rate, $amount, $name);
84
85 return $rate;
86 }
87
88 /**
89 * Adds a tax amount to a tax rate from a given tax ID.
90 *
91 * @param int $tax_id the tax ID.
92 * @param float|int $amount the amount of taxes.
93 *
94 * @return float|int the tax rate applied.
95 */
96 public static function addOptionTax($tax_id, $amount = 0)
97 {
98 list($rate, $name) = static::getTaxRateFromId($tax_id);
99
100 static::addTax($rate, $amount, $name);
101
102 return $rate;
103 }
104
105 /**
106 * Gets the tax rate assigned to the given rate plan ID.
107 *
108 * @param int $ratep_id the rate plan ID.
109 *
110 * @return array float|int (tax rate) and string (tax name).
111 */
112 public static function getTaxRatePlan($ratep_id)
113 {
114 if (empty($ratep_id)) {
115 return [0, null];
116 }
117
118 $dbo = JFactory::getDbo();
119
120 $q = "SELECT `p`.`idiva`, `t`.`name`, `t`.`aliq` FROM `#__vikbooking_prices` AS `p` LEFT JOIN `#__vikbooking_iva` AS `t` ON `p`.`idiva`=`t`.`id` WHERE `p`.`id`=" . (int)$ratep_id;
121 $dbo->setQuery($q, 0, 1);
122 $record = $dbo->loadAssoc();
123 if (!$record) {
124 return [0, null];
125 }
126
127 return [(float)$record['aliq'], $record['name']];
128 }
129
130 /**
131 * Gets the tax record data assigned to the given rate plan ID.
132 *
133 * @param int $ratep_id The rate plan ID.
134 *
135 * @return array Empty array or tax record found.
136 *
137 * @since 1.18.8 (J) - 1.8.8 (WP)
138 */
139 public static function getTaxRecordFromRatePlan(int $ratep_id)
140 {
141 $dbo = JFactory::getDbo();
142
143 $dbo->setQuery(
144 $dbo->getQuery(true)
145 ->select([
146 $dbo->qn('p.id'),
147 $dbo->qn('p.idiva'),
148 $dbo->qn('t.name'),
149 $dbo->qn('t.aliq'),
150 $dbo->qn('t.taxcap'),
151 ])
152 ->from($dbo->qn('#__vikbooking_prices', 'p'))
153 ->leftJoin($dbo->qn('#__vikbooking_iva', 't') . ' ON ' . $dbo->qn('p.idiva') . ' = ' . $dbo->qn('t.id'))
154 ->where($dbo->qn('p.id') . ' = ' . $ratep_id)
155 );
156
157 return $dbo->loadAssoc() ?: [];
158 }
159
160 /**
161 * Gets the tax rate assigned to the given tax ID.
162 *
163 * @param int $tax_id the tax ID.
164 *
165 * @return array float|int (tax rate) and string (tax name).
166 */
167 public static function getTaxRateFromId($tax_id)
168 {
169 if (empty($tax_id)) {
170 return [0, null];
171 }
172
173 $dbo = JFactory::getDbo();
174
175 $q = "SELECT `t`.`name`, `t`.`aliq` FROM `#__vikbooking_iva` AS `t` WHERE `t`.`id`=" . (int)$tax_id;
176 $dbo->setQuery($q, 0, 1);
177 $record = $dbo->loadAssoc();
178 if (!$record) {
179 return [0, null];
180 }
181
182 return [(float)$record['aliq'], $record['name']];
183 }
184
185 /**
186 * Returns the whole tax rate record from the given ID.
187 *
188 * @param ?int $tax_id The tax record ID.
189 *
190 * @return array
191 *
192 * @since 1.18.8 (J) - 1.8.8 (WP) argument is nullable.
193 */
194 public static function getTaxRateRecord(?int $tax_id)
195 {
196 static $tax_map = [];
197
198 $tax_id = (int) $tax_id;
199
200 if (isset($tax_map[$tax_id])) {
201 return $tax_map[$tax_id];
202 }
203
204 $dbo = JFactory::getDbo();
205
206 $q = "SELECT * FROM `#__vikbooking_iva` WHERE `id`=" . $tax_id;
207 $dbo->setQuery($q, 0, 1);
208
209 // cache value and return it
210 $tax_map[$tax_id] = $dbo->loadAssoc();
211
212 return $tax_map[$tax_id];
213 }
214
215 /**
216 * Gets the tax summary associative array.
217 *
218 * @param bool $sort if true, the array will be sorted by key desc.
219 *
220 * @return array
221 */
222 public static function get($sort = true)
223 {
224 if ($sort) {
225 krsort(static::$summary);
226 }
227
228 return static::$summary;
229 }
230
231 /**
232 * Gets the tax names associative array.
233 *
234 * @return array
235 */
236 public static function getNames()
237 {
238 return static::$tax_names;
239 }
240
241 /**
242 * Sets the tax summary associative array.
243 *
244 * @param array $summary
245 *
246 * @return void
247 */
248 public static function set(array $summary = [])
249 {
250 static::$summary = $summary;
251 }
252
253 /**
254 * Sets the tax names associative array.
255 *
256 * @param array $names
257 *
258 * @return void
259 */
260 public static function setNames(array $names = [])
261 {
262 static::$tax_names = $names;
263 }
264 }
265