feat: add invoice listing page with DataTables integration and update routing

This commit is contained in:
Focuslinkstech 2025-04-08 18:59:15 +01:00
parent 24b713804a
commit f0b9b56bb0
3 changed files with 225 additions and 218 deletions

View File

@ -7,20 +7,20 @@
**/ **/
_auth(); _admin();
$ui->assign('_title', Lang::T('Invoices')); $ui->assign('_title', Lang::T('Invoice Lists'));
$ui->assign('_system_menu', 'Reports'); $ui->assign('_system_menu', 'reports');
$action = $routes['1']; $action = $routes['1'];
$user = User::_info(); $ui->assign('_admin', $admin);
$ui->assign('_user', $user);
if (empty($action)) {
$action = 'list';
}
switch ($action) { switch ($action) {
case 'list': case 'list':
$ui->assign('xheader', '<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">'); $ui->assign('xheader', '<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">');
$ui->assign('invoices', Invoice::getAll()); $ui->assign('invoices', Invoice::getAll());
$ui->display('admin/invoice/list.tpl'); $ui->display('admin/invoices/list.tpl');
break; break;
default: default:
$ui->display('admin/404.tpl'); $ui->display('admin/404.tpl');

View File

@ -78,8 +78,8 @@
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li class="user-header"> <li class="user-header">
<img src="{$app_url}/{$UPLOAD_PATH}{$_admin['photo']}.thumb.jpg" <img src="{$app_url}/{$UPLOAD_PATH}{$_admin['photo']}.thumb.jpg"
onerror="this.src='{$app_url}/{$UPLOAD_PATH}/admin.default.png'" class="img-circle" onerror="this.src='{$app_url}/{$UPLOAD_PATH}/admin.default.png'"
alt="Avatar"> class="img-circle" alt="Avatar">
<p> <p>
{$_admin['fullname']} {$_admin['fullname']}
<small>{Lang::T($_admin['user_type'])}</small> <small>{Lang::T($_admin['user_type'])}</small>
@ -174,7 +174,8 @@
href="{Text::url('services/hotspot')}">Hotspot</a></li> href="{Text::url('services/hotspot')}">Hotspot</a></li>
<li {if $_routes[1] eq 'pppoe' }class="active" {/if}><a <li {if $_routes[1] eq 'pppoe' }class="active" {/if}><a
href="{Text::url('services/pppoe')}">PPPOE</a></li> href="{Text::url('services/pppoe')}">PPPOE</a></li>
<li {if $_routes[1] eq 'vpn' }class="active" {/if}><a href="{Text::url('services/vpn')}">VPN</a> <li {if $_routes[1] eq 'vpn' }class="active" {/if}><a
href="{Text::url('services/vpn')}">VPN</a>
</li> </li>
<li {if $_routes[1] eq 'list' }class="active" {/if}><a <li {if $_routes[1] eq 'list' }class="active" {/if}><a
href="{Text::url('bandwidth/list')}">Bandwidth</a></li> href="{Text::url('bandwidth/list')}">Bandwidth</a></li>
@ -216,6 +217,8 @@
href="{Text::url('reports')}">{Lang::T('Daily Reports')}</a></li> href="{Text::url('reports')}">{Lang::T('Daily Reports')}</a></li>
<li {if $_routes[1] eq 'activation' }class="active" {/if}><a <li {if $_routes[1] eq 'activation' }class="active" {/if}><a
href="{Text::url('reports/activation')}">{Lang::T('Activation History')}</a></li> href="{Text::url('reports/activation')}">{Lang::T('Activation History')}</a></li>
{* <li {if $_routes[0] eq 'invoices' }class="active" {/if}><a
href="{Text::url('invoices')}">{Lang::T('Invoices')}</a></li> *}
{$_MENU_REPORTS} {$_MENU_REPORTS}
</ul> </ul>
</li> </li>
@ -286,16 +289,19 @@
<li {if $_routes[1] eq 'Announcement' }class="active" {/if}><a <li {if $_routes[1] eq 'Announcement' }class="active" {/if}><a
href="{Text::url('pages/Announcement')}">{Lang::T('Announcement')}</a></li> href="{Text::url('pages/Announcement')}">{Lang::T('Announcement')}</a></li>
<li {if $_routes[1] eq 'Announcement_Customer' }class="active" {/if}><a <li {if $_routes[1] eq 'Announcement_Customer' }class="active" {/if}><a
href="{Text::url('pages/Announcement_Customer')}">{Lang::T('Customer Announcement')}</a> href="{Text::url('pages/Announcement_Customer')}">{Lang::T('Customer
Announcement')}</a>
</li> </li>
<li {if $_routes[1] eq 'Registration_Info' }class="active" {/if}><a <li {if $_routes[1] eq 'Registration_Info' }class="active" {/if}><a
href="{Text::url('pages/Registration_Info')}">{Lang::T('Registration Info')}</a></li> href="{Text::url('pages/Registration_Info')}">{Lang::T('Registration Info')}</a>
</li>
<li {if $_routes[1] eq 'Payment_Info' }class="active" {/if}><a <li {if $_routes[1] eq 'Payment_Info' }class="active" {/if}><a
href="{Text::url('pages/Payment_Info')}">{Lang::T('Payment Info')}</a></li> href="{Text::url('pages/Payment_Info')}">{Lang::T('Payment Info')}</a></li>
<li {if $_routes[1] eq 'Privacy_Policy' }class="active" {/if}><a <li {if $_routes[1] eq 'Privacy_Policy' }class="active" {/if}><a
href="{Text::url('pages/Privacy_Policy')}">{Lang::T('Privacy Policy')}</a></li> href="{Text::url('pages/Privacy_Policy')}">{Lang::T('Privacy Policy')}</a></li>
<li {if $_routes[1] eq 'Terms_and_Conditions' }class="active" {/if}><a <li {if $_routes[1] eq 'Terms_and_Conditions' }class="active" {/if}><a
href="{Text::url('pages/Terms_and_Conditions')}">{Lang::T('Terms and Conditions')}</a></li> href="{Text::url('pages/Terms_and_Conditions')}">{Lang::T('Terms and
Conditions')}</a></li>
{$_MENU_PAGES} {$_MENU_PAGES}
</ul> </ul>
</li> </li>
@ -374,7 +380,8 @@
{$_MENU_AFTER_LOGS} {$_MENU_AFTER_LOGS}
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
<li {if $_routes[1] eq 'docs' }class="active" {/if}> <li {if $_routes[1] eq 'docs' }class="active" {/if}>
<a href="{if $_c['docs_clicked'] != 'yes'}{Text::url('settings/docs')}{else}{$app_url}/docs{/if}"> <a
href="{if $_c['docs_clicked'] != 'yes'}{Text::url('settings/docs')}{else}{$app_url}/docs{/if}">
<i class="ion ion-ios-bookmarks"></i> <i class="ion ion-ios-bookmarks"></i>
<span class="text">{Lang::T('Documentation')}</span> <span class="text">{Lang::T('Documentation')}</span>
{if $_c['docs_clicked'] != 'yes'} {if $_c['docs_clicked'] != 'yes'}

View File

@ -35,7 +35,7 @@
<span class="label label-warning">{Lang::T('Pending')}</span> <span class="label label-warning">{Lang::T('Pending')}</span>
{/if} {/if}
</td> </td>
<td>{$invoice->created_date}</td> <td>{$invoice->created_at}</td>
<td>{$invoice->due_date}</td> <td>{$invoice->due_date}</td>
<td> <td>
<a href="{$app_url}/system/uploads/invoices/{$invoice->filename}" class="btn btn-primary btn-xs">{Lang::T('View')}</a> <a href="{$app_url}/system/uploads/invoices/{$invoice->filename}" class="btn btn-primary btn-xs">{Lang::T('View')}</a>