Merge branch 'release/5.0.0-alpha.1'

This commit is contained in:
James Cole 2019-12-27 07:15:08 +01:00
commit fb9ac50828
188 changed files with 3934 additions and 9272 deletions

View File

@ -62,8 +62,9 @@ if [[ $DKR_RUN_MIGRATION == "false" ]]; then
fi
if [[ $DKR_RUN_MIGRATION != "false" ]]; then
echo "Running migration commands..."
php artisan firefly-iii:create-database
php artisan migrate --seed
php artisan migrate --seed --no-interaction --force
php artisan firefly-iii:decrypt-all
fi
@ -73,6 +74,7 @@ if [[ $DKR_RUN_UPGRADE == "false" ]]; then
fi
if [[ $DKR_RUN_UPGRADE != "false" ]]; then
echo 'Running upgrade commands...'
php artisan firefly-iii:transaction-identifiers
php artisan firefly-iii:migrate-to-groups
php artisan firefly-iii:account-currencies
@ -90,10 +92,11 @@ fi
# there are 15 verify commands
if [[ $DKR_RUN_VERIFY == "false" ]]; then
echo 'Will NOT run verify commands.'
echo 'Will NOT run verification commands.'
fi
if [[ $DKR_RUN_VERIFY != "false" ]]; then
echo 'Running verification commands...'
php artisan firefly-iii:fix-piggies
php artisan firefly-iii:create-link-types
php artisan firefly-iii:create-access-tokens
@ -117,6 +120,7 @@ if [[ $DKR_RUN_REPORT == "false" ]]; then
fi
if [[ $DKR_RUN_REPORT != "false" ]]; then
echo 'Running report commands...'
php artisan firefly-iii:report-empty-objects
php artisan firefly-iii:report-sum
fi
@ -129,6 +133,7 @@ if [[ $DKR_RUN_REPORT == "false" ]]; then
fi
if [[ $DKR_RUN_PASSPORT_INSTALL != "false" ]]; then
echo 'Generating new OAuth keys...'
php artisan passport:install
fi

View File

@ -66,18 +66,6 @@ REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB="0" # always use quotes
REDIS_CACHE_DB="1"
# You can configure another file storage backend if you cannot use the local storage option.
# To set this up, fill in the following variables. The upload path is used to store uploaded
# files and the export path is to store exported data (before download).
SFTP_HOST=
SFTP_PORT=
SFTP_UPLOAD_PATH=
SFTP_EXPORT_PATH=
# SFTP uses either the username/password combination or the private key to authenticate.
SFTP_USERNAME=
SFTP_PASSWORD=
SFTP_PRIV_KEY=
# Cookie settings. Should not be necessary to change these.
COOKIE_PATH="/"

View File

@ -14,21 +14,21 @@ jobs:
include:
- dist: xenial
arch: amd64
env: ARCH=amd64 CHANNEL=alpha VERSION=4.8.3-alpha.1
env: ARCH=amd64 CHANNEL=alpha VERSION=5.0.0-alpha.1
stage: build
script: ./.deploy/docker/travis.sh
- dist: xenial
arch: amd64
env: ARCH=arm CHANNEL=alpha VERSION=4.8.3-alpha.1
env: ARCH=arm CHANNEL=alpha VERSION=5.0.0-alpha.1
stage: build
script: ./.deploy/docker/travis.sh
- dist: xenial
arch: arm64
env: ARCH=arm64 CHANNEL=alpha VERSION=4.8.3-alpha.1
env: ARCH=arm64 CHANNEL=alpha VERSION=5.0.0-alpha.1
stage: build
script: ./.deploy/docker/travis.sh
- dist: xenial
arch: amd64
env: CHANNEL=alpha VERSION=4.8.3-alpha.1
env: CHANNEL=alpha VERSION=5.0.0-alpha.1
stage: manifest
script: ./.deploy/docker/manifest.sh

View File

@ -27,6 +27,7 @@ use Exception;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Console\Command;
use Log;
/**
* Class DeleteEmptyGroups
@ -54,6 +55,7 @@ class DeleteEmptyGroups extends Command
*/
public function handle(): int
{
Log::debug(sprintf('Now in %s', __METHOD__));
$start = microtime(true);
$groupIds =
TransactionGroup
@ -61,6 +63,7 @@ class DeleteEmptyGroups extends Command
->whereNull('transaction_journals.id')->get(['transaction_groups.id'])->pluck('id')->toArray();
$total = count($groupIds);
Log::debug(sprintf('Count is %d', $total));
if ($total > 0) {
$this->info(sprintf('Deleted %d empty transaction group(s).', $total));

View File

@ -82,9 +82,6 @@ class IndexController extends Controller
$page = 0 === (int)$request->get('page') ? 1 : (int)$request->get('page');
$pageSize = (int)app('preferences')->get('listPageSize', 50)->data;
$collection = $this->recurring->get();
$today = new Carbon;
$year = new Carbon;
$year->addYear();
// split collection
$total = $collection->count();
@ -98,6 +95,14 @@ class IndexController extends Controller
$recurring = [];
/** @var Recurrence $recurrence */
foreach ($recurrences as $recurrence) {
$today = new Carbon;
$year = new Carbon;
$year->addYear();
if($recurrence->first_date > $today) {
$today =clone $recurrence->first_date;
$year = clone $today;
$year->addYear();
}
$array = $transformer->transform($recurrence);
$array['first_date'] = new Carbon($array['first_date']);
$array['repeat_until'] = null === $array['repeat_until'] ? null : new Carbon($array['repeat_until']);

View File

@ -150,6 +150,21 @@ class Account extends Model
return $this->belongsTo(AccountType::class);
}
/**
* Get the account number.
*
* @return string
*/
public function getAccountNumberAttribute(): string
{
/** @var AccountMeta $metaValue */
$metaValue = $this->accountMeta()
->where('name', 'account_number')
->first();
return $metaValue ? $metaValue->data : '';
}
/**
* @return string
* @codeCoverageIgnore

View File

@ -66,7 +66,7 @@ use FireflyIII\Support\Twig\Translation;
use FireflyIII\Validation\FireflyValidator;
use Illuminate\Support\ServiceProvider;
use Twig;
use Twig_Extension_Debug;
use Twig\Extension\DebugExtension;
use TwigBridge\Extension\Loader\Functions;
use Validator;
@ -90,14 +90,14 @@ class FireflyServiceProvider extends ServiceProvider
return new FireflyValidator($translator, $data, $rules, $messages);
}
);
$config = app('config');
Twig::addExtension(new Functions($config));
//$config = app('config');
//Twig::addExtension(new Functions($config));
Twig::addExtension(new General);
Twig::addExtension(new TransactionGroupTwig);
Twig::addExtension(new Translation);
Twig::addExtension(new Rule);
Twig::addExtension(new AmountFormat);
Twig::addExtension(new Twig_Extension_Debug);
//Twig::addExtension(new DebugExtension);
}
/**

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Journal;
use Carbon\Carbon;
use FireflyIII\Models\Account;
use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionGroup;
@ -377,4 +378,26 @@ class JournalRepository implements JournalRepositoryInterface
return $value;
}
/**
* @inheritDoc
*/
public function getSourceAccount(TransactionJournal $journal): Account
{
/** @var Transaction $transaction */
$transaction = $journal->transactions()->with('account')->where('amount', '<', 0)->first();
return $transaction->account;
}
/**
* @inheritDoc
*/
public function getDestinationAccount(TransactionJournal $journal): Account
{
/** @var Transaction $transaction */
$transaction = $journal->transactions()->with('account')->where('amount', '>', 0)->first();
return $transaction->account;
}
}

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Journal;
use Carbon\Carbon;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionJournalLink;
@ -109,6 +110,22 @@ interface JournalRepositoryInterface
*/
public function getJournalSourceAccounts(TransactionJournal $journal): Collection;
/**
* Returns the source account of the journal.
*
* @param TransactionJournal $journal
* @return Account
*/
public function getSourceAccount(TransactionJournal $journal): Account;
/**
* Returns the destination account of the journal.
*
* @param TransactionJournal $journal
* @return Account
*/
public function getDestinationAccount(TransactionJournal $journal): Account;
/**
* Return total amount of journal. Is always positive.
*

View File

@ -301,9 +301,11 @@ class TagRepository implements TagRepositoryInterface
$journals = $collector->getExtractedJournals();
$sums = [
TransactionType::WITHDRAWAL => '0',
TransactionType::DEPOSIT => '0',
TransactionType::TRANSFER => '0',
TransactionType::WITHDRAWAL => '0',
TransactionType::DEPOSIT => '0',
TransactionType::TRANSFER => '0',
TransactionType::RECONCILIATION => '0',
TransactionType::OPENING_BALANCE => '0',
];
/** @var array $journal */

View File

@ -177,7 +177,7 @@ trait UserNavigation
$return = app('url')->previous();
/** @var ViewErrorBag $errors */
$errors = session()->get('errors');
$forbidden = ['json'];
$forbidden = ['json', 'debug'];
if ((null === $errors || (null !== $errors && 0 === $errors->count())) && !Str::contains($return, $forbidden)) {
Log::debug(sprintf('Saving URL %s under key %s', $return, $identifier));
session()->put($identifier, $return);

View File

@ -21,10 +21,19 @@
namespace FireflyIII\Support\Search;
use Illuminate\Support\Collection;
/**
* Class TransactionSearch
*/
class TransactionSearch implements GenericSearchInterface
{
/**
* @inheritDoc
*/
public function search(): Collection
{
// TODO: Implement search() method.
}
}

View File

@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
@ -72,31 +71,26 @@ final class FromAccountContains extends AbstractTrigger implements TriggerInterf
*/
public function triggered(TransactionJournal $journal): bool
{
$fromAccountName = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
/** @var Account $account */
foreach ($repository->getJournalSourceAccounts($journal, false) as $account) {
$fromAccountName .= strtolower($account->name);
}
$search = strtolower($this->triggerValue);
$strpos = strpos($fromAccountName, $search);
$source = $repository->getSourceAccount($journal);
$strpos = stripos($source->name, $this->triggerValue);
if (!(false === $strpos)) {
Log::debug(sprintf('RuleTrigger FromAccountContains for journal #%d: "%s" contains "%s", return true.', $journal->id, $fromAccountName, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" contains "%s", return true.',
get_class($this), $journal->id, $source->name, $this->triggerValue
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger FromAccountContains for journal #%d: "%s" does not contain "%s", return false.',
$journal->id,
$fromAccountName,
$search
'RuleTrigger %s for journal #%d: "%s" does not contain "%s", return false.',
get_class($this), $journal->id, $source->name, $this->triggerValue
)
);

View File

@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
@ -72,37 +71,44 @@ final class FromAccountEnds extends AbstractTrigger implements TriggerInterface
*/
public function triggered(TransactionJournal $journal): bool
{
$name = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
/** @var Account $account */
foreach ($repository->getJournalSourceAccounts($journal, false) as $account) {
$name .= strtolower($account->name);
}
$nameLength = strlen($name);
$search = strtolower($this->triggerValue);
$repository = app(JournalRepositoryInterface::class);
$source = $repository->getSourceAccount($journal);
$nameLength = strlen($source->name);
$search = $this->triggerValue;
$searchLength = strlen($search);
$part = substr($source->name, $searchLength * -1);
// if the string to search for is longer than the account name,
// it will never be in the account name.
if ($searchLength > $nameLength) {
Log::debug(sprintf('RuleTrigger FromAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $name, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.',
get_class($this), $journal->id, $source->name, $search
)
);
return false;
}
$part = substr($name, $searchLength * -1);
if ($part === $search) {
Log::debug(sprintf('RuleTrigger FromAccountEnds for journal #%d: "%s" ends with "%s", return true.', $journal->id, $name, $search));
if (strtolower($part) === strtolower($search)) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" ends with "%s", return true.',
get_class($this), $journal->id, $source->name, $search
)
);
return true;
}
Log::debug(sprintf('RuleTrigger FromAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $name, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.',
get_class($this), $journal->id, $source->name, $search
)
);
return false;
}

View File

@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
@ -72,25 +71,20 @@ final class FromAccountIs extends AbstractTrigger implements TriggerInterface
*/
public function triggered(TransactionJournal $journal): bool
{
$name = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$source = $repository->getSourceAccount($journal);
$search = strtolower($this->triggerValue);
/** @var Account $account */
foreach ($repository->getJournalSourceAccounts($journal, false) as $account) {
$name .= strtolower($account->name);
}
$search = strtolower($this->triggerValue);
if ($name === $search) {
Log::debug(sprintf('RuleTrigger FromAccountIs for journal #%d: "%s" is "%s", return true.', $journal->id, $name, $search));
if (strtolower($source->name) === $search) {
Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is "%s", return true.',
get_class($this), $journal->id, $source->name, $search));
return true;
}
Log::debug(sprintf('RuleTrigger FromAccountIs for journal #%d: "%s" is NOT "%s", return false.', $journal->id, $name, $search));
Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is NOT "%s", return false.',
get_class($this), $journal->id, $source->name, $search));
return false;
}

View File

@ -0,0 +1,100 @@
<?php
/**
* FromAccountContains.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class FromAccountContains.
*/
final class FromAccountNumberContains extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from-account contains X
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$source = $repository->getSourceAccount($journal);
$strpos1 = stripos((string)$source->iban, $this->triggerValue);
$strpos2 = stripos($source->account_number, $this->triggerValue);
if (!(false === $strpos1) || !(false === $strpos2)) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" contains "%s", return true.',
get_class($this), $journal->id, (string)$source->iban, $source->account_number, $this->triggerValue
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" does not contain "%s", return false.',
get_class($this), $journal->id, (string)$source->iban, $source->account_number, $this->triggerValue
)
);
return false;
}
}

View File

@ -0,0 +1,104 @@
<?php
/**
* FromAccountEnds.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class FromAccountNumberEnds.
*/
final class FromAccountNumberEnds extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from account ends with X
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$source = $repository->getSourceAccount($journal);
$search = strtolower($this->triggerValue);
$searchLength = strlen($search);
$part1 = substr((string)$source->iban, $searchLength * -1);
$part2 = substr($source->account_number, $searchLength * -1);
if (strtolower($part1) === $search
|| strtolower($part2) === $search) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" ends with "%s", return true.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" do not end with "%s", return false.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return false;
}
}

