Warn about expensive code in test environment.

This commit is contained in:
James Cole
2019-06-22 10:25:57 +02:00
parent 0f70cc5780
commit 2710a30a7c
15 changed files with 328 additions and 127 deletions

View File

@@ -25,6 +25,7 @@ namespace FireflyIII\Support\Http\Controllers;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Bill;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
@@ -74,8 +75,8 @@ trait ModelInformation
* Get the destination account. Is complex.
*
* @param TransactionJournal $journal
* @param TransactionType $destinationType
* @param array $data
* @param TransactionType $destinationType
* @param array $data
*
* @return Account
*
@@ -115,9 +116,9 @@ trait ModelInformation
}
$data = [
'name' => $data['destination_account_expense'],
'account_type' => 'expense',
'account_type' => 'expense',
'account_type_id' => null,
'virtual_balance' => 0,
'virtual_balance' => 0,
'active' => true,
'iban' => null,
];
@@ -137,8 +138,8 @@ trait ModelInformation
* Get the source account.
*
* @param TransactionJournal $journal
* @param TransactionType $destinationType
* @param array $data
* @param TransactionType $destinationType
* @param array $data
*
* @return Account
*
@@ -171,8 +172,8 @@ trait ModelInformation
$data = [
'name' => $data['source_account_revenue'],
'account_type' => 'revenue',
'virtual_balance' => 0,
'account_type' => 'revenue',
'virtual_balance' => 0,
'active' => true,
'account_type_id' => null,
'iban' => null,
@@ -238,6 +239,43 @@ trait ModelInformation
return $result;
}
/**
* @codeCoverageIgnore
* @return array
*/
protected function getRoles(): array
{
$roles = [];
foreach (config('firefly.accountRoles') as $role) {
$roles[$role] = (string)trans(sprintf('firefly.account_role_%s', $role));
}
return $roles;
}
/**
* @codeCoverageIgnore
* @return array
*/
protected function getLiabilityTypes(): array
{
/** @var AccountRepositoryInterface $repository */
$repository = app(AccountRepositoryInterface::class);
// types of liability:
$debt = $repository->getAccountTypeByType(AccountType::DEBT);
$loan = $repository->getAccountTypeByType(AccountType::LOAN);
$mortgage = $repository->getAccountTypeByType(AccountType::MORTGAGE);
/** @noinspection NullPointerExceptionInspection */
$liabilityTypes = [
$debt->id => (string)trans(sprintf('firefly.account_type_%s', AccountType::DEBT)),
$loan->id => (string)trans(sprintf('firefly.account_type_%s', AccountType::LOAN)),
$mortgage->id => (string)trans(sprintf('firefly.account_type_%s', AccountType::MORTGAGE)),
];
asort($liabilityTypes);
return $liabilityTypes;
}
/**
* Is transaction opening balance?
*

View File

@@ -25,7 +25,6 @@ namespace FireflyIII\Support\Http\Controllers;
use Carbon\Carbon;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Collector\GroupSumCollectorInterface;
use FireflyIII\Models\Account;
use FireflyIII\Models\Category;
use FireflyIII\Models\Tag;
@@ -135,34 +134,6 @@ trait PeriodOverview
return $entries;
}
/**
* @param array $journals
*
* @return array
*/
private function groupByCurrency(array $journals): array
{
$return = [];
/** @var array $journal */
foreach ($journals as $journal) {
$currencyId = (int)$journal['currency_id'];
if (!isset($return[$currencyId])) {
$currency = new TransactionCurrency;
$currency->symbol = $journal['currency_symbol'];
$currency->decimal_places = $journal['currency_decimal_places'];
$currency->name = $journal['currency_name'];
$return[$currencyId] = [
'amount' => '0',
'currency' => $currency,
//'currency' => 'x',//$currency,
];
}
$return[$currencyId]['amount'] = bcadd($return[$currencyId]['amount'], $journal['amount']);
}
return $return;
}
/**
* Overview for single category. Has been refactored recently.
*
@@ -469,16 +440,11 @@ trait PeriodOverview
$entries = new Collection;
foreach ($dates as $currentDate) {
/** @var GroupSumCollectorInterface $sumCollector */
$sumCollector = app(GroupSumCollectorInterface::class);
$sumCollector->setTypes($types)->setRange($currentDate['start'], $currentDate['end']);
$amounts = $sumCollector->getSum();
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector->setTypes($types)->setRange($currentDate['start'], $currentDate['end']);
$amounts = $collector->getSum();
$journals = $collector->getExtractedJournals();
$amounts = $this->getJournalsSum($journals);
$spent = [];
$earned = [];
@@ -553,4 +519,80 @@ trait PeriodOverview
return $return;
}
/**
* @param array $journals
*
* @return array
*/
private function groupByCurrency(array $journals): array
{
$return = [];
/** @var array $journal */
foreach ($journals as $journal) {
$currencyId = (int)$journal['currency_id'];
if (!isset($return[$currencyId])) {
$currency = new TransactionCurrency;
$currency->symbol = $journal['currency_symbol'];
$currency->decimal_places = $journal['currency_decimal_places'];
$currency->name = $journal['currency_name'];
$return[$currencyId] = [
'amount' => '0',
'currency' => $currency,
//'currency' => 'x',//$currency,
];
}
$return[$currencyId]['amount'] = bcadd($return[$currencyId]['amount'], $journal['amount']);
}
return $return;
}
/**
* @param array $journals
* @return array
*/
private function getJournalsSum(array $journals): array
{
$return = [
'count' => 0,
'sums' => [],
];
if (0 === count($journals)) {
return $return;
}
foreach ($journals as $row) {
$return['count']++;
$currencyId = (int)$row['currency_id'];
if (!isset($return['sums'][$currencyId])) {
$return['sums'][$currencyId] = [
'sum' => '0',
'currency_id' => $currencyId,
'currency_code' => $row['currency_code'],
'currency_symbol' => $row['currency_symbol'],
'currency_name' => $row['currency_name'],
'currency_decimal_places' => (int)$row['currency_decimal_places'],
];
}
// add amounts:
$return['sums'][$currencyId]['sum'] = bcadd($return['sums'][$currencyId]['sum'], (string)$row['amount']);
// same but for foreign amounts:
if (null !== $row['foreign_currency_id'] && 0 !== $row['foreign_currency_id']) {
$foreignCurrencyId = (int)$row['foreign_currency_id'];
$return['sums'][$foreignCurrencyId] = [
'sum' => '0',
'currency_id' => $foreignCurrencyId,
'currency_code' => $row['foreign_currency_code'],
'currency_symbol' => $row['foreign_currency_symbol'],
'currency_name' => $row['foreign_currency_name'],
'currency_decimal_places' => (int)$row['foreign_currency_decimal_places'],
];
$return['sums'][$foreignCurrencyId]['sum'] = bcadd($return['sums'][$foreignCurrencyId]['sum'], (string)$row['foreign_amount']);
}
}
return $return;
}
}