Implemented balances report.
This commit is contained in:
@@ -51,7 +51,62 @@ class ReportsController extends Controller
|
||||
*/
|
||||
public function balances($year)
|
||||
{
|
||||
//
|
||||
# Load monthly incomes, expeditures and the start account balance from
|
||||
# the database.
|
||||
$incomes = SubBooking::incomesInInterval(firstDayOfYear($year),
|
||||
lastDayOfYear($year), true)->sortBy('month');
|
||||
$expeditures = SubBooking::expedituresInInterval(firstDayOfYear($year),
|
||||
lastDayOfYear($year), true)->sortBy('month');
|
||||
$startBalance = SubBooking::balanceAt(lastDayOfYear($year - 1));
|
||||
|
||||
# If the data contains future months remove the data of all incomplete
|
||||
# months.
|
||||
if (date('Y') <= $year) {
|
||||
foreach ([$incomes, $expeditures] as $cashflows) {
|
||||
foreach ($cashflows as $key => $cashflow) {
|
||||
if ($cashflow->month >= date('n')) {
|
||||
$cashflows->forget($key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Create a collection of balances, every entry holds information about
|
||||
# one month.
|
||||
$balances = collect();
|
||||
|
||||
for ($i = 0; $i < count($incomes); $i++) {
|
||||
$balance = collect();
|
||||
|
||||
$balance->incomes = $incomes[$i]->incomes;
|
||||
$balance->expeditures = $expeditures[$i]->expeditures;
|
||||
$balance->monthBalance = $incomes[$i]->incomes
|
||||
+ $expeditures[$i]->expeditures;
|
||||
|
||||
# Set date separately if the next month is in the new year.
|
||||
if ($incomes[$i]->month == 12) {
|
||||
$balance->date = firstDayOfYear($incomes[$i]->year + 1);
|
||||
} else {
|
||||
$balance->date = startOfMonth($incomes[$i]->year,
|
||||
$incomes[$i]->month + 1);
|
||||
}
|
||||
|
||||
# Set the balance of the first month separately since the value
|
||||
# depends on the startBalance value and not on a value already
|
||||
# existing in the balances collection.
|
||||
if ($incomes[$i]->month == 1) {
|
||||
$balance->accountBalance = $startBalance
|
||||
+ $balance->monthBalance;
|
||||
} else {
|
||||
$balance->accountBalance = $balances[$i - 1]->accountBalance
|
||||
+ $balance->monthBalance;
|
||||
}
|
||||
|
||||
# Add complete balance to the balances collection
|
||||
$balances->push($balance);
|
||||
}
|
||||
|
||||
return view('reports.balances', compact('year', 'balances', 'startBalance'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -213,7 +213,7 @@ class SubBooking extends Model
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
return $result->sortBy('month')->sortBy('year')->values();
|
||||
}
|
||||
|
||||
return $result->get();
|
||||
|
||||
Reference in New Issue
Block a user