View File

@ -0,0 +1,99 @@
<?php
/**
* FromAccountNumberIs.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class FromAccountNumberIs.
*/
final class FromAccountNumberIs extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from-account is X.
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$source = $repository->getSourceAccount($journal);
$search = strtolower($this->triggerValue);
if (strtolower((string)$source->iban) === $search || strtolower($source->account_number) === $search) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" is "%s", return true.', $journal->id,
get_class($this), (string)$source->iban, $source->account_number, $search
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" are NOT "%s", return false.',
get_class($this), $journal->id, (string)$source->iban, $source->account_number, $search
)
);
return false;
}
}

View File

@ -0,0 +1,101 @@
<?php
/**
* FromAccountNumberStarts.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class FromAccountNumberStarts.
*/
final class FromAccountNumberStarts extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from-account starts with X.
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$source = $repository->getSourceAccount($journal);
$search = strtolower($this->triggerValue);
$part1 = strtolower(substr((string)$source->iban, 0, strlen($search)));
$part2 = strtolower(substr($source->account_number, 0, strlen($search)));
if ($part1 === $search || $part2 === $search) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" starts with "%s", return true.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" do not start with "%s", return false.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return false;
}
}

View File

@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
@ -72,26 +71,29 @@ final class FromAccountStarts extends AbstractTrigger implements TriggerInterfac
*/
public function triggered(TransactionJournal $journal): bool
{
$name = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
/** @var Account $account */
foreach ($repository->getJournalSourceAccounts($journal, false) as $account) {
$name .= strtolower($account->name);
}
$search = strtolower($this->triggerValue);
$part = substr($name, 0, strlen($search));
$source = $repository->getSourceAccount($journal);
$search = strtolower($this->triggerValue);
$part = strtolower(substr($source->name, 0, strlen($search)));
if ($part === $search) {
Log::debug(sprintf('RuleTrigger FromAccountStarts for journal #%d: "%s" starts with "%s", return true.', $journal->id, $name, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" starts with "%s", return true.',
get_class($this), $journal->id, $source->name, $search
)
);
return true;
}
Log::debug(sprintf('RuleTrigger FromAccountStarts for journal #%d: "%s" does not start with "%s", return false.', $journal->id, $name, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" does not start with "%s", return false.',
get_class($this), $journal->id, $source->name, $search
)
);
return false;
}

View File

@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
@ -65,39 +64,32 @@ final class ToAccountContains extends AbstractTrigger implements TriggerInterfac
/**
* Returns true when to-account contains X
* TODO
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
$toAccountName = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
/** @var Account $account */
foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) {
$toAccountName .= strtolower($account->name);
}
$search = strtolower($this->triggerValue);
$strpos = strpos($toAccountName, $search);
$dest = $repository->getDestinationAccount($journal);
$strpos = stripos($dest->name, $this->triggerValue);
if (!(false === $strpos)) {
Log::debug(sprintf('RuleTrigger ToAccountContains for journal #%d: "%s" contains "%s", return true.', $journal->id, $toAccountName, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" contains "%s", return true.',
get_class($this), $journal->id, $dest->name, $this->triggerValue
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger ToAccountContains for journal #%d: "%s" does not contain "%s", return false.',
$journal->id,
$toAccountName,
$search
'RuleTrigger %s for journal #%d: "%s" does not contain "%s", return false.',
get_class($this), $journal->id, $dest->name, $this->triggerValue
)
);

View File

@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
@ -72,37 +71,44 @@ final class ToAccountEnds extends AbstractTrigger implements TriggerInterface
*/
public function triggered(TransactionJournal $journal): bool
{
$toAccountName = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
/** @var Account $account */
foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) {
$toAccountName .= strtolower($account->name);
}
$toAccountNameLength = strlen($toAccountName);
$search = strtolower($this->triggerValue);
$searchLength = strlen($search);
$repository = app(JournalRepositoryInterface::class);
$dest = $repository->getDestinationAccount($journal);
$nameLength = strlen($dest->name);
$search = $this->triggerValue;
$searchLength = strlen($search);
$part = substr($dest->name, $searchLength * -1);
// if the string to search for is longer than the account name,
// return false
if ($searchLength > $toAccountNameLength) {
Log::debug(sprintf('RuleTrigger ToAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $toAccountName, $search));
// it will never be in the account name.
if ($searchLength > $nameLength) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.',
get_class($this), $journal->id, $dest->name, $search
)
);
return false;
}
$part = substr($toAccountName, $searchLength * -1);
if ($part === $search) {
Log::debug(sprintf('RuleTrigger ToAccountEnds for journal #%d: "%s" ends with "%s", return true.', $journal->id, $toAccountName, $search));
if (strtolower($part) === strtolower($search)) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" ends with "%s", return true.',
get_class($this), $journal->id, $dest->name, $search
)
);
return true;
}
Log::debug(sprintf('RuleTrigger ToAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $toAccountName, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.',
get_class($this), $journal->id, $dest->name, $search
)
);
return false;
}

View File

@ -72,25 +72,20 @@ final class ToAccountIs extends AbstractTrigger implements TriggerInterface
*/
public function triggered(TransactionJournal $journal): bool
{
$toAccountName = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$dest = $repository->getDestinationAccount($journal);
$search = strtolower($this->triggerValue);
/** @var Account $account */
foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) {
$toAccountName .= strtolower($account->name);
}
$search = strtolower($this->triggerValue);
if ($toAccountName === $search) {
Log::debug(sprintf('RuleTrigger ToAccountIs for journal #%d: "%s" is "%s", return true.', $journal->id, $toAccountName, $search));
if (strtolower($dest->name) === $search) {
Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is "%s", return true.',
get_class($this), $journal->id, $dest->name, $search));
return true;
}
Log::debug(sprintf('RuleTrigger ToAccountIs for journal #%d: "%s" is NOT "%s", return false.', $journal->id, $toAccountName, $search));
Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is NOT "%s", return false.',
get_class($this), $journal->id, $dest->name, $search));
return false;
}

View File

@ -0,0 +1,100 @@
<?php
/**
* ToAccountNumberContains.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class ToAccountNumberContains.
*/
final class ToAccountNumberContains extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from-account contains X
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$dest = $repository->getDestinationAccount($journal);
$strpos1 = stripos((string)$dest->iban, $this->triggerValue);
$strpos2 = stripos($dest->account_number, $this->triggerValue);
if (!(false === $strpos1) || !(false === $strpos2)) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" contains "%s", return true.',
get_class($this), $journal->id, (string)$dest->iban, $dest->account_number, $this->triggerValue
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" does not contain "%s", return false.',
get_class($this), $journal->id, (string)$dest->iban, $dest->account_number, $this->triggerValue
)
);
return false;
}
}

View File

@ -0,0 +1,104 @@
<?php
/**
* ToAccountNumberEnds.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class ToAccountNumberEnds.
*/
final class ToAccountNumberEnds extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from account ends with X
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$dest = $repository->getDestinationAccount($journal);
$search = strtolower($this->triggerValue);
$searchLength = strlen($search);
$part1 = substr((string)$dest->iban, $searchLength * -1);
$part2 = substr($dest->account_number, $searchLength * -1);
if (strtolower($part1) === $search
|| strtolower($part2) === $search) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" ends with "%s", return true.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" do not end with "%s", return false.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return false;
}
}

View File

@ -0,0 +1,99 @@
<?php
/**
* ToAccountNumberIs.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class ToAccountNumberIs.
*/
final class ToAccountNumberIs extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from-account is X.
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$dest = $repository->getDestinationAccount($journal);
$search = strtolower($this->triggerValue);
if (strtolower((string)$dest->iban) === $search || strtolower($dest->account_number) === $search) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" is "%s", return true.', $journal->id,
get_class($this), (string)$dest->iban, $dest->account_number, $search
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" are NOT "%s", return false.',
get_class($this), $journal->id, (string)$dest->iban, $dest->account_number, $search
)
);
return false;
}
}

View File

@ -0,0 +1,101 @@
<?php
/**
* ToAccountNumberStarts.php
* Copyright (c) 2019 thegrumpydictator@gmail.com
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\TransactionRules\Triggers;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
/**
* Class FromAccountNumberStarts.
*/
final class ToAccountNumberStarts extends AbstractTrigger implements TriggerInterface
{
/**
* A trigger is said to "match anything", or match any given transaction,
* when the trigger value is very vague or has no restrictions. Easy examples
* are the "AmountMore"-trigger combined with an amount of 0: any given transaction
* has an amount of more than zero! Other examples are all the "Description"-triggers
* which have hard time handling empty trigger values such as "" or "*" (wild cards).
*
* If the user tries to create such a trigger, this method MUST return true so Firefly III
* can stop the storing / updating the trigger. If the trigger is in any way restrictive
* (even if it will still include 99.9% of the users transactions), this method MUST return
* false.
*
* @param mixed $value
*
* @return bool
*/
public static function willMatchEverything($value = null): bool
{
if (null !== $value) {
$res = '' === (string)$value;
if (true === $res) {
Log::error(sprintf('Cannot use %s with "" as a value.', self::class));
}
return $res;
}
Log::error(sprintf('Cannot use %s with a null value.', self::class));
return true;
}
/**
* Returns true when from-account starts with X.
*
* @param TransactionJournal $journal
*
* @return bool
*/
public function triggered(TransactionJournal $journal): bool
{
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
$dest = $repository->getDestinationAccount($journal);
$search = strtolower($this->triggerValue);
$part1 = strtolower(substr((string)$dest->iban, 0, strlen($search)));
$part2 = strtolower(substr($dest->account_number, 0, strlen($search)));
if ($part1 === $search || $part2 === $search) {
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" or "%s" starts with "%s", return true.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return true;
}
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" and "%s" do not start with "%s", return false.',
get_class($this), $journal->id, $part1, $part2, $search
)
);
return false;
}
}

View File

@ -72,25 +72,29 @@ final class ToAccountStarts extends AbstractTrigger implements TriggerInterface
*/
public function triggered(TransactionJournal $journal): bool
{
$toAccountName = '';
/** @var JournalRepositoryInterface $repository */
$repository = app(JournalRepositoryInterface::class);
/** @var Account $account */
foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) {
$toAccountName .= strtolower($account->name);
}
$search = strtolower($this->triggerValue);
$part = substr($toAccountName, 0, strlen($search));
$dest = $repository->getDestinationAccount($journal);
$search = strtolower($this->triggerValue);
$part = strtolower(substr($dest->name, 0, strlen($search)));
if ($part === $search) {
Log::debug(sprintf('RuleTrigger ToAccountStarts for journal #%d: "%s" starts with "%s", return true.', $journal->id, $toAccountName, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" starts with "%s", return true.',
get_class($this), $journal->id, $dest->name, $search
)
);
return true;
}
Log::debug(sprintf('RuleTrigger ToAccountStarts for journal #%d: "%s" does not start with "%s", return false.', $journal->id, $toAccountName, $search));
Log::debug(
sprintf(
'RuleTrigger %s for journal #%d: "%s" does not start with "%s", return false.',
get_class($this), $journal->id, $dest->name, $search
)
);
return false;
}

View File

@ -162,6 +162,7 @@ class AccountValidator
$result = $this->validateOBSource($accountId, $accountName);
break;
case TransactionType::RECONCILIATION:
Log::debug('Calling validateReconciliationSource');
$result = $this->validateReconciliationSource($accountId);
break;
}
@ -437,19 +438,41 @@ class AccountValidator
*/
private function validateReconciliationDestination(?int $accountId): bool
{
Log::debug('Now in validateReconciliationDestination');
if (null === $accountId) {
Log::debug('Return FALSE');
return false;
}
$result = $this->accountRepository->findNull($accountId);
$types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::RECONCILIATION];
if (null === $result) {
$this->destError = (string)trans('validation.deposit_dest_bad_data', ['id' => $accountId, 'name' => '']);
Log::debug('Return FALSE');
return false;
}
// $types depends on type of source:
$types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE];
// if source is reconciliation, destination can't be.
if (null !== $this->source && AccountType::RECONCILIATION === $this->source->accountType->type) {
$types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE];
}
// if source is not reconciliation, destination MUST be.
if (null !== $this->source
&& in_array(
$this->source->accountType->type, [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], true
)) {
$types = [AccountType::RECONCILIATION];
}
if (in_array($result->accountType->type, $types, true)) {
$this->destination = $result;
Log::debug('Return TRUE');
return true;
}
$this->destError = (string)trans('validation.deposit_dest_wrong_type');
Log::debug('Return FALSE');
return false;
}
@ -461,20 +484,23 @@ class AccountValidator
*/
private function validateReconciliationSource(?int $accountId): bool
{
Log::debug('In validateReconciliationSource');
if (null === $accountId) {
Log::debug('Return FALSE');
return false;
}
$result = $this->accountRepository->findNull($accountId);
$types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::RECONCILIATION];
if (null === $result) {
Log::debug('Return FALSE');
return false;
}
if (in_array($result->accountType->type, $types, true)) {
$this->source = $result;
Log::debug('Return TRUE');
return true;
}
Log::debug('Return FALSE');
return false;
}

View File

@ -100,6 +100,14 @@ trait TransactionValidation
$transactionType = $transaction['type'] ?? $originalType;
$accountValidator->setTransactionType($transactionType);
// if no account types are given, just skip the check.
if (!isset($transaction['source_id'])
&& !isset($transaction['source_name'])
&& !isset($transaction['destination_id'])
&& !isset($transaction['destination_name'])) {
continue;
}
// validate source account.
$sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : $originalData['source_id'];
$sourceName = $transaction['source_name'] ?? $originalData['source_name'];

View File

