New Feature and Bux Fix

Lots of changes has been made that i cant recall
Added Coupon
Fix installation bug
Add more nav list
Fix this and that
This commit is contained in:
Focuslinkstech
2024-12-16 17:45:13 +01:00
parent fd920748be
commit 8a36746a0f
11 changed files with 1299 additions and 179 deletions

153
ui/ui/coupons-add.tpl Normal file
View File

@ -0,0 +1,153 @@
{include file="sections/header.tpl"}
<!-- coupon-add -->
<div class="row">
<div class="col-sm-12 col-md-12">
<div class="panel panel-primary panel-hovered panel-stacked mb30">
<div class="panel-heading">{Lang::T('Add Coupon')}</div>
<div class="panel-body">
<form class="form-horizontal" method="post" role="form" action="{$_url}coupons/add-post">
<input type="hidden" name="csrf_token" value="{$csrf_token}">
<!-- Coupon Code -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Coupon Code')}</label>
<div class="col-md-6">
<div class="input-group">
<input type="text" class="form-control" name="code" id="code" maxlength="50" required>
<span class="input-group-btn">
<button type="button" class="btn btn-info btn-flat" onclick="generateRandomCode()">{Lang::T('Random')}</button>
</span>
</div>
<p class="help-block"><small>{Lang::T('Unique code for the coupon')}</small></p>
</div>
</div>
<!-- Type -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Type')}</label>
<div class="col-md-6">
<select class="form-control" name="type" id="type" required onchange="updateValueInput()">
<option value="fixed">{Lang::T('Fixed Discount')}</option>
<option value="percent">{Lang::T('Percent Discount')}</option>
</select>
</div>
</div>
<!-- Value -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Discount Value')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="value" id="value" step="0.01" placeholder="Enter amount" required>
<p class="help-block"><small id="value-help">{Lang::T('Value of the discount (amount or percentage)')}</small></p>
</div>
</div>
<!-- Description -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Description')}</label>
<div class="col-md-6">
<textarea class="form-control" name="description" required></textarea>
<p class="help-block"><small>{Lang::T('Brief explanation of the coupon')}</small></p>
</div>
</div>
<!-- Max Usage -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Max Usage')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="max_usage" min="1" required>
<p class="help-block"><small>{Lang::T('Maximum number of times this coupon can be used')}</small></p>
</div>
</div>
<!-- Minimum Order Amount -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Minimum Order Amount')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="min_order_amount" step="0.01" required>
<p class="help-block"><small>{Lang::T('Minimum cart total required to use this coupon')}</small></p>
</div>
</div>
<!-- Max Discount Amount -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Max Discount Amount')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="max_discount_amount" step="0.01">
<p class="help-block"><small>{Lang::T('Maximum discount amount applicable (for percent type)')}</small></p>
</div>
</div>
<!-- Status -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Status')}</label>
<div class="col-md-6">
<label class="radio-inline">
<input type="radio" name="status" value="active" checked> {Lang::T('Active')}
</label>
<label class="radio-inline">
<input type="radio" name="status" value="inactive"> {Lang::T('Inactive')}
</label>
</div>
</div>
<!-- Start Date -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Start Date')}</label>
<div class="col-md-6">
<input type="date" class="form-control" name="start_date" required>
</div>
</div>
<!-- Expiry Date -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('End Date')}</label>
<div class="col-md-6">
<input type="date" class="form-control" name="end_date" required>
</div>
</div>
<!-- Submit Button -->
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<button class="btn btn-primary" type="submit">
{Lang::T('Save')}
</button>
Or <a href="{$_url}coupons/list">{Lang::T('Cancel')}</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script>
function updateValueInput() {
const type = document.getElementById('type').value;
const valueInput = document.getElementById('value');
const helpText = document.getElementById('value-help');
if (type === 'percent') {
valueInput.setAttribute('max', '100');
valueInput.setAttribute('placeholder', 'Enter percentage');
helpText.textContent = '{Lang::T('Value of the discount (percentage, max 100)')}';
} else {
valueInput.removeAttribute('max');
valueInput.setAttribute('placeholder', 'Enter amount');
helpText.textContent = '{Lang::T('Value of the discount (amount)')}';
}
}
function generateRandomCode() {
const codeInput = document.getElementById('code');
const randomCode = Math.random().toString(36).substring(2, 10).toUpperCase();
codeInput.value = randomCode;
}
</script>
{include file="sections/footer.tpl"}

