Browse Source

Update monthly report page

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
13322382ca
  1. 15
      app/Entities/Reports/ReportsRepository.php
  2. 18
      app/helpers.php
  3. 2
      resources/views/layouts/partials/sidebar.blade.php
  4. 69
      resources/views/reports/payments/monthly.blade.php

15
app/Entities/Reports/ReportsRepository.php

@ -31,12 +31,25 @@ class ReportsRepository extends BaseRepository
public function getMonthlyReports($year, $month) public function getMonthlyReports($year, $month)
{ {
return Payment::select(DB::raw("date, count(`id`) as count, sum(if(in_out = 1, amount, 0)) AS cashin, sum(if(in_out = 0, amount, 0)) AS cashout, in_out"))
$rawQuery = "date, count(`id`) as count";
$rawQuery .= ", sum(if(in_out = 1, amount, 0)) AS cashin";
$rawQuery .= ", sum(if(in_out = 0, amount, 0)) AS cashout";
$reportsData = DB::table('payments')->select(DB::raw($rawQuery))
->where(DB::raw('YEAR(date)'), $year) ->where(DB::raw('YEAR(date)'), $year)
->where(DB::raw('MONTH(date)'), $month) ->where(DB::raw('MONTH(date)'), $month)
->groupBy('date') ->groupBy('date')
->orderBy('date', 'asc') ->orderBy('date', 'asc')
->get(); ->get();
$reports = [];
foreach ($reportsData as $report) {
$key = substr($report->date, -2);
$reports[$key] = $report;
$reports[$key]->profit = $report->cashin - $report->cashout;
}
return collect($reports);
} }
public function getYearlyReports($year) public function getYearlyReports($year)

18
app/helpers.php

@ -237,6 +237,22 @@ function paymentTypes($paymentTypeId = null)
function appLogoImage() function appLogoImage()
{ {
$logoString = '<img style="display: block;text-align: center;margin: 0 auto;width: 100%;max-width: 200px"'; $logoString = '<img style="display: block;text-align: center;margin: 0 auto;width: 100%;max-width: 200px"';
$logoString .= 'src="'.asset('assets/imgs/'.Option::get('agency_logo_path', 'default-logo.png')).'">';
$logoString .= 'src="'.appLogoPath().'">';
return $logoString; return $logoString;
} }
function appLogoPath()
{
return asset('assets/imgs/'.Option::get('agency_logo_path', 'default-logo.png'));
}
function monthDateArray($year, $month)
{
$dateCount = Carbon::parse($year.'-'.$month)->format('t');
$dates = [];
foreach (range(1, $dateCount) as $dateNumber) {
$dates[] = str_pad($dateNumber, 2, '0', STR_PAD_LEFT);
}
return $dates;
}

2
resources/views/layouts/partials/sidebar.blade.php

@ -10,7 +10,7 @@
<div class="navbar-default sidebar hidden-print" role="navigation"> <div class="navbar-default sidebar hidden-print" role="navigation">
<div class="sidebar-nav navbar-collapse"> <div class="sidebar-nav navbar-collapse">
<a class="navbar-brand text-center" title="Home | {{ Option::get('agency_tagline', 'Laravel app description') }}" href="{{ route('home') }}"> <a class="navbar-brand text-center" title="Home | {{ Option::get('agency_tagline', 'Laravel app description') }}" href="{{ route('home') }}">
{!! Html::image(asset('assets/imgs/'.Option::get('agency_logo_path', 'default-logo.png')), 'Logo '.Option::get('agency_name','Laravel'), ['class' => 'sidebar-logo']) !!}
{!! Html::image(appLogoPath(), 'Logo '.Option::get('agency_name','Laravel'), ['class' => 'sidebar-logo']) !!}
<div class="small" style="margin-top:10px">{{ Option::get('app_name','Laravel') }}</div> <div class="small" style="margin-top:10px">{{ Option::get('app_name','Laravel') }}</div>
</a> </a>
<ul class="nav" id="side-menu"> <ul class="nav" id="side-menu">

69
resources/views/reports/payments/monthly.blade.php

