2017-12-12 19:36:36 +03:00

299 lines
14 KiB
PHP

@extends('layouts.admin')
@section('title', trans('general.dashboard'))
@section('content')
<div class="row">
<!---Income-->
<div class="col-md-4">
<div class="info-box">
<span class="info-box-icon bg-aqua"><i class="fa fa-money"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{ trans('dashboard.total_incomes') }}</span>
<span class="info-box-number">@money($total_incomes['total'], setting('general.default_currency'), true)</span>
<div class="progress-group" title="{{ trans('dashboard.open_invoices') }}: {{ $total_incomes['open_invoice'] }}<br>{{ trans('dashboard.overdue_invoices') }}: {{ $total_incomes['overdue_invoice'] }}" data-toggle="tooltip" data-html="true">
<div class="progress sm">
<div class="progress-bar progress-bar-aqua" style="width: {{ $total_incomes['progress'] }}%"></div>
</div>
<span class="progress-text">{{ trans('dashboard.receivables') }}</span>
<span class="progress-number">{{ $total_incomes['open_invoice'] }} / {{ $total_incomes['overdue_invoice'] }}</span>
</div>
</div>
</div>
</div>
<!---Expense-->
<div class="col-md-4">
<div class="info-box">
<span class="info-box-icon bg-red"><i class="fa fa-shopping-cart"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{ trans('dashboard.total_expenses') }}</span>
<span class="info-box-number">@money($total_expenses['total'], setting('general.default_currency'), true)</span>
<div class="progress-group" title="{{ trans('dashboard.open_bills') }}: {{ $total_expenses['open_bill'] }}<br>{{ trans('dashboard.overdue_bills') }}: {{ $total_expenses['overdue_bill'] }}" data-toggle="tooltip" data-html="true">
<div class="progress sm">
<div class="progress-bar progress-bar-red" style="width: {{ $total_expenses['progress'] }}%"></div>
</div>
<span class="progress-text">{{ trans('dashboard.payables') }}</span>
<span class="progress-number">{{ $total_expenses['open_bill'] }} / {{ $total_expenses['overdue_bill'] }}</span>
</div>
</div>
</div>
</div>
<!---Profit-->
<div class="col-md-4">
<div class="info-box">
<span class="info-box-icon bg-green"><i class="fa fa-heart"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{ trans('dashboard.total_profit') }}</span>
<span class="info-box-number">@money($total_profit['total'], setting('general.default_currency'), true)</span>
<div class="progress-group" title="{{ trans('dashboard.open_profit') }}: {{ $total_profit['open'] }}<br>{{ trans('dashboard.overdue_profit') }}: {{ $total_profit['overdue'] }}" data-toggle="tooltip" data-html="true">
<div class="progress sm">
<div class="progress-bar progress-bar-green" style="width: {{ $total_profit['progress'] }}%"></div>
</div>
<span class="progress-text">{{ trans('general.upcoming') }}</span>
<span class="progress-number">{{ $total_profit['open'] }} / {{ $total_profit['overdue'] }}</span>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<!---Income, Expense and Profit Line Chart-->
<div class="col-md-12">
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('dashboard.cash_flow') }}</h3>
<div class="box-tools pull-right">
<button type="button" id="cashflow-monthly" class="btn btn-default btn-sm">Monthly</button>&nbsp;&nbsp;
<button type="button" id="cashflow-quarterly" class="btn btn-default btn-sm">Quarterly</button>&nbsp;&nbsp;
<input type="hidden" name="period" id="period" value="month" />
<div class="btn btn-default btn-sm">
<div id="cashflow-range" class="pull-right">
<i class="glyphicon glyphicon-calendar fa fa-calendar"></i>&nbsp;
<span></span> <b class="caret"></b>
</div>
</div>
</div>
</div>
<div class="box-body" id="cashflow">
{!! $cashflow->render() !!}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('dashboard.incomes_by_category') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
{!! $donut_incomes->render() !!}
</div>
</div>
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('dashboard.expenses_by_category') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
{!! $donut_expenses->render() !!}
</div>
</div>
</div>
<div class="col-md-4">
<!-- Account Balance List-->
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('dashboard.account_balance') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
@if ($accounts->count())
<table class="table table-striped">
<tbody>
@foreach($accounts as $item)
<tr>
<td class="text-left">{{ $item->name }}</td>
<td class="text-right">@money($item->balance, $item->currency_code, true)</td>
</tr>
@endforeach
</tbody>
</table>
@else
<h5 class="text-center">{{ trans('general.no_records') }}</h5>
@endif
</div>
</div>
<!-- Latest Incomes List-->
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('dashboard.latest_incomes') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
@if ($latest_incomes->count())
<table class="table table-striped">
<thead>
<tr>
<th class="text-left">{{ trans('general.date') }}</th>
<th class="text-left">{{ trans_choice('general.categories', 1) }}</th>
<th class="text-right">{{ trans('general.amount') }}</th>
</tr>
</thead>
<tbody>
@foreach($latest_incomes as $item)
<tr>
<td class="text-left">{{ Date::parse($item->paid_at)->format($date_format) }}</td>
<td class="text-left">{{ $item->category ? $item->category->name : trans_choice('general.invoices', 2) }}</td>
<td class="text-right">@money($item->amount, $item->currency_code, true)</td>
</tr>
@endforeach
</tbody>
</table>
@else
<h5 class="text-center">{{ trans('general.no_records') }}</h5>
@endif
</div>
</div>
<!-- Latest Expenses List-->
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('dashboard.latest_expenses') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
@if ($latest_expenses->count())
<table class="table table-striped">
<thead>
<tr>
<th class="text-left">{{ trans('general.date') }}</th>
<th class="text-left">{{ trans_choice('general.categories', 1) }}</th>
<th class="text-right">{{ trans('general.amount') }}</th>
</tr>
</thead>
<tbody>
@foreach($latest_expenses as $item)
<tr>
<td class="text-left">{{ Date::parse($item->paid_at)->format($date_format) }}</td>
<td class="text-left">{{ $item->category ? $item->category->name : trans_choice('general.bills', 2) }}</td>
<td class="text-right">@money($item->amount, $item->currency_code, true)</td>
</tr>
@endforeach
</tbody>
</table>
@else
<h5 class="text-center">{{ trans('general.no_records') }}</h5>
@endif
</div>
</div>
</div>
</div>
@endsection
@push('js')
{!! Charts::assets() !!}
<script type="text/javascript" src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<!-- Include Date Range Picker -->
<script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />
@endpush
@push('scripts')
<script type="text/javascript">
$(function() {
var start = moment().startOf('year');
var end = moment().endOf('year');
function cb(start, end) {
$('#cashflow-range span').html(start.format('D MMM YYYY') + ' - ' + end.format('D MMM YYYY'));
}
$('#cashflow-range').daterangepicker({
startDate: start,
endDate: end,
ranges: {
'This Year': [moment().startOf('year'), moment().endOf('year')],
'Previous Year': [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year').endOf('year')],
'This Quarter': [moment().subtract(2, 'months').startOf('month'), moment().endOf('month')],
'Previous Quarter': [moment().subtract(5, 'months').startOf('month'), moment().subtract(3, 'months').endOf('month')],
'Last 12 Months': [moment().subtract(11, 'months').startOf('month'), moment().endOf('month')]
}
}, cb);
cb(start, end);
});
$(document).ready(function () {
$('#cashflow-range').on('apply.daterangepicker', function(ev, picker) {
var period = $('#period').val();
$.ajax({
url: '{{ url("dashboard/dashboard/cashflow") }}',
type: 'GET',
dataType: 'HTML',
data: 'period=' + period + '&start=' + picker.startDate.format('YYYY-MM-DD') + '&end=' + picker.endDate.format('YYYY-MM-DD'),
success: function(data) {
$('#cashflow').html(data);
}
});
});
$('#cashflow-monthly').on('click', function() {
var picker = $('#cashflow-range').data('daterangepicker');
$('#period').val('month');
$.ajax({
url: '{{ url("dashboard/dashboard/cashflow") }}',
type: 'GET',
dataType: 'HTML',
data: 'period=month&start=' + picker.startDate.format('YYYY-MM-DD') + '&end=' + picker.endDate.format('YYYY-MM-DD'),
success: function(data) {
$('#cashflow').html(data);
}
});
});
$('#cashflow-quarterly').on('click', function() {
var picker = $('#cashflow-range').data('daterangepicker');
$('#period').val('quarter');
$.ajax({
url: '{{ url("dashboard/dashboard/cashflow") }}',
type: 'GET',
dataType: 'HTML',
data: 'period=quarter&start=' + picker.startDate.format('YYYY-MM-DD') + '&end=' + picker.endDate.format('YYYY-MM-DD'),
success: function(data) {
$('#cashflow').html(data);
}
});
});
});
</script>
@endpush