@ -2,18 +2,45 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## [4.8.3 (API 0.10.5)] - 20xx-xx-xx
## [5.0.0 (API 1.0.0)] - 20xx-xx-xx
### 4.8.3-alpha.1
- #2874
- #2878
- #2876
*This version has not yet been released.* The latest available version is **5.0.0-alpha.1**.
This version represents, if anything, a fresh start in the version numbering system so Firefly III will finally follow SemVer, for real this time.
### Added
- [Issue 2580](https://github.com/firefly-iii/firefly-iii/issues/2580) Users can now edit reconciliations.
- [Issue 2723](https://github.com/firefly-iii/firefly-iii/issues/2723) You can now use rules that trigger on account numbers (and IBAN)
- [Issue 2895](https://github.com/firefly-iii/firefly-iii/issues/2895) Another indicator for negative amounts.
- Firefly III now supports redis as cache backend.
- Fine tune Docker container startup times using new environment variables.
- #2895
- #2881
- Footer will warn you of alpha and beta versions.
- #2901
- [Issue 2901](https://github.com/firefly-iii/firefly-iii/issues/2901) Can select liability accounts when running rules.
### Changed
- [Issue 2776](https://github.com/firefly-iii/firefly-iii/issues/2776) Some charts now do relative scaling. Useful for large amounts.
- [Issue 2702](https://github.com/firefly-iii/firefly-iii/issues/2702) More details on tags overview
- Fine tune the Docker container startup times using new environment variables.
### Deprecated
- Firefly III no longer supports the SFTP storage backend, nor does it support the ability to use both SFTP and local files as storage backends, because the
packages required are no longer maintained and will not work with Laravel 6.0.
### Removed
- Nothing yet.
### Fixed
- [Issue 2907](https://github.com/firefly-iii/firefly-iii/issues/2907) Bad date display in recurring transactions.
- [Issue 2912](https://github.com/firefly-iii/firefly-iii/issues/2912) Redirect fix for bills.
- [Issue 2874](https://github.com/firefly-iii/firefly-iii/issues/2874) More redirect issues fixed.
- [Issue 2878](https://github.com/firefly-iii/firefly-iii/issues/2878) Typo in code of budget overview.
- [Issue 2876](https://github.com/firefly-iii/firefly-iii/issues/2876) Trailing zeroes and other issues.
- [Issue 2881](https://github.com/firefly-iii/firefly-iii/issues/2881) An error when only the title of a split transaction was bad.
### Security
- Nothing yet.
### API
- Nothing yet.
## [4.8.2 (API 0.10.5)] - 2019-11-29

View File

@ -71,14 +71,13 @@
"adldap2/adldap2-laravel": "6.*",
"bacon/bacon-qr-code": "1.*",
"bunq/sdk_php": "dev-master",
"danhunsaker/laravel-flysystem-others": "1.*",
"davejamesmiller/laravel-breadcrumbs": "5.*",
"doctrine/dbal": "2.*",
"fideloper/proxy": "4.*",
"jc5/google2fa-laravel": "2.0.3",
"laravel/framework": "5.8.*",
"laravel/passport": "7.*",
"laravelcollective/html": "5.8.*",
"laravel/framework": "^6.0",
"laravel/passport": "8.*",
"laravelcollective/html": "6.*",
"league/commonmark": "1.*",
"league/csv": "9.*",
"league/flysystem-replicate-adapter": "1.*",
@ -86,16 +85,16 @@
"league/fractal": "0.*",
"litipk/flysystem-fallback-adapter": "0.*",
"mschindler83/fints-hbci-php": "1.*",
"pragmarx/google2fa": "6.1.3",
"pragmarx/google2fa": "^7.0",
"pragmarx/recovery": "^0.1.0",
"predis/predis": "^1.1",
"rcrowe/twigbridge": "0.9.*"
"rcrowe/twigbridge": "^0.11.2"
},
"require-dev": {
"barryvdh/laravel-ide-helper": "2.*",
"filp/whoops": "2.*",
"fzaninotto/faker": "1.*",
"johnkary/phpunit-speedtrap": "^3.0",
"johnkary/phpunit-speedtrap": "^3.1",
"mockery/mockery": "1.*",
"phpunit/phpunit": "8.*",
"roave/security-advisories": "dev-master"

568
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -135,7 +135,7 @@ return [
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
//'Twig' => TwigBridge\Facade\Twig::class,
'Twig' => TwigBridge\Facade\Twig::class,
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
'Preferences' => \FireflyIII\Support\Facades\Preferences::class,

View File

@ -21,22 +21,6 @@
declare(strict_types=1);
$uploadDisk = [
'driver' => 'mirror',
'disks' => ['local-upload'],
];
$exportDisk = [
'driver' => 'mirror',
'disks' => ['local-export'],
];
// setting the SFTP host is enough to trigger the SFTP option.
if ('' !== env('SFTP_HOST', '')) {
array_push($uploadDisk['disks'], 'sftp-upload');
array_push($exportDisk['disks'], 'sftp-export');
}
return [
/*
@ -89,52 +73,15 @@ return [
],
// local storage configuration for upload and export:
'local-upload' => [
'upload' => [
'driver' => 'local',
'root' => storage_path('upload'),
],
'local-export' => [
'export' => [
'driver' => 'local',
'root' => storage_path('export'),
],
// SFTP storage configuration for upload and export:
'sftp-upload' => [
'driver' => 'sftp',
'host' => env('SFTP_HOST', '127.0.0.1'),
'port' => env('SFTP_PORT', 22),
'username' => env('SFTP_USERNAME', 'anonymous'),
'password' => env('SFTP_PASSWORD', ''),
'root' => env('SFTP_UPLOAD_PATH', ''),
'privateKey' => env('SFTP_PRIV_KEY'),
// Optional SFTP Settings
// 'timeout' => 30,
// 'directoryPerm' => 0755,
// 'permPublic' => 0644,
// 'permPrivate' => 0600,
],
'sftp-export' => [
'driver' => 'sftp',
'host' => env('SFTP_HOST', '127.0.0.1'),
'port' => env('SFTP_PORT', 22),
'username' => env('SFTP_USERNAME', 'anonymous'),
'password' => env('SFTP_PASSWORD', ''),
'root' => env('SFTP_EXPORT_PATH', ''),
'privateKey' => env('SFTP_PRIV_KEY'),
// Optional SFTP Settings
// 'timeout' => 30,
// 'directoryPerm' => 0755,
// 'permPublic' => 0644,
// 'permPrivate' => 0600,
],
// final configuration of upload disk and export disk.
'upload' => $uploadDisk,
'export' => $exportDisk,
// various other paths:
'database' => [
'driver' => 'local',
@ -156,333 +103,6 @@ return [
'visibility' => 'public',
],
// unused storage backends.
/*
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
'sftp' => [
'driver' => 'sftp',
'host' => 'sftp.example.com',
'username' => 'username',
'password' => 'password',
// Optional SFTP Settings
// 'privateKey' => 'path/to/or/contents/of/privatekey',
// 'port' => 22,
// 'root' => '/path/to/root',
// 'timeout' => 30,
// 'directoryPerm' => 0755,
// 'permPublic' => 0644,
// 'permPrivate' => 0600,
],
'rackspace' => [
'driver' => 'rackspace',
'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/',
'username' => 'your-username',
'key' => 'your-key',
'region' => 'IAD',
'url_type' => 'publicURL',
'container' => 'your-container',
],
'null' => [
'driver' => 'null',
],
'azure' => [
'driver' => 'azure',
'accountName' => 'your-account-name',
'apiKey' => 'your-api-key',
'container' => 'your-container',
],
'gridfs' => [
'driver' => 'gridfs',
'server' => 'your-server',
'context' => 'your-context',
'dbName' => 'your-db-name',
// You can also provide other MongoDB connection options here
],
'memory' => [
'driver' => 'memory',
],
'phpcr-jackrabbit' => [
'driver' => 'phpcr',
'jackrabbit_url' => 'your-jackrabbit-url',
'workspace' => 'your-workspace',
'root' => 'your-root',
// Optional PHPCR Settings
// 'userId' => 'your-user-id',
// 'password' => 'your-password',
],
'phpcr-dbal' => [
'driver' => 'phpcr',
'database' => 'mysql',
'workspace' => 'your-workspace',
'root' => 'your-root',
// Optional PHPCR Settings
// 'userId' => 'your-user-id',
// 'password' => 'your-password',
],
'phpcr-prismic' => [
'driver' => 'phpcr',
'prismic_uri' => 'your-prismic-uri',
'workspace' => 'your-workspace',
'root' => 'your-root',
// Optional PHPCR Settings
// 'userId' => 'your-user-id',
// 'password' => 'your-password',
],
'replicate' => [
'driver' => 'replicate',
'master' => 'local',
'replica' => 's3',
],
'vfs' => [
'driver' => 'vfs',
],
'webdav' => [
'driver' => 'webdav',
'baseUri' => 'http://example.org/dav/',
// Optional WebDAV Settings
// 'userName' => 'user',
// 'password' => 'password',
// 'proxy' => 'locahost:8888',
// 'authType' => 'digest', // alternately 'ntlm' or 'basic'
// 'encoding' => 'all', // same as ['deflate', 'gzip', 'identity']
],
'zip' => [
'driver' => 'zip',
'path' => 'path/to/file.zip',
// Alternate value if twistor/flysystem-stream-wrapper is available
// 'path' => 'local://path/to/file.zip',
],
'backblaze' => [
'driver' => 'backblaze',
'account_id' => 'your-account-id',
'application_key' => 'your-app-key',
'bucket' => 'your-bucket',
],
'bos' => [
'driver' => 'bos',
'credentials' => [
'ak' => 'your-access-key-id',
'sk' => 'your-secret-access-key',
],
'bucket' => 'your-bucket',
// Optional BOS Settings
// 'endpoint' => 'http://bj.bcebos.com',
],
'clamav' => [
'driver' => 'clamav',
'server' => 'tcp://127.0.0.1:3310',
'drive' => 'local',
// Optional ClamAV Settings
// 'copy_scan' => false,
],
'cloudinary' => [
'driver' => 'cloudinary',
'api_key' => env('CLOUDINARY_API_KEY'),
'api_secret' => env('CLOUDINARY_API_SECRET'),
'cloud_name' => env('CLOUDINARY_CLOUD_NAME'),
],
'dropbox' => [
'driver' => 'dropbox',
'authToken' => 'your-auth-token',
],
'eloquent' => [
'driver' => 'eloquent',
// Optional Eloquent Settings
// 'model' => '\Rokde\Flysystem\Adapter\Model\FileModel',
],
'fallback' => [
'driver' => 'fallback',
'main' => 'local',
'fallback' => 's3',
],
'gdrive' => [
'driver' => 'gdrive',
'client_id' => 'your-client-id',
'secret' => 'your-secret',
'token' => 'your-token',
// Optional GDrive Settings
// 'root' => 'your-root-directory',
// 'paths_sheet' => 'your-paths-sheet',
// 'paths_cache_drive' => 'local',
],
'github' => [
'driver' => 'github',
'project' => 'yourname/project',
'token' => 'your-github-token',
],
'google' => [
'driver' => 'google',
'project_id' => 'your-project-id',
'bucket' => 'your-bucket',
// Optional Google Cloud Storage Settings
// 'prefix' => 'prefix/path/for/drive',
// 'url' => 'http://your.custom.cname/',
// 'key_file' => 'path/to/file.json',
//
// Alternate value if twistor/flysystem-stream-wrapper is available
// 'key_file' => 'local://path/to/file.json',
],
'http' => [
'driver' => 'http',
'root' => 'http://example.com',
// Optional HTTP Settings
// 'use_head' => true,
// 'context' => [],
],
'onedrive' => [
'driver' => 'onedrive',
'access_token' => 'your-access-token',
// Options only needed for ignited/flysystem-onedrive
// 'base_url' => 'https://api.onedrive.com/v1.0/',
// 'use_logger' => false,
// Option only used by nicolasbeauvais/flysystem-onedrive
// 'root' => 'root',
],
'openstack' => [
'driver' => 'openstack',
'auth_url' => 'your-auth-url',
'region' => 'your-region',
'user_id' => 'your-user-id',
'password' => 'your-password',
'project_id' => 'your-project-id',
'container' => 'your-container',
],
'oss' => [
'driver' => 'oss',
'access_id' => env('OSS_ACCESS_KEY_ID'),
'access_key' => env('OSS_ACCESS_KEY_SECRET'),
'endpoint' => env('OSS_ENDPOINT'),
'bucket' => env('OSS_BUCKET'),
// Optional OSS Settings
// 'prefix' => '',
// 'region' => '', // One of 'hangzhou', 'qingdao', 'beijing', 'hongkong',
// // 'shenzhen', 'shanghai', 'west-1' and 'southeast-1'
],
'pdo' => [
'driver' => 'pdo',
'database' => 'default',
],
'qcloud' => [
'driver' => 'qcloud',
'app_id' => 'your-app-id',
'secret_id' => 'your-secret-id',
'secret_key' => 'your-secret-key',
'bucket' => 'your-bucket-name',
'protocol' => 'https',
// Optional Tencent/Qcloud COS Settings
// 'domain' => 'your-domain',
// 'timeout' => 60,
// 'region' => 'gz',
],
'qiniu' => [
'driver' => 'qiniu',
'accessKey' => 'your-access-key',
'secretKey' => 'your-secret-key',
'bucket' => 'your-bucket',
'domain' => 'xxxx.qiniudn.com',
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'runabove' => [
'driver' => 'runabove',
'username' => 'your-username',
'password' => 'your-password',
'tenantId' => 'your-tenantId',
// Optional Runabove Settings
// 'container' => 'container',
// 'region' => 'SBG1', // One of 'SBG1', 'BHS1', and 'GRA1'
],
'selectel' => [
'driver' => 'selectel',
'username' => 'your-username',
'password' => 'your-password',
'container' => 'your-container',
// Optional Selectel Settings
// 'domain' => '',
],
'sharefile' => [
'driver' => 'sharefile',
'hostname' => 'sharefile.example.com',
'client_id' => 'your-client-id',
'secret' => 'your-secret',
'username' => 'your-username',
'password' => 'your-password',
],
'smb' => [
'driver' => 'smb',
'host' => 'smb.example.com',
'username' => 'your-username',
'password' => 'your-password',
'path' => 'path/to/shared/directory/for/root',
],
'temp' => [
'driver' => 'temp',
// Optional TempDir Settings
// 'prefix' => '',
// 'tempdir' => '/tmp',
],
'upyun' => [
'driver' => 'upyun',
'bucket' => 'your-bucket',
'operator' => 'operator-name',
'password' => 'operator-password',
'protocol' => 'https',
'domain' => 'example.b0.upaiyun.com',
],
'yandex' => [
'driver' => 'yandex',
'access_token' => 'your-access-token',
// Optional Yandex Settings
// 'prefix' => 'app:/',
],
*/
],
/*

View File

@ -90,6 +90,10 @@ use FireflyIII\TransactionRules\Triggers\DescriptionStarts;
use FireflyIII\TransactionRules\Triggers\FromAccountContains;
use FireflyIII\TransactionRules\Triggers\FromAccountEnds;
use FireflyIII\TransactionRules\Triggers\FromAccountIs;
use FireflyIII\TransactionRules\Triggers\FromAccountNumberContains;
use FireflyIII\TransactionRules\Triggers\FromAccountNumberEnds;
use FireflyIII\TransactionRules\Triggers\FromAccountNumberIs;
use FireflyIII\TransactionRules\Triggers\FromAccountNumberStarts;
use FireflyIII\TransactionRules\Triggers\FromAccountStarts;
use FireflyIII\TransactionRules\Triggers\HasAnyBudget;
use FireflyIII\TransactionRules\Triggers\HasAnyCategory;
@ -108,6 +112,10 @@ use FireflyIII\TransactionRules\Triggers\TagIs;
use FireflyIII\TransactionRules\Triggers\ToAccountContains;
use FireflyIII\TransactionRules\Triggers\ToAccountEnds;
use FireflyIII\TransactionRules\Triggers\ToAccountIs;
use FireflyIII\TransactionRules\Triggers\ToAccountNumberContains;
use FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds;
use FireflyIII\TransactionRules\Triggers\ToAccountNumberIs;
use FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts;
use FireflyIII\TransactionRules\Triggers\ToAccountStarts;
use FireflyIII\TransactionRules\Triggers\TransactionType;
use FireflyIII\TransactionRules\Triggers\UserAction;
@ -125,8 +133,8 @@ return [
'is_demo_site' => false,
],
'encryption' => null === env('USE_ENCRYPTION') || env('USE_ENCRYPTION') === true,
'version' => '4.8.3-alpha.1',
'api_version' => '0.10.5',
'version' => '5.0.0-alpha.1',
'api_version' => '1.0.0',
'db_version' => 11,
'maxUploadSize' => 15242880,
'send_error_message' => env('SEND_ERROR_MESSAGE', true),
@ -404,40 +412,48 @@ return [
],
'rule-triggers' => [
'user_action' => UserAction::class,
'from_account_starts' => FromAccountStarts::class,
'from_account_ends' => FromAccountEnds::class,
'from_account_is' => FromAccountIs::class,
'from_account_contains' => FromAccountContains::class,
'to_account_starts' => ToAccountStarts::class,
'to_account_ends' => ToAccountEnds::class,
'to_account_is' => ToAccountIs::class,
'to_account_contains' => ToAccountContains::class,
'amount_less' => AmountLess::class,
'amount_exactly' => AmountExactly::class,
'amount_more' => AmountMore::class,
'description_starts' => DescriptionStarts::class,
'description_ends' => DescriptionEnds::class,
'description_contains' => DescriptionContains::class,
'description_is' => DescriptionIs::class,
'transaction_type' => TransactionType::class,
'category_is' => CategoryIs::class,
'budget_is' => BudgetIs::class,
'tag_is' => TagIs::class,
'currency_is' => CurrencyIs::class,
'has_attachments' => HasAttachment::class,
'has_no_category' => HasNoCategory::class,
'has_any_category' => HasAnyCategory::class,
'has_no_budget' => HasNoBudget::class,
'has_any_budget' => HasAnyBudget::class,
'has_no_tag' => HasNoTag::class,
'has_any_tag' => HasAnyTag::class,
'notes_contain' => NotesContain::class,
'notes_start' => NotesStart::class,
'notes_end' => NotesEnd::class,
'notes_are' => NotesAre::class,
'no_notes' => NotesEmpty::class,
'any_notes' => NotesAny::class,
'user_action' => UserAction::class,
'from_account_starts' => FromAccountStarts::class,
'from_account_ends' => FromAccountEnds::class,
'from_account_is' => FromAccountIs::class,
'from_account_contains' => FromAccountContains::class,
'from_account_nr_starts' => FromAccountNumberStarts::class,
'from_account_nr_ends' => FromAccountNumberEnds::class,
'from_account_nr_is' => FromAccountNumberIs::class,
'from_account_nr_contains' => FromAccountNumberContains::class,
'to_account_starts' => ToAccountStarts::class,
'to_account_ends' => ToAccountEnds::class,
'to_account_is' => ToAccountIs::class,
'to_account_contains' => ToAccountContains::class,
'to_account_nr_starts' => ToAccountNumberStarts::class,
'to_account_nr_ends' => ToAccountNumberEnds::class,
'to_account_nr_is' => ToAccountNumberIs::class,
'to_account_nr_contains' => ToAccountNumberContains::class,
'amount_less' => AmountLess::class,
'amount_exactly' => AmountExactly::class,
'amount_more' => AmountMore::class,
'description_starts' => DescriptionStarts::class,
'description_ends' => DescriptionEnds::class,
'description_contains' => DescriptionContains::class,
'description_is' => DescriptionIs::class,
'transaction_type' => TransactionType::class,
'category_is' => CategoryIs::class,
'budget_is' => BudgetIs::class,
'tag_is' => TagIs::class,
'currency_is' => CurrencyIs::class,
'has_attachments' => HasAttachment::class,
'has_no_category' => HasNoCategory::class,
'has_any_category' => HasAnyCategory::class,
'has_no_budget' => HasNoBudget::class,
'has_any_budget' => HasAnyBudget::class,
'has_no_tag' => HasNoTag::class,
'has_any_tag' => HasAnyTag::class,
'notes_contain' => NotesContain::class,
'notes_start' => NotesStart::class,
'notes_end' => NotesEnd::class,
'notes_are' => NotesAre::class,
'no_notes' => NotesEmpty::class,
'any_notes' => NotesAny::class,
],
'rule-actions' => [
'set_category' => SetCategory::class,

2
public/v1/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@ -33,7 +33,8 @@ var fixHelper = function (e, tr) {
$(function () {
"use strict";
lineChart(chartUri, 'overview-chart');
//lineChart(chartUri, 'overview-chart');
lineNoStartZeroChart(chartUri, 'overview-chart');
if (!showAll) {
multiCurrencyPieChart(incomeCategoryUri, 'account-cat-in');
multiCurrencyPieChart(expenseCategoryUri, 'account-cat-out');

View File

@ -92,6 +92,22 @@ function lineChart(URI, container) {
drawAChart(URI, container, chartType, options, colorData);
}
/**
* Function to draw a line chart that doesn't start at ZERO.
* @param URI
* @param container
*/
function lineNoStartZeroChart(URI, container) {
"use strict";
var colorData = true;
var options = $.extend(true, {}, defaultChartOptions);
var chartType = 'line';
options.scales.yAxes[0].ticks.beginAtZero = false;
drawAChart(URI, container, chartType, options, colorData);
}
/**
* Overrules the currency the line chart is drawn in.
*

View File

@ -58,12 +58,12 @@
//console.log('Dest "' + this.destination.name + '"');
if (!transactionType && !this.source.name && !this.destination.name) {
$(this.$refs.cur).text('');
return;
}
if(null === transactionType) {
transactionType = '';
}
if ('' === transactionType && '' !== this.source.currency_name) {
$(this.$refs.cur).text(this.source.currency_name);
return;
@ -72,7 +72,9 @@
$(this.$refs.cur).text(this.destination.currency_name);
return;
}
if (transactionType === 'Withdrawal' || transactionType === 'Transfer') {
if (transactionType.toLowerCase() === 'withdrawal' ||
transactionType.toLowerCase() === 'reconciliation' ||
transactionType.toLowerCase() === 'transfer') {
$(this.$refs.cur).text(this.source.currency_name);
return;
}

View File

@ -83,28 +83,46 @@
>
</transaction-description>
<account-select v-if="transactionType.toLowerCase() !== 'reconciliation'"
inputName="source[]"
v-bind:title="$t('firefly.source_account')"
:accountName="transaction.source_account.name"
:accountTypeFilters="transaction.source_account.allowed_types"
:transactionType="transactionType"
:index="index"
v-on:clear:value="clearSource(index)"
v-on:select:account="selectedSourceAccount(index, $event)"
:error="transaction.errors.source_account"
inputName="source[]"
v-bind:title="$t('firefly.source_account')"
:accountName="transaction.source_account.name"
:accountTypeFilters="transaction.source_account.allowed_types"
:transactionType="transactionType"
:index="index"
v-on:clear:value="clearSource(index)"
v-on:select:account="selectedSourceAccount(index, $event)"
:error="transaction.errors.source_account"
></account-select>
<div class="form-group" v-if="transactionType.toLowerCase() === 'reconciliation'">
<div class="col-sm-12">
<p id="ffInput_source" class="form-control-static">
<em>
{{ $t('firefly.source_account_reconciliation') }}
</em>
</p>
</div>
</div>
<account-select v-if="transactionType.toLowerCase() !== 'reconciliation'"
inputName="destination[]"
v-bind:title="$t('firefly.destination_account')"
:accountName="transaction.destination_account.name"
:accountTypeFilters="transaction.destination_account.allowed_types"
:transactionType="transactionType"
:index="index"
v-on:clear:value="clearDestination(index)"
v-on:select:account="selectedDestinationAccount(index, $event)"
:error="transaction.errors.destination_account"
inputName="destination[]"
v-bind:title="$t('firefly.destination_account')"
:accountName="transaction.destination_account.name"
:accountTypeFilters="transaction.destination_account.allowed_types"
:transactionType="transactionType"
:index="index"
v-on:clear:value="clearDestination(index)"
v-on:select:account="selectedDestinationAccount(index, $event)"
:error="transaction.errors.destination_account"
></account-select>
<standard-date v-if="transactionType.toLowerCase() !== 'reconciliation'"
<div class="form-group" v-if="transactionType.toLowerCase() === 'reconciliation'">
<div class="col-sm-12">
<p id="ffInput_dest" class="form-control-static">
<em>
{{ $t('firefly.destination_account_reconciliation') }}
</em>
</p>
</div>
</div>
<standard-date
v-model="transaction.date"
:index="index"
:error="transaction.errors.date"
@ -129,7 +147,7 @@
:error="transaction.errors.amount"
:transactionType="transactionType"
></amount>
<foreign-amount
<foreign-amount v-if="transactionType.toLowerCase() !== 'reconciliation'"
:source="transaction.source_account"
:destination="transaction.destination_account"
v-model="transaction.foreign_amount"
@ -185,7 +203,7 @@
{{ $t('firefly.after_update_create_another') }}
</label>
</div>
<div class="checkbox">
<div class="checkbox" v-if="transactionType.toLowerCase() !== 'reconciliation'">
<label>
<input v-model="storeAsNew" name="store_as_new" type="checkbox">
{{ $t('firefly.store_as_new') }}

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(\u017e\u00e1dn\u00e9)",
"no_piggy_bank": "(no piggy bank)",
"description": "Popis",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "\u00darokov\u00e9 datum",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(Keine)",
"no_piggy_bank": "(kein Sparschwein)",
"description": "Beschreibung",
"split_transaction_title_help": "Wenn Sie eine Splittbuchung anlegen, muss es eine eindeutige Beschreibung f\u00fcr alle Aufteilungen der Buchung geben."
"split_transaction_title_help": "Wenn Sie eine Splittbuchung anlegen, muss es eine eindeutige Beschreibung f\u00fcr alle Aufteilungen der Buchung geben.",
"destination_account_reconciliation": "Sie k\u00f6nnen das Zielkonto einer Kontenausgleichsbuchung nicht bearbeiten.",
"source_account_reconciliation": "Sie k\u00f6nnen das Quellkonto einer Kontenausgleichsbuchung nicht bearbeiten."
},
"form": {
"interest_date": "Zinstermin",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(\u03c4\u03af\u03c0\u03bf\u03c4\u03b1)",
"no_piggy_bank": "(no piggy bank)",
"description": "Description",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c4\u03bf\u03ba\u03b9\u03c3\u03bc\u03bf\u03cd",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(none)",
"no_piggy_bank": "(no piggy bank)",
"description": "Description",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Interest date",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(ninguno)",
"no_piggy_bank": "(sin alcanc\u00eda)",
"description": "Descripci\u00f3n",
"split_transaction_title_help": "Si crea una transacci\u00f3n dividida, debe existir una descripci\u00f3n global para todas las divisiones de la transacci\u00f3n."
"split_transaction_title_help": "Si crea una transacci\u00f3n dividida, debe existir una descripci\u00f3n global para todas las divisiones de la transacci\u00f3n.",
"destination_account_reconciliation": "No puede editar la cuenta de destino de una transacci\u00f3n de reconciliaci\u00f3n.",
"source_account_reconciliation": "No puede editar la cuenta de origen de una transacci\u00f3n de reconciliaci\u00f3n."
},
"form": {
"interest_date": "Fecha de inter\u00e9s",

View File

@ -29,14 +29,16 @@
"none_in_select_list": "(aucun)",
"no_piggy_bank": "(aucune tirelire)",
"description": "Description",
"split_transaction_title_help": "Si vous cr\u00e9ez une op\u00e9ration ventil\u00e9e, il doit y avoir une description globale pour chaque fraction de l'op\u00e9ration."
"split_transaction_title_help": "Si vous cr\u00e9ez une op\u00e9ration ventil\u00e9e, il doit y avoir une description globale pour chaque fraction de l'op\u00e9ration.",
"destination_account_reconciliation": "Vous ne pouvez pas modifier le compte de destination d'une op\u00e9ration de rapprochement.",
"source_account_reconciliation": "Vous ne pouvez pas modifier le compte source d'une op\u00e9ration de rapprochement."
},
"form": {
"interest_date": "Date de l\u2019int\u00e9r\u00eat",
"book_date": "Date de r\u00e9servation",
"process_date": "Date de traitement",
"due_date": "\u00c9ch\u00e9ance",
"foreign_amount": "Montant externe",
"foreign_amount": "Montant en devise \u00e9trang\u00e8re",
"payment_date": "Date de paiement",
"invoice_date": "Date de facturation",
"internal_reference": "R\u00e9f\u00e9rence interne"

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(nincs)",
"no_piggy_bank": "(no piggy bank)",
"description": "Le\u00edr\u00e1s",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Kamatfizet\u00e9si id\u0151pont",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(none)",
"no_piggy_bank": "(no piggy bank)",
"description": "Deskripsi",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Tanggal bunga",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(nessuna)",
"no_piggy_bank": "(nessun salvadanaio)",
"description": "Descrizione",
"split_transaction_title_help": "Se crei una transazione suddivisa, \u00e8 necessario che ci sia una descrizione globale per tutte le suddivisioni della transazione."
"split_transaction_title_help": "Se crei una transazione suddivisa, \u00e8 necessario che ci sia una descrizione globale per tutte le suddivisioni della transazione.",
"destination_account_reconciliation": "Non \u00e8 possibile modificare il conto di destinazione di una transazione di riconciliazione.",
"source_account_reconciliation": "Non puoi modificare il conto di origine di una transazione di riconciliazione."
},
"form": {
"interest_date": "Data interesse",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(ingen)",
"no_piggy_bank": "(no piggy bank)",
"description": "Beskrivelse",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Rentedato",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(geen)",
"no_piggy_bank": "(geen spaarpotje)",
"description": "Omschrijving",
"split_transaction_title_help": "Als je een gesplitste transactie maakt, moet er een algemene beschrijving zijn voor alle splitsingen van de transactie."
"split_transaction_title_help": "Als je een gesplitste transactie maakt, moet er een algemene beschrijving zijn voor alle splitsingen van de transactie.",
"destination_account_reconciliation": "Je kan de doelrekening van een afstemming niet wijzigen.",
"source_account_reconciliation": "Je kan de bronrekening van een afstemming niet wijzigen."
},
"form": {
"interest_date": "Rentedatum",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(\u017cadne)",
"no_piggy_bank": "(brak skarbonki)",
"description": "Opis",
"split_transaction_title_help": "Je\u015bli tworzysz podzielon\u0105 transakcj\u0119, musi ona posiada\u0107 globalny opis dla wszystkich podzia\u0142\u00f3w w transakcji."
"split_transaction_title_help": "Je\u015bli tworzysz podzielon\u0105 transakcj\u0119, musi ona posiada\u0107 globalny opis dla wszystkich podzia\u0142\u00f3w w transakcji.",
"destination_account_reconciliation": "Nie mo\u017cesz edytowa\u0107 konta docelowego transakcji uzgadniania.",
"source_account_reconciliation": "Nie mo\u017cesz edytowa\u0107 konta \u017ar\u00f3d\u0142owego transakcji uzgadniania."
},
"form": {
"interest_date": "Data odsetek",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(nenhum)",
"no_piggy_bank": "(nenhum cofrinho)",
"description": "Descri\u00e7\u00e3o",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Data de interesse",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(nici unul)",
"no_piggy_bank": "(no piggy bank)",
"description": "Descriere",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Data de interes",

View File

@ -29,7 +29,9 @@
"none_in_select_list": "(\u043d\u0435\u0442)",
"no_piggy_bank": "(\u043d\u0435\u0442 \u043a\u043e\u043f\u0438\u043b\u043a\u0438)",
"description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"split_transaction_title_help": "\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0435\u0451 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445."
"split_transaction_title_help": "\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0435\u0451 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u043b\u0430\u0442\u044b",

View File

@ -16,7 +16,7 @@
"reset_after": "\u00c5terst\u00e4ll formul\u00e4r efter inskickat",
"submit": "Skicka",
"amount": "Belopp",
"date": "Date",
"date": "Datum",
"tags": "Etiketter",
"no_budget": "(ingen budget)",
"category": "Kategori",
@ -29,7 +29,9 @@
"none_in_select_list": "(Ingen)",
"no_piggy_bank": "(ingen spargris)",
"description": "Beskrivning",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "Du kan inte redigera destinationskontot f\u00f6r en avst\u00e4mningstransaktion.",
"source_account_reconciliation": "Du kan inte redigera k\u00e4llkontot f\u00f6r en avst\u00e4mningstransaktion."
},
"form": {
"interest_date": "R\u00e4ntedatum",

View File

@ -1,6 +1,6 @@
{
"firefly": {
"welcome_back": "Neler oluyor?",
"welcome_back": "What's playing?",
"flash_error": "Hata!",
"flash_success": "Ba\u015far\u0131l\u0131!",
"close": "Kapat",
@ -8,8 +8,8 @@
"errors_submission": "There was something wrong with your submission. Please check out the errors below.",
"split": "B\u00f6l",
"transaction_journal_information": "\u0130\u015flem Bilgileri",
"source_account": "Source account",
"destination_account": "Destination account",
"source_account": "Kaynak hesap",
"destination_account": "Hedef hesap",
"add_another_split": "Ba\u015fka bir b\u00f6lme ekle",
"submission": "Submission",
"create_another": "After storing, return here to create another one.",
@ -27,9 +27,11 @@
"store_as_new": "Store as a new transaction instead of updating.",
"split_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"none_in_select_list": "(Yok)",
"no_piggy_bank": "(no piggy bank)",
"no_piggy_bank": "(kumbara bankas\u0131 yok)",
"description": "A\u00e7\u0131klama",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "Faiz tarihi",

View File

@ -1,6 +1,6 @@
{
"firefly": {
"welcome_back": "\u5403\u9971\u6ca1\uff1f",
"welcome_back": "What's playing?",
"flash_error": "\u9519\u8bef\uff01",
"flash_success": "\u6210\u529f\uff01",
"close": "\u5173\u95ed",
@ -14,7 +14,7 @@
"submission": "\u63d0\u4ea4",
"create_another": "\u4fdd\u5b58\u540e\uff0c\u8fd4\u56de\u6b64\u9875\u9762\u521b\u5efa\u53e6\u4e00\u7b14\u8bb0\u5f55\u3002",
"reset_after": "\u63d0\u4ea4\u540e\u91cd\u7f6e\u8868\u5355",
"submit": "\u9001\u51fa",
"submit": "\u63d0\u4ea4",
"amount": "\u91d1\u989d",
"date": "\u65e5\u671f",
"tags": "\u6807\u7b7e",
@ -29,7 +29,9 @@
"none_in_select_list": "\uff08\u7a7a\uff09",
"no_piggy_bank": "\uff08\u65e0\u5b58\u94b1\u7f50\uff09",
"description": "\u63cf\u8ff0",
"split_transaction_title_help": "\u5982\u679c\u60a8\u521b\u5efa\u4e86\u4e00\u4e2a\u5206\u5272\u4ea4\u6613\uff0c\u4ea4\u6613\u7684\u6240\u6709\u5206\u5272\u9879\u90fd\u5fc5\u987b\u6709\u5168\u5c40\u63cf\u8ff0\u3002"
"split_transaction_title_help": "\u5982\u679c\u60a8\u521b\u5efa\u4e86\u4e00\u4e2a\u5206\u5272\u4ea4\u6613\uff0c\u4ea4\u6613\u7684\u6240\u6709\u5206\u5272\u9879\u90fd\u5fc5\u987b\u6709\u5168\u5c40\u63cf\u8ff0\u3002",
"destination_account_reconciliation": "\u60a8\u4e0d\u80fd\u7f16\u8f91\u5bf9\u8d26\u4ea4\u6613\u7684\u76ee\u6807\u8d26\u6237",
"source_account_reconciliation": "\u60a8\u4e0d\u80fd\u7f16\u8f91\u5bf9\u8d26\u4ea4\u6613\u7684\u6e90\u8d26\u6237"
},
"form": {
"interest_date": "\u5229\u7387\u65e5\u671f",

View File

@ -1,6 +1,6 @@
{
"firefly": {
"welcome_back": "\u5403\u98fd\u6c92\uff1f",
"welcome_back": "What's playing?",
"flash_error": "\u932f\u8aa4\uff01",
"flash_success": "\u6210\u529f\uff01",
"close": "\u95dc\u9589",
@ -29,7 +29,9 @@
"none_in_select_list": "(\u7a7a)",
"no_piggy_bank": "(no piggy bank)",
"description": "\u63cf\u8ff0",
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction."
"split_transaction_title_help": "If you create a split transaction, there must be a global description for all splits of the transaction.",
"destination_account_reconciliation": "You can't edit the destination account of a reconciliation transaction.",
"source_account_reconciliation": "You can't edit the source account of a reconciliation transaction."
},
"form": {
"interest_date": "\u5229\u7387\u65e5\u671f",

View File

@ -32,8 +32,8 @@ return [
'clone' => 'Klonovat',
'last_seven_days' => 'Uplynulých 7 dnů',
'last_thirty_days' => 'Uplynulých 30 dní',
'welcomeBack' => 'Co hraje?',
'welcome_back' => 'Co hraje?',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Vše',
'today' => 'dnes',
'customRange' => 'Vlastní rozsah',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Spent in account(s) ":account"',
'earned_in_specific_double' => 'Earned in account(s) ":account"',
'source_account' => 'Zdrojový účet',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Cílový účet',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Celkem utraceno v rozpočtu „:budget“',
'left_in_budget_limit' => 'Ponecháno k utracení dle rozpočtu',
'current_period' => 'Stávající období',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Uživatelská akce je „:trigger_value“',
'rule_trigger_from_account_starts_choice' => 'Zdrojový účet začíná na…',
'rule_trigger_from_account_starts' => 'Zdrojový účet začíná na „:trigger_value“',
'rule_trigger_from_account_ends_choice' => 'Zdrojový účet končí na…',
'rule_trigger_from_account_ends' => 'Zdrojový účet končí na „:trigger_value“',
'rule_trigger_from_account_is_choice' => 'Zdrojový účet je…',
'rule_trigger_from_account_is' => 'Zdrojový účet je „:trigger_value“',
'rule_trigger_from_account_contains_choice' => 'Zdrojový účet obsahuje…',
'rule_trigger_from_account_contains' => 'Zdrojový účet obsahuje „:trigger_value“',
'rule_trigger_to_account_starts_choice' => 'Cílový účet začíná na…',
'rule_trigger_to_account_starts' => 'Cílový účet začíná na „:trigger_value“',
'rule_trigger_to_account_ends_choice' => 'Cílový účet končí na…',
'rule_trigger_to_account_ends' => 'Cílový účet končí na „:trigger_value“',
'rule_trigger_to_account_is_choice' => 'Cílový účet je…',
'rule_trigger_to_account_is' => 'Cílový účet je „:trigger_value“',
'rule_trigger_to_account_contains_choice' => 'Cílový účet obsahuje…',
'rule_trigger_to_account_contains' => 'Cílový účet obsahuje „:trigger_value“',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transakce je typu…',
'rule_trigger_transaction_type' => 'Transakce je typu „:trigger_value“',
'rule_trigger_category_is_choice' => 'Kategorie je…',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Součet výběrů',
'sum_deposits' => 'Součet vkladů',
'sum_transfers' => 'Součet převodů',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Reconcile',
'account_on_spectre' => 'Účet (Spectre)',
'account_on_ynab' => 'Účet (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Could not find a valid source account when searching for ID ":id" or name ":name".',
'deposit_dest_need_data' => 'Need to get a valid destination account ID and/or valid destination account name to continue.',
'deposit_dest_bad_data' => 'Could not find a valid destination account when searching for ID ":id" or name ":name".',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'Need to get a valid source account ID and/or valid source account name to continue.',
'transfer_source_bad_data' => 'Could not find a valid source account when searching for ID ":id" or name ":name".',

View File

@ -32,8 +32,8 @@ return [
'clone' => 'Duplizieren',
'last_seven_days' => 'Letzte sieben Tage',
'last_thirty_days' => 'Letzte 30 Tage',
'welcomeBack' => 'Was ist gerade los?',
'welcome_back' => 'Was ist gerade los?',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Alle',
'today' => 'Heute',
'customRange' => 'Individueller Bereich',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Ausgaben auf Konto(en) „:account”',
'earned_in_specific_double' => 'Einnahmen auf Konto(en) „:account”',
'source_account' => 'Quellkonto',
'source_account_reconciliation' => 'Sie können das Quellkonto einer Kontenausgleichsbuchung nicht bearbeiten.',
'destination_account' => 'Zielkonto',
'destination_account_reconciliation' => 'Sie können das Zielkonto einer Kontenausgleichsbuchung nicht bearbeiten.',
'sum_of_expenses_in_budget' => 'Gesamtausgaben im Budget „:budget”',
'left_in_budget_limit' => 'Verbleibend zum Ausgeben laut der Budgetplanung',
'current_period' => 'Aktueller Zeitraum',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Die Nutzeraktion ist ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Quellkonto beginnt mit..',
'rule_trigger_from_account_starts' => 'Das Quellkonto startet mit ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Quellkonto endet mit..',
'rule_trigger_from_account_ends' => 'Das Quellkonto endet mit ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Quellkonto ist..',
'rule_trigger_from_account_is' => 'Das Quellkonto ist ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Quellkonto enthält..',
'rule_trigger_from_account_contains' => 'Das Quellkonto enthält ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Zielkonto beginnt mit..',
'rule_trigger_to_account_starts' => 'Das Zielkonto startet mit ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Zielkonto endet mit..',
'rule_trigger_to_account_ends' => 'Das Zielkonto endet mit ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Zielkonto ist..',
'rule_trigger_to_account_is' => 'Das Zielkonto ist ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Zielkonto enthält..',
'rule_trigger_to_account_contains' => 'Zielkonto enthält ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Buchung ist vom Typ..',
'rule_trigger_transaction_type' => 'Buchung ist vom Typ ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategorie ist..',
@ -635,9 +658,9 @@ return [
'convert_please_set_asset_source' => 'Bitte das Bestandskonto wählen, von dem das Geld kommt.',
'convert_expl_w_d' => 'Bei der Umwandlung von einer Auszahlung in eine Einzahlung wird das Geld auf die angezeigten Zielkonten eingezahlt, anstatt von diesen abgehoben zu werden. Um die Konvertierung abzuschließen, legen Sie bitte unten die neuen Quellkonten fest.',
'convert_expl_w_t' => 'Bei der Umwandlung einer Auszahlung in eine Überweisung wird das Geld von den Ursprungskonten auf andere Aktiv- oder Passivkonten umgebucht, anstatt für die ursprünglichen Aufwandskonten ausgegeben zu werden. Um die Konvertierung abzuschließen, wählen Sie bitte neue Zielkonten aus.',
'convert_expl_d_w' => 'When converting a deposit into a withdrawal, the money will be withdrawn from the displayed source account(s), instead of being deposited into them. To complete the conversion, please select new destination accounts.',
'convert_expl_d_t' => 'When you convert a deposit into a transfer, the money will be deposited into the listed destination account(s) from any of your asset or liability account(s). Please select the new source account(s) to complete the conversion.',
'convert_expl_t_w' => 'When you convert a transfer into a withdrawal, the money will be spent on the destination account(s) you set here, instead of being transferred away. Please select the new destination account(s) to complete the conversion.',
'convert_expl_d_w' => 'Bei der Umwandlung einer Einzahlung in eine Auszahlung wird das Geld von den angezeigten Quellkonten abgehoben, anstatt auf diese einzuzahlen. Um die Konvertierung abzuschließen, wählen Sie bitte neue Zielkonten aus.',
'convert_expl_d_t' => 'Wenn Sie eine Einzahlung in eine Überweisung umwandeln, wird das Geld auf die aufgeführten Zielkonten von einem Ihrer Aktiv- oder Passivkonten eingezahlt. Bitte wählen Sie die neuen Quellkonten aus, um die Konvertierung abzuschließen.',
'convert_expl_t_w' => 'Wenn Sie eine Überweisung in eine Auszahlung umwandeln, wird das Geld für die Zielkonten ausgegeben, die Sie hier festgelegt haben, anstatt weggebucht zu werden. Bitte wählen Sie die neuen Zielkonten aus, um die Konvertierung abzuschließen.',
'convert_expl_t_d' => 'Wenn Sie eine Überweisung in eine Einzahlung umwandeln, wird das Geld auf das angezeigte Zielkonto eingezahlt, anstatt auf dieses überwiesen zu werden. Bitte wählen Sie das neue Quellkonto aus, um die Umwandlung abzuschließen.',
'converted_to_Withdrawal' => 'Die Buchung wurde in eine Ausgabe konvertiert',
'converted_to_Deposit' => 'Die Buchung wurde in eine Einnahme konvertiert',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Summe der Ausgaben',
'sum_deposits' => 'Summe der Einzahlungen',
'sum_transfers' => 'Summe der Umbuchungen',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Abgleichen',
'account_on_spectre' => 'Konto (Spectre)',
'account_on_ynab' => 'Konto (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Bei der Suche nach der Kennung „:id” oder dem Namen „:name” konnte kein gültiges Quellkonto gefunden werden.',
'deposit_dest_need_data' => 'Um fortzufahren, benötigen Sie eine gültige Zielkontenkennung und/oder einen gültigen Zielkontonamen.',
'deposit_dest_bad_data' => 'Bei der Suche nach der Kennung „:id” oder dem Namen „:name” konnte kein gültiges Zielkonto gefunden werden.',
'deposit_dest_wrong_type' => 'Das übermittelte Zielkonto entspricht nicht dem geforderten Typ.',
'transfer_source_need_data' => 'Um fortzufahren, benötigen Sie eine gültige Quellkontenkennung und/oder einen gültigen Quellkontonamen.',
'transfer_source_bad_data' => 'Bei der Suche nach der Kennung „:id” oder dem Namen „:name” konnte kein gültiges Quellkonto gefunden werden.',

View File

@ -32,8 +32,8 @@ return [
'clone' => 'Κλωνοποίηση',
'last_seven_days' => 'Τελευταίες επτά ημέρες',
'last_thirty_days' => 'Τελευταίες τριάντα ημέρες',
'welcomeBack' => 'Τι παίζει;',
'welcome_back' => 'Τι παίζει;',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Όλα',
'today' => 'σήμερα',
'customRange' => 'Προσαρμοσμένο εύρος',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Ξοδεύτηκαν στον(ους) λογαριασμό(ούς) ":account"',
'earned_in_specific_double' => 'Κερδήθηκαν στον(ους) λογαριασμό(ούς): ":account"',
'source_account' => 'Source account',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Destination account',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Ξοδεύτηκαν συνολικά στον προϋπολογισμό ":budget"',
'left_in_budget_limit' => 'Διαθέσιμα προς ξόδεμα σύμφωνα με τον προϋπολογισμό',
'current_period' => 'Τρέχουσα περίοδος',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Η ενέργεια χρήστη είναι ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Ο λογαριασμός προέλευσης ξεκινά με..',
'rule_trigger_from_account_starts' => 'Ο λογαριασμός προέλευσης ξεκινά με ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Ο λογαριασμός προέλευσης τελειώνει με..',
'rule_trigger_from_account_ends' => 'Ο λογαριαμός προέλευσης λήγει με ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Ο λογαριασμός προέλευσης είναι..',
'rule_trigger_from_account_is' => 'Ο λογαριασμός προέλευσης είναι ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Ο λογαριασμός προέλευσης περιέχει..',
'rule_trigger_from_account_contains' => 'Ο λογαριασμός προέλευσης περιέχει ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Ο λογαριασμός προορισμού ξεκινά με..',
'rule_trigger_to_account_starts' => 'Ο λογαριασμός προορισμού ξεκινά με ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Ο λογαριασμός προορισμού τελειώνει με..',
'rule_trigger_to_account_ends' => 'Ο λογαριασμός προορισμού τελειώνει με ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Ο λογαριασμός προορισμού είναι..',
'rule_trigger_to_account_is' => 'Ο λογαριασμός προορισμού είναι ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Ο λογαριασμός προορισμού περιέχει..',
'rule_trigger_to_account_contains' => 'Ο λογαριασμός προορισμού περιέχει ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Η συναλλαγή είναι τύπου..',
'rule_trigger_transaction_type' => 'Η συναλλαγή είναι τύπου ":trigger_value"',
'rule_trigger_category_is_choice' => 'Η κατηγορία είναι..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Σύνολο αναλήψεων',
'sum_deposits' => 'Σύνολο καταθέσεων',
'sum_transfers' => 'Σύνολο μεταφορών',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Συμβιβασμός',
'account_on_spectre' => 'Λογαριασμός (Spectre)',
'account_on_ynab' => 'Λογαριασμός (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Δεν μπόρεσε να βρεθεί ένας έγκυρος λογαριασμός προέλευσης κατά την αναζήτηση του αναγνωριστικού ID ":id" ή του ονόματος ":name".',
'deposit_dest_need_data' => 'Πρέπει να λάβετε ένα έγκυρο αναγνωριστικό ID λογαριασμού προορισμού και/ή ένα έγκυρο όνομα λογαριασμού προορισμού για να συνεχίσετε.',
'deposit_dest_bad_data' => 'Δεν μπόρεσε να βρεθεί έγκυρος λογαριασμός προορισμού κατά την αναζήτηση του αναγνωριστικού ID ":id" ή του ονόματος ":name".',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'Πρέπει να λάβετε ένα έγκυρο αναγνωριστικό λογαριασμού προέλευσης και/ή ένα έγκυρο όνομα λογαριασμού προέλευσης για να συνεχίσετε.',
'transfer_source_bad_data' => 'Δεν μπορεσε να βρεθεί ένας έγκυρος λογαριασμός προέλευσης κατά την αναζήτηση του αναγνωριστικού ID ":id" ή του ονόματος ":name".',

View File

@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Spent in account(s) ":account"',
'earned_in_specific_double' => 'Earned in account(s) ":account"',
'source_account' => 'Source account',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Destination account',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Spent total in budget ":budget"',
'left_in_budget_limit' => 'Left to spend according to budgeting',
'current_period' => 'Current period',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'User action is ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account starts with..',
'rule_trigger_from_account_starts' => 'Source account starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account ends with..',
'rule_trigger_from_account_ends' => 'Source account ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account is..',
'rule_trigger_from_account_is' => 'Source account is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account contains..',
'rule_trigger_from_account_contains' => 'Source account contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account starts with..',
'rule_trigger_to_account_starts' => 'Destination account starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account ends with..',
'rule_trigger_to_account_ends' => 'Destination account ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account is..',
'rule_trigger_to_account_is' => 'Destination account is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account contains..',
'rule_trigger_to_account_contains' => 'Destination account contains ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transaction is of type..',
'rule_trigger_transaction_type' => 'Transaction is of type ":trigger_value"',
'rule_trigger_category_is_choice' => 'Category is..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Sum of withdrawals',
'sum_deposits' => 'Sum of deposits',
'sum_transfers' => 'Sum of transfers',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Reconcile',
'account_on_spectre' => 'Account (Spectre)',
'account_on_ynab' => 'Account (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Could not find a valid source account when searching for ID ":id" or name ":name".',
'deposit_dest_need_data' => 'Need to get a valid destination account ID and/or valid destination account name to continue.',
'deposit_dest_bad_data' => 'Could not find a valid destination account when searching for ID ":id" or name ":name".',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'Need to get a valid source account ID and/or valid source account name to continue.',
'transfer_source_bad_data' => 'Could not find a valid source account when searching for ID ":id" or name ":name".',

View File

@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Gastado en cuenta(s) ":account"',
'earned_in_specific_double' => 'Ganado en cuenta(s) ":account"',
'source_account' => 'Cuenta origen',
'source_account_reconciliation' => 'No puede editar la cuenta de origen de una transacción de reconciliación.',
'destination_account' => 'Cuenta destino',
'destination_account_reconciliation' => 'No puede editar la cuenta de destino de una transacción de reconciliación.',
'sum_of_expenses_in_budget' => 'Total gastado en el presupuesto ":budget"',
'left_in_budget_limit' => 'Disponible para gasto según presupuesto',
'current_period' => 'Período actual',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'La acción del usuario es ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Cuenta de origen comienza con..',
'rule_trigger_from_account_starts' => 'La fuente de la cuenta comienza con ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Cuenta de origen termina con..',
'rule_trigger_from_account_ends' => 'La fuente de la cuenta termina en ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'La cuenta de origen es..',
'rule_trigger_from_account_is' => 'La fuente de la cuenta es ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'La cuenta de origen contiene..',
'rule_trigger_from_account_contains' => 'La fuente de la cuenta contiene ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'La cuenta de destino comienza con..',
'rule_trigger_to_account_starts' => 'La cuenta de destino comienza con ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'La cuenta de destino termina con..',
'rule_trigger_to_account_ends' => 'La cuenta de destino termina con ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Cuenta destino es..',
'rule_trigger_to_account_is' => 'La cuenta de destino es ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Cuenta destino contiene..',
'rule_trigger_to_account_contains' => 'La cuenta destino contiene ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transacción es del tipo..',
'rule_trigger_transaction_type' => 'La transacción es de tipo ":trigger_value"',
'rule_trigger_category_is_choice' => 'Categoría es..',
@ -971,10 +994,10 @@ return [
'submit_yes_really' => 'Enviar (Se lo que estoy haciendo)',
'getting_started' => 'Comenzando',
'to_get_started' => 'Es bueno ver que usted ha instalado con éxito Firefly III. Para comenzar con esta regla, por favor ingrese el nombre de su banco y el saldo de su cuenta de cheques principal. No se preocupe todavía si tiene varias cuentas. usted puede agregarlas luego. Es solo que Firefly III necesita algo para empezar.',
'savings_balance_text' => 'Firefly II creará automáticamente una cuenta de ahorros. Por defecto, no habrá dinero en su cuenta de ahorros, pero si le dice a Firefly III el saldo se almacenará como tal.',
'savings_balance_text' => 'Firefly III creará automáticamente una cuenta de ahorros. Por defecto, no habrá dinero en su cuenta de ahorros, pero si le dice a Firefly III el saldo se almacenará como tal.',
'finish_up_new_user' => '¡Eso es! Puedes continuar presionando <strong>Enviar</strong>. Será llevado al inicio de Firefly III.',
'stored_new_accounts_new_user' => 'Hurra! Sus nuevas cuentas han sido almacenadas.',
'set_preferred_language' => 'Si prefiere usar Firefly II en otro lenguaje, por favor indíquelo aquí.',
'set_preferred_language' => 'Si prefiere usar Firefly III en otro lenguaje, por favor indíquelo aquí.',
'language' => 'Idioma',
'new_savings_account' => ':bank_name Cuenta de ahorros',
'cash_wallet' => 'Billetera de efectivo',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Suma de retiros',
'sum_deposits' => 'Suma de depositos',
'sum_transfers' => 'Suma de transferencias',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Reconciliar',
'account_on_spectre' => 'Cuenta (espectro)',
'account_on_ynab' => 'Cuenta (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'No se pudo encontrar una cuenta de origen válida para ID ":id" o nombre ":name".',
'deposit_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.',
'deposit_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".',
'deposit_dest_wrong_type' => 'La cuenta de destino enviada no es del tipo correcto.',
'transfer_source_need_data' => 'Necesita obtener un ID de cuenta de origen válido y/o nombre de cuenta de origen válido para continuar.',
'transfer_source_bad_data' => 'No se pudo encontrar una cuenta de origen válida para ID ":id" o nombre ":name".',

View File

@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Dépensé dans le(s) compte(s) ":account"',
'earned_in_specific_double' => 'Gagné dans le(s) compte(s) ":account"',
'source_account' => 'Compte d\'origine',
'source_account_reconciliation' => 'Vous ne pouvez pas modifier le compte source d\'une opération de rapprochement.',
'destination_account' => 'Compte de destination',
'destination_account_reconciliation' => 'Vous ne pouvez pas modifier le compte de destination d\'une opération de rapprochement.',
'sum_of_expenses_in_budget' => 'Total dépensé dans le budget ":budget"',
'left_in_budget_limit' => 'Reste à dépenser selon budget',
'current_period' => 'Période en cours',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'L\'action de lutilisateur est ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Le compte source commence par..',
'rule_trigger_from_account_starts' => 'Le compte source commence par ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Le compte source se termine par..',
'rule_trigger_from_account_ends' => 'Le compte source se termine par ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Le compte source est..',
'rule_trigger_from_account_is' => 'Le compte source est ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Le compte source contient..',
'rule_trigger_from_account_contains' => 'Le compte source contient ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Le compte de destination commence par..',
'rule_trigger_to_account_starts' => 'Le compte de destination commence par ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Compte de destination se terminant par..',
'rule_trigger_to_account_ends' => 'Le compte de destination se termine par ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Le compte de destination est..',
'rule_trigger_to_account_is' => 'Le compte de destination est ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Le compte de destination contient..',
'rule_trigger_to_account_contains' => 'Le compte de destination contient ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'L\'opération est du type..',
'rule_trigger_transaction_type' => 'L\'opération est du type ":trigger_value"',
'rule_trigger_category_is_choice' => 'La catégorie est..',
@ -633,12 +656,12 @@ return [
'convert_please_set_asset_destination' => 'Veuillez choisir le compte d\'actifs sur lequel l\'argent sera versé.',
'convert_please_set_expense_destination' => 'Veuillez choisir le compte de dépenses sur lequel l\'argent sera versé.',
'convert_please_set_asset_source' => 'Veuillez choisir le compte dactifs d\'où proviendra largent.',
'convert_expl_w_d' => 'When converting from a withdrawal to a deposit, the money will be deposited into the displayed destination account(s), instead of being withdrawn from them. To complete the conversion, please set the new source account(s) below.',
'convert_expl_w_t' => 'When converting a withdrawal into a transfer, the money will be transferred away from the source account(s) into other asset or liability account(s) instead of being spent on the original expense accounts. To complete the conversion, please select new destination account(s).',
'convert_expl_d_w' => 'When converting a deposit into a withdrawal, the money will be withdrawn from the displayed source account(s), instead of being deposited into them. To complete the conversion, please select new destination accounts.',
'convert_expl_d_t' => 'When you convert a deposit into a transfer, the money will be deposited into the listed destination account(s) from any of your asset or liability account(s). Please select the new source account(s) to complete the conversion.',
'convert_expl_t_w' => 'When you convert a transfer into a withdrawal, the money will be spent on the destination account(s) you set here, instead of being transferred away. Please select the new destination account(s) to complete the conversion.',
'convert_expl_t_d' => 'When you convert a transfer into a deposit, the money will be deposited into the destination account(s) you see here, instead of being transferred into them. Please select the new source account(s) to complete the conversion.',
'convert_expl_w_d' => 'Lors de la conversion d\'un retrait en dépôt, l\'argent sera déposé dans le ou les comptes de destination affichés, au lieu de leur être retiré. Pour compléter la conversion, veuillez définir le(s) nouveau compte(s) source(s) ci-dessous.',
'convert_expl_w_t' => 'Lors de la conversion d\'un retrait en transfert, l\'argent sera transféré du compte source vers un autre compte d\'actif ou de passif au lieu d\'être dépensé sur les comptes de dépenses originaux. Pour terminer la conversion, veuillez sélectionner un nouveau compte de destination.',
'convert_expl_d_w' => 'Lors de la conversion d\'un dépôt en retrait, l\'argent sera retiré du ou des comptes source affichés, au lieu d\'y être déposé. Pour terminer la conversion, veuillez sélectionner de nouveaux comptes de destination.',
'convert_expl_d_t' => 'Lorsque vous convertissez un dépôt en transfert, l\'argent sera déposé dans le ou les compte(s) de destination répertoriés à partir de l\'un de vos comptes d\'actif ou passif. Veuillez sélectionner le(s) nouveau compte(s) source pour terminer la conversion.',
'convert_expl_t_w' => 'Lorsque vous convertissez un transfert en retrait, l\'argent sera dépensé sur le ou les comptes de destination que vous avez définis ici, au lieu d\'être transféré. Veuillez sélectionner le(s) nouveau compte(s) de destination pour terminer la conversion.',
'convert_expl_t_d' => 'Lorsque vous convertissez un transfert en dépôt, L\'argent sera déposé dans le ou les comptes de destination que vous voyez ici, au lieu de leur être transféré. Veuillez sélectionner le(s) nouveau compte(s) source pour terminer la conversion.',
'converted_to_Withdrawal' => 'La transaction a été convertie en retrait',
'converted_to_Deposit' => 'La transaction a été convertie en dépôt',
'converted_to_Transfer' => 'La transaction a été convertie en transfert',
@ -811,7 +834,7 @@ return [
'end_of_reconcile_period' => 'Fin de la période de rapprochement: :period',
'start_of_reconcile_period' => 'Début de la période de rapprochement : :period',
'start_balance' => 'Solde initial',
'end_balance' => 'Solde de clotûre',
'end_balance' => 'Solde de clôture',
'update_balance_dates_instruction' => 'Faites correspondre les montants et les dates ci-dessus à votre relevé bancaire et appuyez sur "Commencer le rapprochement"',
'select_transactions_instruction' => 'Sélectionnez les transactions qui apparaissent sur votre relevé bancaire.',
'select_range_and_balance' => 'Vérifiez d\'abord la plage des dates et les soldes. Puis appuyez sur "Commencer le rapprochement"',
@ -1435,7 +1458,7 @@ return [
'recurring_daily' => 'Tous les jours',
'recurring_weekly' => 'Chaque semaine le :weekday',
'recurring_weekly_skip' => 'Chaque :skip(ière/ième) semaine le :weekday',
'recurring_monthly' => 'Le :dayOfMonth(er/ème) jour de chaque mois',
'recurring_monthly' => 'Le :dayOfMonth de chaque mois',
'recurring_monthly_skip' => 'Chaque :skip(ier/ième) mois le :dayOfMonth(ier,ième) jour',
'recurring_ndom' => 'Le :dayOfMonth(er/ème) :weekday de chaque mois',
'recurring_yearly' => 'Chaque année le :date',

View File

@ -103,7 +103,7 @@ return [
'convert_Transfer' => 'Convertir le transfert',
'amount' => 'Montant',
'foreign_amount' => 'Montant externe',
'foreign_amount' => 'Montant en devise étrangère',
'existing_attachments' => 'Pièces jointes existantes',
'date' => 'Date',
'interest_date' => 'Date de lintérêt',

View File

@ -40,7 +40,7 @@ return [
'next_due' => 'Prochaine échéance',
'transaction_type' => 'Type',
'lastActivity' => 'Activité récente',
'balanceDiff' => 'Différence d\'équilibre',
'balanceDiff' => 'Différence de solde',
'matchesOn' => 'Correspond à',
'other_meta_data' => 'Autres métadonnées',
'account_type' => 'Type de compte',
@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Somme des retraits',
'sum_deposits' => 'Somme des dépôts',
'sum_transfers' => 'Somme des transferts',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Rapprocher',
'account_on_spectre' => 'Compte (Spectre)',
'account_on_ynab' => 'Compte (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Impossible de trouver un compte source valide lors de la recherche de l\'ID ":id" ou du nom ":name".',
'deposit_dest_need_data' => 'Vous devez obtenir un ID de compte de destination valide et/ou un nom de compte de destination valide pour continuer.',
'deposit_dest_bad_data' => 'Impossible de trouver un compte de destination valide lors de la recherche de l\'ID ":id" ou du nom ":name".',
'deposit_dest_wrong_type' => 'Le compte de destination saisi n\'est pas du bon type.',
'transfer_source_need_data' => 'Vous devez obtenir un ID de compte source valide et/ou un nom de compte source valide pour continuer.',
'transfer_source_bad_data' => 'Impossible de trouver un compte source valide lors de la recherche de l\'ID ":id" ou du nom ":name".',

View File

@ -32,8 +32,8 @@ return [
'clone' => 'Másolás',
'last_seven_days' => 'Utolsó hét nap',
'last_thirty_days' => 'Elmúlt harminc nap',
'welcomeBack' => 'Mi a helyzet?',
'welcome_back' => 'Mi a helyzet?',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Minden',
'today' => 'ma',
'customRange' => 'Egyéni tartomány',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Spent in account(s) ":account"',
'earned_in_specific_double' => 'Earned in account(s) ":account"',
'source_account' => 'Forrás számla',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Célszámla',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Összes költés ":budget" költségkeretben',
'left_in_budget_limit' => 'A költségvetés szerinti elkölthető összeg',
'current_period' => 'Jelenlegi időszak',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'A felhasználói művelet ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Forrásszámla eleje..',
'rule_trigger_from_account_starts' => 'Forrásszámla eleje: ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Forrásszámla vége..',
'rule_trigger_from_account_ends' => 'Forrásszámla vége: ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'A forrásszámla..',
'rule_trigger_from_account_is' => 'Forrásszámla: ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'A forrásszámla tartalmazza..',
'rule_trigger_from_account_contains' => 'Forrásszámla tartalmazza: ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Célszámla eleje..',
'rule_trigger_to_account_starts' => 'Célszámla eleje: ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Célszámla vége..',
'rule_trigger_to_account_ends' => 'Célszámla vége: ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'A célszámla..',
'rule_trigger_to_account_is' => 'Célszámla: ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'A célszámla tartalmazza..',
'rule_trigger_to_account_contains' => 'Célszámla tartalmazza: ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'A tranzakció típusa..',
'rule_trigger_transaction_type' => 'Tranzakció típusa ":trigger_value"',
'rule_trigger_category_is_choice' => 'A kategória..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Költségek összege',
'sum_deposits' => 'Bevételek összege',
'sum_transfers' => 'Átvezetések összege',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Egyeztetés',
'account_on_spectre' => 'Fiók (Spectre)',
'account_on_ynab' => 'Számla (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Nem található érvényes forrásszámla ":id" azonosító vagy ":name" név keresésekor.',
'deposit_dest_need_data' => 'Egy érvényes célszámla azonosító és/vagy egy érvényes célszámla név kell a folytatáshoz.',
'deposit_dest_bad_data' => 'Nem található érvényes célszámla ":id" azonosító vagy ":name" név keresésekor.',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'Egy érvényes forrásszámla azonosító és/vagy egy érvényes forrásszámla név kell a folytatáshoz.',
'transfer_source_bad_data' => 'Nem található érvényes forrásszámla ":id" azonosító vagy ":name" név keresésekor.',

View File

@ -32,7 +32,7 @@ return [
'clone' => 'Duplikasi',
'last_seven_days' => '7 hari terakhir',
'last_thirty_days' => '30 hari terakhir',
'welcomeBack' => 'Apa yang sedang diputar?',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Segala sesuatu',
'today' => 'hari ini',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Spent in account(s) ":account"',
'earned_in_specific_double' => 'Earned in account(s) ":account"',
'source_account' => 'Source account',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Destination account',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Menghabiskan total dalam anggaran ":budget"',
'left_in_budget_limit' => 'Kiri untuk dibelanjakan sesuai budget',
'current_period' => 'Periode sekarang',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Tindakan pengguna adalah ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Akun sumber dimulai dengan..',
'rule_trigger_from_account_starts' => 'Akun sumber dimulai dengan ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Akun sumber diakhiri dengan..',
'rule_trigger_from_account_ends' => 'Akun sumber diakhiri dengan ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Akun sumber..',
'rule_trigger_from_account_is' => 'Akun sumber adalah ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Akun sumber berisi..',
'rule_trigger_from_account_contains' => 'Akun sumber berisi ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Akun tujuan dimulai dengan..',
'rule_trigger_to_account_starts' => 'Akun tujuan dimulai dengan ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Akun tujuan diakhiri dengan..',
'rule_trigger_to_account_ends' => 'Akun tujuan diakhiri dengan ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Akun tujuan..',
'rule_trigger_to_account_is' => 'Akun tujuan adalah ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Akun tujuan berisi..',
'rule_trigger_to_account_contains' => 'Akun tujuan berisi ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transaksi adalah tipe..',
'rule_trigger_transaction_type' => 'Transaksi adalah tipe ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategori adalah..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Jumlah penarikan',
'sum_deposits' => 'Jumlah simpanan',
'sum_transfers' => 'Jumlah transfer',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Menyesuaikan',
'account_on_spectre' => 'Rekening (Spectre)',
'account_on_ynab' => 'Rekening (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Could not find a valid source account when searching for ID ":id" or name ":name".',
'deposit_dest_need_data' => 'Need to get a valid destination account ID and/or valid destination account name to continue.',
'deposit_dest_bad_data' => 'Could not find a valid destination account when searching for ID ":id" or name ":name".',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'Need to get a valid source account ID and/or valid source account name to continue.',
'transfer_source_bad_data' => 'Could not find a valid source account when searching for ID ":id" or name ":name".',

View File

@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Spesi nei conti ":account"',
'earned_in_specific_double' => 'Guadagnati nei conti ":account"',
'source_account' => 'Conto di origine',
'source_account_reconciliation' => 'Non puoi modificare il conto di origine di una transazione di riconciliazione.',
'destination_account' => 'Conto destinazione',
'destination_account_reconciliation' => 'Non è possibile modificare il conto di destinazione di una transazione di riconciliazione.',
'sum_of_expenses_in_budget' => 'Spesa totale nel budget ":budget"',
'left_in_budget_limit' => 'Disponibile per spese in base ai budget',
'current_period' => 'Periodo corrente',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'L\'azione dell\'utente è ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Il conto di origine inizia con...',
'rule_trigger_from_account_starts' => 'Il conto di origine inizia con ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Il conto di origine termina con...',
'rule_trigger_from_account_ends' => 'Il conto di origine termina con ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Il conto di origine è...',
'rule_trigger_from_account_is' => 'Il conto di origine è ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Il conto di origine contiene...',
'rule_trigger_from_account_contains' => 'Il conto di origine contiene ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Il conto di destinazione inizia con...',
'rule_trigger_to_account_starts' => 'Il conto di destinazione inizia con ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Il conto di destinazione termina con...',
'rule_trigger_to_account_ends' => 'Il conto di destinazione termina con ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Il conto di destinazione è...',
'rule_trigger_to_account_is' => 'Il conto di destinazione è ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Il conto di destinazione contiene...',
'rule_trigger_to_account_contains' => 'Il conto di destinazione contiene ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'La transazione è di tipo...',
'rule_trigger_transaction_type' => 'La transazione è di tipo ":trigger_value"',
'rule_trigger_category_is_choice' => 'La categoria è...',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Somma dei prelievi',
'sum_deposits' => 'Somma versamenti',
'sum_transfers' => 'Somma dei trasferimenti',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Riconcilia',
'account_on_spectre' => 'Conto (Spectre)',
'account_on_ynab' => 'Conto (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Non è stato possibile trovare un conto d\'origine valido effettuando la ricerca con l\'ID ":id" o il nome ":name".',
'deposit_dest_need_data' => 'È necessario ottenere un ID e/o un nome del conto di destinazione validi per continuare.',
'deposit_dest_bad_data' => 'Non è stato possibile trovare un conto di destinazione valido effettuando la ricerca con l\'ID ":id" o il nome ":name".',
'deposit_dest_wrong_type' => 'Il conto di destinazione inviato non è di tipo corretto.',
'transfer_source_need_data' => 'È necessario ottenere un ID e/o un nome del conto di origine validi per continuare.',
'transfer_source_bad_data' => 'Non è stato possibile trovare un conto d\'origine valido effettuando la ricerca con l\'ID ":id" o il nome ":name".',

View File

@ -32,8 +32,8 @@ return [
'clone' => 'Klon',
'last_seven_days' => 'Syv siste dager',
'last_thirty_days' => 'Tredve siste dager',
'welcomeBack' => 'Hvordan går det?',
'welcome_back' => 'Hvordan går det?',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Alt',
'today' => 'i dag',
'customRange' => 'Egendefinert utvalg',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Spent in account(s) ":account"',
'earned_in_specific_double' => 'Earned in account(s) ":account"',
'source_account' => 'Source account',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Destination account',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Brukt totalt i budsjett ":budget"',
'left_in_budget_limit' => 'Igjen å bruke i følge budsjett',
'current_period' => 'Nåværende periode',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Brukerhandling er ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Kildekontoen starter med..',
'rule_trigger_from_account_starts' => 'Kildekontoen starter med ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Kildekontoen slutter med..',
'rule_trigger_from_account_ends' => 'Kildekontoen avsluttes med ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Kildekonto er..',
'rule_trigger_from_account_is' => 'Kildekontoen er ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Kildekonto inneholder..',
'rule_trigger_from_account_contains' => 'Kildekontoen inneholder ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Målkonto starter med..',
'rule_trigger_to_account_starts' => 'Målkonto starter med ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Målkonto slutter med..',
'rule_trigger_to_account_ends' => 'Målkonto slutter med ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Målkonto er..',
'rule_trigger_to_account_is' => 'Målkonto er ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Målkonto inneholder..',
'rule_trigger_to_account_contains' => 'Målkonto inneholder ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transaksjonen er av typen..',
'rule_trigger_transaction_type' => 'Transaksjonen er av typen ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategori er..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Sum av uttak',
'sum_deposits' => 'Sum av innskudd',
'sum_transfers' => 'Sum av overføringer',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Avstem',
'account_on_spectre' => 'Konto (Spectre)',
'account_on_ynab' => 'Konto (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Kunne ikke finne en gyldig kilde-konto ved å søke etter ID ":id" eller navn ":name".',
'deposit_dest_need_data' => 'Trenger en gyldig destinasjons konto-ID og/eller gyldig destinasjons kontonavn for å fortsette.',
'deposit_dest_bad_data' => 'Kunne ikke finne en gyldig destinasjons konto ved å søke etter ID ":id" eller navn ":name".',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'Trenger en gyldig kilde konto-ID og/eller gyldig kilde kontonavn for å fortsette.',
'transfer_source_bad_data' => 'Finner ikke en gyldig kilde-konto ved å søke etter ID ":id" eller navn ":name".',

View File

@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Uitgegeven van rekening(en) ":account"',
'earned_in_specific_double' => 'Verdiend op rekening(en) ":account"',
'source_account' => 'Bronrekening',
'source_account_reconciliation' => 'Je kan de bronrekening van een afstemming niet wijzigen.',
'destination_account' => 'Doelrekening',
'destination_account_reconciliation' => 'Je kan de doelrekening van een afstemming niet wijzigen.',
'sum_of_expenses_in_budget' => 'Totaal uitgegeven in budget ":budget"',
'left_in_budget_limit' => 'Nog uit te geven volgens budgettering',
'current_period' => 'Huidige periode',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Gebruikersactie is ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Bronrekeningnaam begint met..',
'rule_trigger_from_account_starts' => 'Bronrekeningnaam begint met ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Bronrekeningnaam eindigt op..',
'rule_trigger_from_account_ends' => 'Bronrekeningnaam eindigt op ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Bronrekeningnaam is..',
'rule_trigger_from_account_is' => 'Bronrekeningnaam is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Bronrekeningnaam bevat..',
'rule_trigger_from_account_contains' => 'Bronrekeningnaam bevat ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Doelrekeningnaam begint met..',
'rule_trigger_to_account_starts' => 'Doelrekeningnaam begint met ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Doelrekeningnaam eindigt op..',
'rule_trigger_to_account_ends' => 'Doelrekeningnaam eindigt op ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Doelrekeningnaam is..',
'rule_trigger_to_account_is' => 'Doelrekeningnaam is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Doelrekeningnaam bevat..',
'rule_trigger_to_account_contains' => 'Doelrekeningnaam bevat ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transactietype is..',
'rule_trigger_transaction_type' => 'Transactiesoort is ":trigger_value" (Engels)',
'rule_trigger_category_is_choice' => 'Categorie is..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Som van uitgaven',
'sum_deposits' => 'Som van inkomsten',
'sum_transfers' => 'Som van overschrijvingen',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Afstemmen',
'account_on_spectre' => 'Rekening (Spectre)',
'account_on_ynab' => 'Rekening (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Kan geen geldige bronrekening vinden bij het zoeken naar ID ":id" of naam ":name".',
'deposit_dest_need_data' => 'Om door te gaan moet een geldig doelrekening ID en/of geldige doelrekeningnaam worden gevonden.',
'deposit_dest_bad_data' => 'Kan geen geldige doelrekening vinden bij het zoeken naar ID ":id" of naam ":name".',
'deposit_dest_wrong_type' => 'De ingevoerde doelrekening is niet van het juiste type.',
'transfer_source_need_data' => 'Om door te gaan moet een geldig bronaccount ID en/of geldige bronaccountnaam worden gevonden.',
'transfer_source_bad_data' => 'Kan geen geldige bronrekening vinden bij het zoeken naar ID ":id" of naam ":name".',

View File

@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Wydano z kont(a) ":account"',
'earned_in_specific_double' => 'Zarobiono na konto(ta) ":account"',
'source_account' => 'Konto źródłowe',
'source_account_reconciliation' => 'Nie możesz edytować konta źródłowego transakcji uzgadniania.',
'destination_account' => 'Konto docelowe',
'destination_account_reconciliation' => 'Nie możesz edytować konta docelowego transakcji uzgadniania.',
'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',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Akcją użytkownika jest ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Konto źródłowe się zaczyna od..',
'rule_trigger_from_account_starts' => 'Konto źródłowe się zaczyna od ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Konto źródłowe się kończy na..',
'rule_trigger_from_account_ends' => 'Konto źródłowe się kończy na ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Kontem źródłowym jest..',
'rule_trigger_from_account_is' => 'Konto źródłowe to ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Konto źródłowe zawiera..',
'rule_trigger_from_account_contains' => 'Konto źródłowe zawiera ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Konto docelowe zaczyna się od..',
'rule_trigger_to_account_starts' => 'Konto docelowe się zaczyna od ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Konto docelowe kończy się na..',
'rule_trigger_to_account_ends' => 'Konto docelowe się kończy na ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Konto docelowe to..',
'rule_trigger_to_account_is' => 'Konto docelowe to ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Konto docelowe zawiera..',
'rule_trigger_to_account_contains' => 'Konto docelowe zawiera ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transakcja jest typu..',
'rule_trigger_transaction_type' => 'Transakcja jest typu ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategoria to..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Suma wypłat',
'sum_deposits' => 'Suma wpłat',
'sum_transfers' => 'Suma transferów',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Uzgodnij',
'account_on_spectre' => 'Konto (Spectre)',
'account_on_ynab' => 'Konto (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Nie można znaleźć poprawnego konta źródłowego podczas wyszukiwania identyfikatora ":id" lub nazwy ":name".',
'deposit_dest_need_data' => 'Aby kontynuować, musisz uzyskać prawidłowy identyfikator konta wydatków i/lub prawidłową nazwę konta wydatków.',
'deposit_dest_bad_data' => 'Nie można znaleźć poprawnego konta wydatków podczas wyszukiwania identyfikatora ":id" lub nazwy ":name".',
'deposit_dest_wrong_type' => 'Konto docelowe nie jest poprawnego typu.',
'transfer_source_need_data' => 'Aby kontynuować, musisz uzyskać prawidłowy identyfikator konta źródłowego i/lub prawidłową nazwę konta źródłowego.',
'transfer_source_bad_data' => 'Nie można znaleźć poprawnego konta źródłowego podczas wyszukiwania identyfikatora ":id" lub nazwy ":name".',

View File

@ -32,8 +32,8 @@ return [
'clone' => 'Clonar',
'last_seven_days' => 'Últimos sete dias',
'last_thirty_days' => 'Últimos 30 dias',
'welcomeBack' => 'O que está passando?',
'welcome_back' => 'O que está passando?',
'welcomeBack' => 'What\'s playing?',
'welcome_back' => 'What\'s playing?',
'everything' => 'Tudo',
'today' => 'hoje',
'customRange' => 'Intervalo Personalizado',
@ -127,7 +127,9 @@ return [
'spent_in_specific_double' => 'Gasto na(s) conta(s) ":account"',
'earned_in_specific_double' => 'Ganho na(s) conta(s) ":account"',
'source_account' => 'Conta origem',
'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.',
'destination_account' => 'Conta destino',
'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.',
'sum_of_expenses_in_budget' => 'Gasto total no orçamento ":budget"',
'left_in_budget_limit' => 'Restante para gastar de acordo com o orçamento',
'current_period' => 'Período atual',
@ -350,22 +352,43 @@ return [
// actions and triggers
'rule_trigger_user_action' => 'Ação do usuário é ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Conta de origem começa com..',
'rule_trigger_from_account_starts' => 'Conta de origem começa com ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Conta de origem termina com..',
'rule_trigger_from_account_ends' => 'Conta de origem termina com ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Conta de origem é..',
'rule_trigger_from_account_is' => 'É da conta de origem ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Conta de origem contém..',
'rule_trigger_from_account_contains' => 'Conta de origem contém ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Conta de destino começa com..',
'rule_trigger_to_account_starts' => 'Conta destino começa com ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Conta de destino termina com..',
'rule_trigger_to_account_ends' => 'Conta destino termina com ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Conta de destino é..',
'rule_trigger_to_account_is' => 'Conta de destino é ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Conta de destino contém..',
'rule_trigger_to_account_contains' => 'Conta de destino contém ":trigger_value"',
'rule_trigger_from_account_starts_choice' => 'Source account name starts with..',
'rule_trigger_from_account_starts' => 'Source account name starts with ":trigger_value"',
'rule_trigger_from_account_ends_choice' => 'Source account name ends with..',
'rule_trigger_from_account_ends' => 'Source account name ends with ":trigger_value"',
'rule_trigger_from_account_is_choice' => 'Source account name is..',
'rule_trigger_from_account_is' => 'Source account name is ":trigger_value"',
'rule_trigger_from_account_contains_choice' => 'Source account name contains..',
'rule_trigger_from_account_contains' => 'Source account name contains ":trigger_value"',
'rule_trigger_from_account_nr_starts_choice' => 'Source account number / IBAN starts with..',
'rule_trigger_from_account_nr_starts' => 'Source account number / IBAN starts with ":trigger_value"',
'rule_trigger_from_account_nr_ends_choice' => 'Source account number / IBAN ends with..',
'rule_trigger_from_account_nr_ends' => 'Source account number / IBAN ends with ":trigger_value"',
'rule_trigger_from_account_nr_is_choice' => 'Source account number / IBAN is..',
'rule_trigger_from_account_nr_is' => 'Source account number / IBAN is ":trigger_value"',
'rule_trigger_from_account_nr_contains_choice' => 'Source account number / IBAN contains..',
'rule_trigger_from_account_nr_contains' => 'Source account number / IBAN contains ":trigger_value"',
'rule_trigger_to_account_starts_choice' => 'Destination account name starts with..',
'rule_trigger_to_account_starts' => 'Destination account name starts with ":trigger_value"',
'rule_trigger_to_account_ends_choice' => 'Destination account name ends with..',
'rule_trigger_to_account_ends' => 'Destination account name ends with ":trigger_value"',
'rule_trigger_to_account_is_choice' => 'Destination account name is..',
'rule_trigger_to_account_is' => 'Destination account name is ":trigger_value"',
'rule_trigger_to_account_contains_choice' => 'Destination account name contains..',
'rule_trigger_to_account_contains' => 'Destination account name contains ":trigger_value"',
'rule_trigger_to_account_nr_starts_choice' => 'Destination account number / IBAN starts with..',
'rule_trigger_to_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"',
'rule_trigger_to_account_nr_ends_choice' => 'Destination account number / IBAN ends with..',
'rule_trigger_to_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"',
'rule_trigger_to_account_nr_is_choice' => 'Destination account number / IBAN is..',
'rule_trigger_to_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"',
'rule_trigger_to_account_nr_contains_choice' => 'Destination account number / IBAN contains..',
'rule_trigger_to_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"',
'rule_trigger_transaction_type_choice' => 'Transação é do tipo..',
'rule_trigger_transaction_type' => 'Transação é do tipo ":trigger_value"',
'rule_trigger_category_is_choice' => 'A categoria é..',

View File

@ -105,6 +105,7 @@ return [
'sum_withdrawals' => 'Soma de retiradas',
'sum_deposits' => 'Soma dos depósitos',
'sum_transfers' => 'Soma das transferências',
'sum_reconciliations' => 'Sum of reconciliations',
'reconcile' => 'Pago',
'account_on_spectre' => 'Conta (Spectre)',
'account_on_ynab' => 'Conta (YNAB)',

View File

@ -181,6 +181,7 @@ return [
'deposit_source_bad_data' => 'Não foi possível encontrar uma conta de destino válida ao pesquisar por ID ":id" ou nome ":name".',
'deposit_dest_need_data' => 'É necessário obter obter um ID de conta de destino válido e/ou nome de conta de destino válido para continuar.',
'deposit_dest_bad_data' => 'Não foi possível encontrar uma conta de destino válida ao pesquisar por ID ":id" ou nome ":name".',
'deposit_dest_wrong_type' => 'The submitted destination account is not of the right type.',
'transfer_source_need_data' => 'É necessário obter um ID de uma conta de origem válida e/ou um nome de conta de origem válido para continuar.',
'transfer_source_bad_data' => 'Não foi possível encontrar uma conta de destino válida ao pesquisar por ID ":id" ou nome ":name".',

Some files were not shown because too many files have changed in this diff Show More