Merge branch 'develop' into adminlte4

This commit is contained in:
James Cole 2023-08-11 19:43:18 +02:00
commit daf753d76e
144 changed files with 1641 additions and 671 deletions

View File

@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
/*
* ShowController.php
* Copyright (c) 2023 james@firefly-iii.org

View File

@ -0,0 +1,73 @@
<?php
declare(strict_types=1);
/*
* ShowController.php
* Copyright (c) 2023 james@firefly-iii.org
*
* 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/>.
*/
namespace FireflyIII\Api\V2\Controllers\Model\PiggyBank;
use FireflyIII\Api\V2\Controllers\Controller;
use FireflyIII\Repositories\Administration\PiggyBank\PiggyBankRepositoryInterface;
use FireflyIII\Transformers\V2\PiggyBankTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
/**
* Class ShowController
*/
class ShowController extends Controller
{
private PiggyBankRepositoryInterface $repository;
public function __construct()
{
parent::__construct();
$this->middleware(
function ($request, $next) {
$this->repository = app(PiggyBankRepositoryInterface::class);
$this->repository->setAdministrationId(auth()->user()->user_group_id);
return $next($request);
}
);
}
/**
* @param Request $request
*
* TODO see autocomplete/accountcontroller for list.
*
* @return JsonResponse
*/
public function index(Request $request): JsonResponse
{
$piggies = $this->repository->getPiggyBanks();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$count = $piggies->count();
$piggies = $piggies->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($piggies, $count, $pageSize, $this->parameters->get('page'));
$transformer = new PiggyBankTransformer();
$transformer->setParameters($this->parameters); // give params to transformer
return response()
->json($this->jsonApiList('piggy-banks', $paginator, $transformer))
->header('Content-Type', self::CONTENT_TYPE);
}
}

View File

@ -80,9 +80,11 @@ class AccountController extends Controller
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(
sprintf('%s?%s',
route('api.v2.accounts.transactions', [$account->id]),
$request->buildParams())
sprintf(
'%s?%s',
route('api.v2.accounts.transactions', [$account->id]),
$request->buildParams()
)
);
return response()

View File

@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
/*
* TransactionController.php
* Copyright (c) 2023 james@firefly-iii.org
@ -32,7 +34,6 @@ use Illuminate\Http\JsonResponse;
*/
class TransactionController extends Controller
{
/**
* @param ListRequest $request
*
@ -69,9 +70,11 @@ class TransactionController extends Controller
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(
sprintf('%s?%s',
route('api.v2.transactions.list'),
$request->buildParams())
sprintf(
'%s?%s',
route('api.v2.transactions.list'),
$request->buildParams()
)
);
return response()

View File

@ -32,6 +32,7 @@ use FireflyIII\Models\Bill;
use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\CurrencyExchangeRate;
use FireflyIII\Models\ObjectGroup;
use FireflyIII\Models\Recurrence;
use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleGroup;
@ -93,6 +94,7 @@ class UpdateGroupInformation extends Command
Bill::class,
Budget::class,
Category::class,
ObjectGroup::class,
CurrencyExchangeRate::class,
Recurrence::class,
RuleGroup::class,

View File

@ -92,6 +92,7 @@ class AccountFactory
$return = $this->create(
[
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'name' => $accountName,
'account_type_id' => $type->id,
'account_type_name' => null,
@ -199,6 +200,7 @@ class AccountFactory
$active = array_key_exists('active', $data) ? $data['active'] : true;
$databaseData = [
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'account_type_id' => $type->id,
'name' => $data['name'],
'order' => 25000,

View File

@ -67,6 +67,7 @@ class BillFactory
'match' => 'MIGRATED_TO_RULES',
'amount_min' => $data['amount_min'],
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'transaction_currency_id' => $currency->id,
'amount_max' => $data['amount_max'],
'date' => $data['date'],

View File

@ -70,8 +70,9 @@ class CategoryFactory
try {
return Category::create(
[
'user_id' => $this->user->id,
'name' => $categoryName,
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'name' => $categoryName,
]
);
} catch (QueryException $e) {

View File

@ -107,6 +107,7 @@ class RecurrenceFactory
$recurrence = new Recurrence(
[
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'transaction_type_id' => $type->id,
'title' => $title,
'description' => $description,

View File

@ -83,14 +83,15 @@ class TagFactory
$latitude = 0.0 === (float)$data['latitude'] ? null : (float)$data['latitude']; // intentional float
$longitude = 0.0 === (float)$data['longitude'] ? null : (float)$data['longitude']; // intentional float
$array = [
'user_id' => $this->user->id,
'tag' => trim($data['tag']),
'tagMode' => 'nothing',
'date' => $data['date'],
'description' => $data['description'],
'latitude' => null,
'longitude' => null,
'zoomLevel' => null,
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'tag' => trim($data['tag']),
'tagMode' => 'nothing',
'date' => $data['date'],
'description' => $data['description'],
'latitude' => null,
'longitude' => null,
'zoomLevel' => null,
];
$tag = Tag::create($array);
if (null !== $tag && null !== $latitude && null !== $longitude) {

View File

@ -131,6 +131,7 @@ class BudgetLimitHandler
$availableBudget = new AvailableBudget(
[
'user_id' => $budgetLimit->budget->user->id,
'user_group_id' => $budgetLimit->budget->user->user_group_id,
'transaction_currency_id' => $budgetLimit->transaction_currency_id,
'start_date' => $current,
'end_date' => $currentEnd,

View File

@ -125,7 +125,7 @@ class Account extends Model
'encrypted' => 'boolean',
];
/** @var array Fields that can be filled */
protected $fillable = ['user_id', 'account_type_id', 'name', 'active', 'virtual_balance', 'iban'];
protected $fillable = ['user_id', 'user_group_id', 'account_type_id', 'name', 'active', 'virtual_balance', 'iban'];
/** @var array Hidden from view */
protected $hidden = ['encrypted'];
private bool $joinedAccountTypes = false;

View File

@ -85,7 +85,7 @@ class AvailableBudget extends Model
'transaction_currency_id' => 'int',
];
/** @var array Fields that can be filled */
protected $fillable = ['user_id', 'transaction_currency_id', 'amount', 'start_date', 'end_date'];
protected $fillable = ['user_id', 'user_group_id', 'transaction_currency_id', 'amount', 'start_date', 'end_date'];
/**
* Route binder. Converts the key in the URL to the specified object (or throw 404).

View File

@ -130,6 +130,7 @@ class Bill extends Model
'match',
'amount_min',
'user_id',
'user_group_id',
'amount_max',
'date',
'repeat_freq',

View File

@ -89,7 +89,7 @@ class Category extends Model
'encrypted' => 'boolean',
];
/** @var array Fields that can be filled */
protected $fillable = ['user_id', 'name'];
protected $fillable = ['user_id', 'user_group_id', 'name'];
/** @var array Hidden from view */
protected $hidden = ['encrypted'];

View File

@ -77,7 +77,7 @@ class ObjectGroup extends Model
'user_id' => 'integer',
'deleted_at' => 'datetime',
];
protected $fillable = ['title', 'order', 'user_id'];
protected $fillable = ['title', 'order', 'user_id', 'user_group_id'];
/**
* Route binder. Converts the key in the URL to the specified object (or throw 404).

View File

@ -165,4 +165,12 @@ class Rule extends Model
{
$this->attributes['description'] = e($value);
}
/**
* @return BelongsTo
*/
public function userGroup(): BelongsTo
{
return $this->belongsTo(UserGroup::class);
}
}

View File

@ -99,7 +99,7 @@ class Tag extends Model
'longitude' => 'float',
];
/** @var array Fields that can be filled */
protected $fillable = ['user_id', 'tag', 'date', 'description', 'tagMode'];
protected $fillable = ['user_id', 'user_group_id', 'tag', 'date', 'description', 'tagMode'];
protected $hidden = ['zoomLevel', 'latitude', 'longitude'];

View File

@ -29,6 +29,7 @@ use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Support\Carbon;
/**
@ -106,6 +107,16 @@ class UserGroup extends Model
return $this->hasMany(GroupMembership::class);
}
/**
* Link to piggy banks.
*
* @return HasManyThrough
*/
public function piggyBanks(): HasManyThrough
{
return $this->hasManyThrough(PiggyBank::class, Account::class);
}
/**
* Link to transaction journals.
*

View File

@ -88,7 +88,7 @@ class Webhook extends Model
'response' => 'integer',
'delivery' => 'integer',
];
protected $fillable = ['active', 'trigger', 'response', 'delivery', 'user_id', 'url', 'title', 'secret'];
protected $fillable = ['active', 'trigger', 'response', 'delivery', 'user_id', 'user_group_id', 'url', 'title', 'secret'];
/**
* @return array

View File

@ -25,6 +25,10 @@ namespace FireflyIII\Providers;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepository;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use FireflyIII\Repositories\Administration\PiggyBank\PiggyBankRepository as AdminPiggyBankRepository;
use FireflyIII\Repositories\Administration\PiggyBank\PiggyBankRepositoryInterface as AdminPiggyBankRepositoryInterface;
use Illuminate\Foundation\Application;
use Illuminate\Support\ServiceProvider;
@ -57,5 +61,17 @@ class PiggyBankServiceProvider extends ServiceProvider
return $repository;
}
);
$this->app->bind(
AdminPiggyBankRepositoryInterface::class,
function (Application $app) {
/** @var AdminPiggyBankRepository $repository */
$repository = app(AdminPiggyBankRepository::class);
if ($app->auth->check()) { // @phpstan-ignore-line (phpstan does not understand the reference to auth)
$repository->setUser(auth()->user());
}
return $repository;
}
);
}
}

