Added print versions of the reports.

This commit is contained in:
Lukas Halbritter
2019-06-28 16:02:48 +02:00
parent 474e44ca0c
commit a6ec45f685
6 changed files with 223 additions and 2 deletions
@@ -186,6 +186,78 @@ class ReportsController extends Controller
abort(404);
}
}
public function printScopes($type, $year)
{
if ($type == 'compact') {
$yearFilter = function($query) use ($year) {
$query->whereHas('booking', function($query) use ($year) {
$query->whereYear('date', $year);
});
};
$scopes = Scope::select('id', 'name')
->with([
'accountClasses:id,io_type_id,scope_id,name',
'accountClasses.ioType:id,factor',
'accountClasses.accountTypes' => function($query) use ($year, $yearFilter) {
return $query->select('id', 'account_class_id', 'name', 'number')
->whereHas('subBookings', $yearFilter)
->with(['subBookings' => $yearFilter]);
}
])->get();
foreach ($scopes as $scope) {
foreach ($scope->accountClasses as $accountClass) {
$accountClass->amount =
$accountClass->accountTypes->sum(function ($accountType) {
return $accountType->subBookings->sum('amount');
});
}
$scope->balance = $scope->accountClasses->sum(function ($accountClass) {
return $accountClass->amount * $accountClass->ioType->factor;
});
}
$startBalance = SubBooking::balanceAt(lastDayOfYear($year - 1));
$endBalance = $startBalance + $scopes->sum('balance');
return view('reports.scopes.compact_print', compact('scopes', 'year',
'startBalance', 'endBalance'));
} elseif ($type == 'detailed') {
$yearFilter = function($query) use ($year) {
$query->whereHas('booking', function($query) use ($year) {
$query->whereYear('date', $year);
});
};
$scopes = Scope::select('id', 'name')
->with([
'accountClasses:id,io_type_id,scope_id,name',
'accountClasses.ioType:id,factor',
'accountClasses.accountTypes' => function($query) use ($year, $yearFilter) {
return $query->select('id', 'account_class_id', 'name', 'number')
->whereHas('subBookings', $yearFilter)
->with(['subBookings' => $yearFilter,
'subBookings.booking:id,person_or_company,date']);
}
])->get();
foreach ($scopes as $scope) {
foreach ($scope->accountClasses as $accountClass) {
$accountClass->amount =
$accountClass->accountTypes->sum(function ($accountType) {
return $accountType->subBookings->sum('amount');
});
}
}
return view('reports.scopes.detailed_print', compact('scopes', 'year'));
} else {
abort(404);
}
}
/**
* Display a list of all open targets.