mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2024-12-28 18:01:26 -06:00
Merge branch 'release/4.8.1.1'
This commit is contained in:
commit
99686346dc
@ -1,3 +1,15 @@
|
||||
# 4.8.1.1
|
||||
|
||||
- Add some sensible maximum amounts to form inputs.
|
||||
- [Issue 2561](https://github.com/firefly-iii/firefly-iii/issues/2561) Fixes a query error on the /tags page that affected some MySQL users.
|
||||
- [Issue 2563](https://github.com/firefly-iii/firefly-iii/issues/2563) Two destination fields when editing a recurring transaction.
|
||||
- [Issue 2564](https://github.com/firefly-iii/firefly-iii/issues/2564) Ability to browse pages in the search results.
|
||||
- [Issue 2573](https://github.com/firefly-iii/firefly-iii/issues/2573) Could not submit an transaction update after an error was corrected.
|
||||
- [Issue 2577](https://github.com/firefly-iii/firefly-iii/issues/2577) Upgrade routine would wrongly store the categories of split transactions.
|
||||
- [Issue 2590](https://github.com/firefly-iii/firefly-iii/issues/2590) Fix an issue in the audit report.
|
||||
- [Issue 2592](https://github.com/firefly-iii/firefly-iii/issues/2592) Fix an issue with YNAB import.
|
||||
- [Issue 2597](https://github.com/firefly-iii/firefly-iii/issues/2597) Fix an issue where users could not delete currencies.
|
||||
|
||||
# 4.8.1 (API 0.10.2)
|
||||
|
||||
- Firefly III 4.8.1 requires PHP 7.3.
|
||||
|
@ -15,8 +15,8 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
|
||||
manifest = (
|
||||
appTitle = (defaultText = "Firefly III"),
|
||||
appVersion = 36,
|
||||
appMarketingVersion = (defaultText = "4.8.1"),
|
||||
appVersion = 37,
|
||||
appMarketingVersion = (defaultText = "4.8.1.1"),
|
||||
|
||||
actions = [
|
||||
# Define your "new document" handlers here.
|
||||
|
@ -1,7 +1,7 @@
|
||||
sudo: required
|
||||
language: bash
|
||||
env:
|
||||
- VERSION=4.8.1
|
||||
- VERSION=4.8.1.1
|
||||
|
||||
dist: xenial
|
||||
|
||||
|
@ -25,6 +25,8 @@ namespace FireflyIII\Console\Commands\Upgrade;
|
||||
use DB;
|
||||
use Exception;
|
||||
use FireflyIII\Factory\TransactionGroupFactory;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalCLIRepositoryInterface;
|
||||
@ -306,6 +308,10 @@ class MigrateToGroups extends Command
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
// overrule journal category with transaction category.
|
||||
$budgetId = $this->getTransactionBudget($transaction, $opposingTr) ?? $budgetId;
|
||||
$categoryId = $this->getTransactionCategory($transaction, $opposingTr) ?? $categoryId;
|
||||
|
||||
$tArray = [
|
||||
'type' => strtolower($journal->transactionType->type),
|
||||
'date' => $journal->date,
|
||||
@ -367,6 +373,72 @@ class MigrateToGroups extends Command
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Transaction $left
|
||||
* @param Transaction $right
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
private function getTransactionBudget(Transaction $left, Transaction $right): ?int
|
||||
{
|
||||
Log::debug('Now in getTransactionBudget()');
|
||||
|
||||
// try to get a budget ID from the left transaction:
|
||||
/** @var Budget $budget */
|
||||
$budget = $left->budgets()->first();
|
||||
if (null !== $budget) {
|
||||
Log::debug(sprintf('Return budget #%d, from transaction #%d', $budget->id, $left->id));
|
||||
|
||||
return (int)$budget->id;
|
||||
}
|
||||
|
||||
// try to get a budget ID from the right transaction:
|
||||
/** @var Budget $budget */
|
||||
$budget = $right->budgets()->first();
|
||||
if (null !== $budget) {
|
||||
Log::debug(sprintf('Return budget #%d, from transaction #%d', $budget->id, $right->id));
|
||||
|
||||
return (int)$budget->id;
|
||||
}
|
||||
Log::debug('Neither left or right have a budget, return NULL');
|
||||
|
||||
// if all fails, return NULL.
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Transaction $left
|
||||
* @param Transaction $right
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
private function getTransactionCategory(Transaction $left, Transaction $right): ?int
|
||||
{
|
||||
Log::debug('Now in getTransactionCategory()');
|
||||
|
||||
// try to get a category ID from the left transaction:
|
||||
/** @var Category $category */
|
||||
$category = $left->categories()->first();
|
||||
if (null !== $category) {
|
||||
Log::debug(sprintf('Return category #%d, from transaction #%d', $category->id, $left->id));
|
||||
|
||||
return (int)$category->id;
|
||||
}
|
||||
|
||||
// try to get a category ID from the left transaction:
|
||||
/** @var Category $category */
|
||||
$category = $right->categories()->first();
|
||||
if (null !== $category) {
|
||||
Log::debug(sprintf('Return category #%d, from transaction #%d', $category->id, $category->id));
|
||||
|
||||
return (int)$category->id;
|
||||
}
|
||||
Log::debug('Neither left or right have a category, return NULL');
|
||||
|
||||
// if all fails, return NULL.
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -305,7 +305,7 @@ class TransactionJournalFactory
|
||||
$transactionFactory->setCurrency($sourceCurrency);
|
||||
$transactionFactory->setForeignCurrency($sourceForeignCurrency);
|
||||
$transactionFactory->setReconciled($row['reconciled'] ?? false);
|
||||
$transactionFactory->createNegative($row['amount'], $row['foreign_amount']);
|
||||
$transactionFactory->createNegative((string)$row['amount'], $row['foreign_amount']);
|
||||
|
||||
// and the destination one:
|
||||
/** @var TransactionFactory $transactionFactory */
|
||||
@ -316,7 +316,7 @@ class TransactionJournalFactory
|
||||
$transactionFactory->setCurrency($destCurrency);
|
||||
$transactionFactory->setForeignCurrency($destForeignCurrency);
|
||||
$transactionFactory->setReconciled($row['reconciled'] ?? false);
|
||||
$transactionFactory->createPositive($row['amount'], $row['foreign_amount']);
|
||||
$transactionFactory->createPositive((string)$row['amount'], $row['foreign_amount']);
|
||||
|
||||
// verify that journal has two transactions. Otherwise, delete and cancel.
|
||||
// TODO this can't be faked so it can't be tested.
|
||||
|
@ -119,15 +119,11 @@ class MonthReportGenerator implements ReportGeneratorInterface
|
||||
$collector->setAccounts(new Collection([$account]))->setRange($this->start, $this->end)->withAccountInformation()
|
||||
->withBudgetInformation()->withCategoryInformation()->withBillInformation();
|
||||
$journals = $collector->getExtractedJournals();
|
||||
$journals = array_reverse($journals, true);
|
||||
|
||||
$journals = array_reverse($journals, true);
|
||||
$dayBeforeBalance = app('steam')->balance($account, $date);
|
||||
$startBalance = $dayBeforeBalance;
|
||||
$currency = $accountRepository->getAccountCurrency($account);
|
||||
|
||||
if (null === $currency) {
|
||||
throw new FireflyException('Unexpected NULL value in account currency preference.'); // @codeCoverageIgnore
|
||||
}
|
||||
$defaultCurrency = app('amount')->getDefaultCurrencyByUser($account->user);
|
||||
$currency = $accountRepository->getAccountCurrency($account) ?? $defaultCurrency;
|
||||
|
||||
foreach ($journals as $index => $journal) {
|
||||
$journals[$index]['balance_before'] = $startBalance;
|
||||
@ -140,6 +136,9 @@ class MonthReportGenerator implements ReportGeneratorInterface
|
||||
|
||||
if ($currency->id === $journal['foreign_currency_id']) {
|
||||
$transactionAmount = $journal['foreign_amount'];
|
||||
if ($account->id === $journal['destination_account_id']) {
|
||||
$transactionAmount = app('steam')->positive($journal['foreign_amount']);
|
||||
}
|
||||
}
|
||||
|
||||
$newBalance = bcadd($startBalance, $transactionAmount);
|
||||
@ -158,6 +157,7 @@ class MonthReportGenerator implements ReportGeneratorInterface
|
||||
|
||||
$return = [
|
||||
'journals' => $journals,
|
||||
'currency' => $currency,
|
||||
'exists' => count($journals) > 0,
|
||||
'end' => $this->end->formatLocalized((string)trans('config.month_and_day')),
|
||||
'endBalance' => app('steam')->balance($account, $this->end),
|
||||
|
@ -140,7 +140,9 @@ class CurrencyController extends Controller
|
||||
}
|
||||
|
||||
if ($this->repository->currencyInUse($currency)) {
|
||||
$request->session()->flash('error', (string)trans('firefly.cannot_delete_currency', ['name' => e($currency->name)]));
|
||||
$location = $this->repository->currencyInUseAt($currency);
|
||||
$message = (string)trans(sprintf('firefly.cannot_disable_currency_%s', $location), ['name' => e($currency->name)]);
|
||||
$request->session()->flash('error', $message);
|
||||
Log::channel('audit')->info(sprintf('Tried to visit page to delete currency %s but currency is in use.', $currency->code));
|
||||
|
||||
return redirect(route('currencies.index'));
|
||||
|
@ -61,14 +61,14 @@ class SearchController extends Controller
|
||||
public function index(Request $request, SearchInterface $searcher)
|
||||
{
|
||||
$fullQuery = (string)$request->get('search');
|
||||
|
||||
$page = 0 === (int)$request->get('page') ? 1 : (int)$request->get('page');
|
||||
// parse search terms:
|
||||
$searcher->parseQuery($fullQuery);
|
||||
$query = $searcher->getWordsAsString();
|
||||
$modifiers = $searcher->getModifiers();
|
||||
$subTitle = (string)trans('breadcrumbs.search_result', ['query' => $query]);
|
||||
|
||||
return view('search.index', compact('query', 'modifiers', 'fullQuery', 'subTitle'));
|
||||
return view('search.index', compact('query', 'modifiers', 'page','fullQuery', 'subTitle'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -81,15 +81,20 @@ class SearchController extends Controller
|
||||
*/
|
||||
public function search(Request $request, SearchInterface $searcher): JsonResponse
|
||||
{
|
||||
$fullQuery = (string)$request->get('query');
|
||||
$fullQuery = (string)$request->get('query');
|
||||
$page = 0 === (int)$request->get('page') ? 1 : (int)$request->get('page');
|
||||
|
||||
$searcher->parseQuery($fullQuery);
|
||||
$searcher->setPage($page);
|
||||
$searcher->setLimit((int)config('firefly.search_result_limit'));
|
||||
$groups = $searcher->searchTransactions();
|
||||
$groups = $searcher->searchTransactions();
|
||||
$hasPages = $groups->hasPages();
|
||||
$searchTime = round($searcher->searchTime(), 3); // in seconds
|
||||
|
||||
$parameters = ['search' => $fullQuery];
|
||||
$url = route('search.index') . '?' . http_build_query($parameters);
|
||||
$groups->setPath($url);
|
||||
try {
|
||||
$html = view('search.search', compact('groups','searchTime'))->render();
|
||||
$html = view('search.search', compact('groups', 'hasPages', 'searchTime'))->render();
|
||||
// @codeCoverageIgnoreStart
|
||||
} catch (Throwable $e) {
|
||||
Log::error(sprintf('Cannot render search.search: %s', $e->getMessage()));
|
||||
|
@ -94,11 +94,11 @@ class AccountFormRequest extends Request
|
||||
$ccPaymentTypes = implode(',', array_keys(config('firefly.ccTypes')));
|
||||
$rules = [
|
||||
'name' => 'required|min:1|uniqueAccountForUser',
|
||||
'opening_balance' => 'numeric|required_with:opening_balance_date|nullable',
|
||||
'opening_balance' => 'numeric|required_with:opening_balance_date|nullable|max:1000000000',
|
||||
'opening_balance_date' => 'date|required_with:opening_balance|nullable',
|
||||
'iban' => ['iban', 'nullable', new UniqueIban(null, $this->string('objectType'))],
|
||||
'BIC' => 'bic|nullable',
|
||||
'virtual_balance' => 'numeric|nullable',
|
||||
'virtual_balance' => 'numeric|nullable|max:1000000000',
|
||||
'currency_id' => 'exists:transaction_currencies,id',
|
||||
'account_number' => 'between:1,255|uniqueAccountNumberForUser|nullable',
|
||||
'account_role' => 'in:' . $accountRoles,
|
||||
@ -111,7 +111,7 @@ class AccountFormRequest extends Request
|
||||
];
|
||||
|
||||
if ('liabilities' === $this->get('objectType')) {
|
||||
$rules['opening_balance'] = ['numeric', 'required'];
|
||||
$rules['opening_balance'] = ['numeric', 'required','max:1000000000'];
|
||||
$rules['opening_balance_date'] = 'date|required';
|
||||
}
|
||||
|
||||
|
@ -77,8 +77,8 @@ class BillFormRequest extends Request
|
||||
// is OK
|
||||
$rules = [
|
||||
'name' => $nameRule,
|
||||
'amount_min' => 'required|numeric|more:0',
|
||||
'amount_max' => 'required|numeric|more:0',
|
||||
'amount_min' => 'required|numeric|more:0|max:1000000000',
|
||||
'amount_max' => 'required|numeric|more:0|max:1000000000',
|
||||
'transaction_currency_id' => 'required|exists:transaction_currencies,id',
|
||||
'date' => 'required|date',
|
||||
'repeat_freq' => 'required|in:weekly,monthly,quarterly,half-year,yearly',
|
||||
|
@ -49,7 +49,7 @@ class BudgetIncomeRequest extends Request
|
||||
{
|
||||
// fixed
|
||||
return [
|
||||
'amount' => 'numeric|required|min:0',
|
||||
'amount' => 'numeric|required|min:0|max:1000000000',
|
||||
'start' => 'required|date|before:end',
|
||||
'end' => 'required|date|after:start',
|
||||
];
|
||||
|
@ -50,9 +50,9 @@ class NewUserFormRequest extends Request
|
||||
// fixed
|
||||
return [
|
||||
'bank_name' => 'required|between:1,200',
|
||||
'bank_balance' => 'required|numeric',
|
||||
'savings_balance' => 'numeric',
|
||||
'credit_card_limit' => 'numeric',
|
||||
'bank_balance' => 'required|numeric|max:1000000000',
|
||||
'savings_balance' => 'numeric|max:1000000000',
|
||||
'credit_card_limit' => 'numeric|max:1000000000',
|
||||
'amount_currency_id_bank_balance' => 'exists:transaction_currencies,id',
|
||||
'amount_currency_id_savings_balance' => 'exists:transaction_currencies,id',
|
||||
'amount_currency_id_credit_card_limit' => 'exists:transaction_currencies,id',
|
||||
|
@ -76,7 +76,7 @@ class PiggyBankFormRequest extends Request
|
||||
$rules = [
|
||||
'name' => $nameRule,
|
||||
'account_id' => 'required|belongsToUser:accounts',
|
||||
'targetamount' => 'required|numeric|more:0',
|
||||
'targetamount' => 'required|numeric|more:0|max:1000000000',
|
||||
'startdate' => 'date',
|
||||
'targetdate' => 'date|nullable',
|
||||
'order' => 'integer|min:1',
|
||||
|
@ -77,9 +77,9 @@ class ReconciliationStoreRequest extends Request
|
||||
return [
|
||||
'start' => 'required|date',
|
||||
'end' => 'required|date',
|
||||
'startBalance' => 'numeric',
|
||||
'endBalance' => 'numeric',
|
||||
'difference' => 'required|numeric',
|
||||
'startBalance' => 'numeric|max:1000000000',
|
||||
'endBalance' => 'numeric|max:1000000000',
|
||||
'difference' => 'required|numeric|max:1000000000',
|
||||
'journals' => [new ValidJournals],
|
||||
'reconcile' => 'required|in:create,nothing',
|
||||
];
|
||||
|
@ -160,7 +160,7 @@ class RecurrenceFormRequest extends Request
|
||||
'transaction_description' => 'required|between:1,255',
|
||||
'transaction_type' => 'required|in:withdrawal,deposit,transfer',
|
||||
'transaction_currency_id' => 'required|exists:transaction_currencies,id',
|
||||
'amount' => 'numeric|required|more:0',
|
||||
'amount' => 'numeric|required|more:0|max:1000000000',
|
||||
// mandatory account info:
|
||||
'source_id' => 'numeric|belongsToUser:accounts,id|nullable',
|
||||
'source_name' => 'between:1,255|nullable',
|
||||
@ -168,7 +168,7 @@ class RecurrenceFormRequest extends Request
|
||||
'destination_name' => 'between:1,255|nullable',
|
||||
|
||||
// foreign amount data:
|
||||
'foreign_amount' => 'nullable|more:0',
|
||||
'foreign_amount' => 'nullable|more:0|max:1000000000',
|
||||
|
||||
// optional fields:
|
||||
'budget_id' => 'mustExist:budgets,id|belongsToUser:budgets,id|nullable',
|
||||
|
@ -466,12 +466,12 @@ class TagRepository implements TagRepositoryInterface
|
||||
->leftJoin('transaction_journals', 'tag_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('transactions', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||
->where(
|
||||
function (Builder $query) {
|
||||
static function (Builder $query) {
|
||||
$query->where('transactions.amount', '>', 0);
|
||||
$query->orWhereNull('transactions.amount');
|
||||
}
|
||||
)
|
||||
->groupBy(['tags.id', 'tags.tag']);
|
||||
->groupBy(['tags.id', 'tags.tag', 'tags.created_at']);
|
||||
|
||||
// add date range (or not):
|
||||
if (null === $year) {
|
||||
|
@ -50,7 +50,7 @@ class CurrencyDestroyService
|
||||
{
|
||||
|
||||
try {
|
||||
$currency->forceDelete();
|
||||
$currency->delete();
|
||||
} catch (Exception $e) { // @codeCoverageIgnore
|
||||
Log::error(sprintf('Could not delete transaction currency: %s', $e->getMessage())); // @codeCoverageIgnore
|
||||
}
|
||||
|
@ -67,18 +67,22 @@ class StageFinalHandler
|
||||
// transaction data:
|
||||
'transactions' => [
|
||||
[
|
||||
'currency_id' => null,
|
||||
'currency_code' => 'EUR',
|
||||
'description' => null,
|
||||
'amount' => random_int(500, 5000) / 100,
|
||||
'budget_id' => null,
|
||||
'budget_name' => null,
|
||||
'category_id' => null,
|
||||
'category_name' => null,
|
||||
'source_id' => null,
|
||||
'source_name' => 'Checking Account',
|
||||
'destination_id' => null,
|
||||
'destination_name' => 'Random expense account #' . random_int(1, 10000),
|
||||
'type' => 'withdrawal',
|
||||
'date' => Carbon::now()->format('Y-m-d'),
|
||||
'currency_id' => null,
|
||||
'currency_code' => 'EUR',
|
||||
'description' => 'Some random description #' . random_int(1, 10000),
|
||||
'amount' => random_int(500, 5000) / 100,
|
||||
'tags' => [],
|
||||
'user' => $this->importJob->user_id,
|
||||
'budget_id' => null,
|
||||
'budget_name' => null,
|
||||
'category_id' => null,
|
||||
'category_name' => null,
|
||||
'source_id' => null,
|
||||
'source_name' => 'Checking Account',
|
||||
'destination_id' => null,
|
||||
'destination_name' => 'Random expense account #' . random_int(1, 10000),
|
||||
'foreign_currency_id' => null,
|
||||
'foreign_currency_code' => null,
|
||||
'foreign_amount' => null,
|
||||
@ -112,9 +116,13 @@ class StageFinalHandler
|
||||
// transaction data:
|
||||
'transactions' => [
|
||||
[
|
||||
'type' => 'transfer',
|
||||
'user' => $this->importJob->user_id,
|
||||
'date' => '2017-02-28',
|
||||
'currency_id' => null,
|
||||
'currency_code' => 'EUR',
|
||||
'description' => null,
|
||||
'tags' => [],
|
||||
'description' => 'Saving money for February',
|
||||
'amount' => '140',
|
||||
'budget_id' => null,
|
||||
'budget_name' => null,
|
||||
|
@ -182,16 +182,26 @@ class ImportDataHandler
|
||||
// transaction data:
|
||||
'transactions' => [
|
||||
[
|
||||
'type' => $type,
|
||||
'date' => $transaction['date'] ?? date('Y-m-d'),
|
||||
'tags' => $tags,
|
||||
'user' => $this->importJob->user_id,
|
||||
'notes' => null,
|
||||
'currency_id' => null,
|
||||
'currency_code' => $budget['currency_code'] ?? $this->defaultCurrency->code,
|
||||
'description' => null,
|
||||
'amount' => bcdiv((string)$transaction['amount'], '1000'),
|
||||
'budget_id' => null,
|
||||
'original-source' => sprintf('ynab-v%s', config('firefly.version')),
|
||||
'budget_name' => null,
|
||||
'category_id' => null,
|
||||
'category_name' => $transaction['category_name'],
|
||||
'source_id' => $source->id,
|
||||
'source_name' => null,
|
||||
// all custom fields:
|
||||
'external_id' => $transaction['id'] ?? '',
|
||||
|
||||
// journal data:
|
||||
'description' => $description,
|
||||
'destination_id' => $destination->id,
|
||||
'destination_name' => null,
|
||||
'foreign_currency_id' => null,
|
||||
|
@ -64,12 +64,15 @@ class Search implements SearchInterface
|
||||
private $validModifiers;
|
||||
/** @var array */
|
||||
private $words = [];
|
||||
/** @var int */
|
||||
private $page;
|
||||
|
||||
/**
|
||||
* Search constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->page = 1;
|
||||
$this->modifiers = new Collection;
|
||||
$this->validModifiers = (array)config('firefly.search_modifiers');
|
||||
$this->startTime = microtime(true);
|
||||
@ -149,12 +152,11 @@ class Search implements SearchInterface
|
||||
{
|
||||
Log::debug('Start of searchTransactions()');
|
||||
$pageSize = 50;
|
||||
$page = 1;
|
||||
|
||||
/** @var GroupCollectorInterface $collector */
|
||||
$collector = app(GroupCollectorInterface::class);
|
||||
|
||||
$collector->setLimit($pageSize)->setPage($page)->withAccountInformation();
|
||||
$collector->setLimit($pageSize)->setPage($this->page)->withAccountInformation();
|
||||
$collector->withCategoryInformation()->withBudgetInformation();
|
||||
$collector->setSearchWords($this->words);
|
||||
|
||||
@ -308,4 +310,12 @@ class Search implements SearchInterface
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $page
|
||||
*/
|
||||
public function setPage(int $page): void
|
||||
{
|
||||
$this->page = $page;
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,11 @@ interface SearchInterface
|
||||
*/
|
||||
public function getWordsAsString(): string;
|
||||
|
||||
/**
|
||||
* @param int $page
|
||||
*/
|
||||
public function setPage(int $page): void;
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
17
changelog.md
17
changelog.md
@ -2,7 +2,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [4.8.1 (API 0.10.2)] - 2019-08-xx
|
||||
## [4.8.1.1 (API 0.10.2)] - 2019-09-12
|
||||
|
||||
### Changed
|
||||
- Add some sensible maximum amounts to form inputs.
|
||||
|
||||
### Fixed
|
||||
- [Issue 2561](https://github.com/firefly-iii/firefly-iii/issues/2561) Fixes a query error on the /tags page that affected some MySQL users.
|
||||
- [Issue 2563](https://github.com/firefly-iii/firefly-iii/issues/2563) Two destination fields when editing a recurring transaction.
|
||||
- [Issue 2564](https://github.com/firefly-iii/firefly-iii/issues/2564) Ability to browse pages in the search results.
|
||||
- [Issue 2573](https://github.com/firefly-iii/firefly-iii/issues/2573) Could not submit an transaction update after an error was corrected.
|
||||
- [Issue 2577](https://github.com/firefly-iii/firefly-iii/issues/2577) Upgrade routine would wrongly store the categories of split transactions.
|
||||
- [Issue 2590](https://github.com/firefly-iii/firefly-iii/issues/2590) Fix an issue in the audit report.
|
||||
- [Issue 2592](https://github.com/firefly-iii/firefly-iii/issues/2592) Fix an issue with YNAB import.
|
||||
- [Issue 2597](https://github.com/firefly-iii/firefly-iii/issues/2597) Fix an issue where users could not delete currencies.
|
||||
|
||||
## [4.8.1 (API 0.10.2)] - 2019-09-08
|
||||
|
||||
Firefly III 4.8.1 requires PHP 7.3.
|
||||
|
||||
|
189
composer.lock
generated
189
composer.lock
generated
@ -171,12 +171,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bunq/sdk_php.git",
|
||||
"reference": "be645736a2488ec247f0be528bab7619768da12f"
|
||||
"reference": "cfde75f644e5105a8634b0cd9a891c49c50b0e28"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bunq/sdk_php/zipball/be645736a2488ec247f0be528bab7619768da12f",
|
||||
"reference": "be645736a2488ec247f0be528bab7619768da12f",
|
||||
"url": "https://api.github.com/repos/bunq/sdk_php/zipball/cfde75f644e5105a8634b0cd9a891c49c50b0e28",
|
||||
"reference": "cfde75f644e5105a8634b0cd9a891c49c50b0e28",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -194,7 +194,7 @@
|
||||
"phpstan/phpstan": "^0.8",
|
||||
"phpunit/phpunit": "^6.0.13",
|
||||
"sebastian/phpcpd": "^3.0",
|
||||
"sensiolabs/security-checker": "^4.1"
|
||||
"sensiolabs/security-checker": "^5.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/bunq-install"
|
||||
@ -227,7 +227,7 @@
|
||||
"payment",
|
||||
"sepa"
|
||||
],
|
||||
"time": "2019-06-15T12:22:02+00:00"
|
||||
"time": "2019-09-10T15:00:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "danhunsaker/laravel-flysystem-others",
|
||||
@ -1522,31 +1522,31 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/passport",
|
||||
"version": "v7.4.0",
|
||||
"version": "v7.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/passport.git",
|
||||
"reference": "4460bd1fb5d913d75e547caf02a5a19c6d77794d"
|
||||
"reference": "cc39dc6a36ebf5926906eb5ad3c62dba50c9bbd0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/passport/zipball/4460bd1fb5d913d75e547caf02a5a19c6d77794d",
|
||||
"reference": "4460bd1fb5d913d75e547caf02a5a19c6d77794d",
|
||||
"url": "https://api.github.com/repos/laravel/passport/zipball/cc39dc6a36ebf5926906eb5ad3c62dba50c9bbd0",
|
||||
"reference": "cc39dc6a36ebf5926906eb5ad3c62dba50c9bbd0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"firebase/php-jwt": "~3.0|~4.0|~5.0",
|
||||
"guzzlehttp/guzzle": "~6.0",
|
||||
"illuminate/auth": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/console": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/container": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/cookie": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/http": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0",
|
||||
"illuminate/auth": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/console": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/container": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/cookie": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/http": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0",
|
||||
"league/oauth2-server": "^7.0",
|
||||
"php": ">=7.1",
|
||||
"phpseclib/phpseclib": "^2.0",
|
||||
@ -1554,8 +1554,8 @@
|
||||
"zendframework/zend-diactoros": "~1.0|~2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "~1.0",
|
||||
"phpunit/phpunit": "~7.4"
|
||||
"mockery/mockery": "^1.0",
|
||||
"phpunit/phpunit": "^7.4|^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -1589,7 +1589,7 @@
|
||||
"oauth",
|
||||
"passport"
|
||||
],
|
||||
"time": "2019-08-20T18:10:43+00:00"
|
||||
"time": "2019-09-10T19:55:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravelcollective/html",
|
||||
@ -2749,16 +2749,16 @@
|
||||
},
|
||||
{
|
||||
"name": "pragmarx/google2fa",
|
||||
"version": "v5.0.0",
|
||||
"version": "v6.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/antonioribeiro/google2fa.git",
|
||||
"reference": "17c969c82f427dd916afe4be50bafc6299aef1b4"
|
||||
"reference": "03f6fb65aaccc21d6f70969db652316ad003b83d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/17c969c82f427dd916afe4be50bafc6299aef1b4",
|
||||
"reference": "17c969c82f427dd916afe4be50bafc6299aef1b4",
|
||||
"url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/03f6fb65aaccc21d6f70969db652316ad003b83d",
|
||||
"reference": "03f6fb65aaccc21d6f70969db652316ad003b83d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2768,7 +2768,7 @@
|
||||
"symfony/polyfill-php56": "~1.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4|~5|~6"
|
||||
"phpunit/phpunit": "~4|~5|~6|~7|~8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -2790,8 +2790,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "Antonio Carlos Ribeiro",
|
||||
"role": "Creator & Designer",
|
||||
"email": "acr@antoniocarlosribeiro.com"
|
||||
"email": "acr@antoniocarlosribeiro.com",
|
||||
"role": "Creator & Designer"
|
||||
}
|
||||
],
|
||||
"description": "A One Time Password Authentication package, compatible with Google Authenticator.",
|
||||
@ -2801,20 +2801,20 @@
|
||||
"Two Factor Authentication",
|
||||
"google2fa"
|
||||
],
|
||||
"time": "2019-03-19T22:44:16+00:00"
|
||||
"time": "2019-09-11T19:19:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pragmarx/google2fa-laravel",
|
||||
"version": "v1.0.1",
|
||||
"version": "v1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/antonioribeiro/google2fa-laravel.git",
|
||||
"reference": "b5f5bc71dcc52c48720441bc01c701023bd82882"
|
||||
"reference": "3b14f1fa2753c7f9bb5abb6504601662d836d104"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/antonioribeiro/google2fa-laravel/zipball/b5f5bc71dcc52c48720441bc01c701023bd82882",
|
||||
"reference": "b5f5bc71dcc52c48720441bc01c701023bd82882",
|
||||
"url": "https://api.github.com/repos/antonioribeiro/google2fa-laravel/zipball/3b14f1fa2753c7f9bb5abb6504601662d836d104",
|
||||
"reference": "3b14f1fa2753c7f9bb5abb6504601662d836d104",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2823,8 +2823,8 @@
|
||||
"pragmarx/google2fa-qrcode": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": "3.4.*|3.5.*|3.6.*|3.7.*",
|
||||
"phpunit/phpunit": "~5|~6|~7"
|
||||
"orchestra/testbench": "3.4.*|3.5.*|3.6.*|3.7.*|4.*",
|
||||
"phpunit/phpunit": "~5|~6|~7|~8"
|
||||
},
|
||||
"suggest": {
|
||||
"bacon/bacon-qr-code": "Required to generate inline QR Codes.",
|
||||
@ -2861,8 +2861,8 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "Antonio Carlos Ribeiro",
|
||||
"role": "Creator & Designer",
|
||||
"email": "acr@antoniocarlosribeiro.com"
|
||||
"email": "acr@antoniocarlosribeiro.com",
|
||||
"role": "Creator & Designer"
|
||||
}
|
||||
],
|
||||
"description": "A One Time Password Authentication package, compatible with Google Authenticator.",
|
||||
@ -2872,7 +2872,7 @@
|
||||
"google2fa",
|
||||
"laravel"
|
||||
],
|
||||
"time": "2019-03-22T19:54:51+00:00"
|
||||
"time": "2019-09-13T02:06:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pragmarx/google2fa-qrcode",
|
||||
@ -5046,16 +5046,16 @@
|
||||
},
|
||||
{
|
||||
"name": "tightenco/collect",
|
||||
"version": "v6.0.0",
|
||||
"version": "v6.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tightenco/collect.git",
|
||||
"reference": "1793f44a9362b00a271de0776511726d9d952aed"
|
||||
"reference": "e35230cde9e682881e9ac27105d0f26c32eca6d6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tightenco/collect/zipball/1793f44a9362b00a271de0776511726d9d952aed",
|
||||
"reference": "1793f44a9362b00a271de0776511726d9d952aed",
|
||||
"url": "https://api.github.com/repos/tightenco/collect/zipball/e35230cde9e682881e9ac27105d0f26c32eca6d6",
|
||||
"reference": "e35230cde9e682881e9ac27105d0f26c32eca6d6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5092,7 +5092,7 @@
|
||||
"collection",
|
||||
"laravel"
|
||||
],
|
||||
"time": "2019-08-30T16:33:17+00:00"
|
||||
"time": "2019-09-09T14:07:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tijsverkoyen/css-to-inline-styles",
|
||||
@ -5209,16 +5209,16 @@
|
||||
},
|
||||
{
|
||||
"name": "vlucas/phpdotenv",
|
||||
"version": "v3.5.0",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/vlucas/phpdotenv.git",
|
||||
"reference": "95cb0fa6c025f7f0db7fc60f81e9fb231eb2d222"
|
||||
"reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/95cb0fa6c025f7f0db7fc60f81e9fb231eb2d222",
|
||||
"reference": "95cb0fa6c025f7f0db7fc60f81e9fb231eb2d222",
|
||||
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156",
|
||||
"reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5227,12 +5227,12 @@
|
||||
"symfony/polyfill-ctype": "^1.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0"
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.5-dev"
|
||||
"dev-master": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -5262,7 +5262,7 @@
|
||||
"env",
|
||||
"environment"
|
||||
],
|
||||
"time": "2019-08-27T17:00:38+00:00"
|
||||
"time": "2019-09-10T21:37:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "zendframework/zend-diactoros",
|
||||
@ -5334,28 +5334,28 @@
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "barryvdh/laravel-ide-helper",
|
||||
"version": "v2.6.4",
|
||||
"version": "v2.6.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
|
||||
"reference": "16eb4f65ee0d51b1f1182d56ae28ee00a70ce75a"
|
||||
"reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/16eb4f65ee0d51b1f1182d56ae28ee00a70ce75a",
|
||||
"reference": "16eb4f65ee0d51b1f1182d56ae28ee00a70ce75a",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3",
|
||||
"reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"barryvdh/reflection-docblock": "^2.0.6",
|
||||
"composer/composer": "^1.6",
|
||||
"doctrine/dbal": "~2.3",
|
||||
"illuminate/console": "^5.5|^6",
|
||||
"illuminate/filesystem": "^5.5|^6",
|
||||
"illuminate/support": "^5.5|^6",
|
||||
"php": ">=7"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/dbal": "~2.3",
|
||||
"illuminate/config": "^5.5|^6",
|
||||
"illuminate/view": "^5.5|^6",
|
||||
"phpro/grumphp": "^0.14",
|
||||
@ -5363,9 +5363,6 @@
|
||||
"scrutinizer/ocular": "~1.1",
|
||||
"squizlabs/php_codesniffer": "^3"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
@ -5404,7 +5401,7 @@
|
||||
"phpstorm",
|
||||
"sublime"
|
||||
],
|
||||
"time": "2019-09-03T17:51:13+00:00"
|
||||
"time": "2019-09-08T09:56:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/reflection-docblock",
|
||||
@ -6237,18 +6234,18 @@
|
||||
"authors": [
|
||||
{
|
||||
"name": "Arne Blankerts",
|
||||
"role": "Developer",
|
||||
"email": "arne@blankerts.de"
|
||||
"email": "arne@blankerts.de",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Sebastian Heuer",
|
||||
"role": "Developer",
|
||||
"email": "sebastian@phpeople.de"
|
||||
"email": "sebastian@phpeople.de",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Sebastian Bergmann",
|
||||
"role": "Developer",
|
||||
"email": "sebastian@phpunit.de"
|
||||
"email": "sebastian@phpunit.de",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
|
||||
@ -6303,35 +6300,33 @@
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
"version": "1.0.1",
|
||||
"version": "2.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
||||
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
|
||||
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
|
||||
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
|
||||
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.5"
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.6"
|
||||
"phpunit/phpunit": "~6"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
"dev-master": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": [
|
||||
"src"
|
||||
]
|
||||
"phpDocumentor\\Reflection\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -6353,30 +6348,30 @@
|
||||
"reflection",
|
||||
"static analysis"
|
||||
],
|
||||
"time": "2017-09-11T18:02:19+00:00"
|
||||
"time": "2018-08-07T13:53:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-docblock",
|
||||
"version": "4.3.1",
|
||||
"version": "4.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
||||
"reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
|
||||
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
|
||||
"reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
|
||||
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0",
|
||||
"phpdocumentor/reflection-common": "^1.0.0",
|
||||
"phpdocumentor/type-resolver": "^0.4.0",
|
||||
"phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
|
||||
"phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
|
||||
"webmozart/assert": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/instantiator": "~1.0.5",
|
||||
"doctrine/instantiator": "^1.0.5",
|
||||
"mockery/mockery": "^1.0",
|
||||
"phpunit/phpunit": "^6.4"
|
||||
},
|
||||
@ -6404,41 +6399,40 @@
|
||||
}
|
||||
],
|
||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
||||
"time": "2019-04-30T17:48:53+00:00"
|
||||
"time": "2019-09-12T14:27:41+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "0.4.0",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
|
||||
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
|
||||
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
|
||||
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.5 || ^7.0",
|
||||
"phpdocumentor/reflection-common": "^1.0"
|
||||
"php": "^7.1",
|
||||
"phpdocumentor/reflection-common": "^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^0.9.4",
|
||||
"phpunit/phpunit": "^5.2||^4.8.24"
|
||||
"ext-tokenizer": "^7.1",
|
||||
"mockery/mockery": "~1",
|
||||
"phpunit/phpunit": "^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
"dev-master": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"phpDocumentor\\Reflection\\": [
|
||||
"src/"
|
||||
]
|
||||
"phpDocumentor\\Reflection\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -6451,7 +6445,8 @@
|
||||
"email": "me@mikevanriel.com"
|
||||
}
|
||||
],
|
||||
"time": "2017-07-14T14:27:02+00:00"
|
||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"time": "2019-08-22T18:11:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpspec/prophecy",
|
||||
|
@ -125,7 +125,7 @@ return [
|
||||
'is_demo_site' => false,
|
||||
],
|
||||
'encryption' => null === env('USE_ENCRYPTION') || env('USE_ENCRYPTION') === true,
|
||||
'version' => '4.8.1',
|
||||
'version' => '4.8.1.1',
|
||||
'api_version' => '0.10.2',
|
||||
'db_version' => 11,
|
||||
'maxUploadSize' => 15242880,
|
||||
|
@ -35,8 +35,10 @@ class ChangesFor3101 extends Migration
|
||||
{
|
||||
Schema::table(
|
||||
'import_jobs',
|
||||
function (Blueprint $table) {
|
||||
$table->dropColumn('extended_status');
|
||||
static function (Blueprint $table) {
|
||||
if (Schema::hasColumn('import_jobs', 'extended_status')) {
|
||||
$table->dropColumn('extended_status');
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -50,8 +52,10 @@ class ChangesFor3101 extends Migration
|
||||
{
|
||||
Schema::table(
|
||||
'import_jobs',
|
||||
function (Blueprint $table) {
|
||||
$table->text('extended_status')->nullable();
|
||||
static function (Blueprint $table) {
|
||||
if (!Schema::hasColumn('import_jobs', 'extended_status')) {
|
||||
$table->text('extended_status')->nullable();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
2
public/v1/js/app.js
vendored
2
public/v1/js/app.js
vendored
File diff suppressed because one or more lines are too long
30
public/v1/js/ff/recurring/edit.js
vendored
30
public/v1/js/ff/recurring/edit.js
vendored
@ -183,51 +183,55 @@ function initializeButtons() {
|
||||
function updateFormFields() {
|
||||
|
||||
if (transactionType === 'withdrawal') {
|
||||
// hide source account name:
|
||||
// $('#source_name_holder').hide(); // no longer used
|
||||
// hide source ID for deposits
|
||||
$('#deposit_source_id_holder').hide();
|
||||
|
||||
// show source account ID:
|
||||
// show source ID for other transaction types
|
||||
$('#source_id_holder').show();
|
||||
|
||||
// show destination name:
|
||||
// $('#destination_name_holder').show(); // no longer used.
|
||||
// show destination ID for withdrawal:
|
||||
$('#withdrawal_destination_id_holder').show();
|
||||
|
||||
// hide destination ID:
|
||||
// hide destination ID for other types
|
||||
$('#destination_id_holder').hide();
|
||||
|
||||
// show budget
|
||||
$('#budget_id_holder').show();
|
||||
|
||||
// hide piggy bank:
|
||||
$('#piggy_bank_id_holder').hide();
|
||||
}
|
||||
|
||||
if (transactionType === 'deposit') {
|
||||
// $('#source_name_holder').show(); // no longer used
|
||||
// show source ID for deposits
|
||||
$('#deposit_source_id_holder').show();
|
||||
|
||||
// hide source ID for other transaction types
|
||||
$('#source_id_holder').hide();
|
||||
|
||||
// $('#destination_name_holder').hide(); // no longer used
|
||||
// hide destination ID for withdrawal:
|
||||
$('#withdrawal_destination_id_holder').hide();
|
||||
|
||||
// show destination ID for other types:
|
||||
$('#destination_id_holder').show();
|
||||
|
||||
// the rest
|
||||
$('#budget_id_holder').hide();
|
||||
$('#piggy_bank_id_holder').hide();
|
||||
}
|
||||
|
||||
if (transactionType === 'transfer') {
|
||||
// $('#source_name_holder').hide(); // no longer used
|
||||
// hide source ID for deposits
|
||||
$('#deposit_source_id_holder').hide();
|
||||
|
||||
// show source ID for others
|
||||
$('#source_id_holder').show();
|
||||
|
||||
// $('#destination_name_holder').hide(); // no longer used
|
||||
$('#withdrawal_destination_id_holder').show();
|
||||
// hide destination ID for withdrawal
|
||||
$('#withdrawal_destination_id_holder').hide();
|
||||
|
||||
// show destination ID for others
|
||||
$('#destination_id_holder').show();
|
||||
|
||||
// the rest
|
||||
$('#budget_id_holder').hide();
|
||||
$('#piggy_bank_id_holder').show();
|
||||
}
|
||||
|
@ -664,9 +664,12 @@
|
||||
for (const fileKey in attachments[key].files) {
|
||||
if (attachments[key].files.hasOwnProperty(fileKey) && /^0$|^[1-9]\d*$/.test(fileKey) && fileKey <= 4294967294) {
|
||||
// include journal thing.
|
||||
|
||||
let transactions = response.data.data.attributes.transactions.reverse();
|
||||
|
||||
toBeUploaded.push(
|
||||
{
|
||||
journal: response.data.data.attributes.transactions[key].transaction_journal_id,
|
||||
journal: transactions[key].transaction_journal_id,
|
||||
file: attachments[key].files[fileKey]
|
||||
}
|
||||
);
|
||||
@ -864,13 +867,13 @@
|
||||
this.transactions[transactionIndex].errors.foreign_amount.concat(errors.errors[key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// unique some things
|
||||
this.transactions[transactionIndex].errors.source_account =
|
||||
Array.from(new Set(this.transactions[transactionIndex].errors.source_account));
|
||||
this.transactions[transactionIndex].errors.destination_account =
|
||||
Array.from(new Set(this.transactions[transactionIndex].errors.destination_account));
|
||||
|
||||
// unique some things
|
||||
this.transactions[transactionIndex].errors.source_account =
|
||||
Array.from(new Set(this.transactions[transactionIndex].errors.source_account));
|
||||
this.transactions[transactionIndex].errors.destination_account =
|
||||
Array.from(new Set(this.transactions[transactionIndex].errors.destination_account));
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -58,7 +58,7 @@ return [
|
||||
'no_rules_for_bill' => 'Αυτός ο λογαριασμός δεν έχει σχετιζόμενους κανόνες.',
|
||||
'go_to_asset_accounts' => 'Δείτε τους αποταμιευτικούς λογαριασμούς σας',
|
||||
'go_to_budgets' => 'Πηγαίνετε στους προϋπολογισμούς σας',
|
||||
'clone_instructions' => 'To clone a transaction, search for the "store as new" checkbox in the edit screen',
|
||||
'clone_instructions' => 'Για την κλωνοποίηση μιας συναλλαγής, αναζητήστε το πλαίσιο "αποθήκευση ως νέας" στην οθόνη τροποποίησης',
|
||||
'go_to_categories' => 'Πηγαίνεται στης κατηγορίες σας',
|
||||
'go_to_bills' => 'Πηγαίνετε στους λογαριασμούς σας',
|
||||
'go_to_expense_accounts' => 'Δείτε τους λογαριασμούς εξόδων σας',
|
||||
@ -124,8 +124,8 @@ return [
|
||||
'sum_of_income' => 'Σύνολο εσόδων',
|
||||
'liabilities' => 'Υποχρεώσεις',
|
||||
'spent_in_specific_budget' => 'Ξοδεύτηκαν στον προϋπολογισμό ":budget"',
|
||||
'spent_in_specific_double' => 'Spent in account(s) ":account"',
|
||||
'earned_in_specific_double' => 'Earned in account(s) ":account"',
|
||||
'spent_in_specific_double' => 'Ξοδεύτηκαν στον(ους) λογαριασμό(ούς) ":account"',
|
||||
'earned_in_specific_double' => 'Κερδήθηκαν στον(ους) λογαριασμό(ούς): ":account"',
|
||||
'source_account' => 'Source account',
|
||||
'destination_account' => 'Destination account',
|
||||
'sum_of_expenses_in_budget' => 'Ξοδεύτηκαν συνολικά στον προϋπολογισμό ":budget"',
|
||||
|
@ -37,7 +37,7 @@ return [
|
||||
'linked_to_rules' => 'Σχετικοί κανόνες',
|
||||
'active' => 'Είναι ενεργό;',
|
||||
'percentage' => 'pct.',
|
||||
'next_due' => 'Next due',
|
||||
'next_due' => 'Επόμενη προθεσμία',
|
||||
'transaction_type' => 'Τύπος',
|
||||
'lastActivity' => 'Τελευταία δραστηριότητα',
|
||||
'balanceDiff' => 'Διαφορά υπολοίπου',
|
||||
|
@ -37,12 +37,12 @@ return [
|
||||
'linked_to_rules' => 'Règles applicables',
|
||||
'active' => 'Actif ?',
|
||||
'percentage' => 'pct.',
|
||||
'next_due' => 'Next due',
|
||||
'next_due' => 'Prochaine échéance',
|
||||
'transaction_type' => 'Type',
|
||||
'lastActivity' => 'Activité récente',
|
||||
'balanceDiff' => 'Différence d\'équilibre',
|
||||
'matchesOn' => 'Correspond à',
|
||||
'other_meta_data' => 'Other meta data',
|
||||
'other_meta_data' => 'Autres métadonnées',
|
||||
'account_type' => 'Type de compte',
|
||||
'created_at' => 'Créé le',
|
||||
'account' => 'Compte',
|
||||
|
@ -39,7 +39,7 @@ return [
|
||||
'reports' => 'Raporty',
|
||||
'search_result' => 'Wyniki wyszukiwania dla ":query"',
|
||||
'withdrawal_list' => 'Wydatki',
|
||||
'Withdrawal_list' => 'Expenses',
|
||||
'Withdrawal_list' => 'Wydatki',
|
||||
'deposit_list' => 'Przychody, dochody oraz depozyty',
|
||||
'transfer_list' => 'Transfery',
|
||||
'transfers_list' => 'Transfery',
|
||||
|
@ -55,10 +55,10 @@ return [
|
||||
'new_withdrawal' => 'Nowa wypłata',
|
||||
'create_new_transaction' => 'Stwórz nową transakcję',
|
||||
'new_transaction' => 'Nowa transakcja',
|
||||
'no_rules_for_bill' => 'This bill has no rules associated to it.',
|
||||
'no_rules_for_bill' => 'Ten rachunek nie ma przypisanych reguł.',
|
||||
'go_to_asset_accounts' => 'Zobacz swoje konta aktywów',
|
||||
'go_to_budgets' => 'Przejdź do swoich budżetów',
|
||||
'clone_instructions' => 'To clone a transaction, search for the "store as new" checkbox in the edit screen',
|
||||
'clone_instructions' => 'Aby sklonować transakcję, poszukaj pola wyboru "Zapisz jako nową" na ekranie edycji',
|
||||
'go_to_categories' => 'Przejdź do swoich kategorii',
|
||||
'go_to_bills' => 'Przejdź do swoich rachunków',
|
||||
'go_to_expense_accounts' => 'Zobacz swoje konta wydatków',
|
||||
@ -85,7 +85,7 @@ return [
|
||||
'help_for_this_page' => 'Pomoc dla tej strony',
|
||||
'no_help_could_be_found' => 'Nie znaleziono tekstu pomocy.',
|
||||
'no_help_title' => 'Przepraszamy, wystąpił błąd.',
|
||||
'two_factor_welcome' => 'Hello!',
|
||||
'two_factor_welcome' => 'Cześć!',
|
||||
'two_factor_enter_code' => 'Aby kontynuować, wprowadź kod uwierzytelniania dwuskładnikowego. Twoja aplikacja może wygenerować go dla Ciebie.',
|
||||
'two_factor_code_here' => 'Wprowadź tutaj kod',
|
||||
'two_factor_title' => 'Weryfikacja dwuskładnikowa',
|
||||
@ -93,13 +93,13 @@ return [
|
||||
'two_factor_forgot_title' => 'Utracone uwierzytelnianie dwuskładnikowe',
|
||||
'two_factor_forgot' => 'Zapomniałem mojego uwierzytelnienia dwuskładnikowego.',
|
||||
'two_factor_lost_header' => 'Straciłeś uwierzytelnianie dwuskładnikowe?',
|
||||
'two_factor_lost_intro' => 'If you lost your backup codes as well, you have bad luck. This is not something you can fix from the web interface. You have two choices.',
|
||||
'two_factor_lost_intro' => 'Jeżeli także nie masz kodów, to niestety nie masz szczęścia. To nie jest coś, co możemy naprawić z poziomu przeglądarki. Masz dwie opcje.',
|
||||
'two_factor_lost_fix_self' => 'If you run your own instance of Firefly III, check the logs in <code>storage/logs</code> for instructions, or run <code>docker logs <container_id></code> to see the instructions (refresh this page).',
|
||||
'two_factor_lost_fix_owner' => 'W przeciwnym razie, powiadom właściciela strony, <a href="mailto::site_owner">:site_owner</a> i poproś go o zresetowanie Twojego uwierzytelnienia dwuskładnikowego.',
|
||||
'mfa_backup_code' => 'You have used a backup code to login to Firefly III. It can\'t be used again, so cross it from your list.',
|
||||
'pref_two_factor_new_backup_codes' => 'Get new backup codes',
|
||||
'pref_two_factor_backup_code_count' => 'You have :count valid backup code(s).',
|
||||
'2fa_i_have_them' => 'I stored them!',
|
||||
'pref_two_factor_new_backup_codes' => 'Wygeneruj nowe kody zapasowe',
|
||||
'pref_two_factor_backup_code_count' => 'Masz :count ważnych kodów zapasowych.',
|
||||
'2fa_i_have_them' => 'Kody zapisane!',
|
||||
'warning_much_data' => 'Załadowanie danych z :days dni może trochę potrwać.',
|
||||
'registered' => 'Zarejestrowałeś się pomyślnie!',
|
||||
'Default asset account' => 'Domyślne konto aktywów',
|
||||
@ -124,10 +124,10 @@ return [
|
||||
'sum_of_income' => 'Suma dochodów',
|
||||
'liabilities' => 'Zobowiązania',
|
||||
'spent_in_specific_budget' => 'Wydatki w budżecie ":budget"',
|
||||
'spent_in_specific_double' => 'Spent in account(s) ":account"',
|
||||
'earned_in_specific_double' => 'Earned in account(s) ":account"',
|
||||
'source_account' => 'Source account',
|
||||
'destination_account' => 'Destination account',
|
||||
'spent_in_specific_double' => 'Wydano z kont(a) ":account"',
|
||||
'earned_in_specific_double' => 'Zarobiono na konto(ta) ":account"',
|
||||
'source_account' => 'Konto źródłowe',
|
||||
'destination_account' => 'Konto docelowe',
|
||||
'sum_of_expenses_in_budget' => 'Wydano łącznie w budżecie ":budget"',
|
||||
'left_in_budget_limit' => 'Możliwe do wydania wg budżetu',
|
||||
'current_period' => 'Bieżący okres',
|
||||
@ -198,7 +198,7 @@ return [
|
||||
'button_register' => 'Zarejestruj',
|
||||
'authorization' => 'Autoryzacja',
|
||||
'active_bills_only' => 'tylko aktywne rachunki',
|
||||
'active_exp_bills_only' => 'active and expected bills only',
|
||||
'active_exp_bills_only' => 'tylko aktywne i oczekiwane rachunki',
|
||||
'average_per_bill' => 'średnia za rachunek',
|
||||
'expected_total' => 'oczekiwana suma',
|
||||
// API access
|
||||
@ -239,13 +239,13 @@ return [
|
||||
'search_modifier_amount_less' => 'Kwota jest mniejsza niż :value',
|
||||
'search_modifier_amount_more' => 'Kwota jest większa niż :value',
|
||||
'search_modifier_source' => 'Konto źródłowe to :value',
|
||||
'search_modifier_from' => 'Source account is :value',
|
||||
'search_modifier_from' => 'Konto źródłowe to :value',
|
||||
'search_modifier_destination' => 'Konto docelowe to :value',
|
||||
'search_modifier_to' => 'Destination account is :value',
|
||||
'search_modifier_tag' => 'Tag is ":value"',
|
||||
'search_modifier_category' => 'Category is ":value"',
|
||||
'search_modifier_budget' => 'Budget is ":value"',
|
||||
'search_modifier_bill' => 'Bill is ":value"',
|
||||
'search_modifier_to' => 'Konto docelowe to :value',
|
||||
'search_modifier_tag' => 'Tag to ":value"',
|
||||
'search_modifier_category' => 'Kategoria to ":value"',
|
||||
'search_modifier_budget' => 'Budżet to ":value"',
|
||||
'search_modifier_bill' => 'Rachunek to ":value"',
|
||||
'search_modifier_type' => 'Transakcja jest typu :value',
|
||||
'search_modifier_date' => 'Data transakcji to :value',
|
||||
'search_modifier_date_before' => 'Data transakcji jest przed :value',
|
||||
@ -498,10 +498,10 @@ return [
|
||||
'pref_two_factor_auth_code_help' => 'Zeskanuj kod QR za pomocą aplikacji w telefonie, takiej jak Authy lub Google Authenticator i wprowadź wygenerowany kod.',
|
||||
'pref_two_factor_auth_reset_code' => 'Zresetuj kod weryfikacyjny',
|
||||
'pref_two_factor_auth_disable_2fa' => 'Wyłącz weryfikację dwuetapową',
|
||||
'2fa_use_secret_instead' => 'If you cannot scan the QR code, feel free to use the secret instead: <code>:secret</code>.',
|
||||
'2fa_backup_codes' => 'Store these backup codes for access in case you lose your device.',
|
||||
'2fa_already_enabled' => '2-step verification is already enabled.',
|
||||
'wrong_mfa_code' => 'This MFA code is not valid.',
|
||||
'2fa_use_secret_instead' => 'Jeżeli nie możesz zeskanować kodu QR użyj sekretu: <code>:secret</code>.',
|
||||
'2fa_backup_codes' => 'Zachowaj te kody na wypadek zgubienia urządzenia.',
|
||||
'2fa_already_enabled' => 'Uwierzytelnianie dwuskładnikowe jest już aktywne.',
|
||||
'wrong_mfa_code' => 'Ten kod uwierzytelniania nie jest prawidłowy.',
|
||||
'pref_save_settings' => 'Zapisz ustawienia',
|
||||
'saved_preferences' => 'Preferencje zostały zapisane!',
|
||||
'preferences_general' => 'Ogólne',
|
||||
@ -579,7 +579,7 @@ return [
|
||||
'update_attachment' => 'Aktualizuj załącznik',
|
||||
'delete_attachment' => 'Usuń załącznik ":name"',
|
||||
'attachment_deleted' => 'Usunięto załącznik ":name"',
|
||||
'liabilities_deleted' => 'Deleted liability ":name"',
|
||||
'liabilities_deleted' => 'Usunięto zobowiązanie ":name"',
|
||||
'attachment_updated' => 'Zmodyfikowano załącznik ":name"',
|
||||
'upload_max_file_size' => 'Maksymalny rozmiar pliku to: :size',
|
||||
'list_all_attachments' => 'Lista wszystkich załączników',
|
||||
@ -646,7 +646,7 @@ return [
|
||||
'update_currency' => 'Modyfikuj walutę',
|
||||
'new_default_currency' => ':name jest teraz domyślną walutą.',
|
||||
'cannot_delete_currency' => 'Nie można usunąć waluty :name, ponieważ jest ona nadal używana.',
|
||||
'cannot_disable_currency_journals' => 'Cannot disable :name because transactions are still using it.',
|
||||
'cannot_disable_currency_journals' => 'Nie można wyłączyć :name ponieważ istnieją powiązane transakcje.',
|
||||
'cannot_disable_currency_last_left' => 'Cannot disable :name because it is the last enabled currency.',
|
||||
'cannot_disable_currency_account_meta' => 'Cannot disable :name because it is used in asset accounts.',
|
||||
'cannot_disable_currency_bills' => 'Cannot disable :name because it is used in bills.',
|
||||
@ -800,7 +800,7 @@ return [
|
||||
'reconcile_options' => 'Opcje uzgadniania',
|
||||
'reconcile_range' => 'Zakres rozrachunku',
|
||||
'start_reconcile' => 'Rozpocznij uzgadnianie',
|
||||
'cash_account_type' => 'Cash',
|
||||
'cash_account_type' => 'Gotówka',
|
||||
'cash' => 'gotówka',
|
||||
'cant_find_redirect_account' => 'Firefly III tried to redirect you but couldn\'t. Sorry about that. Back to the index.',
|
||||
'account_type' => 'Typ konta',
|
||||
|
@ -30,7 +30,7 @@ return [
|
||||
'index_help' => 'Jeśli potrzebujesz pomocy na stronie lub formularzu, naciśnij ten przycisk.',
|
||||
'index_outro' => 'Większość stron z Firefly III zacznie się od małego wprowadzenia jak to. Skontaktuj się ze mną, jeśli masz pytania lub komentarze. Miłego korzystania!',
|
||||
'index_sidebar-toggle' => 'Aby utworzyć nowe transakcje, konta lub inne rzeczy, użyj menu pod tą ikoną.',
|
||||
'index_cash_account' => 'These are the accounts created so far. You can use the cash account to track cash expenses but it\'s not mandatory of course.',
|
||||
'index_cash_account' => 'To są dotychczas utworzone konta. Możesz użyć konta gotówkowego do śledzenia wydatków gotówkowych, ale oczywiście nie jest to obowiązkowe.',
|
||||
|
||||
// transactions (withdrawal)
|
||||
'transactions_create_withdrawal_source' => 'Select your favorite asset account or liability from this dropdown.',
|
||||
|
@ -58,7 +58,7 @@ return [
|
||||
'no_rules_for_bill' => 'Esta conta não tem regras associadas a ela.',
|
||||
'go_to_asset_accounts' => 'Veja suas contas ativas',
|
||||
'go_to_budgets' => 'Vá para seus orçamentos',
|
||||
'clone_instructions' => 'To clone a transaction, search for the "store as new" checkbox in the edit screen',
|
||||
'clone_instructions' => 'Para clonar uma transação, procure pela caixa de seleção "salvar como nova" na tela de edição',
|
||||
'go_to_categories' => 'Vá para suas categorias',
|
||||
'go_to_bills' => 'Vá para suas faturas',
|
||||
'go_to_expense_accounts' => 'Veja suas despesas',
|
||||
|
@ -42,7 +42,7 @@ return [
|
||||
'lastActivity' => 'Последняя активность',
|
||||
'balanceDiff' => 'Разность баланса',
|
||||
'matchesOn' => 'Совпадает на',
|
||||
'other_meta_data' => 'Other meta data',
|
||||
'other_meta_data' => 'Другие метаданные',
|
||||
'account_type' => 'Тип профиля',
|
||||
'created_at' => 'Создан',
|
||||
'account' => 'Счёт',
|
||||
|
@ -101,7 +101,7 @@
|
||||
{# destination account name for withdrawals #}
|
||||
{#{{ ExpandedForm.text('destination_name', null, {label: trans('form.expense_account')}) }} #}
|
||||
|
||||
{# for withdrawals, also a drop down with expense accounts, loans, debts, mortgages or (cash). #}
|
||||
{# NEW for withdrawals, also a drop down with expense accounts, loans, debts, mortgages or (cash). #}
|
||||
{{ AccountForm.activeWithdrawalDestinations('withdrawal_destination_id', null, {label: trans('form.withdrawal_destination_id')}) }}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -77,21 +77,38 @@
|
||||
</td>
|
||||
|
||||
<td class="hide-balance_before" style="text-align: right;">
|
||||
{{ formatAmountBySymbol(journal.balance_before, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{{ formatAmountBySymbol(journal.balance_before, auditData[account.id].currency.symbol, auditData[account.id].currency.decimal_places) }}
|
||||
</td>
|
||||
<td class="hide-amount" style="text-align: right;">
|
||||
{% if account.id == journal.destination_account_id and journal.transaction_type_type == 'Opening balance' %}
|
||||
{{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Deposit' %}
|
||||
{{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{% else %}
|
||||
{{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
|
||||
{% if auditData[account.id].currency.id == journal.currency_id %}
|
||||
{% if account.id == journal.destination_account_id and journal.transaction_type_type == 'Opening balance' %}
|
||||
{{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Deposit' %}
|
||||
{{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Transfer' %}
|
||||
{{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{% else %}
|
||||
{{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if auditData[account.id].currency.id == journal.foreign_currency_id %}
|
||||
{% if account.id == journal.destination_account_id and journal.transaction_type_type == 'Opening balance' %}
|
||||
{{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}
|
||||
{% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Deposit' %}
|
||||
{{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}
|
||||
{% elseif account.id == journal.destination_account_id and journal.transaction_type_type == 'Transfer' %}
|
||||
{{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}
|
||||
{% else %}
|
||||
{{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
|
||||
<td class="hide-balance_after" style="text-align: right;">
|
||||
{{ formatAmountBySymbol(journal.balance_after, journal.currency_symbol, journal.currency_decimal_places) }}
|
||||
{{ formatAmountBySymbol(journal.balance_after, auditData[account.id].currency.symbol, auditData[account.id].currency.decimal_places) }}
|
||||
</td>
|
||||
|
||||
<td class="hide-date">{{ journal.date.formatLocalized(monthAndDayFormat) }}</td>
|
||||
|
@ -121,7 +121,8 @@
|
||||
var edit_bulk_selected_txt = "{{ trans('firefly.bulk_edit')|escape('js') }}";
|
||||
|
||||
var searchQuery = "{{ fullQuery|escape('js') }}";
|
||||
var searchUri = "{{ route('search.search') }}";
|
||||
var searchUri = "{{ route('search.search') }}?page={{ page }}";
|
||||
var searchPage = {{ page }};
|
||||
</script>
|
||||
{# required for groups.twig #}
|
||||
<script type="text/javascript" src="v1/js/ff/list/groups.js?v={{ FF_VERSION }}"></script>
|
||||
|
@ -1,6 +1,10 @@
|
||||
<p>
|
||||
<p class="search_count">
|
||||
{{ trans('firefly.search_found_transactions', {count: groups.count, time: searchTime}) }}
|
||||
{% if hasPages %}
|
||||
{{ trans('firefly.search_found_transactions', {count: '>'~groups.perPage, time: searchTime}) }}
|
||||
{% else %}
|
||||
{{ trans('firefly.search_found_transactions', {count: groups.count, time: searchTime}) }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% include 'list.groups' %}
|
||||
|
Loading…
Reference in New Issue
Block a user