View File

@ -0,0 +1,50 @@
<?php
declare(strict_types=1);
/*
* PiggyBankRepository.php
* Copyright (c) 2023 james@firefly-iii.org
*
* 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/>.
*/
namespace FireflyIII\Repositories\Administration\PiggyBank;
use FireflyIII\Support\Repositories\Administration\AdministrationTrait;
use Illuminate\Support\Collection;
/**
* Class PiggyBankRepository
*/
class PiggyBankRepository implements PiggyBankRepositoryInterface
{
use AdministrationTrait;
/**
* @inheritDoc
*/
public function getPiggyBanks(): Collection
{
return $this->userGroup->piggyBanks()
->with(
[
'account',
'objectGroups',
]
)
->orderBy('order', 'ASC')->get();
}
}

View File

@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
/*
* PiggyBankRepositoryInterface.php
* Copyright (c) 2023 james@firefly-iii.org
*
* 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/>.
*/
namespace FireflyIII\Repositories\Administration\PiggyBank;
use Illuminate\Support\Collection;
/**
* Interface PiggyBankRepositoryInterface
*/
interface PiggyBankRepositoryInterface
{
/**
* Return all piggy banks.
*
* @return Collection
*/
public function getPiggyBanks(): Collection;
}

View File

@ -249,6 +249,7 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface
return AvailableBudget::create(
[
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'transaction_currency_id' => $data['currency_id'],
'amount' => $data['amount'],
'start_date' => $start,

View File

@ -53,9 +53,10 @@ trait CreatesObjectGroups
if (!$this->hasObjectGroup($title)) {
return ObjectGroup::create(
[
'user_id' => $this->user->id,
'title' => $title,
'order' => $maxOrder + 1,
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'title' => $title,
'order' => $maxOrder + 1,
]
);
}

View File

@ -280,7 +280,8 @@ class RuleRepository implements RuleRepositoryInterface
// start by creating a new rule:
$rule = new Rule();
$rule->user()->associate($this->user->id);
$rule->user()->associate($this->user);
$rule->userGroup()->associate($this->user->userGroup);
$rule->rule_group_id = $ruleGroup->id;
$rule->order = 31337;

View File

@ -121,14 +121,15 @@ class WebhookRepository implements WebhookRepositoryInterface
{
$secret = Str::random(24);
$fullData = [
'user_id' => $this->user->id,
'active' => $data['active'] ?? false,
'title' => $data['title'] ?? null,
'trigger' => $data['trigger'],
'response' => $data['response'],
'delivery' => $data['delivery'],
'secret' => $secret,
'url' => $data['url'],
'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id,
'active' => $data['active'] ?? false,
'title' => $data['title'] ?? null,
'trigger' => $data['trigger'],
'response' => $data['response'],
'delivery' => $data['delivery'],
'secret' => $secret,
'url' => $data['url'],
];
return Webhook::create($fullData);

View File

@ -0,0 +1,97 @@
<?php
/**
* ConvertToWithdrawal.php
* Copyright (c) 2019 james@firefly-iii.org
*
* 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\Actions;
use DB;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use Illuminate\Support\Facades\Log;
/**
*
* Class SwitchAccounts
*/
class SwitchAccounts implements ActionInterface
{
private RuleAction $action;
/**
* TriggerInterface constructor.
*
* @param RuleAction $action
*/
public function __construct(RuleAction $action)
{
$this->action = $action;
}
/**
* @inheritDoc
*/
public function actOnArray(array $journal): bool
{
// make object from array (so the data is fresh).
/** @var TransactionJournal|null $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
if (null === $object) {
Log::error(sprintf('Cannot find journal #%d, cannot switch accounts.', $journal['transaction_journal_id']));
return false;
}
$groupCount = TransactionJournal::where('transaction_group_id', $journal['transaction_group_id'])->count();
if ($groupCount > 1) {
Log::error(sprintf('Group #%d has more than one transaction in it, cannot switch accounts.', $journal['transaction_group_id']));
return false;
}
$type = $object->transactionType->type;
if (TransactionType::TRANSFER !== $type) {
Log::error(sprintf('Journal #%d is NOT a transfer (rule #%d), cannot switch accounts.', $journal['transaction_journal_id'], $this->action->rule_id));
return false;
}
/** @var Transaction $sourceTransaction */
$sourceTransaction = $object->transactions()->where('amount', '<', 0)->first();
/** @var Transaction $destTransaction */
$destTransaction = $object->transactions()->where('amount', '>', 0)->first();
if (null === $sourceTransaction || null === $destTransaction) {
Log::error(sprintf('Journal #%d has no source or destination transaction (rule #%d), cannot switch accounts.', $journal['transaction_journal_id'], $this->action->rule_id));
return false;
}
$sourceAccountId = (int)$sourceTransaction->account_id;
$destinationAccountId = $destTransaction->account_id;
$sourceTransaction->account_id = $destinationAccountId;
$destTransaction->account_id = $sourceAccountId;
$sourceTransaction->save();
$destTransaction->save();
event(new TriggeredAuditLog($this->action->rule, $object, 'switch_accounts', $sourceAccountId, $destinationAccountId));
return true;
}
}

View File

@ -37,10 +37,11 @@ use Illuminate\Support\Collection;
*/
class AccountTransformer extends AbstractTransformer
{
private array $accountMeta;
private array $balances;
private array $currencies;
private ?TransactionCurrency $currency;
private array $accountMeta;
private array $balances;
private array $convertedBalances;
private array $currencies;
private TransactionCurrency $default;
/**
* @inheritDoc
@ -48,12 +49,12 @@ class AccountTransformer extends AbstractTransformer
*/
public function collectMetaData(Collection $objects): void
{
$this->currency = null;
$this->currencies = [];
$this->accountMeta = [];
$this->balances = app('steam')->balancesByAccounts($objects, $this->getDate());
$repository = app(CurrencyRepositoryInterface::class);
$this->currency = app('amount')->getDefaultCurrency();
$this->currencies = [];
$this->accountMeta = [];
$this->balances = app('steam')->balancesByAccounts($objects, $this->getDate());
$this->convertedBalances = app('steam')->balancesByAccountsConverted($objects, $this->getDate());
$repository = app(CurrencyRepositoryInterface::class);
$this->default = app('amount')->getDefaultCurrency();
// get currencies:
$accountIds = $objects->pluck('id')->toArray();
@ -100,10 +101,13 @@ class AccountTransformer extends AbstractTransformer
$id = (int)$account->id;
// no currency? use default
$currency = $this->currency;
$currency = $this->default;
if (0 !== (int)$this->accountMeta[$id]['currency_id']) {
$currency = $this->currencies[(int)$this->accountMeta[$id]['currency_id']];
}
// amounts and calculation.
$balance = $this->balances[$id] ?? null;
$nativeBalance = $this->convertedBalances[$id]['native_balance'] ?? null;
return [
'id' => (string)$account->id,
@ -112,19 +116,30 @@ class AccountTransformer extends AbstractTransformer
'active' => $account->active,
//'order' => $order,
'name' => $account->name,
'iban' => '' === $account->iban ? null : $account->iban,
// 'type' => strtolower($accountType),
// 'account_role' => $accountRole,
'currency_id' => $currency->id,
'currency_id' => (string)$currency->id,
'currency_code' => $currency->code,
'currency_symbol' => $currency->symbol,
'currency_decimal_places' => $currency->decimal_places,
'current_balance' => $this->balances[$id] ?? null,
'current_balance_date' => $this->getDate(),
'currency_decimal_places' => (int)$currency->decimal_places,
'native_id' => (string)$this->default->id,
'native_code' => $this->default->code,
'native_symbol' => $this->default->symbol,
'native_decimal_places' => (int)$this->default->decimal_places,
// balance:
'current_balance' => $balance,
'native_current_balance' => $nativeBalance,
'current_balance_date' => $this->getDate(),
// more meta
// 'notes' => $this->repository->getNoteText($account),
// 'monthly_payment_date' => $monthlyPaymentDate,
// 'credit_card_type' => $creditCardType,
// 'account_number' => $this->repository->getMetaValue($account, 'account_number'),
'iban' => '' === $account->iban ? null : $account->iban,
// 'bic' => $this->repository->getMetaValue($account, 'BIC'),
// 'virtual_balance' => number_format((float) $account->virtual_balance, $decimalPlaces, '.', ''),
// 'opening_balance' => $openingBalance,
@ -138,7 +153,7 @@ class AccountTransformer extends AbstractTransformer
// 'longitude' => $longitude,
// 'latitude' => $latitude,
// 'zoom_level' => $zoomLevel,
'links' => [
'links' => [
[
'rel' => 'self',
'uri' => '/accounts/' . $account->id,

View File

@ -0,0 +1,269 @@
<?php
/**
* PiggyBankTransformer.php
* Copyright (c) 2019 james@firefly-iii.org
*
* 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\Transformers\V2;
use Carbon\Carbon;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\Note;
use FireflyIII\Models\ObjectGroup;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\PiggyBankRepetition;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use JsonException;
/**
* Class PiggyBankTransformer
*/
class PiggyBankTransformer extends AbstractTransformer
{
// private AccountRepositoryInterface $accountRepos;
// private CurrencyRepositoryInterface $currencyRepos;
// private PiggyBankRepositoryInterface $piggyRepos;
private array $accounts;
private ExchangeRateConverter $converter;
private array $currencies;
private TransactionCurrency $default;
private array $groups;
private array $notes;
private array $repetitions;
/**
* PiggyBankTransformer constructor.
*
*/
public function __construct()
{
$this->notes = [];
$this->accounts = [];
$this->groups = [];
$this->currencies = [];
$this->repetitions = [];
// $this->
// $this->currencyRepos = app(CurrencyRepositoryInterface::class);
// $this->piggyRepos = app(PiggyBankRepositoryInterface::class);
}
/**
* @inheritDoc
*/
public function collectMetaData(Collection $objects): void
{
// TODO move to repository (does not exist yet)
$piggyBanks = $objects->pluck('id')->toArray();
$accountInfo = Account::whereIn('id', $objects->pluck('account_id')->toArray())->get();
$currencyPreferences = AccountMeta::where('name', '"currency_id"')->whereIn('account_id', $objects->pluck('account_id')->toArray())->get();
/** @var Account $account */
foreach ($accountInfo as $account) {
$id = (int)$account->id;
$this->accounts[$id] = [
'name' => $account->name,
];
}
/** @var AccountMeta $preference */
foreach ($currencyPreferences as $preference) {
$currencyId = (int)$preference->data;
$accountId = (int)$preference->account_id;
$currencies[$currencyId] = $currencies[$currencyId] ?? TransactionJournal::find($currencyId);
$this->currencies[$accountId] = $currencies[$currencyId];
}
// grab object groups:
$set = DB::table('object_groupables')
->leftJoin('object_groups', 'object_groups.id', '=', 'object_groupables.object_group_id')
->where('object_groupables.object_groupable_type', PiggyBank::class)
->get(['object_groupables.*', 'object_groups.title', 'object_groups.order']);
/** @var ObjectGroup $entry */
foreach ($set as $entry) {
$piggyBankId = (int)$entry->object_groupable_id;
$id = (int)$entry->object_group_id;
$order = (int)$entry->order;
$this->groups[$piggyBankId] = [
'object_group_id' => $id,
'object_group_title' => $entry->title,
'object_group_order' => $order,
];
}
// grab repetitions (for current amount):
$repetitions = PiggyBankRepetition::whereIn('piggy_bank_id', $piggyBanks)->get();
/** @var PiggyBankRepetition $repetition */
foreach ($repetitions as $repetition) {
$this->repetitions[(int)$repetition->piggy_bank_id] = [
'amount' => $repetition->currentamount,
];
}
// grab notes
// continue with notes
$notes = Note::whereNoteableType(PiggyBank::class)->whereIn('noteable_id', array_keys($piggyBanks))->get();
/** @var Note $note */
foreach ($notes as $note) {
$id = (int)$note->noteable_id;
$this->notes[$id] = $note;
}
$this->default = app('amount')->getDefaultCurrencyByUser(auth()->user());
$this->converter = new ExchangeRateConverter();
}
/**
* Transform the piggy bank.
*
* @param PiggyBank $piggyBank
*
* @return array
* @throws FireflyException
* @throws JsonException
*/
public function transform(PiggyBank $piggyBank): array
{
// $account = $piggyBank->account;
// $this->accountRepos->setUser($account->user);
// $this->currencyRepos->setUser($account->user);
// $this->piggyRepos->setUser($account->user);
// get currency from account, or use default.
// $currency = $this->accountRepos->getAccountCurrency($account) ?? app('amount')->getDefaultCurrencyByUser($account->user);
// note
// $notes = $this->piggyRepos->getNoteText($piggyBank);
// $notes = '' === $notes ? null : $notes;
// $objectGroupId = null;
// $objectGroupOrder = null;
// $objectGroupTitle = null;
// /** @var ObjectGroup $objectGroup */
// $objectGroup = $piggyBank->objectGroups->first();
// if (null !== $objectGroup) {
// $objectGroupId = (int)$objectGroup->id;
// $objectGroupOrder = (int)$objectGroup->order;
// $objectGroupTitle = $objectGroup->title;
// }
// get currently saved amount:
// $currentAmount = app('steam')->bcround($this->piggyRepos->getCurrentAmount($piggyBank), $currency->decimal_places);
$percentage = null;
$leftToSave = null;
$nativeLeftToSave = null;
$savePerMonth = null;
$nativeSavePerMonth = null;
$startDate = $piggyBank->startdate?->format('Y-m-d');
$targetDate = $piggyBank->targetdate?->format('Y-m-d');
$accountId = (int)$piggyBank->account_id;
$accountName = $this->accounts[$accountId]['name'] ?? null;
$currency = $this->currencies[$accountId] ?? $this->default;
$currentAmount = app('steam')->bcround($this->repetitions[(int)$piggyBank->id]['amount'] ?? '0', $currency->decimal_places);
$nativeCurrentAmount = $this->converter->convert($this->default, $currency, today(), $currentAmount);
$targetAmount = $piggyBank->targetamount;
$nativeTargetAmount = $this->converter->convert($this->default, $currency, today(), $targetAmount);
$note = $this->notes[(int)$piggyBank->id] ?? null;
$group = $this->groups[(int)$piggyBank->id] ?? null;
if (0 !== bccomp($targetAmount, '0')) { // target amount is not 0.00
$leftToSave = bcsub($targetAmount, $currentAmount);
$nativeLeftToSave = $this->converter->convert($this->default, $currency, today(), $leftToSave);
$percentage = (int)bcmul(bcdiv($currentAmount, $targetAmount), '100');
$savePerMonth = $this->getSuggestedMonthlyAmount($currentAmount, $targetAmount, $piggyBank->startdate, $piggyBank->targetdate);
$nativeSavePerMonth = $this->converter->convert($this->default, $currency, today(), $savePerMonth);
}
return [
'id' => (string)$piggyBank->id,
'created_at' => $piggyBank->created_at->toAtomString(),
'updated_at' => $piggyBank->updated_at->toAtomString(),
'account_id' => (string)$piggyBank->account_id,
'account_name' => $accountName,
'name' => $piggyBank->name,
'currency_id' => (string)$currency->id,
'currency_code' => $currency->code,
'currency_symbol' => $currency->symbol,
'currency_decimal_places' => (int)$currency->decimal_places,
'native_id' => (string)$this->default->id,
'native_code' => $this->default->code,
'native_symbol' => $this->default->symbol,
'native_decimal_places' => (int)$this->default->decimal_places,
'current_amount' => $currentAmount,
'native_current_amount' => $nativeCurrentAmount,
'target_amount' => $targetAmount,
'native_target_amount' => $nativeTargetAmount,
'percentage' => $percentage,
'left_to_save' => $leftToSave,
'native_left_to_save' => $nativeLeftToSave,
'save_per_month' => $savePerMonth,
'native_save_per_month' => $nativeSavePerMonth,
'start_date' => $startDate,
'target_date' => $targetDate,
'order' => (int)$piggyBank->order,
'active' => $piggyBank->active,
'notes' => $note,
'object_group_id' => $group ? $group['object_group_id'] : null,
'object_group_order' => $group ? $group['object_group_order'] : null,
'object_group_title' => $group ? $group['object_group_title'] : null,
'links' => [
[
'rel' => 'self',
'uri' => '/piggy_banks/' . $piggyBank->id,
],
],
];
}
/**
* @return string|null
*/
private function getSuggestedMonthlyAmount(string $currentAmount, string $targetAmount, ?Carbon $startDate, ?Carbon $targetDate): string
{
$savePerMonth = '0';
if (null === $targetDate) {
return '0';
}
if (bccomp($currentAmount, $targetAmount) < 1) {
$now = today(config('app.timezone'));
$startDate = null !== $startDate && $startDate->gte($now) ? $startDate : $now;
$diffInMonths = $startDate->diffInMonths($targetDate, false);
$remainingAmount = bcsub($targetAmount, $currentAmount);
// more than 1 month to go and still need money to save:
if ($diffInMonths > 0 && 1 === bccomp($remainingAmount, '0')) {
$savePerMonth = bcdiv($remainingAmount, (string)$diffInMonths);
}
// less than 1 month to go but still need money to save:
if (0 === $diffInMonths && 1 === bccomp($remainingAmount, '0')) {
$savePerMonth = $remainingAmount;
}
}
return $savePerMonth;
}
}

View File

@ -86,6 +86,7 @@ use FireflyIII\TransactionRules\Actions\SetDescription;
use FireflyIII\TransactionRules\Actions\SetDestinationAccount;
use FireflyIII\TransactionRules\Actions\SetNotes;
use FireflyIII\TransactionRules\Actions\SetSourceAccount;
use FireflyIII\TransactionRules\Actions\SwitchAccounts;
use FireflyIII\TransactionRules\Actions\UpdatePiggybank;
use FireflyIII\User;
@ -111,7 +112,7 @@ return [
],
'version' => '6.0.20',
'api_version' => '2.0.5',
'db_version' => 19,
'db_version' => 20,
// generic settings
'maxUploadSize' => 1073741824, // 1 GB
@ -503,6 +504,7 @@ return [
'convert_withdrawal' => ConvertToWithdrawal::class,
'convert_deposit' => ConvertToDeposit::class,
'convert_transfer' => ConvertToTransfer::class,
'switch_accounts' => SwitchAccounts::class,
'update_piggy' => UpdatePiggybank::class,
'delete_transaction' => DeleteTransaction::class,
'append_descr_to_notes' => AppendDescriptionToNotes::class,

View File

@ -89,8 +89,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'account_types', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'account_types', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -117,8 +117,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'transaction_currencies', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'transaction_currencies', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -143,8 +143,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'transaction_types', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'transaction_types', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -172,8 +172,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'jobs', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'jobs', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -195,8 +195,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'password_resets', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'password_resets', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -219,8 +219,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'permissions', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'permissions', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -243,8 +243,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'roles', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'roles', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -269,8 +269,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'permission_role', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'permission_role', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -294,8 +294,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'sessions', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'sessions', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -318,8 +318,8 @@ class CreateSupportTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'configuration', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'configuration', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}

View File

@ -65,8 +65,8 @@ class CreateUsersTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'users', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'users', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}

View File

@ -111,8 +111,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'accounts', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'accounts', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -130,8 +130,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'account_meta', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'account_meta', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -158,8 +158,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'piggy_banks', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'piggy_banks', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -178,8 +178,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'piggy_bank_repetitions', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'piggy_bank_repetitions', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -211,8 +211,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'attachments', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'attachments', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -245,8 +245,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'bills', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'bills', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -271,8 +271,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'budgets', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'budgets', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
if (!Schema::hasTable('budget_limits')) {
@ -291,8 +291,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'budget_limits', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'budget_limits', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
if (!Schema::hasTable('limit_repetitions')) {
@ -310,8 +310,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'limit_repetitions', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'limit_repetitions', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -338,8 +338,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'categories', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'categories', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -361,8 +361,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'preferences', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'preferences', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -387,8 +387,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'role_user', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'role_user', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -414,8 +414,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'rule_groups', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'rule_groups', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
if (!Schema::hasTable('rules')) {
@ -442,8 +442,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'rules', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'rules', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
if (!Schema::hasTable('rule_actions')) {
@ -467,8 +467,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'rule_actions', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'rule_actions', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
if (!Schema::hasTable('rule_triggers')) {
@ -492,8 +492,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'rule_triggers', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'rule_triggers', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -526,8 +526,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'tags', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'tags', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}
@ -565,8 +565,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'transaction_journals', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'transaction_journals', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -585,8 +585,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'journal_meta', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'journal_meta', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -606,8 +606,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'tag_transaction_journal', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'tag_transaction_journal', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -624,8 +624,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'budget_transaction_journal', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'budget_transaction_journal', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -642,8 +642,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'category_transaction_journal', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'category_transaction_journal', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -664,8 +664,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'piggy_bank_events', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'piggy_bank_events', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -687,8 +687,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'transactions', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'transactions', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -706,8 +706,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'budget_transaction', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'budget_transaction', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
@ -725,8 +725,8 @@ class CreateMainTables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_ERROR, 'category_transaction', $e->getMessage()));
Log::error(self::TABLE_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_ERROR, 'category_transaction', $e->getMessage()));
app('log')->error(self::TABLE_ALREADY_EXISTS);
}
}
}

View File

@ -57,8 +57,8 @@ class FixNullables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_UPDATE_ERROR, 'rule_groups', $e->getMessage()));
Log::error(self::COLUMN_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_UPDATE_ERROR, 'rule_groups', $e->getMessage()));
app('log')->error(self::COLUMN_ALREADY_EXISTS);
}
}
@ -71,8 +71,8 @@ class FixNullables extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf(self::TABLE_UPDATE_ERROR, 'rules', $e->getMessage()));
Log::error(self::COLUMN_ALREADY_EXISTS);
app('log')->error(sprintf(self::TABLE_UPDATE_ERROR, 'rules', $e->getMessage()));
app('log')->error(self::COLUMN_ALREADY_EXISTS);
}
}
}

