mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-24 22:48:18 +00:00
chore: reformat code.
This commit is contained in:
@@ -91,6 +91,48 @@ class BudgetReportGenerator
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process each row of expenses collected for the "Account per budget" partial
|
||||
*
|
||||
* @param array $expenses
|
||||
*/
|
||||
private function processExpenses(array $expenses): void
|
||||
{
|
||||
foreach ($expenses['budgets'] as $budget) {
|
||||
$this->processBudgetExpenses($expenses, $budget);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process each set of transactions for each row of expenses.
|
||||
*
|
||||
* @param array $expenses
|
||||
* @param array $budget
|
||||
*/
|
||||
private function processBudgetExpenses(array $expenses, array $budget): void
|
||||
{
|
||||
$budgetId = (int)$budget['id'];
|
||||
$currencyId = (int)$expenses['currency_id'];
|
||||
foreach ($budget['transaction_journals'] as $journal) {
|
||||
$sourceAccountId = $journal['source_account_id'];
|
||||
|
||||
$this->report[$sourceAccountId]['currencies'][$currencyId]
|
||||
= $this->report[$sourceAccountId]['currencies'][$currencyId] ?? [
|
||||
'currency_id' => $expenses['currency_id'],
|
||||
'currency_symbol' => $expenses['currency_symbol'],
|
||||
'currency_name' => $expenses['currency_name'],
|
||||
'currency_decimal_places' => $expenses['currency_decimal_places'],
|
||||
'budgets' => [],
|
||||
];
|
||||
|
||||
$this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId]
|
||||
= $this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId] ?? '0';
|
||||
|
||||
$this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId]
|
||||
= bcadd($this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId], $journal['amount']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the data necessary to create the card that displays
|
||||
* the budget overview in the general report.
|
||||
@@ -107,60 +149,6 @@ class BudgetReportGenerator
|
||||
$this->percentageReport();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getReport(): array
|
||||
{
|
||||
return $this->report;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Collection $accounts
|
||||
*/
|
||||
public function setAccounts(Collection $accounts): void
|
||||
{
|
||||
$this->accounts = $accounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Collection $budgets
|
||||
*/
|
||||
public function setBudgets(Collection $budgets): void
|
||||
{
|
||||
$this->budgets = $budgets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $end
|
||||
*/
|
||||
public function setEnd(Carbon $end): void
|
||||
{
|
||||
$this->end = $end;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $start
|
||||
*/
|
||||
public function setStart(Carbon $start): void
|
||||
{
|
||||
$this->start = $start;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
* @throws FireflyException
|
||||
* @throws JsonException
|
||||
*/
|
||||
public function setUser(User $user): void
|
||||
{
|
||||
$this->repository->setUser($user);
|
||||
$this->blRepository->setUser($user);
|
||||
$this->opsRepository->setUser($user);
|
||||
$this->nbRepository->setUser($user);
|
||||
$this->currency = app('amount')->getDefaultCurrencyByUser($user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the budgets block on the default report by processing every budget.
|
||||
*/
|
||||
@@ -173,6 +161,82 @@ class BudgetReportGenerator
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process expenses etc. for a single budget for the budgets block on the default report.
|
||||
*
|
||||
* @param Budget $budget
|
||||
*/
|
||||
private function processBudget(Budget $budget): void
|
||||
{
|
||||
$budgetId = (int)$budget->id;
|
||||
$this->report['budgets'][$budgetId] = $this->report['budgets'][$budgetId] ?? [
|
||||
'budget_id' => $budgetId,
|
||||
'budget_name' => $budget->name,
|
||||
'no_budget' => false,
|
||||
'budget_limits' => [],
|
||||
];
|
||||
|
||||
// get all budget limits for budget in period:
|
||||
$limits = $this->blRepository->getBudgetLimits($budget, $this->start, $this->end);
|
||||
/** @var BudgetLimit $limit */
|
||||
foreach ($limits as $limit) {
|
||||
$this->processLimit($budget, $limit);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a single budget limit for the budgets block on the default report.
|
||||
*
|
||||
* @param Budget $budget
|
||||
* @param BudgetLimit $limit
|
||||
*/
|
||||
private function processLimit(Budget $budget, BudgetLimit $limit): void
|
||||
{
|
||||
$budgetId = (int)$budget->id;
|
||||
$limitId = (int)$limit->id;
|
||||
$limitCurrency = $limit->transactionCurrency ?? $this->currency;
|
||||
$currencyId = (int)$limitCurrency->id;
|
||||
$expenses = $this->opsRepository->sumExpenses($limit->start_date, $limit->end_date, $this->accounts, new Collection([$budget]));
|
||||
$spent = $expenses[$currencyId]['sum'] ?? '0';
|
||||
$left = -1 === bccomp(bcadd($limit->amount, $spent), '0') ? '0' : bcadd($limit->amount, $spent);
|
||||
$overspent = 1 === bccomp(bcmul($spent, '-1'), $limit->amount) ? bcadd($spent, $limit->amount) : '0';
|
||||
|
||||
$this->report['budgets'][$budgetId]['budget_limits'][$limitId] = $this->report['budgets'][$budgetId]['budget_limits'][$limitId] ?? [
|
||||
'budget_limit_id' => $limitId,
|
||||
'start_date' => $limit->start_date,
|
||||
'end_date' => $limit->end_date,
|
||||
'budgeted' => $limit->amount,
|
||||
'budgeted_pct' => '0',
|
||||
'spent' => $spent,
|
||||
'spent_pct' => '0',
|
||||
'left' => $left,
|
||||
'overspent' => $overspent,
|
||||
'currency_id' => $currencyId,
|
||||
'currency_code' => $limitCurrency->code,
|
||||
'currency_name' => $limitCurrency->name,
|
||||
'currency_symbol' => $limitCurrency->symbol,
|
||||
'currency_decimal_places' => $limitCurrency->decimal_places,
|
||||
];
|
||||
|
||||
// make sum information:
|
||||
$this->report['sums'][$currencyId]
|
||||
= $this->report['sums'][$currencyId] ?? [
|
||||
'budgeted' => '0',
|
||||
'spent' => '0',
|
||||
'left' => '0',
|
||||
'overspent' => '0',
|
||||
'currency_id' => $currencyId,
|
||||
'currency_code' => $limitCurrency->code,
|
||||
'currency_name' => $limitCurrency->name,
|
||||
'currency_symbol' => $limitCurrency->symbol,
|
||||
'currency_decimal_places' => $limitCurrency->decimal_places,
|
||||
];
|
||||
$this->report['sums'][$currencyId]['budgeted'] = bcadd($this->report['sums'][$currencyId]['budgeted'], $limit->amount);
|
||||
$this->report['sums'][$currencyId]['spent'] = bcadd($this->report['sums'][$currencyId]['spent'], $spent);
|
||||
$this->report['sums'][$currencyId]['left'] = bcadd($this->report['sums'][$currencyId]['left'], bcadd($limit->amount, $spent));
|
||||
$this->report['sums'][$currencyId]['overspent'] = bcadd($this->report['sums'][$currencyId]['overspent'], $overspent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the expenses for transactions without a budget. Part of the "budgets" block of the default report.
|
||||
*/
|
||||
@@ -258,120 +322,56 @@ class BudgetReportGenerator
|
||||
}
|
||||
|
||||
/**
|
||||
* Process expenses etc. for a single budget for the budgets block on the default report.
|
||||
*
|
||||
* @param Budget $budget
|
||||
* @return array
|
||||
*/
|
||||
private function processBudget(Budget $budget): void
|
||||
public function getReport(): array
|
||||
{
|
||||
$budgetId = (int)$budget->id;
|
||||
$this->report['budgets'][$budgetId] = $this->report['budgets'][$budgetId] ?? [
|
||||
'budget_id' => $budgetId,
|
||||
'budget_name' => $budget->name,
|
||||
'no_budget' => false,
|
||||
'budget_limits' => [],
|
||||
];
|
||||
|
||||
// get all budget limits for budget in period:
|
||||
$limits = $this->blRepository->getBudgetLimits($budget, $this->start, $this->end);
|
||||
/** @var BudgetLimit $limit */
|
||||
foreach ($limits as $limit) {
|
||||
$this->processLimit($budget, $limit);
|
||||
}
|
||||
return $this->report;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process each set of transactions for each row of expenses.
|
||||
*
|
||||
* @param array $expenses
|
||||
* @param array $budget
|
||||
* @param Collection $accounts
|
||||
*/
|
||||
private function processBudgetExpenses(array $expenses, array $budget): void
|
||||
public function setAccounts(Collection $accounts): void
|
||||
{
|
||||
$budgetId = (int)$budget['id'];
|
||||
$currencyId = (int)$expenses['currency_id'];
|
||||
foreach ($budget['transaction_journals'] as $journal) {
|
||||
$sourceAccountId = $journal['source_account_id'];
|
||||
|
||||
$this->report[$sourceAccountId]['currencies'][$currencyId]
|
||||
= $this->report[$sourceAccountId]['currencies'][$currencyId] ?? [
|
||||
'currency_id' => $expenses['currency_id'],
|
||||
'currency_symbol' => $expenses['currency_symbol'],
|
||||
'currency_name' => $expenses['currency_name'],
|
||||
'currency_decimal_places' => $expenses['currency_decimal_places'],
|
||||
'budgets' => [],
|
||||
];
|
||||
|
||||
$this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId]
|
||||
= $this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId] ?? '0';
|
||||
|
||||
$this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId]
|
||||
= bcadd($this->report[$sourceAccountId]['currencies'][$currencyId]['budgets'][$budgetId], $journal['amount']);
|
||||
}
|
||||
$this->accounts = $accounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process each row of expenses collected for the "Account per budget" partial
|
||||
*
|
||||
* @param array $expenses
|
||||
* @param Collection $budgets
|
||||
*/
|
||||
private function processExpenses(array $expenses): void
|
||||
public function setBudgets(Collection $budgets): void
|
||||
{
|
||||
foreach ($expenses['budgets'] as $budget) {
|
||||
$this->processBudgetExpenses($expenses, $budget);
|
||||
}
|
||||
$this->budgets = $budgets;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a single budget limit for the budgets block on the default report.
|
||||
*
|
||||
* @param Budget $budget
|
||||
* @param BudgetLimit $limit
|
||||
* @param Carbon $end
|
||||
*/
|
||||
private function processLimit(Budget $budget, BudgetLimit $limit): void
|
||||
public function setEnd(Carbon $end): void
|
||||
{
|
||||
$budgetId = (int)$budget->id;
|
||||
$limitId = (int)$limit->id;
|
||||
$limitCurrency = $limit->transactionCurrency ?? $this->currency;
|
||||
$currencyId = (int)$limitCurrency->id;
|
||||
$expenses = $this->opsRepository->sumExpenses($limit->start_date, $limit->end_date, $this->accounts, new Collection([$budget]));
|
||||
$spent = $expenses[$currencyId]['sum'] ?? '0';
|
||||
$left = -1 === bccomp(bcadd($limit->amount, $spent), '0') ? '0' : bcadd($limit->amount, $spent);
|
||||
$overspent = 1 === bccomp(bcmul($spent, '-1'), $limit->amount) ? bcadd($spent, $limit->amount) : '0';
|
||||
$this->end = $end;
|
||||
}
|
||||
|
||||
$this->report['budgets'][$budgetId]['budget_limits'][$limitId] = $this->report['budgets'][$budgetId]['budget_limits'][$limitId] ?? [
|
||||
'budget_limit_id' => $limitId,
|
||||
'start_date' => $limit->start_date,
|
||||
'end_date' => $limit->end_date,
|
||||
'budgeted' => $limit->amount,
|
||||
'budgeted_pct' => '0',
|
||||
'spent' => $spent,
|
||||
'spent_pct' => '0',
|
||||
'left' => $left,
|
||||
'overspent' => $overspent,
|
||||
'currency_id' => $currencyId,
|
||||
'currency_code' => $limitCurrency->code,
|
||||
'currency_name' => $limitCurrency->name,
|
||||
'currency_symbol' => $limitCurrency->symbol,
|
||||
'currency_decimal_places' => $limitCurrency->decimal_places,
|
||||
];
|
||||
/**
|
||||
* @param Carbon $start
|
||||
*/
|
||||
public function setStart(Carbon $start): void
|
||||
{
|
||||
$this->start = $start;
|
||||
}
|
||||
|
||||
// make sum information:
|
||||
$this->report['sums'][$currencyId]
|
||||
= $this->report['sums'][$currencyId] ?? [
|
||||
'budgeted' => '0',
|
||||
'spent' => '0',
|
||||
'left' => '0',
|
||||
'overspent' => '0',
|
||||
'currency_id' => $currencyId,
|
||||
'currency_code' => $limitCurrency->code,
|
||||
'currency_name' => $limitCurrency->name,
|
||||
'currency_symbol' => $limitCurrency->symbol,
|
||||
'currency_decimal_places' => $limitCurrency->decimal_places,
|
||||
];
|
||||
$this->report['sums'][$currencyId]['budgeted'] = bcadd($this->report['sums'][$currencyId]['budgeted'], $limit->amount);
|
||||
$this->report['sums'][$currencyId]['spent'] = bcadd($this->report['sums'][$currencyId]['spent'], $spent);
|
||||
$this->report['sums'][$currencyId]['left'] = bcadd($this->report['sums'][$currencyId]['left'], bcadd($limit->amount, $spent));
|
||||
$this->report['sums'][$currencyId]['overspent'] = bcadd($this->report['sums'][$currencyId]['overspent'], $overspent);
|
||||
/**
|
||||
* @param User $user
|
||||
* @throws FireflyException
|
||||
* @throws JsonException
|
||||
*/
|
||||
public function setUser(User $user): void
|
||||
{
|
||||
$this->repository->setUser($user);
|
||||
$this->blRepository->setUser($user);
|
||||
$this->opsRepository->setUser($user);
|
||||
$this->nbRepository->setUser($user);
|
||||
$this->currency = app('amount')->getDefaultCurrencyByUser($user);
|
||||
}
|
||||
}
|
||||
|
@@ -86,43 +86,52 @@ class CategoryReportGenerator
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Collection $accounts
|
||||
* Process one of the spent arrays from the operations method.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public function setAccounts(Collection $accounts): void
|
||||
private function processOpsArray(array $data): void
|
||||
{
|
||||
$this->accounts = $accounts;
|
||||
/**
|
||||
* @var int $currencyId
|
||||
* @var array $currencyRow
|
||||
*/
|
||||
foreach ($data as $currencyId => $currencyRow) {
|
||||
$this->processCurrencyArray($currencyId, $currencyRow);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $end
|
||||
* @param int $currencyId
|
||||
* @param array $currencyRow
|
||||
*/
|
||||
public function setEnd(Carbon $end): void
|
||||
private function processCurrencyArray(int $currencyId, array $currencyRow): void
|
||||
{
|
||||
$this->end = $end;
|
||||
$this->report['sums'][$currencyId] = $this->report['sums'][$currencyId] ?? [
|
||||
'spent' => '0',
|
||||
'earned' => '0',
|
||||
'sum' => '0',
|
||||
'currency_id' => $currencyRow['currency_id'],
|
||||
'currency_symbol' => $currencyRow['currency_symbol'],
|
||||
'currency_name' => $currencyRow['currency_name'],
|
||||
'currency_code' => $currencyRow['currency_code'],
|
||||
'currency_decimal_places' => $currencyRow['currency_decimal_places'],
|
||||
];
|
||||
|
||||
/**
|
||||
* @var int $categoryId
|
||||
* @var array $categoryRow
|
||||
*/
|
||||
foreach ($currencyRow['categories'] as $categoryId => $categoryRow) {
|
||||
$this->processCategoryRow($currencyId, $currencyRow, $categoryId, $categoryRow);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $start
|
||||
*/
|
||||
public function setStart(Carbon $start): void
|
||||
{
|
||||
$this->start = $start;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
*/
|
||||
public function setUser(User $user): void
|
||||
{
|
||||
$this->noCatRepository->setUser($user);
|
||||
$this->opsRepository->setUser($user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $currencyId
|
||||
* @param array $currencyRow
|
||||
* @param int $categoryId
|
||||
* @param array $categoryRow
|
||||
* @param int $currencyId
|
||||
* @param array $currencyRow
|
||||
* @param int $categoryId
|
||||
* @param array $categoryRow
|
||||
*/
|
||||
private function processCategoryRow(int $currencyId, array $currencyRow, int $categoryId, array $categoryRow): void
|
||||
{
|
||||
@@ -170,44 +179,35 @@ class CategoryReportGenerator
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $currencyId
|
||||
* @param array $currencyRow
|
||||
* @param Collection $accounts
|
||||
*/
|
||||
private function processCurrencyArray(int $currencyId, array $currencyRow): void
|
||||
public function setAccounts(Collection $accounts): void
|
||||
{
|
||||
$this->report['sums'][$currencyId] = $this->report['sums'][$currencyId] ?? [
|
||||
'spent' => '0',
|
||||
'earned' => '0',
|
||||
'sum' => '0',
|
||||
'currency_id' => $currencyRow['currency_id'],
|
||||
'currency_symbol' => $currencyRow['currency_symbol'],
|
||||
'currency_name' => $currencyRow['currency_name'],
|
||||
'currency_code' => $currencyRow['currency_code'],
|
||||
'currency_decimal_places' => $currencyRow['currency_decimal_places'],
|
||||
];
|
||||
|
||||
/**
|
||||
* @var int $categoryId
|
||||
* @var array $categoryRow
|
||||
*/
|
||||
foreach ($currencyRow['categories'] as $categoryId => $categoryRow) {
|
||||
$this->processCategoryRow($currencyId, $currencyRow, $categoryId, $categoryRow);
|
||||
}
|
||||
$this->accounts = $accounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process one of the spent arrays from the operations method.
|
||||
*
|
||||
* @param array $data
|
||||
* @param Carbon $end
|
||||
*/
|
||||
private function processOpsArray(array $data): void
|
||||
public function setEnd(Carbon $end): void
|
||||
{
|
||||
/**
|
||||
* @var int $currencyId
|
||||
* @var array $currencyRow
|
||||
*/
|
||||
foreach ($data as $currencyId => $currencyRow) {
|
||||
$this->processCurrencyArray($currencyId, $currencyRow);
|
||||
}
|
||||
$this->end = $end;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Carbon $start
|
||||
*/
|
||||
public function setStart(Carbon $start): void
|
||||
{
|
||||
$this->start = $start;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
*/
|
||||
public function setUser(User $user): void
|
||||
{
|
||||
$this->noCatRepository->setUser($user);
|
||||
$this->opsRepository->setUser($user);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user