@ -8,16 +8,13 @@
<li class="active">{{ $months[$month] }}</li> <li class="active">{{ $months[$month] }}</li>
</ul> </ul>
<h1 class="page-header">
Laporan Bulanan : {{ $months[$month] }} {{ $year }}
</h1>
{!! Form::open(['method' => 'get', 'class' => 'form-inline well well-sm']) !!} {!! Form::open(['method' => 'get', 'class' => 'form-inline well well-sm']) !!}
{!! Form::label('month', 'Laporan Bulanan', ['class' => 'control-label']) !!}
{!! Form::select('month', $months, $month, ['class' => 'form-control']) !!} {!! Form::select('month', $months, $month, ['class' => 'form-control']) !!}
{!! Form::select('year', $years, $year, ['class' => 'form-control']) !!} {!! Form::select('year', $years, $year, ['class' => 'form-control']) !!}
{!! Form::submit('Lihat Laporan', ['class'=>'btn btn-info']) !!}
{!! link_to_route('reports.payments.monthly','Bulan ini',[],['class'=>'btn btn-default']) !!}
{!! link_to_route('reports.payments.yearly','Lihat Tahunan',['year' => $year],['class'=>'btn btn-default']) !!}
{!! Form::submit('Lihat Laporan', ['class' => 'btn btn-info btn-sm']) !!}
{!! link_to_route('reports.payments.monthly', 'Bulan ini', [], ['class' => 'btn btn-default btn-sm']) !!}
{!! link_to_route('reports.payments.yearly', 'Lihat Tahunan', ['year' => $year], ['class' => 'btn btn-default btn-sm']) !!}
{!! Form::close() !!} {!! Form::close() !!}
<div class="panel panel-primary"> <div class="panel panel-primary">
@ -25,7 +22,7 @@
<div class="panel-body"> <div class="panel-body">
<strong>Rp.</strong> <strong>Rp.</strong>
<div id="monthly-chart" style="height: 250px;"></div> <div id="monthly-chart" style="height: 250px;"></div>
<div class="text-center"><strong>Tanggal</strong></div>
<div class="text-center"><strong>{{ trans('app.date') }}</strong></div>
</div> </div>
</div> </div>
<div class="panel panel-success"> <div class="panel panel-success">
@ -33,7 +30,7 @@
<div class="panel-body"> <div class="panel-body">
<table class="table table-condensed"> <table class="table table-condensed">
<thead> <thead>
<th class="text-center">Tanggal</th>
<th class="text-center">{{ trans('app.date') }}</th>
<th class="text-center">Jumlah Transfer</th> <th class="text-center">Jumlah Transfer</th>
<th class="text-right">Uang Masuk</th> <th class="text-right">Uang Masuk</th>
<th class="text-right">Uang Keluar</th> <th class="text-right">Uang Keluar</th>
@ -48,35 +45,44 @@
$sumProfit = 0; $sumProfit = 0;
$cartData = []; $cartData = [];
?> ?>
@forelse($reports as $key => $report)
@foreach(monthDateArray($year, $month) as $dateNumber)
<?php
$any = isset($reports[$dateNumber]);
$count = $any ? $reports[$dateNumber]->count : 0;
$cashin = $any ? $reports[$dateNumber]->cashin : 0;
$cashout = $any ? $reports[$dateNumber]->cashout : 0;
$profit = $any ? $reports[$dateNumber]->profit : 0;
?>
<tr> <tr>
<td class="text-center">{{ dateId($report->date) }}</td>
<td class="text-center">{{ $report->count }}</td>
<td class="text-right">{{ formatRp($report->cashin) }}</td>
<td class="text-right">{{ formatRp($report->cashout) }}</td>
<td class="text-right">{{ formatRp(($report->cashin - $report->cashout)) }}</td>
<td class="text-center">{{ dateId($date = $year . '-' . $month . '-' . $dateNumber) }}</td>
<td class="text-center">{{ $count }}</td>
<td class="text-right">{{ formatRp($cashin) }}</td>
<td class="text-right">{{ formatRp($cashout) }}</td>
<td class="text-right">{{ formatRp($profit) }}</td>
<td class="text-center"> <td class="text-center">
{!! link_to_route('reports.payments.daily','Lihat Harian',['date' => $report->date] , ['class'=>'btn btn-info btn-xs','title'=>'Lihat laporan harian ' . $report->date]) !!}
{!! link_to_route(
'reports.payments.daily',
'Lihat Harian',
['date' => $date],
[
'class' => 'btn btn-info btn-xs',
'title' => 'Lihat laporan harian ' . $date
]
) !!}
</td> </td>
</tr> </tr>
<?php <?php
$invoicesCount += $report->count;
$sumTotal += $report->cashin;
$sumCapital += $report->cashout;
$sumProfit += ($report->cashin - $report->cashout);
$cartData[] = ['date'=>dateId($report->date),'value'=>($report->cashin - $report->cashout)];
$cartData[] = ['date' => $dateNumber, 'value' => ($profit)];
?> ?>
@empty
<tr><td colspan="6">{{ trans('payment.not_found') }}</td></tr>
@endforelse
@endforeach
</tbody> </tbody>
<tfoot> <tfoot>
<tr> <tr>
<th class="text-right">Jumlah</th> <th class="text-right">Jumlah</th>
<th class="text-center">{{ $invoicesCount }}</th>
<th class="text-right">{{ formatRp($sumTotal) }}</th>
<th class="text-right">{{ formatRp($sumCapital) }}</th>
<th class="text-right">{{ formatRp($sumProfit) }}</th>
<th class="text-center">{{ $reports->sum('count') }}</th>
<th class="text-right">{{ formatRp($reports->sum('cashin')) }}</th>
<th class="text-right">{{ formatRp($reports->sum('cashout')) }}</th>
<th class="text-right">{{ formatRp($reports->sum('profit')) }}</th>
<td></td> <td></td>
</tr> </tr>
</tfoot> </tfoot>
@ -99,11 +105,12 @@
(function() { (function() {
new Morris.Line({ new Morris.Line({
element: 'monthly-chart', element: 'monthly-chart',
data: {!! json_encode($cartData) !!},
data: {!! collect($cartData)->toJson() !!},
xkey: 'date', xkey: 'date',
ykeys: ['value'], ykeys: ['value'],
labels: ['Profit'],
parseTime:false
labels: ['Profit Rp'],
parseTime:false,
xLabelAngle: 30,
}); });
})(); })();
</script> </script>

Loading…
Cancel
Save