mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	Add debug logging to finalAccountBalance.
This commit is contained in:
		| @@ -34,6 +34,7 @@ use FireflyIII\Support\Facades\Steam; | ||||
| use FireflyIII\Support\Http\Api\AccountFilter; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| 
 | ||||
| /** | ||||
|  * Class AccountController | ||||
| @@ -83,8 +84,8 @@ class AccountController extends Controller | ||||
|         $return = []; | ||||
|         $result = $this->repository->searchAccount((string) $query, $types, $this->parameters->get('limit')); | ||||
| 
 | ||||
|         // set date to end-of-day for account balance.
 | ||||
|         $date->endOfDay(); | ||||
|         // set date to subday + end-of-day for account balance. so it is at $date 23:59:59
 | ||||
|         $date->subDay()->endOfDay(); | ||||
| 
 | ||||
|         /** @var Account $account */ | ||||
|         foreach ($result as $account) { | ||||
| @@ -92,6 +93,7 @@ class AccountController extends Controller | ||||
|             $currency        = $this->repository->getAccountCurrency($account) ?? $this->nativeCurrency; | ||||
|             $useCurrency     = $currency; | ||||
|             if (in_array($account->accountType->type, $this->balanceTypes, true)) { | ||||
|                 Log::debug(sprintf('accounts: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|                 $balance         = Steam::finalAccountBalance($account, $date); | ||||
|                 $key             = $this->convertToNative && $currency->id !== $this->nativeCurrency->id ? 'native_balance' : 'balance'; | ||||
|                 $useCurrency     = $this->convertToNative && $currency->id !== $this->nativeCurrency->id ? $this->nativeCurrency : $currency; | ||||
|   | ||||
| @@ -33,6 +33,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; | ||||
| use FireflyIII\Repositories\Journal\JournalRepositoryInterface; | ||||
| use FireflyIII\Support\Facades\Steam; | ||||
| use Illuminate\Support\Collection; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| 
 | ||||
| /** | ||||
|  * Class MonthReportGenerator. | ||||
| @@ -52,10 +53,9 @@ class MonthReportGenerator implements ReportGeneratorInterface | ||||
|     { | ||||
|         $auditData   = []; | ||||
|         $dayBefore   = clone $this->start; | ||||
|         $dayBefore->subDay(); | ||||
| 
 | ||||
|         // move to end of day
 | ||||
|         $dayBefore->endOfDay(); | ||||
|         // set date to subday + end-of-day for account balance. so it is at $date 23:59:59
 | ||||
|         $dayBefore->subDay()->endOfDay(); | ||||
| 
 | ||||
|         /** @var Account $account */ | ||||
|         foreach ($this->accounts as $account) { | ||||
| @@ -136,6 +136,7 @@ class MonthReportGenerator implements ReportGeneratorInterface | ||||
|         ; | ||||
|         $journals          = $collector->getExtractedJournals(); | ||||
|         $journals          = array_reverse($journals, true); | ||||
|         Log::debug(sprintf('getAuditReport: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|         $dayBeforeBalance  = Steam::finalAccountBalance($account, $date); | ||||
|         $startBalance      = $dayBeforeBalance['balance']; | ||||
|         $defaultCurrency   = app('amount')->getNativeCurrencyByUserGroup($account->user->userGroup); | ||||
| @@ -170,7 +171,7 @@ class MonthReportGenerator implements ReportGeneratorInterface | ||||
|             $journals[$index]['invoice_date']   = $journalRepository->getMetaDateById($journal['transaction_journal_id'], 'invoice_date'); | ||||
|         } | ||||
|         $locale            = app('steam')->getLocale(); | ||||
| 
 | ||||
|         Log::debug(sprintf('getAuditReport end: Call finalAccountBalance with date/time "%s"', $this->end->toIso8601String())); | ||||
|         return [ | ||||
|             'journals'         => $journals, | ||||
|             'currency'         => $currency, | ||||
|   | ||||
| @@ -258,7 +258,12 @@ trait AccountCollection | ||||
|                 if (null === $account) { | ||||
|                     continue; | ||||
|                 } | ||||
|                 $balance   = Steam::finalAccountBalance($account, $transaction['date']); | ||||
|                 // the balance must be found BEFORE the transaction date.
 | ||||
|                 // so sub one second. This is not perfect, but works well enough.
 | ||||
|                 $date = clone $transaction['date']; | ||||
|                 $date->subSecond(); | ||||
|                 Log::debug(sprintf('accountBalanceIs: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|                 $balance   = Steam::finalAccountBalance($account, $date); | ||||
|                 $result    = bccomp($balance['balance'], $value); | ||||
|                 Log::debug(sprintf('"%s" vs "%s" is %d', $balance['balance'], $value, $result)); | ||||
| 
 | ||||
|   | ||||
| @@ -39,6 +39,7 @@ use FireflyIII\User; | ||||
| use Illuminate\Contracts\View\Factory; | ||||
| use Illuminate\Http\RedirectResponse; | ||||
| use Illuminate\Routing\Redirector; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use Illuminate\View\View; | ||||
| 
 | ||||
| /** | ||||
| @@ -113,7 +114,9 @@ class ReconcileController extends Controller | ||||
|         $end->endOfDay(); | ||||
| 
 | ||||
|         $startDate       = clone $start; | ||||
|         $startDate->subDay()->endOfDay(); | ||||
|         $startDate->subDay()->endOfDay(); // this is correct, subday endofday ends at 23:59:59
 | ||||
|         Log::debug(sprintf('reconcile: Call finalAccountBalance with date/time "%s"', $startDate->toIso8601String())); | ||||
|         Log::debug(sprintf('reconcile2: Call finalAccountBalance with date/time "%s"', $end->toIso8601String())); | ||||
|         $startBalance    = Steam::bcround(Steam::finalAccountBalance($account, $startDate)['balance'], $currency->decimal_places); | ||||
|         $endBalance      = Steam::bcround(Steam::finalAccountBalance($account, $end)['balance'], $currency->decimal_places); | ||||
|         $subTitleIcon    = config(sprintf('firefly.subIconsByIdentifier.%s', $account->accountType->type)); | ||||
|   | ||||
| @@ -37,6 +37,7 @@ use Illuminate\Http\RedirectResponse; | ||||
| use Illuminate\Http\Request; | ||||
| use Illuminate\Routing\Redirector; | ||||
| use Illuminate\Support\Collection; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use Illuminate\View\View; | ||||
| 
 | ||||
| /** | ||||
| @@ -135,6 +136,7 @@ class ShowController extends Controller | ||||
| 
 | ||||
|         $groups->setPath(route('accounts.show', [$account->id, $start->format('Y-m-d'), $end->format('Y-m-d')])); | ||||
|         $showAll          = false; | ||||
|         Log::debug(sprintf(show: 'Call finalAccountBalance with date/time "%s"', $end->toIso8601String())); | ||||
|         $balances         = Steam::filterAccountBalance(Steam::finalAccountBalance($account, $end), $account, $this->convertToNative, $accountCurrency); | ||||
| 
 | ||||
|         return view( | ||||
| @@ -200,6 +202,7 @@ class ShowController extends Controller | ||||
|         $groups->setPath(route('accounts.show.all', [$account->id])); | ||||
|         $chartUrl        = route('chart.account.period', [$account->id, $start->format('Y-m-d'), $end->format('Y-m-d')]); | ||||
|         $showAll         = true; | ||||
|         Log::debug(sprintf('showAll: Call finalAccountBalance with date/time "%s"', $end->toIso8601String())); | ||||
|         $balances        = Steam::filterAccountBalance(Steam::finalAccountBalance($account, $end), $account, $this->convertToNative, $accountCurrency); | ||||
| 
 | ||||
|         return view( | ||||
|   | ||||
| @@ -453,6 +453,7 @@ class AccountController extends Controller | ||||
| 
 | ||||
|         // temp, get end balance.
 | ||||
|         Log::debug('temp get end balance'); | ||||
|         Log::debug(sprintf('period: Call finalAccountBalance with date/time "%s"', $end->toIso8601String())); | ||||
|         Steam::finalAccountBalance($account, $end); | ||||
|         Log::debug('END temp get end balance done'); | ||||
| 
 | ||||
|   | ||||
| @@ -195,6 +195,8 @@ class ReconcileController extends Controller | ||||
|         $startDate->subDay(); | ||||
| 
 | ||||
|         $currency       = $this->accountRepos->getAccountCurrency($account) ?? $this->defaultCurrency; | ||||
|         Log::debug(sprintf('transactions: Call finalAccountBalance with date/time "%s"', $startDate->toIso8601String())); | ||||
|         Log::debug(sprintf('transactions2: Call finalAccountBalance with date/time "%s"', $end->toIso8601String())); | ||||
|         $startBalance   = Steam::bcround(Steam::finalAccountBalance($account, $startDate)['balance'], $currency->decimal_places); | ||||
|         $endBalance     = Steam::bcround(Steam::finalAccountBalance($account, $end)['balance'], $currency->decimal_places); | ||||
| 
 | ||||
|   | ||||
| @@ -43,6 +43,7 @@ use Illuminate\Contracts\View\Factory; | ||||
| use Illuminate\Http\RedirectResponse; | ||||
| use Illuminate\Http\Request; | ||||
| use Illuminate\Routing\Redirector; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use Illuminate\View\View; | ||||
| 
 | ||||
| /** | ||||
| @@ -223,7 +224,9 @@ class ConvertController extends Controller | ||||
|         // group accounts:
 | ||||
|         /** @var Account $account */ | ||||
|         foreach ($accountList as $account) { | ||||
|             $balance                     = Steam::finalAccountBalance($account, today()->endOfDay())['balance']; | ||||
|             $date = today()->endOfDay(); | ||||
|             Log::debug(sprintf('getLiabilities: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|             $balance                     = Steam::finalAccountBalance($account, $date)['balance']; | ||||
|             $currency                    = $this->accountRepository->getAccountCurrency($account) ?? $this->defaultCurrency; | ||||
|             $role                        = 'l_'.$account->accountType->type; | ||||
|             $key                         = (string) trans('firefly.opt_group_'.$role); | ||||
| @@ -245,7 +248,9 @@ class ConvertController extends Controller | ||||
|         // group accounts:
 | ||||
|         /** @var Account $account */ | ||||
|         foreach ($accountList as $account) { | ||||
|             $balance                     = Steam::finalAccountBalance($account, today()->endOfDay())['balance']; | ||||
|             $date = today()->endOfDay(); | ||||
|             Log::debug(sprintf('getAssetAccounts: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|             $balance                     = Steam::finalAccountBalance($account, $date)['balance']; | ||||
|             $currency                    = $this->accountRepository->getAccountCurrency($account) ?? $this->defaultCurrency; | ||||
|             $role                        = (string) $this->accountRepository->getMetaValue($account, 'account_role'); | ||||
|             if ('' === $role) { | ||||
|   | ||||
| @@ -371,6 +371,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface | ||||
|     public function leftOnAccount(PiggyBank $piggyBank, Account $account, Carbon $date): string | ||||
|     { | ||||
|         Log::debug(sprintf('leftOnAccount("%s","%s","%s")', $piggyBank->name, $account->name, $date->format('Y-m-d H:i:s'))); | ||||
|         Log::debug(sprintf('leftOnAccount: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|         $balance = Steam::finalAccountBalance($account, $date)['balance']; | ||||
| 
 | ||||
|         Log::debug(sprintf('Balance is: %s', $balance)); | ||||
|   | ||||
| @@ -76,6 +76,7 @@ class Steam | ||||
| 
 | ||||
|         $balances             = []; | ||||
|         $formatted            = $start->format('Y-m-d'); | ||||
|         Log::debug(sprintf('finalAccountBalanceInRange: Call finalAccountBalance with date/time "%s"', $start->toIso8601String())); | ||||
|         $startBalance         = $this->finalAccountBalance($account, $start); | ||||
|         $nativeCurrency       = app('amount')->getNativeCurrencyByUserGroup($account->user->userGroup); | ||||
|         $accountCurrency      = $this->getAccountCurrency($account); | ||||
| @@ -164,6 +165,7 @@ class Steam | ||||
| 
 | ||||
|     public function finalAccountsBalance(Collection $accounts, Carbon $date): array | ||||
|     { | ||||
|         Log::debug(sprintf('finalAccountsBalance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|         $balances = []; | ||||
|         foreach ($accounts as $account) { | ||||
|             $balances[$account->id] = $this->finalAccountBalance($account, $date); | ||||
| @@ -260,6 +262,8 @@ class Steam | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns smaller than or equal to, so be careful with END OF DAY. | ||||
|      * | ||||
|      * Returns the balance of an account at exact moment given. Array with at least one value. | ||||
|      * Always returns: | ||||
|      * "balance": balance in the account's currency OR user's native currency if the account has no currency | ||||
| @@ -278,7 +282,7 @@ class Steam | ||||
|         $cache->addProperty($date); | ||||
|         if ($cache->has()) { | ||||
|             //            Log::debug(sprintf('CACHED finalAccountBalance(#%d, %s)', $account->id, $date->format('Y-m-d H:i:s')));
 | ||||
|             //            return $cache->get();
 | ||||
|                         return $cache->get(); | ||||
|         } | ||||
|         Log::debug(sprintf('finalAccountBalance(#%d, %s)', $account->id, $date->format('Y-m-d H:i:s'))); | ||||
| 
 | ||||
|   | ||||
| @@ -31,6 +31,7 @@ use FireflyIII\Repositories\User\UserRepositoryInterface; | ||||
| use FireflyIII\Support\Facades\Amount; | ||||
| use FireflyIII\Support\Facades\Steam; | ||||
| use FireflyIII\Support\Search\OperatorQuerySearch; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use League\CommonMark\GithubFlavoredMarkdownConverter; | ||||
| use Route; | ||||
| use Twig\Extension\AbstractExtension; | ||||
| @@ -67,6 +68,7 @@ class General extends AbstractExtension | ||||
| 
 | ||||
|                 /** @var Carbon $date */ | ||||
|                 $date            = session('end', today(config('app.timezone'))->endOfMonth()); | ||||
|                 Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|                 $info            = Steam::finalAccountBalance($account, $date); | ||||
|                 $currency        = Steam::getAccountCurrency($account); | ||||
|                 $default         = Amount::getNativeCurrency(); | ||||
|   | ||||
| @@ -31,6 +31,7 @@ use FireflyIII\Models\TransactionCurrency; | ||||
| use FireflyIII\Repositories\Account\AccountRepositoryInterface; | ||||
| use FireflyIII\Support\Facades\Amount; | ||||
| use FireflyIII\Support\Facades\Steam; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use Symfony\Component\HttpFoundation\ParameterBag; | ||||
| 
 | ||||
| /** | ||||
| @@ -106,6 +107,7 @@ class AccountTransformer extends AbstractTransformer | ||||
|             $order = null; | ||||
|         } | ||||
|         // balance, native balance, virtual balance, native virtual balance?
 | ||||
|         Log::debug(sprintf('transform: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); | ||||
|         $finalBalance                                                 = Steam::finalAccountBalance($account, $date); | ||||
|         if ($convertToNative) { | ||||
|             $finalBalance['balance'] = $finalBalance[$currencyCode] ?? '0'; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user