mirror of
https://github.com/hotspotbilling/phpnuxbill.git
synced 2025-08-01 08:44:37 +02:00
feat: add batch name filter to voucher management and enhance search functionality in the UI
This commit is contained in:
parent
c9b67c5480
commit
abc847cf55
2 changed files with 97 additions and 15 deletions
|
@ -438,6 +438,9 @@ switch ($action) {
|
||||||
$customer = _req('customer');
|
$customer = _req('customer');
|
||||||
$plan = _req('plan');
|
$plan = _req('plan');
|
||||||
$status = _req('status');
|
$status = _req('status');
|
||||||
|
$batch_name = _req('batch_name');
|
||||||
|
|
||||||
|
$ui->assign('batch_name', $batch_name);
|
||||||
$ui->assign('router', $router);
|
$ui->assign('router', $router);
|
||||||
$ui->assign('customer', $customer);
|
$ui->assign('customer', $customer);
|
||||||
$ui->assign('status', $status);
|
$ui->assign('status', $status);
|
||||||
|
@ -463,6 +466,10 @@ switch ($action) {
|
||||||
$query->where('tbl_voucher.user', $customer);
|
$query->where('tbl_voucher.user', $customer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($batch_name)) {
|
||||||
|
$query->where('tbl_voucher.batch_name', $batch_name);
|
||||||
|
}
|
||||||
|
|
||||||
$append_url = "&search=" . urlencode($search) . "&router=" . urlencode($router) . "&customer=" . urlencode($customer) . "&plan=" . urlencode($plan) . "&status=" . urlencode($status);
|
$append_url = "&search=" . urlencode($search) . "&router=" . urlencode($router) . "&customer=" . urlencode($customer) . "&plan=" . urlencode($plan) . "&status=" . urlencode($status);
|
||||||
|
|
||||||
// option customers
|
// option customers
|
||||||
|
@ -478,7 +485,7 @@ switch ($action) {
|
||||||
|
|
||||||
if ($search != '') {
|
if ($search != '') {
|
||||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||||
$query->where_like('tbl_voucher.code', '%' . $search . '%');
|
$query->where_like('tbl_voucher.code', "%$search%");
|
||||||
} else if ($admin['user_type'] == 'Agent') {
|
} else if ($admin['user_type'] == 'Agent') {
|
||||||
$sales = [];
|
$sales = [];
|
||||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||||
|
@ -487,7 +494,7 @@ switch ($action) {
|
||||||
}
|
}
|
||||||
$sales[] = $admin['id'];
|
$sales[] = $admin['id'];
|
||||||
$query->where_in('generated_by', $sales)
|
$query->where_in('generated_by', $sales)
|
||||||
->where_like('tbl_voucher.code', '%' . $search . '%');
|
->where_like('tbl_voucher.code', "%$search%");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||||
|
@ -501,7 +508,7 @@ switch ($action) {
|
||||||
$query->where_in('generated_by', $sales);
|
$query->where_in('generated_by', $sales);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$d = $query->find_many();
|
$d = Paginator::findMany($query, ["search" => $search], 10, $append_url);
|
||||||
// extract admin
|
// extract admin
|
||||||
$admins = [];
|
$admins = [];
|
||||||
foreach ($d as $k) {
|
foreach ($d as $k) {
|
||||||
|
@ -525,7 +532,13 @@ switch ($action) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$ui->assign('xheader', '<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">');
|
$batches = ORM::for_table('tbl_voucher')
|
||||||
|
->select('batch_name')
|
||||||
|
->distinct()
|
||||||
|
->where_not_equal('batch_name', '')
|
||||||
|
->order_by_desc('created_at')
|
||||||
|
->find_many();
|
||||||
|
$ui->assign('batches', $batches);
|
||||||
$ui->assign('admins', $admins);
|
$ui->assign('admins', $admins);
|
||||||
$ui->assign('d', $d);
|
$ui->assign('d', $d);
|
||||||
$ui->assign('search', $search);
|
$ui->assign('search', $search);
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel panel-hovered mb20 panel-primary">
|
<div class="panel panel-hovered mb20 panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
||||||
|
@ -26,7 +27,84 @@
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="panel-body" style="margin-left: 10px;">
|
||||||
|
<form id="voucher-search-form" method="post" action="{Text::url('')}plan/voucher/" class="form-horizontal">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" name="search" class="form-control" placeholder="{Lang::T('Code Voucher')}"
|
||||||
|
value="{$search}" autocomplete="off" data-toggle="tooltip" title="{Lang::T('Search by voucher code')}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<select class="form-control select2" id="router" name="router" data-placeholder="{Lang::T('Location')}">
|
||||||
|
<option value=""></option>
|
||||||
|
{foreach $routers as $r}
|
||||||
|
<option value="{$r}" {if $router eq $r}selected{/if}>{$r}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<select class="form-control select2" id="batch_name" name="batch_name" data-placeholder="{Lang::T('Batch')}">
|
||||||
|
<option value=""></option>
|
||||||
|
{foreach $batches as $batch}
|
||||||
|
<option value="{$batch.batch_name}" {if $batch_name eq $batch.batch_name}selected{/if}>
|
||||||
|
{$batch.batch_name}
|
||||||
|
</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<select class="form-control select2" id="plan" name="plan" data-placeholder="{Lang::T('Plan Name')}">
|
||||||
|
<option value=""></option>
|
||||||
|
{foreach $plans as $p}
|
||||||
|
<option value="{$p['id']}" {if $plan eq $p['id']}selected{/if}>{$p['name_plan']}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<select class="form-control" id="status" name="status">
|
||||||
|
<option value="">{Lang::T('Status')}</option>
|
||||||
|
<option value="1" {if $status eq 1}selected{/if}>{Lang::T('Used')}</option>
|
||||||
|
<option value="0" {if $status eq 0}selected{/if}>{Lang::T('Not Used')}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<select class="form-control select2" id="customer" name="customer" data-placeholder="{Lang::T('Customer')}">
|
||||||
|
<option value=""></option>
|
||||||
|
{foreach $customers as $c}
|
||||||
|
<option value="{$c['user']}" {if $customer eq $c['user']}selected{/if}>{$c['user']}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 col-sm-6 col-xs-12 form-group">
|
||||||
|
<div class="btn-group btn-group-justified" role="group">
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<button type="submit" class="btn btn-success btn-block" data-toggle="tooltip" title="{Lang::T('Search')}">
|
||||||
|
<i class="fa fa-search"></i> <span class="hidden-xs">{Lang::T('Search')}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<a href="{Text::url('')}plan/voucher/" class="btn btn-warning btn-block"
|
||||||
|
data-toggle="tooltip" title="{Lang::T('Reset Search')}">
|
||||||
|
<i class="fa fa-undo"></i> <span class="hidden-xs">{Lang::T('Reset')}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<div style="margin-left: 5px; margin-right: 5px;">
|
<div style="margin-left: 5px; margin-right: 5px;">
|
||||||
<table id="datatable" class="table table-bordered table-striped table-condensed">
|
<table id="datatable" class="table table-bordered table-striped table-condensed">
|
||||||
|
@ -94,7 +172,6 @@
|
||||||
{/foreach}
|
{/foreach}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
|
||||||
<div class="row" style="padding: 5px">
|
<div class="row" style="padding: 5px">
|
||||||
<div class="col-lg-3 col-lg-offset-9">
|
<div class="col-lg-3 col-lg-offset-9">
|
||||||
<div class="btn-group btn-group-justified" role="group">
|
<div class="btn-group btn-group-justified" role="group">
|
||||||
|
@ -107,14 +184,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{include file="pagination.tpl"}
|
||||||
<br>
|
<br>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
|
|
||||||
<script type="text/javascript" charset="utf8"
|
|
||||||
src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
function deleteVouchers(voucherIds) {
|
function deleteVouchers(voucherIds) {
|
||||||
if (voucherIds.length > 0) {
|
if (voucherIds.length > 0) {
|
||||||
|
@ -208,9 +282,4 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script>
|
|
||||||
new DataTable('#datatable');
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
{include file="sections/footer.tpl"}
|
{include file="sections/footer.tpl"}
|
Loading…
Add table
Add a link
Reference in a new issue