View File

@ -47,8 +47,8 @@ class ExpandTransactionsTable extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not drop column "identifier": %s', $e->getMessage()));
Log::error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not drop column "identifier": %s', $e->getMessage()));
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -68,8 +68,8 @@ class ExpandTransactionsTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -61,8 +61,8 @@ class ChangesForV410 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "notes": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "notes": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -46,8 +46,8 @@ class ChangesForV420 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -67,8 +67,8 @@ class ChangesForV420 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -65,8 +65,8 @@ class ChangesForV430 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "available_budgets": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "available_budgets": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -48,8 +48,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
if (!Schema::hasColumn('budget_limits', 'repeats')) {
@ -61,8 +61,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
// change field "start_date" to "startdate"
@ -75,8 +75,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -90,8 +90,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
// remove decimal places
@ -104,8 +104,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -126,8 +126,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -141,8 +141,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -156,8 +156,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -171,8 +171,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
if (Schema::hasColumn('budget_limits', 'repeat_freq')) {
@ -184,8 +184,8 @@ class ChangesForV431 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -53,8 +53,8 @@ class ChangesForV440 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -85,8 +85,8 @@ class ChangesForV440 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "notifications": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "notifications": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
if (!Schema::hasColumn('transactions', 'transaction_currency_id')) {
@ -101,8 +101,8 @@ class ChangesForV440 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -48,8 +48,8 @@ class ChangesForV450 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -64,8 +64,8 @@ class ChangesForV450 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
if (Schema::hasColumn('transactions', 'foreign_currency_id')) {
try {
@ -76,8 +76,8 @@ class ChangesForV450 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -98,8 +98,8 @@ class ChangesForV450 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -114,8 +114,8 @@ class ChangesForV450 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -65,8 +65,8 @@ class ChangesForV470 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "link_types": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "link_types": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -90,8 +90,8 @@ class ChangesForV470 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "journal_links": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "journal_links": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -48,8 +48,8 @@ class ChangesForV470a extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -69,8 +69,8 @@ class ChangesForV470a extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -61,8 +61,8 @@ class CreateOauthAuthCodesTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "oauth_auth_codes": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "oauth_auth_codes": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -63,8 +63,8 @@ class CreateOauthAccessTokensTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "oauth_access_tokens": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "oauth_access_tokens": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -59,8 +59,8 @@ class CreateOauthRefreshTokensTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "oauth_refresh_tokens": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "oauth_refresh_tokens": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -64,8 +64,8 @@ class CreateOauthClientsTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "oauth_clients": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "oauth_clients": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -58,8 +58,8 @@ class CreateOauthPersonalAccessClientsTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "oauth_personal_access_clients": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "oauth_personal_access_clients": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -50,8 +50,8 @@ class ChangesForV472 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -64,8 +64,8 @@ class ChangesForV472 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -86,8 +86,8 @@ class ChangesForV472 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -100,8 +100,8 @@ class ChangesForV472 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -55,8 +55,8 @@ class ChangesForV473 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -69,8 +69,8 @@ class ChangesForV473 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -92,8 +92,8 @@ class ChangesForV473 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
if (!Schema::hasColumn('rules', 'strict')) {
@ -105,8 +105,8 @@ class ChangesForV473 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -81,8 +81,8 @@ class ChangesForV475 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "recurrences": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "recurrences": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
if (!Schema::hasTable('recurrences_transactions')) {
@ -111,8 +111,8 @@ class ChangesForV475 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "recurrences_transactions": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "recurrences_transactions": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -134,8 +134,8 @@ class ChangesForV475 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "recurrences_repetitions": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "recurrences_repetitions": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -156,8 +156,8 @@ class ChangesForV475 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "recurrences_meta": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "recurrences_meta": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -178,8 +178,8 @@ class ChangesForV475 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "rt_meta": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "rt_meta": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -55,8 +55,8 @@ class ChangesForV477 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -78,8 +78,8 @@ class ChangesForV477 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -50,8 +50,8 @@ class ChangesForV479 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -72,8 +72,8 @@ class ChangesForV479 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -67,8 +67,8 @@ class ChangesForV4710 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "transaction_groups": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "transaction_groups": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -89,8 +89,8 @@ class ChangesForV4710 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "group_journals": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "group_journals": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -67,8 +67,8 @@ class ChangesForV4711 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
try {
@ -79,8 +79,8 @@ class ChangesForV4711 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -66,8 +66,8 @@ class ChangesForV4712 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -50,8 +50,8 @@ class FixLdapConfiguration extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -76,8 +76,8 @@ class FixLdapConfiguration extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -52,21 +52,21 @@ class ChangesForV480 extends Migration
try {
$table->dropForeign('transaction_journals_transaction_group_id_foreign');
} catch (QueryException $e) {
Log::error(sprintf('Could not drop foreign ID: %s', $e->getMessage()));
Log::error('If the foreign ID does not exist (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not drop foreign ID: %s', $e->getMessage()));
app('log')->error('If the foreign ID does not exist (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
try {
$table->dropColumn('transaction_group_id');
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not drop column: %s', $e->getMessage()));
Log::error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not drop column: %s', $e->getMessage()));
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -79,14 +79,14 @@ class ChangesForV480 extends Migration
try {
$table->dropColumn('stop_processing');
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not drop column: %s', $e->getMessage()));
Log::error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not drop column: %s', $e->getMessage()));
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -99,14 +99,14 @@ class ChangesForV480 extends Migration
try {
$table->dropColumn('mfa_secret');
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not drop column: %s', $e->getMessage()));
Log::error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not drop column: %s', $e->getMessage()));
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -134,16 +134,16 @@ class ChangesForV480 extends Migration
try {
$table->foreign('transaction_group_id')->references('id')->on('transaction_groups')->onDelete('cascade');
} catch (QueryException $e) {
Log::error(sprintf('Could not create foreign index: %s', $e->getMessage()));
Log::error(
app('log')->error(sprintf('Could not create foreign index: %s', $e->getMessage()));
app('log')->error(
'If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.'
);
}
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -157,8 +157,8 @@ class ChangesForV480 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -172,8 +172,8 @@ class ChangesForV480 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -69,8 +69,8 @@ class MakeLocationsTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "locations": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "locations": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -69,8 +69,8 @@ class ChangesForV520 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "auto_budgets": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "auto_budgets": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -66,8 +66,8 @@ class ChangesForV530 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "object_groups": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "object_groups": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -82,8 +82,8 @@ class ChangesForV530 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "object_groupables": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "object_groupables": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -51,8 +51,8 @@ class ChangesForV530a extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -73,8 +73,8 @@ class ChangesForV530a extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -51,8 +51,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -65,8 +65,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
// in two steps for sqlite
@ -79,8 +79,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
if (Schema::hasColumn('bills', 'extension_date')) {
@ -92,8 +92,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -114,8 +114,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -128,8 +128,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -143,8 +143,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -157,8 +157,8 @@ class ChangesForV540 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -61,8 +61,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "jobs": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "jobs": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -79,8 +79,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -98,8 +98,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
if (Schema::hasColumn('budget_limits', 'generated')) {
@ -111,8 +111,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -147,8 +147,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "jobs": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "jobs": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
// drop failed jobs table.
@ -170,8 +170,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "failed_jobs": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "failed_jobs": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -188,8 +188,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -209,8 +209,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
// new webhooks table
@ -235,8 +235,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "webhooks": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "webhooks": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -260,8 +260,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "webhook_messages": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "webhook_messages": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
@ -283,8 +283,8 @@ class ChangesForV550 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "webhook_attempts": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "webhook_attempts": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -54,8 +54,8 @@ class ChangesForV550b2 extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -80,8 +80,8 @@ class ChangesForV550b2 extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -44,8 +44,8 @@ class AddLdapColumnsToUsersTable extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -64,8 +64,8 @@ class AddLdapColumnsToUsersTable extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -58,8 +58,8 @@ class ExtendCurrencyInfo extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -42,6 +42,7 @@ class UserGroups extends Migration
'budgets',
'categories',
'recurrences',
'object_groups',
'rule_groups',
'rules',
'tags',
@ -74,8 +75,8 @@ class UserGroups extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}
@ -94,8 +95,8 @@ class UserGroups extends Migration
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -129,8 +130,8 @@ class UserGroups extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "user_groups": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "user_groups": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
if (!Schema::hasTable('user_roles')) {
@ -147,8 +148,8 @@ class UserGroups extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "user_roles": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "user_roles": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
if (!Schema::hasTable('group_memberships')) {
@ -170,8 +171,8 @@ class UserGroups extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "group_memberships": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "group_memberships": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
try {
@ -187,10 +188,10 @@ class UserGroups extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
// ADD columns from tables
// ADD columns to tables
/** @var string $tableName */
foreach ($this->tables as $tableName) {
try {
@ -206,8 +207,8 @@ class UserGroups extends Migration
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
}

View File

@ -61,8 +61,8 @@ class CreateLocalPersonalAccessTokensTable extends Migration
$table->timestamps();
});
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "personal_access_tokens": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "personal_access_tokens": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -26,7 +26,6 @@ use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
/**
@ -51,8 +50,8 @@ return new class () extends Migration {
}
);
} catch (QueryException $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
@ -76,8 +75,8 @@ return new class () extends Migration {
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
Log::error(sprintf('Could not execute query: %s', $e->getMessage()));
Log::error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
};

View File

@ -25,7 +25,6 @@ declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
@ -47,8 +46,8 @@ return new class () extends Migration {
$table->timestamps();
});
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "notifications": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "notifications": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -25,7 +25,6 @@ declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
@ -49,8 +48,8 @@ return new class () extends Migration {
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "invited_users": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "invited_users": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -25,7 +25,6 @@ declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
@ -54,8 +53,8 @@ return new class () extends Migration {
$table->text('after')->nullable();
});
} catch (QueryException $e) {
Log::error(sprintf('Could not create table "audit_log_entries": %s', $e->getMessage()));
Log::error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
app('log')->error(sprintf('Could not create table "audit_log_entries": %s', $e->getMessage()));
app('log')->error('If this table exists already (see the error message), this is not a problem. Other errors? Please open a discussion on GitHub.');
}
}
}

View File

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
*
*/
return new class () extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
try {
Schema::table(
'object_groups',
function (Blueprint $table) {
if (!Schema::hasColumn('object_groups', 'user_group_id')) {
$table->bigInteger('user_group_id', false, true)->nullable()->after('user_id');
$table->foreign('user_group_id', sprintf('%s_to_ugi', 'object_groups'))->references('id')->on('user_groups')->onDelete(
'set null'
)->onUpdate('cascade');
}
}
);
} catch (QueryException $e) {
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
/**
* Reverse the migrations.
*/
public function down(): void
{
try {
Schema::table(
'object_groups',
function (Blueprint $table) {
if ('sqlite' !== config('database.default')) {
$table->dropForeign(sprintf('%s_to_ugi', 'object_groups'));
}
if (Schema::hasColumn('object_groups', 'user_group_id')) {
$table->dropColumn('user_group_id');
}
}
);
} catch (QueryException | ColumnDoesNotExist $e) {
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
}
}
};

View File

@ -47,11 +47,11 @@ class ExchangeRateSeeder extends Seeder
app('log')->debug('Will not seed exchange rates yet.');
return;
}
$users = User::get();
$date = config('cer.date');
$rates = config('cer.rates');
$users = User::get();
$date = config('cer.date');
$rates = config('cer.rates');
$usable = [];
$euro = $this->getCurrency('EUR');
$euro = $this->getCurrency('EUR');
if (null === $euro) {
return;
}
@ -88,28 +88,28 @@ class ExchangeRateSeeder extends Seeder
}
/**
* @param User $user
* @param User $user
* @param TransactionCurrency $from
* @param TransactionCurrency $to
* @param string $date
* @param string $date
*
* @return bool
*/
private function hasRate(User $user, TransactionCurrency $from, TransactionCurrency $to, string $date): bool
{
return $user->currencyExchangeRates()
->where('from_currency_id', $from->id)
->where('to_currency_id', $to->id)
->where('date', $date)
->count() > 0;
->where('from_currency_id', $from->id)
->where('to_currency_id', $to->id)
->where('date', $date)
->count() > 0;
}
/**
* @param User $user
* @param User $user
* @param TransactionCurrency $from
* @param TransactionCurrency $to
* @param string $date
* @param float $rate
* @param string $date
* @param float $rate
*
* @return void
*/
@ -117,12 +117,12 @@ class ExchangeRateSeeder extends Seeder
{
CurrencyExchangeRate::create(
[
'user_id' => $user->id,
'user_group_id' => $user->user_group_id ?? null,
'user_id' => $user->id,
'user_group_id' => $user->user_group_id ?? null,
'from_currency_id' => $from->id,
'to_currency_id' => $to->id,
'date' => $date,
'rate' => $rate,
'to_currency_id' => $to->id,
'date' => $date,
'rate' => $rate,
]
);
}

View File

@ -162,7 +162,7 @@ function onAddNewAction() {
"use strict";
console.log('Now in onAddNewAction()');
var selectQuery = 'select[name^="actions["][name$="][type]"]';
var selectQuery = 'select[name^="actions["][name$="][type]"]';
var selectResult = $(selectQuery);
console.log('Select query is "' + selectQuery + '" and the result length is ' + selectResult.length);
@ -190,7 +190,7 @@ function onAddNewTrigger() {
"use strict";
console.log('Now in onAddNewTrigger()');
var selectQuery = 'select[name^="triggers["][name$="][type]"]';
var selectQuery = 'select[name^="triggers["][name$="][type]"]';
var selectResult = $(selectQuery);
console.log('Select query is "' + selectQuery + '" and the result length is ' + selectResult.length);
@ -217,9 +217,9 @@ function onAddNewTrigger() {
function updateActionInput(selectList) {
console.log('Now in updateActionInput() for a select list, currently with value "' + selectList.val() + '".');
// the actual row this select list is in:
var parent = selectList.parent().parent();
var parent = selectList.parent().parent();
// the text input we're looking for:
var inputQuery = 'input[name^="actions["][name$="][value]"]';
var inputQuery = 'input[name^="actions["][name$="][value]"]';
var inputResult = parent.find(inputQuery);
console.log('Searching for children in this row with query "' + inputQuery + '" resulted in ' + inputResult.length + ' results.');
@ -234,6 +234,7 @@ function updateActionInput(selectList) {
case 'clear_budget':
case 'append_descr_to_notes':
case 'append_notes_to_descr':
case 'switch_accounts':
case 'move_descr_to_notes':
case 'move_notes_to_descr':
case 'clear_notes':
@ -296,9 +297,9 @@ function updateActionInput(selectList) {
function updateTriggerInput(selectList) {
console.log('Now in updateTriggerInput() for a select list, currently with value "' + selectList.val() + '".');
// the actual row this select list is in:
var parent = selectList.parent().parent();
var parent = selectList.parent().parent();
// the text input we're looking for:
var inputQuery = 'input[name^="triggers["][name$="][value]"]';
var inputQuery = 'input[name^="triggers["][name$="][value]"]';
var inputResult = parent.find(inputQuery);
console.log('Searching for children in this row with query "' + inputQuery + '" resulted in ' + inputResult.length + ' results.');
@ -391,50 +392,50 @@ function createAutoComplete(input, URL) {
input.typeahead('destroy');
// append URL:
var lastChar = URL[URL.length - 1];
var lastChar = URL[URL.length - 1];
var urlParamSplit = '?';
if ('&' === lastChar) {
urlParamSplit = '';
}
var source = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: URL + urlParamSplit + 'uid=' + uid,
filter: function (list) {
return $.map(list, function (item) {
if (item.hasOwnProperty('active') && item.active === true) {
return {name: item.name};
}
if (item.hasOwnProperty('active') && item.active === false) {
return;
}
if (item.hasOwnProperty('active')) {
console.log(item.active);
}
return {name: item.name};
});
}
},
remote: {
url: URL + urlParamSplit + 'query=%QUERY&uid=' + uid,
wildcard: '%QUERY',
filter: function (list) {
return $.map(list, function (item) {
if (item.hasOwnProperty('active') && item.active === true) {
return {name: item.name};
}
if (item.hasOwnProperty('active') && item.active === false) {
return;
}
if (item.hasOwnProperty('active')) {
console.log(item.active);
}
return {name: item.name};
});
}
}
});
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: URL + urlParamSplit + 'uid=' + uid,
filter: function (list) {
return $.map(list, function (item) {
if (item.hasOwnProperty('active') && item.active === true) {
return {name: item.name};
}
if (item.hasOwnProperty('active') && item.active === false) {
return;
}
if (item.hasOwnProperty('active')) {
console.log(item.active);
}
return {name: item.name};
});
}
},
remote: {
url: URL + urlParamSplit + 'query=%QUERY&uid=' + uid,
wildcard: '%QUERY',
filter: function (list) {
return $.map(list, function (item) {
if (item.hasOwnProperty('active') && item.active === true) {
return {name: item.name};
}
if (item.hasOwnProperty('active') && item.active === false) {
return;
}
if (item.hasOwnProperty('active')) {
console.log(item.active);
}
return {name: item.name};
});
}
}
});
source.initialize();
input.typeahead({hint: true, highlight: true,}, {source: source, displayKey: 'name', autoSelect: false});
}

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Транзакцията е от тип ":trigger_value"',
'rule_trigger_category_is_choice' => 'Категорията е..',
'rule_trigger_category_is' => 'Категорията е ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Сумата е по-малко от..',
'rule_trigger_amount_less' => 'Сумата е по-малко от :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Amount is..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Сумата е по-голяма от..',
'rule_trigger_amount_more' => 'Сумата е по-голяма от :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Описанието започва с..',
'rule_trigger_description_starts' => 'Описанието започва с ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Описанието завършва с..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'ID на транзакцията е..',
'rule_trigger_journal_id' => 'ID на транзакцията е ":trigger_value"',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_any_external_url' => 'Transaction has an external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Задайте категория на ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Свържи към сметка ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Задай бележките на ":action_value"',
'rule_action_convert_deposit_choice' => 'Преобразувайте транзакцията в депозит',
'rule_action_convert_deposit' => 'Преобразувайте транзакцията в депозит в ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Начало на обхвата',
'end_date' => 'Край на обхвата',
'enddate' => 'End date',
'move_rules_before_delete' => 'Rule group',
'start' => 'Начало на обхвата',
'end' => 'Край на обхвата',
'delete_account' => 'Изтрий сметка ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'La transacció és del tipus ":trigger_value"',
'rule_trigger_category_is_choice' => 'La categoria és..',
'rule_trigger_category_is' => 'La categoria és ":trigger_value"',
'rule_trigger_amount_less_choice' => 'La quantitat és inferior a..',
'rule_trigger_amount_less' => 'La quantitat és inferior a :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'La quantitat és..',
'rule_trigger_amount_is' => 'La quantitat és :trigger_value',
'rule_trigger_amount_more_choice' => 'La quantitat és superior a..',
'rule_trigger_amount_more' => 'La quantitat és superior a :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'La descripció comença per..',
'rule_trigger_description_starts' => 'La descripció comença per ":trigger_value"',
'rule_trigger_description_ends_choice' => 'La descripció acaba amb..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'La referència interna és ":trigger_value"',
'rule_trigger_journal_id_choice' => 'L\'ID del llibre de transaccions és..',
'rule_trigger_journal_id' => 'L\'ID del llibre de transaccions és ":trigger_value"',
'rule_trigger_no_external_url' => 'La transacció no té URL extern',
'rule_trigger_any_external_url' => 'La transacció té URL extern',
'rule_trigger_any_external_url_choice' => 'La transacció té URL extern',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'La transacció no té URL extern',
'rule_trigger_no_external_url' => 'La transacció no té URL extern',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'L\'ID de la transacció és..',
'rule_trigger_id' => 'L\'ID de la transacció és ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'El SEPA CT és..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'ELIMINAR transacció(!)',
'rule_action_delete_transaction' => 'ELIMINAR transacció(!)',
'rule_action_set_category' => 'Estableix categoria a ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Establir les notes a ..',
'rule_action_link_to_bill_choice' => 'Enllaçar a una factura ..',
'rule_action_link_to_bill' => 'Enllaçar a la factura ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Establir notes a ":action_value"',
'rule_action_convert_deposit_choice' => 'Convertir la transacció a un dipòsit',
'rule_action_convert_deposit' => 'Convertir la transacció a un dipòsit de ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Etiqueta buidada',
'ale_action_clear_all_tags' => 'Buidades totes les etiquetes',
'ale_action_set_bill' => 'Enllaçat a la factura',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Establir pressupost',
'ale_action_set_category' => 'Establir categoria',
'ale_action_set_source' => 'Establir compte d\'origen',
@ -2715,8 +2723,8 @@ return [
'ale_action_add_tag' => 'Etiqueta afegida',
// dashboard
'enable_auto_convert' => 'Enable currency conversion',
'disable_auto_convert' => 'Disable currency conversion',
'enable_auto_convert' => 'Habilita la conversió de moneda',
'disable_auto_convert' => 'Deshabilita la conversió de moneda',
];

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Inici del rang',
'end_date' => 'Fi del rang',
'enddate' => 'Data de fi',
'move_rules_before_delete' => 'Rule group',
'start' => 'Inici del rang',
'end' => 'Fi del rang',
'delete_account' => 'Eliminar compte ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Transakce je typu „:trigger_value“',
'rule_trigger_category_is_choice' => 'Kategorie je…',
'rule_trigger_category_is' => 'Kategorie je „:trigger_value“',
'rule_trigger_amount_less_choice' => 'Částka je nižší než…',
'rule_trigger_amount_less' => 'Částka je nižší než :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Amount is..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Částka je vyšší než…',
'rule_trigger_amount_more' => 'Částka je vyšší než :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Popis začíná na…',
'rule_trigger_description_starts' => 'Popis začíná na „:trigger_value“',
'rule_trigger_description_ends_choice' => 'Popis končí na…',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Transaction journal ID is..',
'rule_trigger_journal_id' => 'Transaction journal ID is ":trigger_value"',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_any_external_url' => 'Transaction has an external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Nastavit kategorii na „:action_value“',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Link to bill ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Nastavit poznámky na „:action_value“',
'rule_action_convert_deposit_choice' => 'Přeměnit tuto transakci na vklad',
'rule_action_convert_deposit' => 'Přeměnit tuto transakci z vkladu na „:action_value“',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Začátek rozsahu',
'end_date' => 'Konec rozsahu',
'enddate' => 'Datum ukončení',
'move_rules_before_delete' => 'Rule group',
'start' => 'Začátek rozsahu',
'end' => 'Konec rozsahu',
'delete_account' => 'Smazat účet „:name“',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Transaktionen er af typen ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategorien er..',
'rule_trigger_category_is' => 'Kategori er ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Beløbet er mindre end..',
'rule_trigger_amount_less' => 'Beløbet er mindre end :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Amount is..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Beløbet er mere end..',
'rule_trigger_amount_more' => 'Beløbet er mere end :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Beskrivelsen starter med..',
'rule_trigger_description_starts' => 'Beskrivelsen starter med ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Beskrivelsen slutter med..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Transaktionsjournal ID er..',
'rule_trigger_journal_id' => 'Transaktionsjournal ID er ":trigger_value"',
'rule_trigger_no_external_url' => 'Transaktion har ikke noget eksternt URL',
'rule_trigger_any_external_url' => 'Transaktion har et eksternt URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Transaktion har ikke noget eksternt URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Sæt kategori til ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Link til regning ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Sæt noter til ":action_value"',
'rule_action_convert_deposit_choice' => 'Konverter transaktionen til et indskud',
'rule_action_convert_deposit' => 'Konverter transaktionen til et indskud fra ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Start på området',
'end_date' => 'Slut på området',
'enddate' => 'Slut dato',
'move_rules_before_delete' => 'Rule group',
'start' => 'Start på området',
'end' => 'Slut på området',
'delete_account' => 'Slet konto ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Buchung ist vom Typ ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategorie ist..',
'rule_trigger_category_is' => 'Kategorie ist ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Betrag ist geringer als..',
'rule_trigger_amount_less' => 'Betrag ist kleiner als :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Betrag ist..',
'rule_trigger_amount_is' => 'Betrag lautet :trigger_value',
'rule_trigger_amount_more_choice' => 'Betrag ist mehr als..',
'rule_trigger_amount_more' => 'Betrag ist größer als :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Beschreibung beginnt mit..',
'rule_trigger_description_starts' => 'Beschreibung beginnt mit ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Beschreibung endet mit..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Interne Referenz ist ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Transaktions-Journal-ID ist..',
'rule_trigger_journal_id' => 'Transaktions-Journal-ID ist „:trigger_value”',
'rule_trigger_no_external_url' => 'Buchung hat keine externe URL',
'rule_trigger_any_external_url' => 'Buchung hat eine externe URL',
'rule_trigger_any_external_url_choice' => 'Buchung hat eine externe URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Buchung hat keine externe URL',
'rule_trigger_no_external_url' => 'Buchung hat keine externe URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Buchungskennung lautet..',
'rule_trigger_id' => 'Buchungskennung lautet „:trigger_value”',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT ist...',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'Buchung LÖSCHEN(!)',
'rule_action_delete_transaction' => 'Buchung LÖSCHEN(!)',
'rule_action_set_category' => 'Kategorie auf ":action_value" setzen',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Setze Notizen auf ..',
'rule_action_link_to_bill_choice' => 'Mit einer Rechnung verknüpfen..',
'rule_action_link_to_bill' => 'Mit Rechnung „:action_value” verknüpfen',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Notizen auf „:action_value” setzen',
'rule_action_convert_deposit_choice' => 'Buchung in eine Einnahme umwandeln',
'rule_action_convert_deposit' => 'Buchung von ":action_value" in eine Einnahme umwandeln',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Schlagwort geleert',
'ale_action_clear_all_tags' => 'Alle Schlagwörter geleert',
'ale_action_set_bill' => 'Verknüpft mit Rechnung',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Budget festlegen',
'ale_action_set_category' => 'Kategorie festlegen',
'ale_action_set_source' => 'Quellkonto festlegen',
@ -2715,8 +2723,8 @@ return [
'ale_action_add_tag' => 'Schlagwort hinzugefügt',
// dashboard
'enable_auto_convert' => 'Enable currency conversion',
'disable_auto_convert' => 'Disable currency conversion',
'enable_auto_convert' => 'Währungsumrechnung aktivieren',
'disable_auto_convert' => 'Währungsumrechnung deaktivieren',
];

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Anfang des Bereichs',
'end_date' => 'Ende des Bereichs',
'enddate' => 'Endet am',
'move_rules_before_delete' => 'Rule group',
'start' => 'Anfang des Bereichs',
'end' => 'Ende des Bereichs',
'delete_account' => 'Konto „:name” löschen',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Η συναλλαγή είναι τύπου ":trigger_value"',
'rule_trigger_category_is_choice' => 'Η κατηγορία είναι..',
'rule_trigger_category_is' => 'Η κατηγορία είναι ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Το ποσό είναι μικρότερο από..',
'rule_trigger_amount_less' => 'Το ποσό είναι μικρότερο από :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Amount is..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Το ποσό είναι μεγαλύτερο από..',
'rule_trigger_amount_more' => 'Το ποσό είναι μεγαλύτερο από :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Η περιγραφή αρχίζει με..',
'rule_trigger_description_starts' => 'Η περιγραφή αρχίζει με ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Η περιγραφή τελειώνει με..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Το ημερολογιακό ID της συναλλαγής είναι..',
'rule_trigger_journal_id' => 'Το ημερολογιακό ID της συναλλαγής είναι ":trigger_value"',
'rule_trigger_no_external_url' => 'Η συναλλαγή δεν έχει εξωτερικό URL',
'rule_trigger_any_external_url' => 'Η συναλλαγή έχει ένα εξωτερικό URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Η συναλλαγή δεν έχει εξωτερικό URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Ορίστε την κατηγορία σε ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Σύνδεση στο πάγιο έξοδο ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Ορισμός σημειώσεων σε ":action_value"',
'rule_action_convert_deposit_choice' => 'Μετατροπή της συναλλαγής σε μία κατάθεση',
'rule_action_convert_deposit' => 'Μετατροπή της συναλλαγής σε μία κατάθεση από ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Αφαίρεση ετικέτας',
'ale_action_clear_all_tags' => 'Αφαίρεση όλων των ετικετών',
'ale_action_set_bill' => 'Σύνδεση με πάγιο έξοδο',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Ορισμός προϋπολογισμού',
'ale_action_set_category' => 'Ορισμός κατηγορίας',
'ale_action_set_source' => 'Ορισμός λογαριασμού προέλευσης',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Αρχή του εύρους',
'end_date' => 'Τέλος του εύρους',
'enddate' => 'Ημερομηνία λήξης',
'move_rules_before_delete' => 'Rule group',
'start' => 'Αρχή του εύρους',
'end' => 'Τέλος του εύρους',
'delete_account' => 'Διαγραφή λογαριασμού ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Transaction is of type ":trigger_value"',
'rule_trigger_category_is_choice' => 'Category is..',
'rule_trigger_category_is' => 'Category is ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Amount is less than..',
'rule_trigger_amount_less' => 'Amount is less than :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Amount is..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than..',
'rule_trigger_amount_more' => 'Amount is more than :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Description starts with..',
'rule_trigger_description_starts' => 'Description starts with ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Description ends with..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Transaction journal ID is..',
'rule_trigger_journal_id' => 'Transaction journal ID is ":trigger_value"',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_any_external_url' => 'Transaction has an external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Set category to ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Link to bill ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Set notes to ":action_value"',
'rule_action_convert_deposit_choice' => 'Convert the transaction to a deposit',
'rule_action_convert_deposit' => 'Convert the transaction to a deposit from ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Start of range',
'end_date' => 'End of range',
'enddate' => 'End date',
'move_rules_before_delete' => 'Rule group',
'start' => 'Start of range',
'end' => 'End of range',
'delete_account' => 'Delete account ":name"',

View File

@ -904,10 +904,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Transaction journal ID is..',
'rule_trigger_journal_id' => 'Transaction journal ID is ":trigger_value"',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_any_external_url' => 'Transaction has an external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1178,6 +1182,7 @@ return [
// Ignore this comment
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Set category to ":action_value"',
@ -1215,6 +1220,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Link to bill ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Set notes to ":action_value"',
'rule_action_convert_deposit_choice' => 'Convert the transaction to a deposit',
'rule_action_convert_deposit' => 'Convert the transaction to a deposit from ":action_value"',
@ -2605,6 +2612,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'La transacción es de tipo ":trigger_value"',
'rule_trigger_category_is_choice' => 'Categoría es..',
'rule_trigger_category_is' => 'Categoría es ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Cantidad es menos de..',
'rule_trigger_amount_less' => 'La cantidad es menor que :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Cantidad es..',
'rule_trigger_amount_is' => 'Cantidad es :trigger_value',
'rule_trigger_amount_more_choice' => 'Cantidad es mas de..',
'rule_trigger_amount_more' => 'Cantidad es más de :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Descripción comienza con..',
'rule_trigger_description_starts' => 'La descripción comienza con ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Descripción termina con..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'La referencia interna es ":trigger_value"',
'rule_trigger_journal_id_choice' => 'El ID del diario de transacciones es..',
'rule_trigger_journal_id' => 'El ID del diario de transacciones es ":trigger_value"',
'rule_trigger_no_external_url' => 'La transacción no tiene URL externa',
'rule_trigger_any_external_url' => 'La transacción tiene una URL externa',
'rule_trigger_any_external_url_choice' => 'La transacción tiene una URL externa',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'La transacción no tiene URL externa',
'rule_trigger_no_external_url' => 'La transacción no tiene URL externa',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'La ID de la transacción es..',
'rule_trigger_id' => 'La ID de la transacción es ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'El SEPA CT es..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'ELIMINAR transacción(!)',
'rule_action_delete_transaction' => 'ELIMINAR transacción(!)',
'rule_action_set_category' => 'Establecer categoría en ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Establecer nota ..',
'rule_action_link_to_bill_choice' => 'Enlazar a una factura ..',
'rule_action_link_to_bill' => 'Enlace a una factura ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Establecer notas para:action_value',
'rule_action_convert_deposit_choice' => 'Convertir transacción en un ingreso',
'rule_action_convert_deposit' => 'Convertir transacción en un ingreso de ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Etiqueta limpiada',
'ale_action_clear_all_tags' => 'Limpiar todas las etiquetas',
'ale_action_set_bill' => 'Vinculado a la factura',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Establecer presupuesto',
'ale_action_set_category' => 'Establecer categoría',
'ale_action_set_source' => 'Establecer cuenta de origen',
@ -2715,8 +2723,8 @@ return [
'ale_action_add_tag' => 'Etiqueta añadida',
// dashboard
'enable_auto_convert' => 'Enable currency conversion',
'disable_auto_convert' => 'Disable currency conversion',
'enable_auto_convert' => 'Habilitar conversión de moneda',
'disable_auto_convert' => 'Deshabilitar conversión de moneda',
];

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Inicio del rango',
'end_date' => 'Final del rango',
'enddate' => 'Fecha fin',
'move_rules_before_delete' => 'Rule group',
'start' => 'Inicio del rango',
'end' => 'Final del rango',
'delete_account' => 'Borrar cuenta ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Tapahtuman tyyppi on ":trigger_value"',
'rule_trigger_category_is_choice' => 'Kategoria on ...',
'rule_trigger_category_is' => 'Kategoria on ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Summa on vähemmän kuin ...',
'rule_trigger_amount_less' => 'Summa on vähemmän kuin :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Summa on..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Summa on enemmän kuin ...',
'rule_trigger_amount_more' => 'Summa on enemmän kuin :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Kuvaus alkaa tekstillä ...',
'rule_trigger_description_starts' => 'Kuvaus alkaa tekstillä ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Kuvaus päättyy tekstiin ...',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Tapahtumatietueen tunnus on..',
'rule_trigger_journal_id' => 'Tapahtumatietueen tunnus on ":trigger_value"',
'rule_trigger_no_external_url' => 'Tapahtumalla ei ole ulkoista URL-osoitetta',
'rule_trigger_any_external_url' => 'Tapahtumalla on ulkoinen URL-osoite',
'rule_trigger_any_external_url_choice' => 'Tapahtumalla on ulkoinen URL-osoite',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Tapahtumalla ei ole ulkoista URL-osoitetta',
'rule_trigger_no_external_url' => 'Tapahtumalla ei ole ulkoista URL-osoitetta',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Tapahtuman tunnus on..',
'rule_trigger_id' => 'Tapahtumatunnus on ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Aseta kategoriaksi ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Yhdistä laskuun ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Aseta muistiinpano tapahtumalle ":action_value"',
'rule_action_convert_deposit_choice' => 'Muuta tapahtuma talletukseksi',
'rule_action_convert_deposit' => 'Muuta ":action_value" talletukseksi',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Valikoiman alku',
'end_date' => 'Valikoiman loppu',
'enddate' => 'Loppupäivä',
'move_rules_before_delete' => 'Rule group',
'start' => 'Valikoiman alku',
'end' => 'Valikoiman loppu',
'delete_account' => 'Poista tili ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'L\'opération est du type ":trigger_value"',
'rule_trigger_category_is_choice' => 'La catégorie est..',
'rule_trigger_category_is' => 'La catégorie est ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Le montant est inférieur à..',
'rule_trigger_amount_less' => 'Le montant est inférieur à :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Le montant est..',
'rule_trigger_amount_is' => 'Le montant est :trigger_value',
'rule_trigger_amount_more_choice' => 'Le montant est supérieur à..',
'rule_trigger_amount_more' => 'Le montant est supérieur à :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Le description commence par..',
'rule_trigger_description_starts' => 'La description commence par ":trigger_value"',
'rule_trigger_description_ends_choice' => 'La description se termine par..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'La référence interne est ":trigger_value"',
'rule_trigger_journal_id_choice' => 'L\'ID du journal d\'opérations est..',
'rule_trigger_journal_id' => 'L\'ID du journal d\'opérations est ":trigger_value"',
'rule_trigger_no_external_url' => 'L\'opération n\'a pas d\'URL externe',
'rule_trigger_any_external_url' => 'L\'opération a une URL externe',
'rule_trigger_any_external_url_choice' => 'L\'opération a une URL externe',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'L\'opération n\'a pas d\'URL externe',
'rule_trigger_no_external_url' => 'L\'opération n\'a pas d\'URL externe',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'L\'ID de l\'opération est..',
'rule_trigger_id' => 'L\'ID de l\'opération est ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'Le virement SEPA est..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'SUPPRIMER l\'opération(!)',
'rule_action_delete_transaction' => 'SUPPRIMER l\'opération(!)',
'rule_action_set_category' => 'Définir la catégorie à ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Remplacer les notes par..',
'rule_action_link_to_bill_choice' => 'Lier à une facture..',
'rule_action_link_to_bill' => 'Lien vers la facture ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Remplacer les notes par ":action_value"',
'rule_action_convert_deposit_choice' => 'Convertir cette opération en dépôt',
'rule_action_convert_deposit' => 'Convertir cette opération en dépôt depuis ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Tag retiré',
'ale_action_clear_all_tags' => 'Tous les tags ont été retirés',
'ale_action_set_bill' => 'Lié à la facture',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Budget défini',
'ale_action_set_category' => 'Catégorie définie',
'ale_action_set_source' => 'Compte source défini',
@ -2715,8 +2723,8 @@ return [
'ale_action_add_tag' => 'Tag ajouté',
// dashboard
'enable_auto_convert' => 'Enable currency conversion',
'disable_auto_convert' => 'Disable currency conversion',
'enable_auto_convert' => 'Activer la conversion des devises',
'disable_auto_convert' => 'Désactiver la conversion des devises',
];

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Début de l\'étendue',
'end_date' => 'Fin de l\'étendue',
'enddate' => 'Date de fin',
'move_rules_before_delete' => 'Rule group',
'start' => 'Début de l\'étendue',
'end' => 'Fin de l\'étendue',
'delete_account' => 'Supprimer le compte ":name"',

View File

@ -864,12 +864,12 @@ return [
'rule_trigger_transaction_type' => 'Tranzakció típusa ":trigger_value"',
'rule_trigger_category_is_choice' => 'A kategória..',
'rule_trigger_category_is' => 'A kategória ":trigger_value"',
'rule_trigger_amount_less_choice' => 'Összeg kevesebb mint..',
'rule_trigger_amount_less' => 'Mennyiség kevesebb mint :trigger_value',
'rule_trigger_amount_less_choice' => 'Amount is less than or equal to ..',
'rule_trigger_amount_less' => 'Amount is less than or equal to :trigger_value',
'rule_trigger_amount_is_choice' => 'Amount is..',
'rule_trigger_amount_is' => 'Amount is :trigger_value',
'rule_trigger_amount_more_choice' => 'Összeg több, mint..',
'rule_trigger_amount_more' => 'Összeg több mint :trigger_value',
'rule_trigger_amount_more_choice' => 'Amount is more than or equal to..',
'rule_trigger_amount_more' => 'Amount is more than or equal to :trigger_value',
'rule_trigger_description_starts_choice' => 'Leírás eleje..',
'rule_trigger_description_starts' => 'Leírás eleje: ":trigger_value"',
'rule_trigger_description_ends_choice' => 'Leírás vége..',
@ -934,10 +934,14 @@ return [
'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"',
'rule_trigger_journal_id_choice' => 'Transaction journal ID is..',
'rule_trigger_journal_id' => 'Transaction journal ID is ":trigger_value"',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_any_external_url' => 'Transaction has an external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an external URL',
'rule_trigger_any_external_url' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_url_choice' => 'Transaction has an (any) external URL',
'rule_trigger_any_external_id' => 'Transaction has an (any) external ID',
'rule_trigger_any_external_id_choice' => 'Transaction has an (any) external ID',
'rule_trigger_no_external_url_choice' => 'Transaction has no external URL',
'rule_trigger_no_external_url' => 'Transaction has no external URL',
'rule_trigger_no_external_id_choice' => 'Transaction has no external ID',
'rule_trigger_no_external_id' => 'Transaction has no external ID',
'rule_trigger_id_choice' => 'Transaction ID is..',
'rule_trigger_id' => 'Transaction ID is ":trigger_value"',
'rule_trigger_sepa_ct_is_choice' => 'SEPA CT is..',
@ -1218,6 +1222,7 @@ return [
// actions
// set, clear, add, remove, append/prepend
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',
'rule_action_set_category' => 'Kategória beállítása ":action_value"',
@ -1255,6 +1260,8 @@ return [
'rule_action_set_notes_choice' => 'Set notes to ..',
'rule_action_link_to_bill_choice' => 'Link to a bill ..',
'rule_action_link_to_bill' => 'Számlához csatolás: ":action_value"',
'rule_action_switch_accounts_choice' => 'Switch source and destination accounts (transfers only!)',
'rule_action_switch_accounts' => 'Switch source and destination ',
'rule_action_set_notes' => 'Jegyzetek megadása: ":action_value"',
'rule_action_convert_deposit_choice' => 'A tranzakció bevétellé konvertálása',
'rule_action_convert_deposit' => 'Tranzakció bevétellé konvertálása innen: ":action_value"',
@ -2703,6 +2710,7 @@ return [
'ale_action_clear_tag' => 'Cleared tag',
'ale_action_clear_all_tags' => 'Cleared all tags',
'ale_action_set_bill' => 'Linked to bill',
'ale_action_switch_accounts' => 'Switched source and destination account',
'ale_action_set_budget' => 'Set budget',
'ale_action_set_category' => 'Set category',
'ale_action_set_source' => 'Set source account',

View File

@ -147,6 +147,7 @@ return [
'start_date' => 'Tartomány kezdete',
'end_date' => 'Tartomány vége',
'enddate' => 'End date',
'move_rules_before_delete' => 'Rule group',
'start' => 'Tartomány kezdete',
'end' => 'Tartomány vége',
'delete_account' => '":name" bankszámla törlése',

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