Update composer and move themes to under views
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
@if ($o->accounts->count() > 2)
|
||||
<div class="col-sm-2">
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon bg-primary elevation-1"><i class="fa fa-user"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">Linked Accounts</span>
|
||||
<span class="info-box-number">{{ number_format($o->accounts->count()) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="col-sm-3">
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon bg-info"><i class="fa fa-clone"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">Active Services</span>
|
||||
<span class="info-box-number">{{ $o->services_active->count() }} <small>/{{ $o->services->count() }}</small></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2">
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon bg-danger"><i class="fa fa-dollar"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">Account Balance</span>
|
||||
<span class="info-box-number"><small>$</small> {{ number_format($o->invoices_due->sum('due'),2) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-2">
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon bg-dark"><i class="fa fa-hashtag"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">Invoices Due</span>
|
||||
<span class="info-box-number">{{ $o->invoices_due->count() }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,65 @@
|
||||
<div class="card card-dark card-outline">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title">Invoices Due</h4>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if ($o->invoices_due->count())
|
||||
<table class="table table-striped table-hover" id="invoices" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Invoice</th>
|
||||
<th>Total</th>
|
||||
<th>Due</th>
|
||||
<th>Date Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th>Count {{ $o->invoices_due->count() }}</th>
|
||||
{{-- @todo Number format should configured by currency --}}
|
||||
<th class="right">{{ number_format($o->invoices_due->sum('total'),2) }}</th>
|
||||
<th class="right">{{ number_format($o->invoices_due->sum('due'),2) }}</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
@else
|
||||
<p>No invoices due</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('page-scripts')
|
||||
@css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery')
|
||||
@js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery')
|
||||
@css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','dt-responsive-css','jq-dt-css')
|
||||
@js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','dt-responsive-js','jq-dt-js')
|
||||
@css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css')
|
||||
@js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js')
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#invoices').DataTable( {
|
||||
responsive: true,
|
||||
ajax: {
|
||||
url: "/api/u/invoices/{{ $o->id }}"
|
||||
},
|
||||
columns: [
|
||||
{ data: "invoice_id_url" },
|
||||
{ data: "total" },
|
||||
{ data: "due" },
|
||||
{ data: "date_due" }
|
||||
],
|
||||
language: {
|
||||
emptyTable: "No Invoices Due"
|
||||
},
|
||||
order: [3, 'asc']
|
||||
});
|
||||
|
||||
$('#invoices tbody').on('click','tr', function () {
|
||||
$(this).toggleClass('selected');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@append
|
@@ -0,0 +1,47 @@
|
||||
<table class="table table-bordered w-100" id="invoices">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-right">#</th>
|
||||
<th class="text-right">Issued</th>
|
||||
<th class="text-right">Due</th>
|
||||
<th class="text-right">Total</th>
|
||||
<th class="text-right">Payments</th>
|
||||
<th class="text-right">Outstanding</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach ($o->invoices as $io)
|
||||
<tr>
|
||||
<td class="text-right"><a href="{{ url('u/invoice',$io->id) }}">{{ $io->id }}</a></td>
|
||||
<td class="text-right">{{ $io->date_orig->format('Y-m-d') }}</td>
|
||||
<td class="text-right">{{ $io->due_date->format('Y-m-d') }}</td>
|
||||
<td class="text-right">${{ number_format($io->total,2) }}</td>
|
||||
<td class="text-right">${{ number_format($io->paid,2) }}</td>
|
||||
<td class="text-right">${{ number_format($io->due,2) }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@section('page-scripts')
|
||||
@css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery')
|
||||
@js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery')
|
||||
@css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','jq-dt-r-css','jq-dt-css')
|
||||
@js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','jq-dt-r-js','jq-dt-js')
|
||||
@css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css')
|
||||
@js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js')
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#invoices').DataTable( {
|
||||
responsive: true,
|
||||
order: [1, 'desc']
|
||||
});
|
||||
|
||||
$('#invoices tbody').on('click','tr', function () {
|
||||
$(this).toggleClass('selected');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@append
|
@@ -0,0 +1,59 @@
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title">Payment History</h4>
|
||||
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
|
||||
<button type="button" class="btn btn-tool" data-widget="remove"><i class="fa fa-remove"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if ($o->payment_history->count())
|
||||
<table class="table table-bordered table-striped table-hover" id="payments" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Date</th>
|
||||
<th>Amount</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
@else
|
||||
<p>No payments recorded</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('page-scripts')
|
||||
@css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery')
|
||||
@js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery')
|
||||
@css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','dt-responsive-css','jq-dt-css')
|
||||
@js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','dt-responsive-js','jq-dt-js')
|
||||
@css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css')
|
||||
@js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js')
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#payments').DataTable( {
|
||||
responsive: true,
|
||||
ajax: {
|
||||
url: "/api/u/payments/{{ $o->id }}"
|
||||
},
|
||||
columns: [
|
||||
{ data: "payment_id_url" },
|
||||
{ data: "date_paid" },
|
||||
{ data: "total" },
|
||||
],
|
||||
language: {
|
||||
emptyTable: "No Payments On File"
|
||||
},
|
||||
order: [0, 'desc']
|
||||
});
|
||||
|
||||
$('#payments tbody').on('click','tr', function () {
|
||||
$(this).toggleClass('selected');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@append
|
@@ -0,0 +1,80 @@
|
||||
<div class="card card-info card-outline">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title">Services</h4>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@if ($o->services_active->count())
|
||||
<table class="table table-striped table-hover" id="services" style="width: 100%;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Category</th>
|
||||
<th>Service</th>
|
||||
<th>Product</th>
|
||||
<th>Status</th>
|
||||
<th>Next Invoice</th>
|
||||
{{-- <th>Amount</th> --}}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th>Count {{ $o->services_active->count() }}</th>
|
||||
<th colspan="5"> </th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
@else
|
||||
<p>No services active</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('page-scripts')
|
||||
@css('//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css','jq-dt-css','jquery')
|
||||
@js('//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js','jq-dt-js','jquery')
|
||||
@css('//cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css','dt-responsive-css','jq-dt-css')
|
||||
@js('//cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js','dt-responsive-js','jq-dt-js')
|
||||
@css('//cdn.datatables.net/rowgroup/1.0.2/css/rowGroup.dataTables.min.css','dt-rowgroup-css','jq-dt-css')
|
||||
@js('//cdn.datatables.net/rowgroup/1.0.2/js/dataTables.rowGroup.min.js','dt-rowgroup-js','jq-dt-js')
|
||||
@css('/plugin/dataTables/dataTables.bootstrap4.css','dt-bootstrap4-css','jq-dt-css')
|
||||
@js('/plugin/dataTables/dataTables.bootstrap4.js','dt-bootstrap4-js','jq-dt-js')
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#services').DataTable( {
|
||||
responsive: true,
|
||||
ajax: {
|
||||
url: "/api/u/services/{{ $o->id }}"
|
||||
},
|
||||
columns: [
|
||||
{ data: "service_id_url" },
|
||||
{ data: "product_category" },
|
||||
{ data: "name_short" },
|
||||
{ data: "product_name" },
|
||||
{ data: "status" },
|
||||
{ data: "next_invoice" },
|
||||
{{-- { data: "billing_price", render: $.fn.dataTable.render.number(',','.',2,'$') } --}}
|
||||
],
|
||||
language: {
|
||||
emptyTable: "No Active Services"
|
||||
},
|
||||
order: [5, 'asc'],
|
||||
rowGroup: {
|
||||
dataSrc: 'product_name',
|
||||
startRender: null,
|
||||
endRender: function ( rows, group ) {
|
||||
return rows.count()+' x ' + group;
|
||||
},
|
||||
},
|
||||
orderFixed: [3, 'asc']
|
||||
});
|
||||
|
||||
$('#services tbody').on('click','tr', function () {
|
||||
$(this).toggleClass('selected');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@append
|
@@ -0,0 +1,38 @@
|
||||
<div class="card card-primary card-outline">
|
||||
<div class="card-header">
|
||||
<strong>Service Information</strong>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th>Account</th>
|
||||
<td>{{ $o->account->name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Active</th>
|
||||
<td>{!! $o->status_html !!}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Billing Period</th>
|
||||
<td>{{ $o->billing_period }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Billing Amount</th>
|
||||
<td>${{ number_format($o->billing_price,2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Invoiced To</th>
|
||||
<td>{{ $o->invoice_to ? $o->invoice_to->format('Y-m-d') : '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Next Invoice</th>
|
||||
<td>{{ $o->invoice_next ? $o->invoice_next->format('Y-m-d') : '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Current Invoices Due</th>
|
||||
<td>${{ number_format($o->invoices_due()->sum('due'),2) }} <small>({{ $o->invoices_due()->count() }})</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,13 @@
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th colspan="3">{{ $o->name }}</th><th class="text-right">${{ number_format(($x=$o->next_invoice_items(TRUE))->sum('total'),2) }}</th>
|
||||
</tr>
|
||||
|
||||
@foreach ($x as $io)
|
||||
<tr>
|
||||
<td class="pt-0 pb-1"> </td>
|
||||
<td class="pt-0 pb-1">{{ $io->item_type_name }}</td>
|
||||
<td class="text-right pt-0 pb-1">${{ number_format($io->total,2) }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
Reference in New Issue
Block a user