|
Server : LiteSpeed System : Linux premium92.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : rbnsfqys ( 805) PHP Version : 8.1.33 Disable Function : NONE Directory : /home/rbnsfqys/public_html/wp-content/plugins/latepoint/lib/helpers/ |
<?php
/*
* Copyright (c) 2023 LatePoint LLC. All rights reserved.
*/
class OsPriceBreakdownHelper {
public static function output_price_breakdown($rows, $inline_styles = false) {
$prev_heading = '';
foreach ($rows['before_subtotal'] as $row) {
$skip_heading = !empty($row['heading']) && $row['heading'] == $prev_heading;
self::output_price_breakdown_row($row, $inline_styles, $skip_heading);
$prev_heading = $row['heading'];
}
// if there is nothing between subtotal and total - don't show subtotal as it will be identical to total
if (!empty($rows['after_subtotal'])) {
if (!empty($rows['subtotal'])) {
echo '<div class="subtotal-separator"></div>';
self::output_price_breakdown_row($rows['subtotal'], $inline_styles);
}
foreach ($rows['after_subtotal'] as $row) {
self::output_price_breakdown_row($row, $inline_styles);
}
}
if (!empty($rows['total'])) {
self::output_price_breakdown_row($rows['total'], $inline_styles);
}
if (!empty($rows['payments'])) {
foreach ($rows['payments'] as $row) {
self::output_price_breakdown_row($row, $inline_styles);
}
}
if (!empty($rows['balance'])) {
self::output_price_breakdown_row($rows['balance'], $inline_styles);
}
}
public static function output_price_breakdown_row($row, $inline_styles = false, $skip_heading = false) {
if (!empty($row['items'])) {
if(!$skip_heading){
if($inline_styles){
if (!empty($row['heading'])) echo '<table width="100%" cellpadding="0" cellspacing="0" style="margin-bottom: 5px; margin-top: 10px;"><tr><td style="color: #788291;font-size: 11px;text-transform: uppercase;letter-spacing: 1px;font-weight: 600;">' . esc_html($row['heading']) . '</td><td style="width: 100%;"><div style="height: 1px;background-color: #f1f1f1;margin-left: 10px;"></div></td></tr></table>';
} else {
if (!empty($row['heading'])) echo '<div class="summary-box-heading"><div class="sbh-item">' . esc_html($row['heading']) . '</div><div class="sbh-line"></div></div>';
}
}
foreach ($row['items'] as $row_item) {
self::output_price_breakdown_row($row_item, $inline_styles);
}
} else {
$extra_class = '';
$extra_css = '';
if (isset($row['style']) && $row['style'] == 'strong') $extra_class .= ' spi-strong';
if (isset($row['style']) && $row['style'] == 'total'){
$extra_class .= ' spi-total';
if($inline_styles) $extra_css = 'border-top: 3px solid #41444b;padding-top: 10px;margin-top: 10px;font-size: 16px;';
}
if (isset($row['type']) && $row['type'] == 'credit') $extra_class .= ' spi-positive';
if (isset($row['style']) && $row['style'] == 'sub') $extra_class .= ' spi-sub';
if ($inline_styles) { ?>
<table width="100%" cellpadding="0" cellspacing="0" style="margin-bottom: 7px;<?php echo esc_attr($extra_css); ?>">
<tr>
<td style="text-align: left;">
<?php echo esc_html($row['label']); ?>
<?php if (!empty($row['note'])) echo '<span class="pi-note">' . esc_html($row['note']) . '</span>'; ?>
<?php if (!empty($row['badge'])) echo '<span class="pi-badge">' . esc_html($row['badge']) . '</span>'; ?>
</td>
<td style="text-align: right;">
<?php echo esc_html($row['value']); ?>
</td>
</tr>
</table>
<?php
} else {
?>
<div class="summary-price-item-w <?php echo esc_attr($extra_class); ?>">
<div class="spi-name">
<?php echo esc_html($row['label']); ?>
<?php if (!empty($row['note'])) echo '<span class="pi-note">' . esc_html($row['note']) . '</span>'; ?>
<?php if (!empty($row['badge'])) echo '<span class="pi-badge">' . esc_html($row['badge']) . '</span>'; ?>
</div>
<div class="spi-price"><?php echo esc_html($row['value']); ?></div>
</div>
<?php
}
}
if (!empty($row['sub_items'])) {
if($inline_styles){
if (!empty($row['sub_items_heading'])) echo '<table width="100%" cellpadding="0" cellspacing="0" style="margin-bottom: 5px; margin-top: 10px;"><tr><td style="color: #788291;font-size: 11px;text-transform: uppercase;letter-spacing: 1px;font-weight: 600;">' . esc_html($row['sub_items_heading']) . '</td><td style="width: 100%;"><div style="height: 1px;background-color: #f1f1f1;margin-left: 10px;"></div></td></tr></table>';
} else {
if (!empty($row['sub_items_heading'])) echo '<div class="summary-box-heading"><div class="sbh-item">' . esc_html($row['sub_items_heading']) . '</div><div class="sbh-line"></div></div>';
}
foreach ($row['sub_items'] as $row_item) {
self::output_price_breakdown_row($row_item, $inline_styles);
}
}
}
public static function is_zero(array $price_breakdown_rows) :bool {
$subtotal = (float) $price_breakdown_rows['subtotal']['raw_value'];
return ($subtotal == 0);
}
}