150
ui/ui/coupons-edit.tpl Normal file
View File

@ -0,0 +1,150 @@
{include file="sections/header.tpl"}
<!-- Coupon-edit -->
<div class="row">
<div class="col-sm-12 col-md-12">
<div class="panel panel-primary panel-hovered panel-stacked mb30">
<div class="panel-heading">{Lang::T('Edit Coupon')}</div>
<div class="panel-body">
<form class="form-horizontal" method="post" role="form" action="{$_url}coupons/edit-post">
<input type="hidden" name="csrf_token" value="{$csrf_token}">
<!-- Coupon Code -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Coupon Code')}</label>
<div class="col-md-6">
<input type="text" class="form-control" name="code" id="code" maxlength="50" readonly
value="{$coupon['code']}">
<p class="help-block"><small>{Lang::T('Unique code for the coupon')}</small></p>
</div>
</div>
<!-- Type -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Type')}</label>
<div class="col-md-6">
<select class="form-control" name="type" id="type" required onchange="updateValueInput()">
<option value="fixed" {if $coupon['type']== 'fixed'} selected {/if}>{Lang::T('Fixed Discount')}</option>
<option value="percent" {if $coupon['type']== 'percent'} selected {/if}>{Lang::T('Percent Discount')}</option>
</select>
</div>
</div>
<!-- Value -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Discount Value')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="value" id="value" step="0.01"
placeholder="Enter amount" required value="{$coupon['value']}">
<p class="help-block"><small id="value-help">{Lang::T('Value of the discount (amount or
percentage)')}</small></p>
</div>
</div>
<!-- Description -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Description')}</label>
<div class="col-md-6">
<textarea class="form-control" name="description" required>{$coupon['description']}</textarea>
<p class="help-block"><small>{Lang::T('Brief explanation of the coupon')}</small></p>
</div>
</div>
<!-- Max Usage -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Max Usage')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="max_usage" min="1" required value="{$coupon['max_usage']}">
<p class="help-block"><small>{Lang::T('Maximum number of times this coupon can be
used')}</small></p>
</div>
</div>
<!-- Minimum Order Amount -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Minimum Order Amount')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="min_order_amount" step="0.01" required value="{$coupon['min_order_amount']}">
<p class="help-block"><small>{Lang::T('Minimum cart total required to use this
coupon')}</small></p>
</div>
</div>
<!-- Max Discount Amount -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Max Discount Amount')}</label>
<div class="col-md-6">
<input type="number" class="form-control" name="max_discount_amount" step="0.01" value="{$coupon['max_discount_amount']}">
<p class="help-block"><small>{Lang::T('Maximum discount amount applicable (for percent
type)')}</small></p>
</div>
</div>
<!-- Status -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Status')}</label>
<div class="col-md-6">
<label class="radio-inline">
<input type="radio" name="status" value="active" {if $coupon['status']== 'active'} checked {/if}> {Lang::T('Active')}
</label>
<label class="radio-inline">
<input type="radio" name="status" value="inactive" {if $coupon['status']== 'inactive'} checked {/if}> {Lang::T('Inactive')}
</label>
</div>
</div>
<!-- Start Date -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('Start Date')}</label>
<div class="col-md-6">
<input type="date" class="form-control" name="start_date" required value="{$coupon['start_date']}">
</div>
</div>
<!-- Expiry Date -->
<div class="form-group">
<label class="col-md-2 control-label">{Lang::T('End Date')}</label>
<div class="col-md-6">
<input type="date" class="form-control" name="end_date" required value="{$coupon['end_date']}">
</div>
</div>
<!-- Submit Button -->
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<button class="btn btn-primary" type="submit">
{Lang::T('Save')}
</button>
Or <a href="{$_url}coupons/list">{Lang::T('Cancel')}</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script>
function updateValueInput() {
const type = document.getElementById('type').value;
const valueInput = document.getElementById('value');
const helpText = document.getElementById('value-help');
if (type === 'percent') {
valueInput.setAttribute('max', '100');
valueInput.setAttribute('placeholder', 'Enter percentage');
helpText.textContent = '{Lang::T('Value of the discount(percentage, max 100)')}';
} else {
valueInput.removeAttribute('max');
valueInput.setAttribute('placeholder', 'Enter amount');
helpText.textContent = '{Lang::T('Value of the discount(amount)')}';
}
}
</script>
{include file="sections/footer.tpl"}

363
ui/ui/coupons.tpl Normal file
View File

@ -0,0 +1,363 @@
{include file="sections/header.tpl"}
<style>
/* Styles for overall layout and responsiveness */
body {
background-color: #f8f9fa;
font-family: 'Arial', sans-serif;
padding: 0;
margin: 0;
}
.container {
margin-top: 20px;
background-color: #d8dfe5;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
padding: 20px;
max-width: 98%;
overflow-x: auto;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
}
/* Styles for table and pagination */
.table {
width: 100%;
margin-bottom: 1rem;
background-color: #fff;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.table th {
vertical-align: middle;
border-color: #dee2e6;
background-color: #343a40;
color: #fff;
}
.table td {
vertical-align: middle;
border-color: #dee2e6;
}
.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(0, 0, 0, 0.05);
}
.table-hover tbody tr:hover {
background-color: rgba(0, 0, 0, 0.075);
color: #333;
font-weight: bold;
transition: background-color 0.3s, color 0.3s;
}
.pagination .page-item .page-link {
color: #007bff;
background-color: #fff;
border: 1px solid #dee2e6;
margin: 0 2px;
padding: 6px 12px;
transition: background-color 0.3s, color 0.3s;
}
.pagination .page-item .page-link:hover {
background-color: #e9ecef;
color: #0056b3;
}
.pagination .page-item.active .page-link {
z-index: 1;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.dataTables_wrapper .dataTables_paginate .paginate_button {
display: inline-block;
padding: 5px 10px;
margin-right: 5px;
border: 1px solid #ccc;
background-color: #fff;
color: #333;
cursor: pointer;
}
.hidden-field {
display: none;
}
</style>
<style>
.btn-group-flex {
display: flex;
justify-content: center;
gap: 10px;
flex-wrap: wrap;
}
.btn-group-flex .btn {
flex: 1 1 auto;
/* Allow buttons to shrink/grow as needed */
max-width: 150px;
/* Optional: Limit button width */
}
</style>
<form id="" method="post" action="">
<div class="input-group">
<div class="input-group-addon">
<a href=""><span class="fa fa-refresh"></span></a>
</div>
<input type="text" name="search" class="form-control" value="{$search}" placeholder="{Lang::T('Search')}...">
<div class="input-group-btn">
<button class="btn btn-success" type="submit">{Lang::T('Search Coupons')}</button>
</div>
</div>
</form>
<br>
<!-- coupon -->
<div class="row" style="padding: 5px">
<div class="col-lg-3 col-lg-offset-9">
<div class="btn-group btn-group-justified" role="group">
<div class="btn-group" role="group">
<a href="{$_url}coupons/add" class="btn btn-primary">
{Lang::T('Add Coupon')}</a>
</div>
</div>
</div>
</div>
<div class="panel panel-hovered mb20 panel-primary">
<div class="panel-heading">
&nbsp;
</div>
<div class="container">
<table id="datatable" class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th><input type="checkbox" id="select-all"></th>
<th>{Lang::T('Code')}</th>
<th>{Lang::T('Type')}</th>
<th>{Lang::T('Value')}</th>
<th>{Lang::T('Description')}</th>
<th>{Lang::T('Max Usage')}</th>
<th>{Lang::T('Usage Count')}</th>
<th>{Lang::T('Status')}</th>
<th>{Lang::T('Min Order')}</th>
<th>{Lang::T('Max Discount')}</th>
<th>{Lang::T('Start Date')}</th>
<th>{Lang::T('End Date')}</th>
<th>{Lang::T('Created Date')}</th>
<th>{Lang::T('Updated Date')}</th>
<th>{Lang::T('Action')}</th>
</tr>
</thead>
<tbody>
{if $coupons}
{foreach $coupons as $coupon}
<tr>
<td><input type="checkbox" name="coupon_ids[]" value="{$coupon['id']}"></td>
<td style="background-color: black; color: black;"
onmouseleave="this.style.backgroundColor = 'black';"
onmouseenter="this.style.backgroundColor = 'white';">
{$coupon['code']}
</td>
<td>{$coupon['type']}</td>
<td>{$coupon['value']}</td>
<td>{$coupon['description']}</td>
<td>{$coupon['max_usage']}</td>
<td>{$coupon['usage_count']}</td>
<td>
{if $coupon['status'] == 'inactive'}
<span class="label label-danger">{Lang::T('Inactive')}</span>
{elseif $coupon['status'] == 'active'}
<span class="label label-success">{Lang::T('Active')}</span>
{else}
<span class="label label-primary">{Lang::T('Unknown')}</span>
{/if}
</td>
<td>{$coupon['min_order_amount']}</td>
<td>{$coupon['max_discount_amount']}</td>
<td>{$coupon['start_date']}</td>
<td>{$coupon['end_date']}</td>
<td>{$coupon['created_at']}</td>
<td>{$coupon['updated_at']}</td>
<!-- <td>{if $coupon['admin_name']}
<a href="{$_url}settings/users-view/{$coupon['generated_by']}">{$coupon['admin_name']}</a>
{else} -
{/if}
</td> -->
<td colspan="10" style="text-align: center;">
<div style="display: flex; justify-content: center; gap: 10px; flex-wrap: wrap;">
<a href="{$_url}coupons/edit/{$coupon['id']}&token={$csrf_token}" id="{$coupon['id']}"
class="btn btn-success btn-xs">{Lang::T('Edit')}</a>
{if $coupon['status'] neq 'inactive'}
<a href="javascript:void(0);"
onclick="confirmAction('{$_url}coupons/status/&coupon_id={$coupon['id']}&status=inactive&csrf_token={$csrf_token}', '{Lang::T('Block')}')"
id="{$coupon['id']}" class="btn btn-danger btn-xs">
{Lang::T('Block')}
</a>
{else}
<a href="javascript:void(0);"
onclick="confirmAction('{$_url}coupons/status/&coupon_id={$coupon['id']}&status=active&csrf_token={$csrf_token}', '{Lang::T('Unblock')}')"
id="{$coupon['id']}" class="btn btn-warning btn-xs">
{Lang::T('Unblock')}
</a>
{/if}
</div>
</td>
</tr>
{/foreach}
{else}
<tr>
<td colspan="11" style="text-align: center;">
{Lang::T('No coupons found.')}
</td>
</tr>
{/if}
</tbody>
</table>
{include file="pagination.tpl"}
<div class="row" style="padding: 5px">
<div class="col-lg-3 col-lg-offset-9">
<div class="btn-group btn-group-justified" role="group">
<div class="btn-group" role="group">
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
<button id="deleteSelectedCoupons" class="btn btn-danger">{Lang::T('Delete
Selected')}</button>
{/if}
</div>
</div>
</div>
</div>
</div>
&nbsp;
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
function deleteCoupons(couponIds) {
if (couponIds.length > 0) {
Swal.fire({
title: 'Are you sure?',
text: 'You won\'t be able to revert this!',
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'Yes, delete it!',
cancelButtonText: 'Cancel'
}).then((result) => {
if (result.isConfirmed) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '{$_url}coupons/delete', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function () {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
if (response.status === 'success') {
Swal.fire({
title: 'Deleted!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then(() => {
location.reload(); // Reload the page after confirmation
});
} else {
Swal.fire({
title: 'Error!',
text: response.message,
icon: 'error',
confirmButtonText: 'OK'
});
}
} else {
Swal.fire({
title: 'Error!',
text: 'Failed to delete coupons. Please try again.',
icon: 'error',
confirmButtonText: 'OK'
});
}
};
xhr.send('couponIds=' + JSON.stringify(couponIds));
}
});
} else {
Swal.fire({
title: 'Error!',
text: 'No coupons selected to delete.',
icon: 'error',
confirmButtonText: 'OK'
});
}
}
// Example usage for selected coupons
document.getElementById('deleteSelectedCoupons').addEventListener('click', function () {
var selectedCoupons = [];
document.querySelectorAll('input[name="coupon_ids[]"]:checked').forEach(function (checkbox) {
selectedCoupons.push(checkbox.value);
});
if (selectedCoupons.length > 0) {
deleteCoupons(selectedCoupons);
} else {
Swal.fire({
title: 'Error!',
text: 'Please select at least one coupon to delete.',
icon: 'error',
confirmButtonText: 'OK'
});
}
});
// Example usage for single coupon deletion
document.querySelectorAll('.delete-coupon').forEach(function (button) {
button.addEventListener('click', function () {
var couponId = this.getAttribute('data-id');
deleteCoupons([couponId]);
});
});
// Select or deselect all checkboxes
document.getElementById('select-all').addEventListener('change', function () {
var checkboxes = document.querySelectorAll('input[name="coupon_ids[]"]');
for (var checkbox of checkboxes) {
checkbox.checked = this.checked;
}
});
</script>
{literal}
<script>
function confirmAction(url, action) {
Swal.fire({
title: 'Are you sure?',
text: `Do you really want to ${action.toLowerCase()} this coupon?`,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, proceed!',
cancelButtonText: 'No, cancel!'
}).then((result) => {
if (result.isConfirmed) {
window.location.href = url;
}
});
}
</script>
{/literal}
<script>
const $j = jQuery.noConflict();
$j(document).ready(function () {
$j('#datatable').DataTable({
"pagingType": "full_numbers",
"order": [
[1, 'desc']
]
});
});
</script>
{include file="sections/footer.tpl"}

View File

@ -2,166 +2,178 @@
<div class="row">
{if file_exists("$PAGES_PATH/Payment_Info.html")}
<div class="col-md-6">
<div class="panel panel-warning panel-hovered">
<div class="panel-heading">{Lang::T('Payment Info')}</div>
<div class="panel-body">{include file="$PAGES_PATH/Payment_Info.html"}</div>
</div>
<div class="col-md-6">
<div class="panel panel-warning panel-hovered">
<div class="panel-heading">{Lang::T('Payment Info')}</div>
<div class="panel-body">{include file="$PAGES_PATH/Payment_Info.html"}</div>
</div>
</div>
{/if}
<div class="{if file_exists("$PAGES_PATH/Payment_Info.html")}col-md-6{else}col-md-6 col-md-offset-3{/if}">
<div class="panel panel-success panel-hovered">
<div class="panel-heading">{Lang::T('Available Payment Gateway')}</div>
<div class="panel-footer">
{if !$custom}
<form method="post" action="{$_url}order/buy/{$route2}/{$route3}">
<div class="form-group row">
<label class="col-md-4">{Lang::T('Payment Gateway')}</label>
<div class="col-md-8">
<select name="gateway" id="gateway" class="form-control">
{if $_c['enable_balance'] == 'yes'}
<option value="balance">{Lang::T('Balance')} {Lang::moneyFormat($_user['balance'])}
</option>
{/if}
{foreach $pgs as $pg}
<option value="{$pg}">{ucwords($pg)}</option>
{/foreach}
</select>
</div>
</div>
</div>
<div class="panel-body">
<center><b>{Lang::T('Package Details')}</b></center>
<div class="panel-heading">{Lang::T('Make Payment')}</div>
<ul class="list-group list-group-unbordered">
<li class="list-group-item">
<b>{Lang::T('Plan Name')}</b> <span class="pull-right">{$plan['name_plan']}</span>
</li>
{if $plan['is_radius'] or $plan['routers']}
<li class="list-group-item">
<b>{Lang::T('Location')}</b> <span class="pull-right">{if
$plan['is_radius']}Radius{else}{$plan['routers']}
{/if}</span>
</li>
{/if}
<div class="panel-body">
<center><b>{Lang::T('Package Details')}</b></center>
{if !$custom}
<ul class="list-group list-group-unbordered">
<li class="list-group-item">
<b>{Lang::T('Type')}</b> <span class="pull-right">{if $plan['prepaid'] eq
'yes'}{Lang::T('Prepaid')}{else}{Lang::T('Postpaid')}
{/if}
{$plan['type']}</span>
<b>{Lang::T('Plan Name')}</b>
<span class="pull-right">{$plan['name_plan']}</span>
</li>
{if $plan['is_radius'] or $plan['routers']}
<li class="list-group-item">
<b>{Lang::T('Package Price')}</b> <span class="pull-right">
<b>{Lang::T('Location')}</b>
<span class="pull-right">{if $plan['is_radius']}Radius{else}{$plan['routers']}{/if}</span>
</li>
{/if}
<li class="list-group-item">
<b>{Lang::T('Type')}</b>
<span class="pull-right">
{if $plan['prepaid'] eq 'yes'}{Lang::T('Prepaid')}{else}{Lang::T('Postpaid')}{/if}
{$plan['type']}
</span>
</li>
<li class="list-group-item">
<b>{Lang::T('Package Price')}</b>
<span class="pull-right">
{if !empty($plan['price_old'])}
<sup
style="text-decoration: line-through; color: red">{Lang::moneyFormat($plan['price_old'])}</sup>
<sup style="text-decoration: line-through; color: red">
{Lang::moneyFormat($plan['price_old'])}
</sup>
{/if}
{Lang::moneyFormat($plan['price'])}
</span>
</li>
{if $plan['validity']}
<li class="list-group-item">
<b>{Lang::T('Validity Periode')}</b> <span class="pull-right">{$plan['validity']}
{$plan['validity_unit']}</span>
</li>
<li class="list-group-item">
<b>{Lang::T('Validity Period')}</b>
<span class="pull-right">{$plan['validity']} {$plan['validity_unit']}</span>
</li>
{/if}
</ul>
{else}
<ul class="list-group list-group-unbordered">
<li class="list-group-item">
<b>{Lang::T('Plan Name')}</b>
<span class="pull-right">{Lang::T('Custom Balance')}</span>
</li>
<li class="list-group-item">
<b>{Lang::T('Amount')}</b>
<span class="pull-right">
{Lang::moneyFormat($amount)}
</span>
</li>
</ul>
{/if}
{if $discount == '' && $plan['type'] neq 'Balance' && $custom == ''}
<!-- Coupon Code Form -->
<form action="{$_url}order/gateway/{$route2}/{$route3}" method="post">
<div class="form-group row">
<label class="col-md-4 control-label">{Lang::T('Coupon Code')}</label>
<div class="col-md-8">
<div class="input-group">
<input type="text" class="form-control" name="coupon" id="coupon" maxlength="50"
required placeholder="{Lang::T('Enter your coupon code')}">
<span class="input-group-btn">
<button type="submit" name="add_coupon"
class="btn btn-info btn-flat">{Lang::T('Apply Coupon')}</button>
</span>
</div>
</div>
</div>
</form>
{/if}
<br>
<center><b>{Lang::T('Summary')}</b></center>
<ul class="list-group list-group-unbordered">
{if $tax}
<li class="list-group-item">
<b>{Lang::T('Tax')}</b> <span class="pull-right">{Lang::moneyFormat($tax)}</span>
</li>
{if $add_cost!=0}
{foreach $bills as $k => $v}
<li class="list-group-item">
<b>{$k}</b> <span class="pull-right">{Lang::moneyFormat($v)}</span>
</li>
{/foreach}
<li class="list-group-item">
<b>{Lang::T('Additional Cost')}</b> <span
class="pull-right">{Lang::moneyFormat($add_cost)}</span>
</li>
<li class="list-group-item">
<b>{Lang::T('Total')}</b> <small>({Lang::T('Package Price')}
+{Lang::T('Additional Cost')})</small><span class="pull-right"
style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">{Lang::moneyFormat($plan['price']+$add_cost+$tax)}</span>
</li>
{else}
<li class="list-group-item">
<b>{Lang::T('Total')}</b> <small>({Lang::T('Plan Price')} + {Lang::T('Tax')})</small><span
class="pull-right"
style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">{Lang::moneyFormat($plan['price']+$tax)}</span>
</li>
{/if}
{if $add_cost != 0}
{foreach $bills as $k => $v}
<li class="list-group-item">
<b>{$k}</b>
<span class="pull-right">{Lang::moneyFormat($v)}</span>
</li>
{/foreach}
<li class="list-group-item">
<b>{Lang::T('Additional Cost')}</b>
<span class="pull-right">{Lang::moneyFormat($add_cost)}</span>
</li>
{/if}
{if $discount}
<li class="list-group-item">
<b>{Lang::T('Discount Applied')}</b>
<span class="pull-right">{Lang::moneyFormat($discount)}</span>
</li>
{/if}
{if $amount neq '' && $custom == '1'}
<li class="list-group-item">
<b>{Lang::T('Total')}</b>
<span class="pull-right" style="font-size: large; font-weight: bolder;">
{Lang::moneyFormat($amount)}
</span>
</li>
{elseif $plan['type'] eq 'Balance'}
<li class="list-group-item">
<b>{Lang::T('Total')}</b>
<span class="pull-right" style="font-size: large; font-weight: bolder;">
{Lang::moneyFormat($plan['price'] + $add_cost)}
</span>
</li>
{else}
{if $add_cost!=0}
{foreach $bills as $k => $v}
<li class="list-group-item">
<b>{$k}</b> <span class="pull-right">{Lang::moneyFormat($v)}</span>
</li>
{/foreach}
<li class="list-group-item">
<b>{Lang::T('Additional Cost')}</b> <span
class="pull-right">{Lang::moneyFormat($add_cost)}</span>
</li>
<li class="list-group-item">
<b>{Lang::T('Total')}</b> <small>({Lang::T('Package Price')}
+{Lang::T('Additional Cost')})</small><span class="pull-right"
style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">{Lang::moneyFormat($plan['price']+$add_cost)}</span>
</li>
{else}
<li class="list-group-item">
<b>{Lang::T('Total')}</b> <span class="pull-right"
style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">{Lang::moneyFormat($plan['price'])}</span>
</li>
{/if}
{if $tax}
<li class="list-group-item">
<b>{Lang::T('Tax')}</b>
<span class="pull-right">{Lang::moneyFormat($tax)}</span>
</li>
{/if}
<li class="list-group-item">
<b>{Lang::T('Total')}</b>
<span class="pull-right" style="font-size: large; font-weight: bolder;">
{Lang::moneyFormat($plan['price'] + $add_cost + $tax)}
</span>
</li>
{/if}
</ul>
<center>
<button type="submit" class="btn btn-primary"
onclick="return ask(this, '{Lang::T("Are You Sure?")}')">{Lang::T('Pay Now')}</button><br>
<a class="btn btn-link" href="{$_url}home">{Lang::T('Cancel')}</a>
</center>
</form>
{else}
<br>
<!-- Payment Gateway Form -->
<form method="post" action="{$_url}order/buy/{$route2}/{$route3}">
<input type="hidden" name="coupon" value="{$discount}">
{if $custom == '1' && $amount neq ''}
<input type="hidden" name="custom" value="1">
<input type="hidden" name="amount" value="{$amount}">
{/if}
<div class="form-group row">
<label class="col-md-4">{Lang::T('Payment Gateway')}</label>
<div class="col-md-8">
<select name="gateway" id="gateway" class="form-control">
{if $_c['enable_balance'] neq 'no' && $plan['type'] neq 'Balance' && $custom == '' &&
$_user['balance'] >= $plan['price'] + $add_cost + $tax}
<option value="balance">{Lang::T('Balance')} {Lang::moneyFormat($_user['balance'])}
</option>
{/if}
{foreach $pgs as $pg}
<option value="{$pg}">
{ucwords($pg)}</option>
<option value="{$pg}">{ucwords($pg)}</option>
{/foreach}
</select>
</div>
</div>
<ul class="list-group list-group-unbordered">
<input type="hidden" name="custom" value="1">
<input type="hidden" name="amount" value="{$amount}">
<li class="list-group-item">
<b>{Lang::T('Custom Balance')}</b> <span
class="pull-right">{Lang::moneyFormat($amount)}</span>
</li>
<br> <br> <br>
<li class="list-group-item">
<b>{Lang::T('Total')}</b> <span class="pull-right"
style="font-size: large; font-weight:bolder; font-family: 'Courier New', Courier, monospace; ">{Lang::moneyFormat($amount)}</span>
</li>
</ul>
<center>
<button type="submit" class="btn btn-primary"
onclick="return ask(this, '{Lang::T("Are You Sure?")}')">{Lang::T('Pay Now')}</button><br>
<a class="btn btn-link" href="{$_url}home">{Lang::T('Cancel')}</a>
<button type="submit" name="pay" class="btn btn-primary" onclick="return ask(this, '{Lang::T("
Are You Sure?")}')">{Lang::T('Pay Now')}</button>
<a href="{$_url}home" class="btn btn-secondary">{Lang::T('Cancel')}</a>
</center>
</form>
{/if}
<br>
</div>
</div>
</div>
</div>
{include file="customer/footer.tpl"}
{include file="customer/footer.tpl"}

View File

@ -1240,7 +1240,7 @@
{if !in_array($_admin['user_type'],['Report'])}
<li class="{if in_array($_system_menu, ['customers', 'map'])}active{/if} treeview">
<a href="#">
<i class="fa fa-users"></i> <span>{Lang::T('Customer')}</span>
<i class="fa fa-user"></i> <span>{Lang::T('Customer')}</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
@ -1265,8 +1265,6 @@
<li {if $_routes[1] eq 'list' }class="active" {/if}><a
href="{$_url}plan/list">{Lang::T('Active Users')}</a></li>
{if $_c['disable_voucher'] != 'yes'}
<li {if $_routes[1] eq 'voucher' }class="active" {/if}><a
href="{$_url}plan/voucher">{Lang::T('Vouchers')}</a></li>
<li {if $_routes[1] eq 'refill' }class="active" {/if}><a
href="{$_url}plan/refill">{Lang::T('Refill Customer')}</a></li>
{/if}
@ -1307,6 +1305,38 @@
</li>
{/if}
{$_MENU_AFTER_PLANS}
<li class="{if $_system_menu eq 'cards'}active{/if} treeview">
<a href="#">
<i class="glyphicon glyphicon-credit-card"></i> <span>{Lang::T('Cards')}</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
{if $_c['disable_voucher'] != 'yes'}
<li {if $_routes[1] eq 'voucher' }class="active" {/if}><a
href="{$_url}plan/voucher">{Lang::T('Vouchers')}</a></li>
{/if}
{$_MENU_CARDS}
</ul>
</li>
{$_MENU_AFTER_CRM}
<li class="{if $_system_menu eq 'crm'}active{/if} treeview">
<a href="#">
<i class="fa fa-users"></i> <span>{Lang::T('CRM')}</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
{if $_c['disable_coupons'] != 'yes'}
<li {if $_routes[0] eq 'coupons' }class="active" {/if}><a
href="{$_url}coupons">{Lang::T('Coupons')}</a></li>
{/if}
{$_MENU_CRM}
</ul>
</li>
{$_MENU_AFTER_CARDS}
<li class="{if $_system_menu eq 'reports'}active{/if} treeview">
{if in_array($_admin['user_type'],['SuperAdmin','Admin', 'Report'])}
<a href="#">