mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-15 16:57:09 +00:00
Add and remove exchange rates
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* DestroyController.php
|
||||||
|
* Copyright (c) 2024 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\Api\V2\Controllers\Model\ExchangeRate;
|
||||||
|
|
||||||
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Api\V2\Request\Model\ExchangeRate\DestroyRequest;
|
||||||
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
|
use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
|
class DestroyController extends Controller
|
||||||
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
|
public const string RESOURCE_KEY = 'exchange-rates';
|
||||||
|
|
||||||
|
private ExchangeRateRepositoryInterface $repository;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
$this->middleware(
|
||||||
|
function ($request, $next) {
|
||||||
|
$this->repository = app(ExchangeRateRepositoryInterface::class);
|
||||||
|
$this->repository->setUserGroup($this->validateUserGroup($request));
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(DestroyRequest $request, TransactionCurrency $from, TransactionCurrency $to): JsonResponse
|
||||||
|
{
|
||||||
|
$date = $request->getDate();
|
||||||
|
$rate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
|
if (null === $rate) {
|
||||||
|
throw new NotFoundHttpException();
|
||||||
|
}
|
||||||
|
$this->repository->deleteRate($rate);
|
||||||
|
return response()->json([], 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* DestroyController.php
|
||||||
|
* Copyright (c) 2024 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\Api\V2\Controllers\Model\ExchangeRate;
|
||||||
|
|
||||||
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Api\V2\Request\Model\ExchangeRate\StoreRequest;
|
||||||
|
use FireflyIII\Api\V2\Request\Model\ExchangeRate\UpdateRequest;
|
||||||
|
use FireflyIII\Models\CurrencyExchangeRate;
|
||||||
|
use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
|
use FireflyIII\Transformers\V2\ExchangeRateTransformer;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
|
class StoreController extends Controller
|
||||||
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
|
public const string RESOURCE_KEY = 'exchange-rates';
|
||||||
|
|
||||||
|
private ExchangeRateRepositoryInterface $repository;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
$this->middleware(
|
||||||
|
function ($request, $next) {
|
||||||
|
$this->repository = app(ExchangeRateRepositoryInterface::class);
|
||||||
|
$this->repository->setUserGroup($this->validateUserGroup($request));
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(StoreRequest $request): JsonResponse
|
||||||
|
{
|
||||||
|
$date = $request->getDate();
|
||||||
|
$rate = $request->getRate();
|
||||||
|
$from = $request->getFromCurrency();
|
||||||
|
$to = $request->getToCurrency();
|
||||||
|
|
||||||
|
// already has rate?
|
||||||
|
$object = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
|
if(null !== $object) {
|
||||||
|
// just update it, no matter.
|
||||||
|
$rate = $this->repository->updateExchangeRate($object, $rate, $date);
|
||||||
|
}
|
||||||
|
if(null === $object) {
|
||||||
|
// store new
|
||||||
|
$rate = $this->repository->storeExchangeRate($from, $to, $rate, $date);
|
||||||
|
}
|
||||||
|
|
||||||
|
$transformer = new ExchangeRateTransformer();
|
||||||
|
$transformer->setParameters($this->parameters);
|
||||||
|
|
||||||
|
return response()
|
||||||
|
->api($this->jsonApiObject(self::RESOURCE_KEY, $rate, $transformer))
|
||||||
|
->header('Content-Type', self::CONTENT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* DestroyController.php
|
||||||
|
* Copyright (c) 2024 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\Api\V2\Controllers\Model\ExchangeRate;
|
||||||
|
|
||||||
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Api\V2\Request\Model\ExchangeRate\UpdateRequest;
|
||||||
|
use FireflyIII\Models\CurrencyExchangeRate;
|
||||||
|
use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
|
use FireflyIII\Transformers\V2\ExchangeRateTransformer;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
|
class UpdateController extends Controller
|
||||||
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
|
public const string RESOURCE_KEY = 'exchange-rates';
|
||||||
|
|
||||||
|
private ExchangeRateRepositoryInterface $repository;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
$this->middleware(
|
||||||
|
function ($request, $next) {
|
||||||
|
$this->repository = app(ExchangeRateRepositoryInterface::class);
|
||||||
|
$this->repository->setUserGroup($this->validateUserGroup($request));
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(UpdateRequest $request, CurrencyExchangeRate $exchangeRate): JsonResponse
|
||||||
|
{
|
||||||
|
$date = $request->getDate();
|
||||||
|
$rate = $request->getRate();
|
||||||
|
$exchangeRate = $this->repository->updateExchangeRate($exchangeRate, $rate, $date);
|
||||||
|
$transformer = new ExchangeRateTransformer();
|
||||||
|
$transformer->setParameters($this->parameters);
|
||||||
|
|
||||||
|
return response()
|
||||||
|
->api($this->jsonApiObject(self::RESOURCE_KEY, $exchangeRate, $transformer))
|
||||||
|
->header('Content-Type', self::CONTENT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
51
app/Api/V2/Request/Model/ExchangeRate/DestroyRequest.php
Normal file
51
app/Api/V2/Request/Model/ExchangeRate/DestroyRequest.php
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* DestroyRequest.php
|
||||||
|
* Copyright (c) 2024 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\Api\V2\Request\Model\ExchangeRate;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class DestroyRequest extends FormRequest
|
||||||
|
{
|
||||||
|
use ChecksLogin;
|
||||||
|
use ConvertsDataTypes;
|
||||||
|
|
||||||
|
public function getDate(): Carbon
|
||||||
|
{
|
||||||
|
return $this->getCarbonDate('date');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The rules that the incoming request must be matched against.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'date' => 'required|date|after:1900-01-01|before:2099-12-31',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
67
app/Api/V2/Request/Model/ExchangeRate/StoreRequest.php
Normal file
67
app/Api/V2/Request/Model/ExchangeRate/StoreRequest.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* DestroyRequest.php
|
||||||
|
* Copyright (c) 2024 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\Api\V2\Request\Model\ExchangeRate;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class StoreRequest extends FormRequest
|
||||||
|
{
|
||||||
|
use ChecksLogin;
|
||||||
|
use ConvertsDataTypes;
|
||||||
|
|
||||||
|
public function getDate(): ?Carbon
|
||||||
|
{
|
||||||
|
return $this->getCarbonDate('date');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRate(): string
|
||||||
|
{
|
||||||
|
return (string) $this->get('rate');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFromCurrency(): TransactionCurrency {
|
||||||
|
return TransactionCurrency::where('code', $this->get('from'))->first();
|
||||||
|
}
|
||||||
|
public function getToCurrency(): TransactionCurrency {
|
||||||
|
return TransactionCurrency::where('code', $this->get('to'))->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The rules that the incoming request must be matched against.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'date' => 'required|date|after:1900-01-01|before:2099-12-31',
|
||||||
|
'rate' => 'required|numeric|gt:0',
|
||||||
|
'from' => 'required|exists:transaction_currencies,code',
|
||||||
|
'to' => 'required|exists:transaction_currencies,code',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
56
app/Api/V2/Request/Model/ExchangeRate/UpdateRequest.php
Normal file
56
app/Api/V2/Request/Model/ExchangeRate/UpdateRequest.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* DestroyRequest.php
|
||||||
|
* Copyright (c) 2024 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\Api\V2\Request\Model\ExchangeRate;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class UpdateRequest extends FormRequest
|
||||||
|
{
|
||||||
|
use ChecksLogin;
|
||||||
|
use ConvertsDataTypes;
|
||||||
|
|
||||||
|
public function getDate(): ?Carbon
|
||||||
|
{
|
||||||
|
return $this->getCarbonDate('date');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRate(): string {
|
||||||
|
return (string) $this->get('rate');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The rules that the incoming request must be matched against.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'date' => 'date|after:1900-01-01|before:2099-12-31',
|
||||||
|
'rate' => 'required|numeric|gt:0',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -79,7 +79,7 @@ class UpdateGroupInformation extends Command
|
|||||||
{
|
{
|
||||||
$group = $user->userGroup;
|
$group = $user->userGroup;
|
||||||
if (null === $group) {
|
if (null === $group) {
|
||||||
$this->friendlyWarning(sprintf('User "%s" has no group.', $user->email));
|
$this->friendlyWarning(sprintf('User "%s" has no group. Please run "php artisan firefly-iii:create-group-memberships"', $user->email));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -47,20 +47,13 @@ class PiggyBankEventFactory
|
|||||||
$piggyRepos = app(PiggyBankRepositoryInterface::class);
|
$piggyRepos = app(PiggyBankRepositoryInterface::class);
|
||||||
$piggyRepos->setUser($journal->user);
|
$piggyRepos->setUser($journal->user);
|
||||||
|
|
||||||
$repetition = $piggyRepos->getRepetition($piggyBank);
|
$amount = $piggyRepos->getExactAmount($piggyBank, $journal);
|
||||||
if (null === $repetition) {
|
|
||||||
app('log')->error(sprintf('No piggy bank repetition on %s!', $journal->date->format('Y-m-d')));
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
app('log')->debug('Found repetition');
|
|
||||||
$amount = $piggyRepos->getExactAmount($piggyBank, $repetition, $journal);
|
|
||||||
if (0 === bccomp($amount, '0')) {
|
if (0 === bccomp($amount, '0')) {
|
||||||
app('log')->debug('Amount is zero, will not create event.');
|
app('log')->debug('Amount is zero, will not create event.');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// amount can be negative here
|
// amount can be negative here
|
||||||
$piggyRepos->addAmountToRepetition($repetition, $amount, $journal);
|
$piggyRepos->addAmountToPiggyBank($piggyBank, $amount, $journal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -30,7 +30,7 @@ use FireflyIII\Factory\PiggyBankFactory;
|
|||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\Note;
|
use FireflyIII\Models\Note;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\PiggyBankRepetition;
|
use FireflyIII\Models\Transaction;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\ObjectGroup\CreatesObjectGroups;
|
use FireflyIII\Repositories\ObjectGroup\CreatesObjectGroups;
|
||||||
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
||||||
@@ -43,17 +43,20 @@ trait ModifiesPiggyBanks
|
|||||||
{
|
{
|
||||||
use CreatesObjectGroups;
|
use CreatesObjectGroups;
|
||||||
|
|
||||||
public function addAmountToRepetition(PiggyBankRepetition $repetition, string $amount, TransactionJournal $journal): void
|
public function addAmountToPiggyBank(PiggyBank $piggyBank, string $amount, TransactionJournal $journal): void
|
||||||
{
|
{
|
||||||
throw new FireflyException('[a] Piggy bank repetitions are EOL.');
|
Log::debug(sprintf('addAmountToPiggyBank: %s', $amount));
|
||||||
Log::debug(sprintf('addAmountToRepetition: %s', $amount));
|
|
||||||
if (-1 === bccomp($amount, '0')) {
|
if (-1 === bccomp($amount, '0')) {
|
||||||
|
/** @var Transaction $source */
|
||||||
|
$source = $journal->transactions()->with(['account'])->where('amount', '<', 0)->first();
|
||||||
Log::debug('Remove amount.');
|
Log::debug('Remove amount.');
|
||||||
$this->removeAmount($repetition->piggyBank, bcmul($amount, '-1'), $journal);
|
$this->removeAmount($piggyBank, $source->account, bcmul($amount, '-1'), $journal);
|
||||||
}
|
}
|
||||||
if (1 === bccomp($amount, '0')) {
|
if (1 === bccomp($amount, '0')) {
|
||||||
|
/** @var Transaction $destination */
|
||||||
|
$destination = $journal->transactions()->with(['account'])->where('amount', '>', 0)->first();
|
||||||
Log::debug('Add amount.');
|
Log::debug('Add amount.');
|
||||||
$this->addAmount($repetition->piggyBank, $amount, $journal);
|
$this->addAmount($piggyBank, $destination->account, $amount, $journal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,9 +68,9 @@ trait ModifiesPiggyBanks
|
|||||||
$pivot->native_current_amount = null;
|
$pivot->native_current_amount = null;
|
||||||
|
|
||||||
// also update native_current_amount.
|
// also update native_current_amount.
|
||||||
$userCurrency = app('amount')->getDefaultCurrencyByUserGroup($this->user->userGroup);
|
$userCurrency = app('amount')->getDefaultCurrencyByUserGroup($this->user->userGroup);
|
||||||
if ($userCurrency->id !== $piggyBank->transaction_currency_id) {
|
if ($userCurrency->id !== $piggyBank->transaction_currency_id) {
|
||||||
$converter = new ExchangeRateConverter();
|
$converter = new ExchangeRateConverter();
|
||||||
$converter->setIgnoreSettings(true);
|
$converter->setIgnoreSettings(true);
|
||||||
$pivot->native_current_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $pivot->current_amount);
|
$pivot->native_current_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $pivot->current_amount);
|
||||||
}
|
}
|
||||||
@@ -88,9 +91,9 @@ trait ModifiesPiggyBanks
|
|||||||
$pivot->native_current_amount = null;
|
$pivot->native_current_amount = null;
|
||||||
|
|
||||||
// also update native_current_amount.
|
// also update native_current_amount.
|
||||||
$userCurrency = app('amount')->getDefaultCurrencyByUserGroup($this->user->userGroup);
|
$userCurrency = app('amount')->getDefaultCurrencyByUserGroup($this->user->userGroup);
|
||||||
if ($userCurrency->id !== $piggyBank->transaction_currency_id) {
|
if ($userCurrency->id !== $piggyBank->transaction_currency_id) {
|
||||||
$converter = new ExchangeRateConverter();
|
$converter = new ExchangeRateConverter();
|
||||||
$converter->setIgnoreSettings(true);
|
$converter->setIgnoreSettings(true);
|
||||||
$pivot->native_current_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $pivot->current_amount);
|
$pivot->native_current_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $pivot->current_amount);
|
||||||
}
|
}
|
||||||
@@ -122,8 +125,8 @@ trait ModifiesPiggyBanks
|
|||||||
Log::debug(sprintf('Maximum amount: %s', $maxAmount));
|
Log::debug(sprintf('Maximum amount: %s', $maxAmount));
|
||||||
}
|
}
|
||||||
|
|
||||||
$compare = bccomp($amount, $maxAmount);
|
$compare = bccomp($amount, $maxAmount);
|
||||||
$result = $compare <= 0;
|
$result = $compare <= 0;
|
||||||
|
|
||||||
Log::debug(sprintf('Compare <= 0? %d, so canAddAmount is %s', $compare, var_export($result, true)));
|
Log::debug(sprintf('Compare <= 0? %d, so canAddAmount is %s', $compare, var_export($result, true)));
|
||||||
|
|
||||||
@@ -157,11 +160,11 @@ trait ModifiesPiggyBanks
|
|||||||
|
|
||||||
public function setCurrentAmount(PiggyBank $piggyBank, string $amount): PiggyBank
|
public function setCurrentAmount(PiggyBank $piggyBank, string $amount): PiggyBank
|
||||||
{
|
{
|
||||||
$repetition = $this->getRepetition($piggyBank);
|
$repetition = $this->getRepetition($piggyBank);
|
||||||
if (null === $repetition) {
|
if (null === $repetition) {
|
||||||
return $piggyBank;
|
return $piggyBank;
|
||||||
}
|
}
|
||||||
$max = $piggyBank->target_amount;
|
$max = $piggyBank->target_amount;
|
||||||
if (1 === bccomp($amount, $max) && 0 !== bccomp($piggyBank->target_amount, '0')) {
|
if (1 === bccomp($amount, $max) && 0 !== bccomp($piggyBank->target_amount, '0')) {
|
||||||
$amount = $max;
|
$amount = $max;
|
||||||
}
|
}
|
||||||
@@ -204,14 +207,14 @@ trait ModifiesPiggyBanks
|
|||||||
|
|
||||||
public function update(PiggyBank $piggyBank, array $data): PiggyBank
|
public function update(PiggyBank $piggyBank, array $data): PiggyBank
|
||||||
{
|
{
|
||||||
$piggyBank = $this->updateProperties($piggyBank, $data);
|
$piggyBank = $this->updateProperties($piggyBank, $data);
|
||||||
if (array_key_exists('notes', $data)) {
|
if (array_key_exists('notes', $data)) {
|
||||||
$this->updateNote($piggyBank, (string) $data['notes']);
|
$this->updateNote($piggyBank, (string) $data['notes']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the order of the piggy bank:
|
// update the order of the piggy bank:
|
||||||
$oldOrder = $piggyBank->order;
|
$oldOrder = $piggyBank->order;
|
||||||
$newOrder = (int) ($data['order'] ?? $oldOrder);
|
$newOrder = (int) ($data['order'] ?? $oldOrder);
|
||||||
if ($oldOrder !== $newOrder) {
|
if ($oldOrder !== $newOrder) {
|
||||||
$this->setOrder($piggyBank, $newOrder);
|
$this->setOrder($piggyBank, $newOrder);
|
||||||
}
|
}
|
||||||
@@ -303,7 +306,7 @@ trait ModifiesPiggyBanks
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$dbNote = $piggyBank->notes()->first();
|
$dbNote = $piggyBank->notes()->first();
|
||||||
if (null === $dbNote) {
|
if (null === $dbNote) {
|
||||||
$dbNote = new Note();
|
$dbNote = new Note();
|
||||||
$dbNote->noteable()->associate($piggyBank);
|
$dbNote->noteable()->associate($piggyBank);
|
||||||
@@ -314,16 +317,15 @@ trait ModifiesPiggyBanks
|
|||||||
|
|
||||||
public function setOrder(PiggyBank $piggyBank, int $newOrder): bool
|
public function setOrder(PiggyBank $piggyBank, int $newOrder): bool
|
||||||
{
|
{
|
||||||
$oldOrder = $piggyBank->order;
|
$oldOrder = $piggyBank->order;
|
||||||
// Log::debug(sprintf('Will move piggy bank #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder));
|
// Log::debug(sprintf('Will move piggy bank #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder));
|
||||||
if ($newOrder > $oldOrder) {
|
if ($newOrder > $oldOrder) {
|
||||||
PiggyBank::leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id')
|
PiggyBank::leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id')
|
||||||
->leftJoin('accounts', 'accounts.id', '=', 'account_piggy_bank.account_id')
|
->leftJoin('accounts', 'accounts.id', '=', 'account_piggy_bank.account_id')
|
||||||
->where('accounts.user_id', $this->user->id)
|
->where('accounts.user_id', $this->user->id)
|
||||||
->where('piggy_banks.order', '<=', $newOrder)->where('piggy_banks.order', '>', $oldOrder)
|
->where('piggy_banks.order', '<=', $newOrder)->where('piggy_banks.order', '>', $oldOrder)
|
||||||
->where('piggy_banks.id', '!=', $piggyBank->id)
|
->where('piggy_banks.id', '!=', $piggyBank->id)
|
||||||
->distinct()->decrement('piggy_banks.order')
|
->distinct()->decrement('piggy_banks.order');
|
||||||
;
|
|
||||||
|
|
||||||
$piggyBank->order = $newOrder;
|
$piggyBank->order = $newOrder;
|
||||||
Log::debug(sprintf('[1] Order of piggy #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder));
|
Log::debug(sprintf('[1] Order of piggy #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder));
|
||||||
@@ -332,12 +334,11 @@ trait ModifiesPiggyBanks
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
PiggyBank::leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id')
|
PiggyBank::leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id')
|
||||||
->leftJoin('accounts', 'accounts.id', '=', 'account_piggy_bank.account_id')
|
->leftJoin('accounts', 'accounts.id', '=', 'account_piggy_bank.account_id')
|
||||||
->where('accounts.user_id', $this->user->id)
|
->where('accounts.user_id', $this->user->id)
|
||||||
->where('piggy_banks.order', '>=', $newOrder)->where('piggy_banks.order', '<', $oldOrder)
|
->where('piggy_banks.order', '>=', $newOrder)->where('piggy_banks.order', '<', $oldOrder)
|
||||||
->where('piggy_banks.id', '!=', $piggyBank->id)
|
->where('piggy_banks.id', '!=', $piggyBank->id)
|
||||||
->distinct()->increment('piggy_banks.order')
|
->distinct()->increment('piggy_banks.order');
|
||||||
;
|
|
||||||
|
|
||||||
$piggyBank->order = $newOrder;
|
$piggyBank->order = $newOrder;
|
||||||
Log::debug(sprintf('[2] Order of piggy #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder));
|
Log::debug(sprintf('[2] Order of piggy #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder));
|
||||||
|
@@ -129,10 +129,9 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
*
|
*
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*/
|
*/
|
||||||
public function getExactAmount(PiggyBank $piggyBank, PiggyBankRepetition $repetition, TransactionJournal $journal): string
|
public function getExactAmount(PiggyBank $piggyBank, TransactionJournal $journal): string
|
||||||
{
|
{
|
||||||
throw new FireflyException('[c] Piggy bank repetitions are EOL.');
|
app('log')->debug(sprintf('Now in getExactAmount(%d, %d)', $piggyBank->id, $journal->id));
|
||||||
app('log')->debug(sprintf('Now in getExactAmount(%d, %d, %d)', $piggyBank->id, $repetition->id, $journal->id));
|
|
||||||
|
|
||||||
$operator = null;
|
$operator = null;
|
||||||
$currency = null;
|
$currency = null;
|
||||||
@@ -146,9 +145,8 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
$accountRepos->setUser($this->user);
|
$accountRepos->setUser($this->user);
|
||||||
|
|
||||||
$defaultCurrency = app('amount')->getDefaultCurrencyByUserGroup($this->user->userGroup);
|
$defaultCurrency = app('amount')->getDefaultCurrencyByUserGroup($this->user->userGroup);
|
||||||
$piggyBankCurrency = $accountRepos->getAccountCurrency($piggyBank->account) ?? $defaultCurrency;
|
|
||||||
|
|
||||||
app('log')->debug(sprintf('Piggy bank #%d currency is %s', $piggyBank->id, $piggyBankCurrency->code));
|
app('log')->debug(sprintf('Piggy bank #%d currency is %s', $piggyBank->id, $piggyBank->transactionCurrency->code));
|
||||||
|
|
||||||
/** @var Transaction $source */
|
/** @var Transaction $source */
|
||||||
$source = $journal->transactions()->with(['account'])->where('amount', '<', 0)->first();
|
$source = $journal->transactions()->with(['account'])->where('amount', '<', 0)->first();
|
||||||
@@ -192,8 +190,9 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
app('log')->debug(sprintf('The currency is %s and the amount is %s', $currency->code, $amount));
|
app('log')->debug(sprintf('The currency is %s and the amount is %s', $currency->code, $amount));
|
||||||
$room = bcsub($piggyBank->target_amount, $repetition->current_amount);
|
$currentAmount = $this->getCurrentAmount($piggyBank);
|
||||||
$compare = bcmul($repetition->current_amount, '-1');
|
$room = bcsub($piggyBank->target_amount, $currentAmount);
|
||||||
|
$compare = bcmul($currentAmount, '-1');
|
||||||
|
|
||||||
if (0 === bccomp($piggyBank->target_amount, '0')) {
|
if (0 === bccomp($piggyBank->target_amount, '0')) {
|
||||||
// amount is zero? then the "room" is positive amount of we wish to add or remove.
|
// amount is zero? then the "room" is positive amount of we wish to add or remove.
|
||||||
@@ -215,7 +214,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
|
|
||||||
// amount is negative and $currentAmount is smaller than $amount
|
// amount is negative and $currentAmount is smaller than $amount
|
||||||
if (-1 === bccomp($amount, '0') && 1 === bccomp($compare, $amount)) {
|
if (-1 === bccomp($amount, '0') && 1 === bccomp($compare, $amount)) {
|
||||||
app('log')->debug(sprintf('Max amount to remove is %f', $repetition->current_amount));
|
app('log')->debug(sprintf('Max amount to remove is %f', $currentAmount));
|
||||||
app('log')->debug(sprintf('Cannot remove %f from piggy bank #%d ("%s")', $amount, $piggyBank->id, $piggyBank->name));
|
app('log')->debug(sprintf('Cannot remove %f from piggy bank #%d ("%s")', $amount, $piggyBank->id, $piggyBank->name));
|
||||||
app('log')->debug(sprintf('New amount is %f', $compare));
|
app('log')->debug(sprintf('New amount is %f', $compare));
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ interface PiggyBankRepositoryInterface
|
|||||||
{
|
{
|
||||||
public function addAmount(PiggyBank $piggyBank, Account $account, string $amount, ?TransactionJournal $journal = null): bool;
|
public function addAmount(PiggyBank $piggyBank, Account $account, string $amount, ?TransactionJournal $journal = null): bool;
|
||||||
|
|
||||||
public function addAmountToRepetition(PiggyBankRepetition $repetition, string $amount, TransactionJournal $journal): void;
|
public function addAmountToPiggyBank(PiggyBank $piggyBank, string $amount, TransactionJournal $journal): void;
|
||||||
|
|
||||||
public function canAddAmount(PiggyBank $piggyBank, Account $account, string $amount): bool;
|
public function canAddAmount(PiggyBank $piggyBank, Account $account, string $amount): bool;
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ interface PiggyBankRepositoryInterface
|
|||||||
/**
|
/**
|
||||||
* Used for connecting to a piggy bank.
|
* Used for connecting to a piggy bank.
|
||||||
*/
|
*/
|
||||||
public function getExactAmount(PiggyBank $piggyBank, PiggyBankRepetition $repetition, TransactionJournal $journal): string;
|
public function getExactAmount(PiggyBank $piggyBank, TransactionJournal $journal): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return note for piggy bank.
|
* Return note for piggy bank.
|
||||||
|
@@ -24,6 +24,8 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Repositories\UserGroups\ExchangeRate;
|
namespace FireflyIII\Repositories\UserGroups\ExchangeRate;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Models\CurrencyExchangeRate;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
|
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
@@ -39,19 +41,57 @@ class ExchangeRateRepository implements ExchangeRateRepositoryInterface
|
|||||||
// orderBy('date', 'DESC')->toRawSql();
|
// orderBy('date', 'DESC')->toRawSql();
|
||||||
return
|
return
|
||||||
$this->userGroup->currencyExchangeRates()
|
$this->userGroup->currencyExchangeRates()
|
||||||
->where(function (Builder $q1) use ($from, $to): void {
|
->where(function (Builder $q1) use ($from, $to): void {
|
||||||
$q1->where(function (Builder $q) use ($from, $to): void {
|
$q1->where(function (Builder $q) use ($from, $to): void {
|
||||||
$q->where('from_currency_id', $from->id)
|
$q->where('from_currency_id', $from->id)
|
||||||
->where('to_currency_id', $to->id)
|
->where('to_currency_id', $to->id);
|
||||||
;
|
})->orWhere(function (Builder $q) use ($from, $to): void {
|
||||||
})->orWhere(function (Builder $q) use ($from, $to): void {
|
$q->where('from_currency_id', $to->id)
|
||||||
$q->where('from_currency_id', $to->id)
|
->where('to_currency_id', $from->id);
|
||||||
->where('to_currency_id', $from->id)
|
});
|
||||||
;
|
})
|
||||||
});
|
->orderBy('date', 'DESC')
|
||||||
})
|
->get(['currency_exchange_rates.*']);
|
||||||
->orderBy('date', 'DESC')->get(['currency_exchange_rates.*'])
|
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[\Override] public function getSpecificRateOnDate(TransactionCurrency $from, TransactionCurrency $to, Carbon $date): ?CurrencyExchangeRate
|
||||||
|
{
|
||||||
|
return
|
||||||
|
$this->userGroup->currencyExchangeRates()
|
||||||
|
->where('from_currency_id', $from->id)
|
||||||
|
->where('to_currency_id', $to->id)
|
||||||
|
->where('date', $date->format('Y-m-d'))
|
||||||
|
->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\Override] public function deleteRate(CurrencyExchangeRate $rate): void
|
||||||
|
{
|
||||||
|
$this->userGroup->currencyExchangeRates()->where('id', $rate->id)->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\Override] public function updateExchangeRate(CurrencyExchangeRate $object, string $rate, ?Carbon $date = null): CurrencyExchangeRate
|
||||||
|
{
|
||||||
|
$object->rate = $rate;
|
||||||
|
if (null !== $date) {
|
||||||
|
$object->date = $date;
|
||||||
|
}
|
||||||
|
$object->save();
|
||||||
|
return $object;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[\Override] public function storeExchangeRate(TransactionCurrency $from, TransactionCurrency $to, string $rate, Carbon $date): CurrencyExchangeRate
|
||||||
|
{
|
||||||
|
$object = new CurrencyExchangeRate();
|
||||||
|
$object->user_id = auth()->user()->id;
|
||||||
|
$object->user_group_id = $this->userGroup->id;
|
||||||
|
$object->from_currency_id = $from->id;
|
||||||
|
$object->to_currency_id = $to->id;
|
||||||
|
$object->rate = $rate;
|
||||||
|
$object->date = $date;
|
||||||
|
$object->date_tz = $date->format('e');
|
||||||
|
$object->save();
|
||||||
|
|
||||||
|
return $object;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,10 +24,21 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Repositories\UserGroups\ExchangeRate;
|
namespace FireflyIII\Repositories\UserGroups\ExchangeRate;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Models\CurrencyExchangeRate;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
interface ExchangeRateRepositoryInterface
|
interface ExchangeRateRepositoryInterface
|
||||||
{
|
{
|
||||||
public function getRates(TransactionCurrency $from, TransactionCurrency $to): Collection;
|
public function getRates(TransactionCurrency $from, TransactionCurrency $to): Collection;
|
||||||
|
|
||||||
|
public function getSpecificRateOnDate(TransactionCurrency $from, TransactionCurrency $to, Carbon $date): ?CurrencyExchangeRate;
|
||||||
|
|
||||||
|
public function deleteRate(CurrencyExchangeRate $rate): void;
|
||||||
|
|
||||||
|
public function updateExchangeRate(CurrencyExchangeRate $object, string $rate, ?Carbon $date = null): CurrencyExchangeRate;
|
||||||
|
|
||||||
|
public function storeExchangeRate(TransactionCurrency $from, TransactionCurrency $to, string $rate, Carbon $date): CurrencyExchangeRate;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
51
app/Support/Binder/UserGroupExchangeRate.php
Normal file
51
app/Support/Binder/UserGroupExchangeRate.php
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UserGroupTransaction.php
|
||||||
|
* Copyright (c) 2024 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\Support\Binder;
|
||||||
|
|
||||||
|
use FireflyIII\Models\CurrencyExchangeRate;
|
||||||
|
use FireflyIII\User;
|
||||||
|
use Illuminate\Routing\Route;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class UserGroupTransaction.
|
||||||
|
*/
|
||||||
|
class UserGroupExchangeRate implements BinderInterface
|
||||||
|
{
|
||||||
|
public static function routeBinder(string $value, Route $route): CurrencyExchangeRate
|
||||||
|
{
|
||||||
|
if (auth()->check()) {
|
||||||
|
/** @var User $user */
|
||||||
|
$user = auth()->user();
|
||||||
|
$rate = CurrencyExchangeRate::where('id', (int) $value)
|
||||||
|
->where('user_group_id', $user->user_group_id)
|
||||||
|
->first();
|
||||||
|
if (null !== $rate) {
|
||||||
|
return $rate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new NotFoundHttpException();
|
||||||
|
}
|
||||||
|
}
|
@@ -30,7 +30,7 @@ class Domain
|
|||||||
{
|
{
|
||||||
public static function getBindables(): array
|
public static function getBindables(): array
|
||||||
{
|
{
|
||||||
return config('firefly.bindables');
|
return config('bindables.bindables');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getRuleActions(): array
|
public static function getRuleActions(): array
|
||||||
|
@@ -47,16 +47,15 @@ class Preferences
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Preference::where('user_id', $user->id)
|
return Preference::where('user_id', $user->id)
|
||||||
->where('name', '!=', 'currencyPreference')
|
->where('name', '!=', 'currencyPreference')
|
||||||
->where(function (Builder $q) use ($user): void {
|
->where(function (Builder $q) use ($user): void {
|
||||||
$q->whereNull('user_group_id');
|
$q->whereNull('user_group_id');
|
||||||
$q->orWhere('user_group_id', $user->user_group_id);
|
$q->orWhere('user_group_id', $user->user_group_id);
|
||||||
})
|
})
|
||||||
->get()
|
->get();
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get(string $name, null|array|bool|int|string $default = null): ?Preference
|
public function get(string $name, null | array | bool | int | string $default = null): ?Preference
|
||||||
{
|
{
|
||||||
/** @var null|User $user */
|
/** @var null|User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
@@ -70,7 +69,7 @@ class Preferences
|
|||||||
return $this->getForUser($user, $name, $default);
|
return $this->getForUser($user, $name, $default);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getForUser(User $user, string $name, null|array|bool|int|string $default = null): ?Preference
|
public function getForUser(User $user, string $name, null | array | bool | int | string $default = null): ?Preference
|
||||||
{
|
{
|
||||||
// don't care about user group ID, except for some specific preferences.
|
// don't care about user group ID, except for some specific preferences.
|
||||||
$userGroupId = $this->getUserGroupId($user, $name);
|
$userGroupId = $this->getUserGroupId($user, $name);
|
||||||
@@ -122,14 +121,16 @@ class Preferences
|
|||||||
Cache::put($key, '', 5);
|
Cache::put($key, '', 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setForUser(User $user, string $name, null|array|bool|int|string $value): Preference
|
public function setForUser(User $user, string $name, null | array | bool | int | string $value): Preference
|
||||||
{
|
{
|
||||||
$fullName = sprintf('preference%s%s', $user->id, $name);
|
$fullName = sprintf('preference%s%s', $user->id, $name);
|
||||||
$groupId = $this->getUserGroupId($user, $name);
|
$groupId = $this->getUserGroupId($user, $name);
|
||||||
|
$groupId = 0 === (int)$groupId ? null : (int) $groupId;
|
||||||
|
|
||||||
Cache::forget($fullName);
|
Cache::forget($fullName);
|
||||||
|
|
||||||
/** @var null|Preference $pref */
|
/** @var null|Preference $pref */
|
||||||
$pref = Preference::where('user_group_id', $groupId)->where('user_id', $user->id)->where('name', $name)->first(['id', 'name', 'data', 'updated_at', 'created_at']);
|
$pref = Preference::where('user_group_id', $groupId)->where('user_id', $user->id)->where('name', $name)->first(['id', 'name', 'data', 'updated_at', 'created_at']);
|
||||||
|
|
||||||
if (null !== $pref && null === $value) {
|
if (null !== $pref && null === $value) {
|
||||||
$pref->delete();
|
$pref->delete();
|
||||||
@@ -144,6 +145,7 @@ class Preferences
|
|||||||
$pref->user_id = (int) $user->id;
|
$pref->user_id = (int) $user->id;
|
||||||
$pref->user_group_id = $groupId;
|
$pref->user_group_id = $groupId;
|
||||||
$pref->name = $name;
|
$pref->name = $name;
|
||||||
|
|
||||||
}
|
}
|
||||||
$pref->data = $value;
|
$pref->data = $value;
|
||||||
$pref->save();
|
$pref->save();
|
||||||
@@ -171,13 +173,12 @@ class Preferences
|
|||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$preferences = Preference::where('user_id', $user->id)
|
$preferences = Preference::where('user_id', $user->id)
|
||||||
->where(function (Builder $q) use ($user): void {
|
->where(function (Builder $q) use ($user): void {
|
||||||
$q->whereNull('user_group_id');
|
$q->whereNull('user_group_id');
|
||||||
$q->orWhere('user_group_id', $user->user_group_id);
|
$q->orWhere('user_group_id', $user->user_group_id);
|
||||||
})
|
})
|
||||||
->whereIn('name', $list)
|
->whereIn('name', $list)
|
||||||
->get(['id', 'name', 'data'])
|
->get(['id', 'name', 'data']);
|
||||||
;
|
|
||||||
|
|
||||||
/** @var Preference $preference */
|
/** @var Preference $preference */
|
||||||
foreach ($preferences as $preference) {
|
foreach ($preferences as $preference) {
|
||||||
@@ -215,7 +216,7 @@ class Preferences
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getEncryptedForUser(User $user, string $name, null|array|bool|int|string $default = null): ?Preference
|
public function getEncryptedForUser(User $user, string $name, null | array | bool | int | string $default = null): ?Preference
|
||||||
{
|
{
|
||||||
$result = $this->getForUser($user, $name, $default);
|
$result = $this->getForUser($user, $name, $default);
|
||||||
if ('' === $result->data) {
|
if ('' === $result->data) {
|
||||||
@@ -236,7 +237,7 @@ class Preferences
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFresh(string $name, null|array|bool|int|string $default = null): ?Preference
|
public function getFresh(string $name, null | array | bool | int | string $default = null): ?Preference
|
||||||
{
|
{
|
||||||
/** @var null|User $user */
|
/** @var null|User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
@@ -287,7 +288,7 @@ class Preferences
|
|||||||
return $this->set($name, $encrypted);
|
return $this->set($name, $encrypted);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function set(string $name, null|array|bool|int|string $value): Preference
|
public function set(string $name, null | array | bool | int | string $value): Preference
|
||||||
{
|
{
|
||||||
/** @var null|User $user */
|
/** @var null|User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
126
config/bindables.php
Normal file
126
config/bindables.php
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* bindables.php
|
||||||
|
* Copyright (c) 2024 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);
|
||||||
|
|
||||||
|
use FireflyIII\Models\Account;
|
||||||
|
use FireflyIII\Models\Attachment;
|
||||||
|
use FireflyIII\Models\AvailableBudget;
|
||||||
|
use FireflyIII\Models\Bill;
|
||||||
|
use FireflyIII\Models\Budget;
|
||||||
|
use FireflyIII\Models\BudgetLimit;
|
||||||
|
use FireflyIII\Models\Category;
|
||||||
|
use FireflyIII\Models\InvitedUser;
|
||||||
|
use FireflyIII\Models\LinkType;
|
||||||
|
use FireflyIII\Models\ObjectGroup;
|
||||||
|
use FireflyIII\Models\PiggyBank;
|
||||||
|
use FireflyIII\Models\Preference;
|
||||||
|
use FireflyIII\Models\Recurrence;
|
||||||
|
use FireflyIII\Models\Rule;
|
||||||
|
use FireflyIII\Models\RuleGroup;
|
||||||
|
use FireflyIII\Models\Tag;
|
||||||
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
|
use FireflyIII\Models\TransactionGroup;
|
||||||
|
use FireflyIII\Models\TransactionJournal;
|
||||||
|
use FireflyIII\Models\TransactionJournalLink;
|
||||||
|
use FireflyIII\Models\TransactionType;
|
||||||
|
use FireflyIII\Models\UserGroup;
|
||||||
|
use FireflyIII\Models\Webhook;
|
||||||
|
use FireflyIII\Models\WebhookAttempt;
|
||||||
|
use FireflyIII\Models\WebhookMessage;
|
||||||
|
use FireflyIII\Support\Binder\AccountList;
|
||||||
|
use FireflyIII\Support\Binder\BudgetList;
|
||||||
|
use FireflyIII\Support\Binder\CategoryList;
|
||||||
|
use FireflyIII\Support\Binder\CLIToken;
|
||||||
|
use FireflyIII\Support\Binder\CurrencyCode;
|
||||||
|
use FireflyIII\Support\Binder\Date;
|
||||||
|
use FireflyIII\Support\Binder\DynamicConfigKey;
|
||||||
|
use FireflyIII\Support\Binder\EitherConfigKey;
|
||||||
|
use FireflyIII\Support\Binder\JournalList;
|
||||||
|
use FireflyIII\Support\Binder\TagList;
|
||||||
|
use FireflyIII\Support\Binder\TagOrId;
|
||||||
|
use FireflyIII\Support\Binder\UserGroupAccount;
|
||||||
|
use FireflyIII\Support\Binder\UserGroupBill;
|
||||||
|
use FireflyIII\Support\Binder\UserGroupExchangeRate;
|
||||||
|
use FireflyIII\Support\Binder\UserGroupTransaction;
|
||||||
|
use FireflyIII\User;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'bindables' => [
|
||||||
|
// models
|
||||||
|
'account' => Account::class,
|
||||||
|
'attachment' => Attachment::class,
|
||||||
|
'availableBudget' => AvailableBudget::class,
|
||||||
|
'bill' => Bill::class,
|
||||||
|
'budget' => Budget::class,
|
||||||
|
'budgetLimit' => BudgetLimit::class,
|
||||||
|
'category' => Category::class,
|
||||||
|
'linkType' => LinkType::class,
|
||||||
|
'transactionType' => TransactionType::class,
|
||||||
|
'journalLink' => TransactionJournalLink::class,
|
||||||
|
'currency' => TransactionCurrency::class,
|
||||||
|
'objectGroup' => ObjectGroup::class,
|
||||||
|
'piggyBank' => PiggyBank::class,
|
||||||
|
'preference' => Preference::class,
|
||||||
|
'tj' => TransactionJournal::class,
|
||||||
|
'tag' => Tag::class,
|
||||||
|
'recurrence' => Recurrence::class,
|
||||||
|
'rule' => Rule::class,
|
||||||
|
'ruleGroup' => RuleGroup::class,
|
||||||
|
'transactionGroup' => TransactionGroup::class,
|
||||||
|
'user' => User::class,
|
||||||
|
'webhook' => Webhook::class,
|
||||||
|
'webhookMessage' => WebhookMessage::class,
|
||||||
|
'webhookAttempt' => WebhookAttempt::class,
|
||||||
|
'invitedUser' => InvitedUser::class,
|
||||||
|
|
||||||
|
// strings
|
||||||
|
'currency_code' => CurrencyCode::class,
|
||||||
|
|
||||||
|
// dates
|
||||||
|
'start_date' => Date::class,
|
||||||
|
'end_date' => Date::class,
|
||||||
|
'date' => Date::class,
|
||||||
|
|
||||||
|
// lists
|
||||||
|
'accountList' => AccountList::class,
|
||||||
|
'doubleList' => AccountList::class,
|
||||||
|
'budgetList' => BudgetList::class,
|
||||||
|
'journalList' => JournalList::class,
|
||||||
|
'categoryList' => CategoryList::class,
|
||||||
|
'tagList' => TagList::class,
|
||||||
|
|
||||||
|
// others
|
||||||
|
'fromCurrencyCode' => CurrencyCode::class,
|
||||||
|
'toCurrencyCode' => CurrencyCode::class,
|
||||||
|
'cliToken' => CLIToken::class,
|
||||||
|
'tagOrId' => TagOrId::class,
|
||||||
|
'dynamicConfigKey' => DynamicConfigKey::class,
|
||||||
|
'eitherConfigKey' => EitherConfigKey::class,
|
||||||
|
|
||||||
|
// V2 API endpoints:
|
||||||
|
'userGroupAccount' => UserGroupAccount::class,
|
||||||
|
'userGroupTransaction' => UserGroupTransaction::class,
|
||||||
|
'userGroupBill' => UserGroupBill::class,
|
||||||
|
'userGroupExchangeRate' => UserGroupExchangeRate::class,
|
||||||
|
'userGroup' => UserGroup::class,
|
||||||
|
],
|
||||||
|
];
|
@@ -63,6 +63,7 @@ use FireflyIII\Support\Binder\TagList;
|
|||||||
use FireflyIII\Support\Binder\TagOrId;
|
use FireflyIII\Support\Binder\TagOrId;
|
||||||
use FireflyIII\Support\Binder\UserGroupAccount;
|
use FireflyIII\Support\Binder\UserGroupAccount;
|
||||||
use FireflyIII\Support\Binder\UserGroupBill;
|
use FireflyIII\Support\Binder\UserGroupBill;
|
||||||
|
use FireflyIII\Support\Binder\UserGroupExchangeRate;
|
||||||
use FireflyIII\Support\Binder\UserGroupTransaction;
|
use FireflyIII\Support\Binder\UserGroupTransaction;
|
||||||
use FireflyIII\TransactionRules\Actions\AddTag;
|
use FireflyIII\TransactionRules\Actions\AddTag;
|
||||||
use FireflyIII\TransactionRules\Actions\ClearBudget;
|
use FireflyIII\TransactionRules\Actions\ClearBudget;
|
||||||
@@ -427,64 +428,7 @@ return [
|
|||||||
'transfers' => 'fa-exchange',
|
'transfers' => 'fa-exchange',
|
||||||
],
|
],
|
||||||
|
|
||||||
'bindables' => [
|
|
||||||
// models
|
|
||||||
'account' => Account::class,
|
|
||||||
'attachment' => Attachment::class,
|
|
||||||
'availableBudget' => AvailableBudget::class,
|
|
||||||
'bill' => Bill::class,
|
|
||||||
'budget' => Budget::class,
|
|
||||||
'budgetLimit' => BudgetLimit::class,
|
|
||||||
'category' => Category::class,
|
|
||||||
'linkType' => LinkType::class,
|
|
||||||
'transactionType' => TransactionTypeModel::class,
|
|
||||||
'journalLink' => TransactionJournalLink::class,
|
|
||||||
'currency' => TransactionCurrency::class,
|
|
||||||
'objectGroup' => ObjectGroup::class,
|
|
||||||
'piggyBank' => PiggyBank::class,
|
|
||||||
'preference' => Preference::class,
|
|
||||||
'tj' => TransactionJournal::class,
|
|
||||||
'tag' => Tag::class,
|
|
||||||
'recurrence' => Recurrence::class,
|
|
||||||
'rule' => Rule::class,
|
|
||||||
'ruleGroup' => RuleGroup::class,
|
|
||||||
'transactionGroup' => TransactionGroup::class,
|
|
||||||
'user' => User::class,
|
|
||||||
'webhook' => Webhook::class,
|
|
||||||
'webhookMessage' => WebhookMessage::class,
|
|
||||||
'webhookAttempt' => WebhookAttempt::class,
|
|
||||||
'invitedUser' => InvitedUser::class,
|
|
||||||
|
|
||||||
// strings
|
|
||||||
'currency_code' => CurrencyCode::class,
|
|
||||||
|
|
||||||
// dates
|
|
||||||
'start_date' => Date::class,
|
|
||||||
'end_date' => Date::class,
|
|
||||||
'date' => Date::class,
|
|
||||||
|
|
||||||
// lists
|
|
||||||
'accountList' => AccountList::class,
|
|
||||||
'doubleList' => AccountList::class,
|
|
||||||
'budgetList' => BudgetList::class,
|
|
||||||
'journalList' => JournalList::class,
|
|
||||||
'categoryList' => CategoryList::class,
|
|
||||||
'tagList' => TagList::class,
|
|
||||||
|
|
||||||
// others
|
|
||||||
'fromCurrencyCode' => CurrencyCode::class,
|
|
||||||
'toCurrencyCode' => CurrencyCode::class,
|
|
||||||
'cliToken' => CLIToken::class,
|
|
||||||
'tagOrId' => TagOrId::class,
|
|
||||||
'dynamicConfigKey' => DynamicConfigKey::class,
|
|
||||||
'eitherConfigKey' => EitherConfigKey::class,
|
|
||||||
|
|
||||||
// V2 API endpoints:
|
|
||||||
'userGroupAccount' => UserGroupAccount::class,
|
|
||||||
'userGroupTransaction' => UserGroupTransaction::class,
|
|
||||||
'userGroupBill' => UserGroupBill::class,
|
|
||||||
'userGroup' => UserGroup::class,
|
|
||||||
],
|
|
||||||
'rule-actions' => [
|
'rule-actions' => [
|
||||||
'set_category' => SetCategory::class,
|
'set_category' => SetCategory::class,
|
||||||
'clear_category' => ClearCategory::class,
|
'clear_category' => ClearCategory::class,
|
||||||
|
@@ -274,12 +274,18 @@ return [
|
|||||||
'exchange_rates_intro',
|
'exchange_rates_intro',
|
||||||
'exchange_rates_from_to',
|
'exchange_rates_from_to',
|
||||||
'exchange_rates_intro_rates',
|
'exchange_rates_intro_rates',
|
||||||
|
'header_exchange_rates_rates',
|
||||||
|
'header_exchange_rates_table',
|
||||||
|
'help_rate_form',
|
||||||
|
'add_new_rate',
|
||||||
|
'save_new_rate'
|
||||||
],
|
],
|
||||||
'form' => [
|
'form' => [
|
||||||
'url',
|
'url',
|
||||||
'active',
|
'active',
|
||||||
'interest_date',
|
'interest_date',
|
||||||
'title',
|
'title',
|
||||||
|
'date',
|
||||||
'book_date',
|
'book_date',
|
||||||
'process_date',
|
'process_date',
|
||||||
'due_date',
|
'due_date',
|
||||||
@@ -292,6 +298,7 @@ return [
|
|||||||
'webhook_delivery',
|
'webhook_delivery',
|
||||||
'from_currency_to_currency',
|
'from_currency_to_currency',
|
||||||
'to_currency_from_currency',
|
'to_currency_from_currency',
|
||||||
|
'rate',
|
||||||
],
|
],
|
||||||
'list' => [
|
'list' => [
|
||||||
'active',
|
'active',
|
||||||
|
@@ -74,7 +74,7 @@
|
|||||||
v-bind:placeholder="$t('firefly.date')"
|
v-bind:placeholder="$t('firefly.date')"
|
||||||
v-bind:title="$t('firefly.date')"
|
v-bind:title="$t('firefly.date')"
|
||||||
>
|
>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="number" class="form-control" min="0" v-model="rate.rate">
|
<input type="number" class="form-control" min="0" v-model="rate.rate">
|
||||||
</td>
|
</td>
|
||||||
@@ -82,10 +82,18 @@
|
|||||||
<input type="number" class="form-control" min="0" v-model="rate.inverse">
|
<input type="number" class="form-control" min="0" v-model="rate.inverse">
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="btn btn-danger" @click="deleteRate(index)">
|
<div class="btn-group">
|
||||||
<em class="fa fa-trash"></em>
|
<button
|
||||||
</button>
|
:disabled="saveButtonDisabled(index)"
|
||||||
update + delete
|
class="btn btn-default" :title="$t('firefly.submit')"
|
||||||
|
@click="updateRate(index)">
|
||||||
|
<em class="fa fa-save"></em>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-danger" :title="$t('firefly.delete')"
|
||||||
|
@click="deleteRate(index)">
|
||||||
|
<em class="fa fa-trash"></em>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -94,6 +102,45 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8 col-lg-offset-2 col-md-12 col-sm-12 col-xs-12">
|
||||||
|
<form class="form-horizontal nodisablebutton" @submit="submitRate">
|
||||||
|
<div class="box box-default">
|
||||||
|
<div class="box-header with-border">
|
||||||
|
<h3 class="box-title">{{ $t('firefly.add_new_rate') }}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="box-body">
|
||||||
|
<p v-if="newError !=''" v-text="newError" class="text-danger">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<div class="form-group" id="name_holder">
|
||||||
|
<label for="ffInput_date" class="col-sm-4 control-label"
|
||||||
|
v-text="$t('form.date')"></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="date" name="date" id="ffInput_date" :disabled="posting"
|
||||||
|
autocomplete="off" spellcheck="false" v-model="newDate">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group" id="rate_holder">
|
||||||
|
<label for="ffInput_rate" class="col-sm-4 control-label"
|
||||||
|
v-text="$t('form.rate')"></label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="number" name="rate" id="ffInput_rate" :disabled="posting"
|
||||||
|
autocomplete="off" spellcheck="false" v-model="newRate" step="any">
|
||||||
|
<p class="help-block" v-text="$t('firefly.help_rate_form', {from: from_code, to: to_code})">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="box-footer">
|
||||||
|
<button type="submit" class="nodisablebutton btn pull-right btn-success" v-text="$t('firefly.save_new_rate')"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@@ -104,6 +151,9 @@ export default {
|
|||||||
name: "Rates",
|
name: "Rates",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
newDate: '',
|
||||||
|
newRate: '1.0',
|
||||||
|
newError: '',
|
||||||
rates: [],
|
rates: [],
|
||||||
tempRates: {},
|
tempRates: {},
|
||||||
from_code: '',
|
from_code: '',
|
||||||
@@ -115,10 +165,13 @@ export default {
|
|||||||
name: ''
|
name: ''
|
||||||
},
|
},
|
||||||
loading: true,
|
loading: true,
|
||||||
|
posting: false,
|
||||||
|
updating: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// get from and to code from URL
|
// get from and to code from URL
|
||||||
|
this.newDate = format(new Date, 'yyyy-MM-dd');
|
||||||
let parts = window.location.href.split('/');
|
let parts = window.location.href.split('/');
|
||||||
this.from_code = parts[parts.length - 2].substring(0, 3);
|
this.from_code = parts[parts.length - 2].substring(0, 3);
|
||||||
this.to_code = parts[parts.length - 1].substring(0, 3);
|
this.to_code = parts[parts.length - 1].substring(0, 3);
|
||||||
@@ -126,15 +179,90 @@ export default {
|
|||||||
this.downloadRates(1);
|
this.downloadRates(1);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
deleteRate: function(index) {
|
submitRate: function(e) {
|
||||||
console.log(this.rates[index].key);
|
if(e) e.preventDefault();
|
||||||
this.rates.splice(index, 1);
|
this.posting = true;
|
||||||
|
|
||||||
|
axios.post("./api/v2/exchange-rates", {
|
||||||
|
from: this.from_code,
|
||||||
|
to: this.to_code,
|
||||||
|
rate: this.newRate,
|
||||||
|
date: this.newDate,
|
||||||
|
}).then(() => {
|
||||||
|
this.posting = false;
|
||||||
|
this.downloadRates(1);
|
||||||
|
}).catch((err) => {
|
||||||
|
this.posting = false;
|
||||||
|
this.newError = err.response.data.message;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
updateRate: function(index) {
|
saveButtonDisabled: function (index) {
|
||||||
|
return ('' === this.rates[index].rate && '' === this.rates[index].inverse) || this.updating;
|
||||||
|
},
|
||||||
|
updateRate: function (index) {
|
||||||
console.log('Update!');
|
console.log('Update!');
|
||||||
console.log(this.rates[index].key);
|
console.log(this.rates[index].key);
|
||||||
|
let parts = this.spliceKey(this.rates[index].key);
|
||||||
|
if (0 === parts.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ('' !== this.rates[index].rate) {
|
||||||
|
// update rate
|
||||||
|
console.log('Rate is ' + this.rates[index].rate);
|
||||||
|
console.log('ID is ' + this.rates[index].rate_id);
|
||||||
|
this.updating = true;
|
||||||
|
axios.put("./api/v2/exchange-rates/" + this.rates[index].rate_id, {rate: this.rates[index].rate})
|
||||||
|
.then(() => {
|
||||||
|
this.updating = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ('' !== this.rates[index].inverse) {
|
||||||
|
// update inverse
|
||||||
|
console.log('Inverse is ' + this.rates[index].inverse);
|
||||||
|
console.log('Inverse ID is ' + this.rates[index].inverse_id);
|
||||||
|
this.updating = true;
|
||||||
|
axios.put("./api/v2/exchange-rates/" + this.rates[index].inverse_id, {rate: this.rates[index].inverse})
|
||||||
|
.then(() => {
|
||||||
|
this.updating = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deleteRate: function (index) {
|
||||||
|
console.log(this.rates[index].key);
|
||||||
|
let parts = this.spliceKey(this.rates[index].key);
|
||||||
|
if (0 === parts.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(parts);
|
||||||
|
|
||||||
|
// delete A to B
|
||||||
|
axios.delete("./api/v2/exchange-rates/rates/" + parts.from + '/' + parts.to + '?date=' + format(parts.date, 'yyyy-MM-dd'));
|
||||||
|
// delete B to A.
|
||||||
|
axios.delete("./api/v2/exchange-rates/rates/" + parts.to + '/' + parts.from + '?date=' + format(parts.date, 'yyyy-MM-dd'));
|
||||||
|
|
||||||
|
this.rates.splice(index, 1);
|
||||||
|
},
|
||||||
|
|
||||||
|
spliceKey: function (key) {
|
||||||
|
if (key.length !== 18) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
let main = key.split('_');
|
||||||
|
if (3 !== main.length) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
let date = new Date(main[2]);
|
||||||
|
return {
|
||||||
|
from: main[0],
|
||||||
|
to: main[1],
|
||||||
|
date: date,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
downloadCurrencies: function () {
|
downloadCurrencies: function () {
|
||||||
|
this.loading = true;
|
||||||
axios.get("./api/v2/currencies/" + this.from_code).then((response) => {
|
axios.get("./api/v2/currencies/" + this.from_code).then((response) => {
|
||||||
this.from = {
|
this.from = {
|
||||||
id: response.data.data.id,
|
id: response.data.data.id,
|
||||||
@@ -152,6 +280,9 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
downloadRates: function (page) {
|
downloadRates: function (page) {
|
||||||
|
this.tempRates = {};
|
||||||
|
this.rates = [];
|
||||||
|
this.loading = true;
|
||||||
axios.get("./api/v2/exchange-rates/rates/" + this.from_code + '/' + this.to_code + '?page=' + page).then((response) => {
|
axios.get("./api/v2/exchange-rates/rates/" + this.from_code + '/' + this.to_code + '?page=' + page).then((response) => {
|
||||||
for (let i in response.data.data) {
|
for (let i in response.data.data) {
|
||||||
if (response.data.data.hasOwnProperty(i)) {
|
if (response.data.data.hasOwnProperty(i)) {
|
||||||
@@ -161,36 +292,46 @@ export default {
|
|||||||
let to_code = current.attributes.to_currency_code;
|
let to_code = current.attributes.to_currency_code;
|
||||||
let rate = current.attributes.rate;
|
let rate = current.attributes.rate;
|
||||||
let inverse = '';
|
let inverse = '';
|
||||||
|
let rate_id = current.id;
|
||||||
|
let inverse_id = '0';
|
||||||
let key = from_code + '_' + to_code + '_' + format(date, 'yyyy-MM-dd');
|
let key = from_code + '_' + to_code + '_' + format(date, 'yyyy-MM-dd');
|
||||||
console.log('Key is now "' + key + '"');
|
console.log('Key is now "' + key + '"');
|
||||||
|
|
||||||
// perhaps the returned rate is actually the inverse rate.
|
// perhaps the returned rate is actually the inverse rate.
|
||||||
if(from_code === this.to_code && to_code === this.from_code) {
|
if (from_code === this.to_code && to_code === this.from_code) {
|
||||||
console.log('Inverse rate found!');
|
console.log('Inverse rate found!');
|
||||||
key = to_code + '_' + from_code + '_' + format(date, 'yyyy-MM-dd');
|
key = to_code + '_' + from_code + '_' + format(date, 'yyyy-MM-dd');
|
||||||
rate = '';
|
rate = '';
|
||||||
inverse = current.attributes.rate;
|
inverse = current.attributes.rate;
|
||||||
|
inverse_id = current.id;
|
||||||
console.log('Key updated to "' + key + '"');
|
console.log('Key updated to "' + key + '"');
|
||||||
}
|
}
|
||||||
// inverse is not "" and existing inverse is ""?
|
|
||||||
if (this.tempRates.hasOwnProperty(key) && inverse !== '' && this.tempRates[key].inverse === '') {
|
|
||||||
this.tempRates[key].inverse = inverse;
|
|
||||||
}
|
|
||||||
// rate is not "" and existing rate is ""?
|
|
||||||
if (this.tempRates.hasOwnProperty(key) && rate !== '' && this.tempRates[key].rate === '') {
|
|
||||||
this.tempRates[key].rate = rate;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.tempRates.hasOwnProperty(key)) {
|
if (!this.tempRates.hasOwnProperty(key)) {
|
||||||
this.tempRates[key] = {
|
this.tempRates[key] = {
|
||||||
key: key,
|
key: key,
|
||||||
date: date,
|
date: date,
|
||||||
|
rate_id: rate_id,
|
||||||
|
inverse_id: inverse_id,
|
||||||
date_formatted: format(date, this.$t('config.date_time_fns')),
|
date_formatted: format(date, this.$t('config.date_time_fns')),
|
||||||
date_field: current.attributes.date.substring(0, 10),
|
date_field: current.attributes.date.substring(0, 10),
|
||||||
rate: rate,
|
rate: rate,
|
||||||
inverse: '',
|
inverse: '',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// inverse is not "" and existing inverse is ""?
|
||||||
|
if (this.tempRates.hasOwnProperty(key) && inverse !== '' && this.tempRates[key].inverse === '') {
|
||||||
|
this.tempRates[key].inverse = inverse;
|
||||||
|
this.tempRates[key].inverse_id = inverse_id;
|
||||||
|
}
|
||||||
|
// rate is not "" and existing rate is ""?
|
||||||
|
if (this.tempRates.hasOwnProperty(key) && rate !== '' && this.tempRates[key].rate === '') {
|
||||||
|
this.tempRates[key].rate = rate;
|
||||||
|
this.tempRates[key].rate_id = rate_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (parseInt(response.data.meta.pagination.current_page) < parseInt(response.data.meta.pagination.total_pages)) {
|
if (parseInt(response.data.meta.pagination.current_page) < parseInt(response.data.meta.pagination.total_pages)) {
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d",
|
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d",
|
||||||
"interest_date": "\u041f\u0430\u0434\u0435\u0436 \u043d\u0430 \u043b\u0438\u0445\u0432\u0430",
|
"interest_date": "\u041f\u0430\u0434\u0435\u0436 \u043d\u0430 \u043b\u0438\u0445\u0432\u0430",
|
||||||
"title": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",
|
"title": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",
|
||||||
|
"date": "\u0414\u0430\u0442\u0430",
|
||||||
"book_date": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043e\u0441\u0447\u0435\u0442\u043e\u0432\u043e\u0434\u044f\u0432\u0430\u043d\u0435",
|
"book_date": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043e\u0441\u0447\u0435\u0442\u043e\u0432\u043e\u0434\u044f\u0432\u0430\u043d\u0435",
|
||||||
"process_date": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430",
|
"process_date": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430",
|
||||||
"due_date": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0430\u0434\u0435\u0436",
|
"due_date": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0430\u0434\u0435\u0436",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d \u043b\u0438 \u0435?",
|
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d \u043b\u0438 \u0435?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reiniciar el secret del webhook",
|
"reset_webhook_secret": "Reiniciar el secret del webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Actiu",
|
"active": "Actiu",
|
||||||
"interest_date": "Data d'inter\u00e8s",
|
"interest_date": "Data d'inter\u00e8s",
|
||||||
"title": "T\u00edtol",
|
"title": "T\u00edtol",
|
||||||
|
"date": "Data",
|
||||||
"book_date": "Data de registre",
|
"book_date": "Data de registre",
|
||||||
"process_date": "Data de processament",
|
"process_date": "Data de processament",
|
||||||
"due_date": "Data de venciment",
|
"due_date": "Data de venciment",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Activador",
|
"webhook_trigger": "Activador",
|
||||||
"webhook_delivery": "Lliurament",
|
"webhook_delivery": "Lliurament",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Est\u00e0 actiu?",
|
"active": "Est\u00e0 actiu?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Restartovat tajn\u00fd kl\u00ed\u010d webhooku",
|
"reset_webhook_secret": "Restartovat tajn\u00fd kl\u00ed\u010d webhooku",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktivn\u00ed",
|
"active": "Aktivn\u00ed",
|
||||||
"interest_date": "\u00darokov\u00e9 datum",
|
"interest_date": "\u00darokov\u00e9 datum",
|
||||||
"title": "N\u00e1zev",
|
"title": "N\u00e1zev",
|
||||||
|
"date": "Datum",
|
||||||
"book_date": "Datum rezervace",
|
"book_date": "Datum rezervace",
|
||||||
"process_date": "Datum zpracov\u00e1n\u00ed",
|
"process_date": "Datum zpracov\u00e1n\u00ed",
|
||||||
"due_date": "Datum splatnosti",
|
"due_date": "Datum splatnosti",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Spou\u0161t\u011b\u010d",
|
"webhook_trigger": "Spou\u0161t\u011b\u010d",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktivn\u00ed?",
|
"active": "Aktivn\u00ed?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Nulstil webhook-hemmelighed",
|
"reset_webhook_secret": "Nulstil webhook-hemmelighed",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktiv",
|
"active": "Aktiv",
|
||||||
"interest_date": "Rentedato",
|
"interest_date": "Rentedato",
|
||||||
"title": "Titel",
|
"title": "Titel",
|
||||||
|
"date": "Dato",
|
||||||
"book_date": "Bogf\u00f8ringsdato",
|
"book_date": "Bogf\u00f8ringsdato",
|
||||||
"process_date": "Behandlingsdato",
|
"process_date": "Behandlingsdato",
|
||||||
"due_date": "Forfaldsdato",
|
"due_date": "Forfaldsdato",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Udl\u00f8ser",
|
"webhook_trigger": "Udl\u00f8ser",
|
||||||
"webhook_delivery": "Levering",
|
"webhook_delivery": "Levering",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktiv?",
|
"active": "Aktiv?",
|
||||||
|
@@ -130,16 +130,22 @@
|
|||||||
"response": "Antwort",
|
"response": "Antwort",
|
||||||
"visit_webhook_url": "Webhook-URL besuchen",
|
"visit_webhook_url": "Webhook-URL besuchen",
|
||||||
"reset_webhook_secret": "Webhook Secret zur\u00fccksetzen",
|
"reset_webhook_secret": "Webhook Secret zur\u00fccksetzen",
|
||||||
"header_exchange_rates": "Wechselkurse",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III unterst\u00fctzt das Herunterladen und Verwenden von Wechselkursen. Lesen Sie mehr dar\u00fcber in <a href=\u201ehttps:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\u201c>der Dokumentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktiv",
|
"active": "Aktiv",
|
||||||
"interest_date": "Zinstermin",
|
"interest_date": "Zinstermin",
|
||||||
"title": "Titel",
|
"title": "Titel",
|
||||||
|
"date": "Datum",
|
||||||
"book_date": "Buchungsdatum",
|
"book_date": "Buchungsdatum",
|
||||||
"process_date": "Bearbeitungsdatum",
|
"process_date": "Bearbeitungsdatum",
|
||||||
"due_date": "F\u00e4lligkeitstermin",
|
"due_date": "F\u00e4lligkeitstermin",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Ausl\u00f6ser",
|
"webhook_trigger": "Ausl\u00f6ser",
|
||||||
"webhook_delivery": "Zustellung",
|
"webhook_delivery": "Zustellung",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktiv?",
|
"active": "Aktiv?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03bc\u03c5\u03c3\u03c4\u03b9\u03ba\u03bf\u03cd webhook",
|
"reset_webhook_secret": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03bc\u03c5\u03c3\u03c4\u03b9\u03ba\u03bf\u03cd webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL",
|
"url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL",
|
||||||
"active": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc",
|
"active": "\u0395\u03bd\u03b5\u03c1\u03b3\u03cc",
|
||||||
"interest_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c4\u03bf\u03ba\u03b9\u03c3\u03bc\u03bf\u03cd",
|
"interest_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c4\u03bf\u03ba\u03b9\u03c3\u03bc\u03bf\u03cd",
|
||||||
"title": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",
|
"title": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",
|
||||||
|
"date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1",
|
||||||
"book_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
|
"book_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",
|
||||||
"process_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2",
|
"process_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2",
|
||||||
"due_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03b8\u03b5\u03c3\u03bc\u03af\u03b1\u03c2",
|
"due_date": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03b8\u03b5\u03c3\u03bc\u03af\u03b1\u03c2",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
|
"webhook_trigger": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
|
||||||
"webhook_delivery": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03bf\u03c3\u03b7",
|
"webhook_delivery": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03bf\u03c3\u03b7",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u0395\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03cc;",
|
"active": "\u0395\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03cc;",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Active",
|
"active": "Active",
|
||||||
"interest_date": "Interest date",
|
"interest_date": "Interest date",
|
||||||
"title": "Title",
|
"title": "Title",
|
||||||
|
"date": "Date",
|
||||||
"book_date": "Book date",
|
"book_date": "Book date",
|
||||||
"process_date": "Processing date",
|
"process_date": "Processing date",
|
||||||
"due_date": "Due date",
|
"due_date": "Due date",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Is active?",
|
"active": "Is active?",
|
||||||
|
@@ -133,13 +133,19 @@
|
|||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Active",
|
"active": "Active",
|
||||||
"interest_date": "Interest date",
|
"interest_date": "Interest date",
|
||||||
"title": "Title",
|
"title": "Title",
|
||||||
|
"date": "Date",
|
||||||
"book_date": "Book date",
|
"book_date": "Book date",
|
||||||
"process_date": "Processing date",
|
"process_date": "Processing date",
|
||||||
"due_date": "Due date",
|
"due_date": "Due date",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Is active?",
|
"active": "Is active?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Restablecer secreto del webhook",
|
"reset_webhook_secret": "Restablecer secreto del webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Activo",
|
"active": "Activo",
|
||||||
"interest_date": "Fecha de inter\u00e9s",
|
"interest_date": "Fecha de inter\u00e9s",
|
||||||
"title": "T\u00edtulo",
|
"title": "T\u00edtulo",
|
||||||
|
"date": "Fecha",
|
||||||
"book_date": "Fecha de registro",
|
"book_date": "Fecha de registro",
|
||||||
"process_date": "Fecha de procesamiento",
|
"process_date": "Fecha de procesamiento",
|
||||||
"due_date": "Fecha de vencimiento",
|
"due_date": "Fecha de vencimiento",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Disparador",
|
"webhook_trigger": "Disparador",
|
||||||
"webhook_delivery": "Entrega",
|
"webhook_delivery": "Entrega",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u00bfEst\u00e1 Activo?",
|
"active": "\u00bfEst\u00e1 Activo?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL-osoite",
|
"url": "URL-osoite",
|
||||||
"active": "Aktiivinen",
|
"active": "Aktiivinen",
|
||||||
"interest_date": "Korkop\u00e4iv\u00e4",
|
"interest_date": "Korkop\u00e4iv\u00e4",
|
||||||
"title": "Otsikko",
|
"title": "Otsikko",
|
||||||
|
"date": "P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4",
|
||||||
"book_date": "Kirjausp\u00e4iv\u00e4",
|
"book_date": "Kirjausp\u00e4iv\u00e4",
|
||||||
"process_date": "K\u00e4sittelyp\u00e4iv\u00e4",
|
"process_date": "K\u00e4sittelyp\u00e4iv\u00e4",
|
||||||
"due_date": "Er\u00e4p\u00e4iv\u00e4",
|
"due_date": "Er\u00e4p\u00e4iv\u00e4",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktiivinen?",
|
"active": "Aktiivinen?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "R\u00e9initialiser le secret du webhook",
|
"reset_webhook_secret": "R\u00e9initialiser le secret du webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "Liens",
|
"url": "Liens",
|
||||||
"active": "Actif",
|
"active": "Actif",
|
||||||
"interest_date": "Date de valeur (int\u00e9r\u00eats)",
|
"interest_date": "Date de valeur (int\u00e9r\u00eats)",
|
||||||
"title": "Titre",
|
"title": "Titre",
|
||||||
|
"date": "Date",
|
||||||
"book_date": "Date d'enregistrement",
|
"book_date": "Date d'enregistrement",
|
||||||
"process_date": "Date de traitement",
|
"process_date": "Date de traitement",
|
||||||
"due_date": "\u00c9ch\u00e9ance",
|
"due_date": "\u00c9ch\u00e9ance",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "D\u00e9clencheur",
|
"webhook_trigger": "D\u00e9clencheur",
|
||||||
"webhook_delivery": "Distribution",
|
"webhook_delivery": "Distribution",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Actif ?",
|
"active": "Actif ?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Webhook titok vissza\u00e1ll\u00edt\u00e1sa",
|
"reset_webhook_secret": "Webhook titok vissza\u00e1ll\u00edt\u00e1sa",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Akt\u00edv",
|
"active": "Akt\u00edv",
|
||||||
"interest_date": "Kamatfizet\u00e9si id\u0151pont",
|
"interest_date": "Kamatfizet\u00e9si id\u0151pont",
|
||||||
"title": "C\u00edm",
|
"title": "C\u00edm",
|
||||||
|
"date": "D\u00e1tum",
|
||||||
"book_date": "K\u00f6nyvel\u00e9s d\u00e1tuma",
|
"book_date": "K\u00f6nyvel\u00e9s d\u00e1tuma",
|
||||||
"process_date": "Feldolgoz\u00e1s d\u00e1tuma",
|
"process_date": "Feldolgoz\u00e1s d\u00e1tuma",
|
||||||
"due_date": "Lej\u00e1rati id\u0151pont",
|
"due_date": "Lej\u00e1rati id\u0151pont",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Akt\u00edv?",
|
"active": "Akt\u00edv?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktif",
|
"active": "Aktif",
|
||||||
"interest_date": "Tanggal bunga",
|
"interest_date": "Tanggal bunga",
|
||||||
"title": "Judul",
|
"title": "Judul",
|
||||||
|
"date": "Tanggal",
|
||||||
"book_date": "Tanggal buku",
|
"book_date": "Tanggal buku",
|
||||||
"process_date": "Tanggal pemrosesan",
|
"process_date": "Tanggal pemrosesan",
|
||||||
"due_date": "Batas tanggal terakhir",
|
"due_date": "Batas tanggal terakhir",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktif?",
|
"active": "Aktif?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reimposta il segreto del webhook",
|
"reset_webhook_secret": "Reimposta il segreto del webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Attivo",
|
"active": "Attivo",
|
||||||
"interest_date": "Data di valuta",
|
"interest_date": "Data di valuta",
|
||||||
"title": "Titolo",
|
"title": "Titolo",
|
||||||
|
"date": "Data",
|
||||||
"book_date": "Data contabile",
|
"book_date": "Data contabile",
|
||||||
"process_date": "Data elaborazione",
|
"process_date": "Data elaborazione",
|
||||||
"due_date": "Data scadenza",
|
"due_date": "Data scadenza",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Consegna",
|
"webhook_delivery": "Consegna",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Attivo",
|
"active": "Attivo",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Webhook\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u30ea\u30bb\u30c3\u30c8",
|
"reset_webhook_secret": "Webhook\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u30ea\u30bb\u30c3\u30c8",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "\u6709\u52b9",
|
"active": "\u6709\u52b9",
|
||||||
"interest_date": "\u5229\u606f\u65e5",
|
"interest_date": "\u5229\u606f\u65e5",
|
||||||
"title": "\u30bf\u30a4\u30c8\u30eb",
|
"title": "\u30bf\u30a4\u30c8\u30eb",
|
||||||
|
"date": "\u65e5\u4ed8",
|
||||||
"book_date": "\u8a18\u5e33\u65e5",
|
"book_date": "\u8a18\u5e33\u65e5",
|
||||||
"process_date": "\u51e6\u7406\u65e5",
|
"process_date": "\u51e6\u7406\u65e5",
|
||||||
"due_date": "\u671f\u65e5",
|
"due_date": "\u671f\u65e5",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "\u30c8\u30ea\u30ac\u30fc",
|
"webhook_trigger": "\u30c8\u30ea\u30ac\u30fc",
|
||||||
"webhook_delivery": "\u914d\u4fe1",
|
"webhook_delivery": "\u914d\u4fe1",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u6709\u52b9",
|
"active": "\u6709\u52b9",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "\uc6f9\ud6c5 \uc2dc\ud06c\ub9bf \uc7ac\uc124\uc815",
|
"reset_webhook_secret": "\uc6f9\ud6c5 \uc2dc\ud06c\ub9bf \uc7ac\uc124\uc815",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "\ud65c\uc131",
|
"active": "\ud65c\uc131",
|
||||||
"interest_date": "\uc774\uc790 \ub0a0\uc9dc",
|
"interest_date": "\uc774\uc790 \ub0a0\uc9dc",
|
||||||
"title": "\uc81c\ubaa9",
|
"title": "\uc81c\ubaa9",
|
||||||
|
"date": "\ub0a0\uc9dc",
|
||||||
"book_date": "\uc608\uc57d\uc77c",
|
"book_date": "\uc608\uc57d\uc77c",
|
||||||
"process_date": "\ucc98\ub9ac\uc77c",
|
"process_date": "\ucc98\ub9ac\uc77c",
|
||||||
"due_date": "\uae30\ud55c",
|
"due_date": "\uae30\ud55c",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "\ud2b8\ub9ac\uac70",
|
"webhook_trigger": "\ud2b8\ub9ac\uac70",
|
||||||
"webhook_delivery": "\uc804\ub2ec",
|
"webhook_delivery": "\uc804\ub2ec",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\ud65c\uc131 \uc0c1\ud0dc\uc785\ub2c8\uae4c?",
|
"active": "\ud65c\uc131 \uc0c1\ud0dc\uc785\ub2c8\uae4c?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Tilbakestill Webhook n\u00f8kkel",
|
"reset_webhook_secret": "Tilbakestill Webhook n\u00f8kkel",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "Nettadresse",
|
"url": "Nettadresse",
|
||||||
"active": "Aktiv",
|
"active": "Aktiv",
|
||||||
"interest_date": "Rentedato",
|
"interest_date": "Rentedato",
|
||||||
"title": "Tittel",
|
"title": "Tittel",
|
||||||
|
"date": "Dato",
|
||||||
"book_date": "Bokf\u00f8ringsdato",
|
"book_date": "Bokf\u00f8ringsdato",
|
||||||
"process_date": "Prosesseringsdato",
|
"process_date": "Prosesseringsdato",
|
||||||
"due_date": "Forfallsdato",
|
"due_date": "Forfallsdato",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Utl\u00f8ser",
|
"webhook_trigger": "Utl\u00f8ser",
|
||||||
"webhook_delivery": "Levering",
|
"webhook_delivery": "Levering",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Er aktiv?",
|
"active": "Er aktiv?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook-geheim",
|
"reset_webhook_secret": "Reset webhook-geheim",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Actief",
|
"active": "Actief",
|
||||||
"interest_date": "Rentedatum",
|
"interest_date": "Rentedatum",
|
||||||
"title": "Titel",
|
"title": "Titel",
|
||||||
|
"date": "Datum",
|
||||||
"book_date": "Boekdatum",
|
"book_date": "Boekdatum",
|
||||||
"process_date": "Verwerkingsdatum",
|
"process_date": "Verwerkingsdatum",
|
||||||
"due_date": "Vervaldatum",
|
"due_date": "Vervaldatum",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Bericht",
|
"webhook_delivery": "Bericht",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Actief?",
|
"active": "Actief?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Tilbakestill Webhook hemmelegheit",
|
"reset_webhook_secret": "Tilbakestill Webhook hemmelegheit",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "Nettadresse",
|
"url": "Nettadresse",
|
||||||
"active": "Aktiv",
|
"active": "Aktiv",
|
||||||
"interest_date": "Rentedato",
|
"interest_date": "Rentedato",
|
||||||
"title": "Tittel",
|
"title": "Tittel",
|
||||||
|
"date": "Dato",
|
||||||
"book_date": "Bokf\u00f8ringsdato",
|
"book_date": "Bokf\u00f8ringsdato",
|
||||||
"process_date": "Prosesseringsdato",
|
"process_date": "Prosesseringsdato",
|
||||||
"due_date": "Forfallsdato",
|
"due_date": "Forfallsdato",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Utl\u00f8ser",
|
"webhook_trigger": "Utl\u00f8ser",
|
||||||
"webhook_delivery": "Levering",
|
"webhook_delivery": "Levering",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Er aktiv?",
|
"active": "Er aktiv?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Resetuj sekret webhooka",
|
"reset_webhook_secret": "Resetuj sekret webhooka",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktywny",
|
"active": "Aktywny",
|
||||||
"interest_date": "Data odsetek",
|
"interest_date": "Data odsetek",
|
||||||
"title": "Tytu\u0142",
|
"title": "Tytu\u0142",
|
||||||
|
"date": "Data",
|
||||||
"book_date": "Data ksi\u0119gowania",
|
"book_date": "Data ksi\u0119gowania",
|
||||||
"process_date": "Data przetworzenia",
|
"process_date": "Data przetworzenia",
|
||||||
"due_date": "Termin realizacji",
|
"due_date": "Termin realizacji",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Wyzwalacz",
|
"webhook_trigger": "Wyzwalacz",
|
||||||
"webhook_delivery": "Dor\u0119czenie",
|
"webhook_delivery": "Dor\u0119czenie",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Jest aktywny?",
|
"active": "Jest aktywny?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Redefinir chave do webhook",
|
"reset_webhook_secret": "Redefinir chave do webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Ativo",
|
"active": "Ativo",
|
||||||
"interest_date": "Data do juros",
|
"interest_date": "Data do juros",
|
||||||
"title": "T\u00edtulo",
|
"title": "T\u00edtulo",
|
||||||
|
"date": "Data",
|
||||||
"book_date": "Data de lan\u00e7amento",
|
"book_date": "Data de lan\u00e7amento",
|
||||||
"process_date": "Data de processamento",
|
"process_date": "Data de processamento",
|
||||||
"due_date": "Data de vencimento",
|
"due_date": "Data de vencimento",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Gatilho",
|
"webhook_trigger": "Gatilho",
|
||||||
"webhook_delivery": "Entrega",
|
"webhook_delivery": "Entrega",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Est\u00e1 ativo?",
|
"active": "Est\u00e1 ativo?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Redefinir segredo webhook",
|
"reset_webhook_secret": "Redefinir segredo webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Ativo",
|
"active": "Ativo",
|
||||||
"interest_date": "Data de juros",
|
"interest_date": "Data de juros",
|
||||||
"title": "T\u00edtulo",
|
"title": "T\u00edtulo",
|
||||||
|
"date": "Data",
|
||||||
"book_date": "Data de registo",
|
"book_date": "Data de registo",
|
||||||
"process_date": "Data de processamento",
|
"process_date": "Data de processamento",
|
||||||
"due_date": "Data de vencimento",
|
"due_date": "Data de vencimento",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Gatilho",
|
"webhook_trigger": "Gatilho",
|
||||||
"webhook_delivery": "Entrega",
|
"webhook_delivery": "Entrega",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Esta ativo?",
|
"active": "Esta ativo?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Resetare secret webhook",
|
"reset_webhook_secret": "Resetare secret webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Activ",
|
"active": "Activ",
|
||||||
"interest_date": "Data de interes",
|
"interest_date": "Data de interes",
|
||||||
"title": "Titlu",
|
"title": "Titlu",
|
||||||
|
"date": "Dat\u0103",
|
||||||
"book_date": "Rezerv\u0103 dat\u0103",
|
"book_date": "Rezerv\u0103 dat\u0103",
|
||||||
"process_date": "Data proces\u0103rii",
|
"process_date": "Data proces\u0103rii",
|
||||||
"due_date": "Data scadent\u0103",
|
"due_date": "Data scadent\u0103",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Declan\u0219ator",
|
"webhook_trigger": "Declan\u0219ator",
|
||||||
"webhook_delivery": "Livrare",
|
"webhook_delivery": "Livrare",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Este activ?",
|
"active": "Este activ?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "",
|
"reset_webhook_secret": "",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "\u0421\u0441\u044b\u043b\u043a\u0430",
|
"url": "\u0421\u0441\u044b\u043b\u043a\u0430",
|
||||||
"active": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439",
|
"active": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439",
|
||||||
"interest_date": "\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432",
|
"interest_date": "\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432",
|
||||||
"title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
|
"title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
|
||||||
|
"date": "\u0414\u0430\u0442\u0430",
|
||||||
"book_date": "\u0414\u0430\u0442\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f",
|
"book_date": "\u0414\u0430\u0442\u0430 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f",
|
||||||
"process_date": "\u0414\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438",
|
"process_date": "\u0414\u0430\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438",
|
||||||
"due_date": "\u0421\u0440\u043e\u043a \u043e\u043f\u043b\u0430\u0442\u044b",
|
"due_date": "\u0421\u0440\u043e\u043a \u043e\u043f\u043b\u0430\u0442\u044b",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "\u0421\u043e\u0431\u044b\u0442\u0438\u044f",
|
"webhook_trigger": "\u0421\u043e\u0431\u044b\u0442\u0438\u044f",
|
||||||
"webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430",
|
"webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d?",
|
"active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Akt\u00edvne",
|
"active": "Akt\u00edvne",
|
||||||
"interest_date": "\u00darokov\u00fd d\u00e1tum",
|
"interest_date": "\u00darokov\u00fd d\u00e1tum",
|
||||||
"title": "N\u00e1zov",
|
"title": "N\u00e1zov",
|
||||||
|
"date": "D\u00e1tum",
|
||||||
"book_date": "D\u00e1tum rezerv\u00e1cie",
|
"book_date": "D\u00e1tum rezerv\u00e1cie",
|
||||||
"process_date": "D\u00e1tum spracovania",
|
"process_date": "D\u00e1tum spracovania",
|
||||||
"due_date": "D\u00e1tum splatnosti",
|
"due_date": "D\u00e1tum splatnosti",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Akt\u00edvne?",
|
"active": "Akt\u00edvne?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Ponastavi skrivno kodo webhooka",
|
"reset_webhook_secret": "Ponastavi skrivno kodo webhooka",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktivno",
|
"active": "Aktivno",
|
||||||
"interest_date": "Datum obresti",
|
"interest_date": "Datum obresti",
|
||||||
"title": "Naslov",
|
"title": "Naslov",
|
||||||
|
"date": "Datum",
|
||||||
"book_date": "Datum knji\u017eenja",
|
"book_date": "Datum knji\u017eenja",
|
||||||
"process_date": "Datum obdelave",
|
"process_date": "Datum obdelave",
|
||||||
"due_date": "Datum zapadlosti",
|
"due_date": "Datum zapadlosti",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Spro\u017eilec",
|
"webhook_trigger": "Spro\u017eilec",
|
||||||
"webhook_delivery": "Dostava",
|
"webhook_delivery": "Dostava",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktiviran?",
|
"active": "Aktiviran?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "L\u00e4nk",
|
"url": "L\u00e4nk",
|
||||||
"active": "Aktiv",
|
"active": "Aktiv",
|
||||||
"interest_date": "R\u00e4ntedatum",
|
"interest_date": "R\u00e4ntedatum",
|
||||||
"title": "Titel",
|
"title": "Titel",
|
||||||
|
"date": "Datum",
|
||||||
"book_date": "Bokf\u00f6ringsdatum",
|
"book_date": "Bokf\u00f6ringsdatum",
|
||||||
"process_date": "Behandlingsdatum",
|
"process_date": "Behandlingsdatum",
|
||||||
"due_date": "F\u00f6rfallodatum",
|
"due_date": "F\u00f6rfallodatum",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Utl\u00f6sare",
|
"webhook_trigger": "Utl\u00f6sare",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u00c4r aktiv?",
|
"active": "\u00c4r aktiv?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "Aktif",
|
"active": "Aktif",
|
||||||
"interest_date": "Faiz tarihi",
|
"interest_date": "Faiz tarihi",
|
||||||
"title": "Ba\u015fl\u0131k",
|
"title": "Ba\u015fl\u0131k",
|
||||||
|
"date": "Tarih",
|
||||||
"book_date": "Kitap Tarihi",
|
"book_date": "Kitap Tarihi",
|
||||||
"process_date": "\u0130\u015flem tarihi",
|
"process_date": "\u0130\u015flem tarihi",
|
||||||
"due_date": "Biti\u015f Tarihi",
|
"due_date": "Biti\u015f Tarihi",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "Aktif mi?",
|
"active": "Aktif mi?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u0441\u0456\u043a\u0440\u0435\u0442 \u0432\u0435\u0431-\u0445\u0443\u043a\u0430",
|
"reset_webhook_secret": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u0441\u0456\u043a\u0440\u0435\u0442 \u0432\u0435\u0431-\u0445\u0443\u043a\u0430",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL-\u0430\u0434\u0440\u0435\u0441\u0430",
|
"url": "URL-\u0430\u0434\u0440\u0435\u0441\u0430",
|
||||||
"active": "\u0410\u043a\u0442\u0438\u0432\u043d\u043e",
|
"active": "\u0410\u043a\u0442\u0438\u0432\u043d\u043e",
|
||||||
"interest_date": "\u0414\u0430\u0442\u0430 \u043d\u0430\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0456\u0434\u0441\u043e\u0442\u043a\u0456\u0432",
|
"interest_date": "\u0414\u0430\u0442\u0430 \u043d\u0430\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0456\u0434\u0441\u043e\u0442\u043a\u0456\u0432",
|
||||||
"title": "\u041d\u0430\u0437\u0432\u0430",
|
"title": "\u041d\u0430\u0437\u0432\u0430",
|
||||||
|
"date": "\u0414\u0430\u0442\u0430",
|
||||||
"book_date": "\u0414\u0430\u0442\u0430 \u0431\u0440\u043e\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
|
"book_date": "\u0414\u0430\u0442\u0430 \u0431\u0440\u043e\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
|
||||||
"process_date": "\u0414\u0430\u0442\u0430 \u043e\u043f\u0440\u0430\u0446\u044e\u0432\u0430\u043d\u043d\u044f",
|
"process_date": "\u0414\u0430\u0442\u0430 \u043e\u043f\u0440\u0430\u0446\u044e\u0432\u0430\u043d\u043d\u044f",
|
||||||
"due_date": "\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u044f",
|
"due_date": "\u0414\u0430\u0442\u0430 \u0437\u0430\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u044f",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "\u0422\u0440\u0438\u0433\u0435\u0440",
|
"webhook_trigger": "\u0422\u0440\u0438\u0433\u0435\u0440",
|
||||||
"webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430",
|
"webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u0427\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u0438\u0439?",
|
"active": "\u0427\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u0438\u0439?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "C\u00e0i l\u1ea1i kh\u00f3a webhook",
|
"reset_webhook_secret": "C\u00e0i l\u1ea1i kh\u00f3a webhook",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "H\u00e0nh \u0111\u1ed9ng",
|
"active": "H\u00e0nh \u0111\u1ed9ng",
|
||||||
"interest_date": "Ng\u00e0y l\u00e3i",
|
"interest_date": "Ng\u00e0y l\u00e3i",
|
||||||
"title": "Ti\u00eau \u0111\u1ec1",
|
"title": "Ti\u00eau \u0111\u1ec1",
|
||||||
|
"date": "Ng\u00e0y",
|
||||||
"book_date": "Ng\u00e0y \u0111\u1eb7t s\u00e1ch",
|
"book_date": "Ng\u00e0y \u0111\u1eb7t s\u00e1ch",
|
||||||
"process_date": "Ng\u00e0y x\u1eed l\u00fd",
|
"process_date": "Ng\u00e0y x\u1eed l\u00fd",
|
||||||
"due_date": "Ng\u00e0y \u0111\u00e1o h\u1ea1n",
|
"due_date": "Ng\u00e0y \u0111\u00e1o h\u1ea1n",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "K\u00edch ho\u1ea1t",
|
"webhook_trigger": "K\u00edch ho\u1ea1t",
|
||||||
"webhook_delivery": "Ph\u00e2n ph\u1ed1i",
|
"webhook_delivery": "Ph\u00e2n ph\u1ed1i",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u0110ang ho\u1ea1t \u0111\u1ed9ng?",
|
"active": "\u0110ang ho\u1ea1t \u0111\u1ed9ng?",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "\u91cd\u7f6e webhook \u5bc6\u94a5",
|
"reset_webhook_secret": "\u91cd\u7f6e webhook \u5bc6\u94a5",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "\u7f51\u5740",
|
"url": "\u7f51\u5740",
|
||||||
"active": "\u542f\u7528",
|
"active": "\u542f\u7528",
|
||||||
"interest_date": "\u5229\u606f\u65e5\u671f",
|
"interest_date": "\u5229\u606f\u65e5\u671f",
|
||||||
"title": "\u6807\u9898",
|
"title": "\u6807\u9898",
|
||||||
|
"date": "\u65e5\u671f",
|
||||||
"book_date": "\u767b\u8bb0\u65e5\u671f",
|
"book_date": "\u767b\u8bb0\u65e5\u671f",
|
||||||
"process_date": "\u5904\u7406\u65e5\u671f",
|
"process_date": "\u5904\u7406\u65e5\u671f",
|
||||||
"due_date": "\u5230\u671f\u65e5",
|
"due_date": "\u5230\u671f\u65e5",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "\u89e6\u53d1\u6761\u4ef6",
|
"webhook_trigger": "\u89e6\u53d1\u6761\u4ef6",
|
||||||
"webhook_delivery": "\u53d1\u9001\u683c\u5f0f",
|
"webhook_delivery": "\u53d1\u9001\u683c\u5f0f",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u662f\u5426\u542f\u7528\uff1f",
|
"active": "\u662f\u5426\u542f\u7528\uff1f",
|
||||||
|
@@ -132,14 +132,20 @@
|
|||||||
"reset_webhook_secret": "Reset webhook secret",
|
"reset_webhook_secret": "Reset webhook secret",
|
||||||
"header_exchange_rates": "Exchange rates",
|
"header_exchange_rates": "Exchange rates",
|
||||||
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
"exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in <a href=\"https:\/\/docs.firefly-iii.org\/LOL_NOT_FINISHED_YET_TODO\">the documentation<\/a>.",
|
||||||
"exchange_rates_from_to": "Between {from} and {to} (and the other way around)",
|
"exchange_rates_from_to": "Between :from and :to",
|
||||||
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates."
|
"exchange_rates_intro_rates": "Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.",
|
||||||
|
"header_exchange_rates_rates": "Exchange rates",
|
||||||
|
"header_exchange_rates_table": "Table with exchange rates",
|
||||||
|
"help_rate_form": "On this day, how many {to} will you get for one {from}?",
|
||||||
|
"add_new_rate": "Add a new exchange rate",
|
||||||
|
"save_new_rate": "Save new rate"
|
||||||
},
|
},
|
||||||
"form": {
|
"form": {
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"active": "\u555f\u7528",
|
"active": "\u555f\u7528",
|
||||||
"interest_date": "\u5229\u7387\u65e5\u671f",
|
"interest_date": "\u5229\u7387\u65e5\u671f",
|
||||||
"title": "\u6a19\u984c",
|
"title": "\u6a19\u984c",
|
||||||
|
"date": "\u65e5\u671f",
|
||||||
"book_date": "\u767b\u8a18\u65e5\u671f",
|
"book_date": "\u767b\u8a18\u65e5\u671f",
|
||||||
"process_date": "\u8655\u7406\u65e5\u671f",
|
"process_date": "\u8655\u7406\u65e5\u671f",
|
||||||
"due_date": "\u5230\u671f\u65e5",
|
"due_date": "\u5230\u671f\u65e5",
|
||||||
@@ -151,7 +157,8 @@
|
|||||||
"webhook_trigger": "Trigger",
|
"webhook_trigger": "Trigger",
|
||||||
"webhook_delivery": "Delivery",
|
"webhook_delivery": "Delivery",
|
||||||
"from_currency_to_currency": "{from} → {to}",
|
"from_currency_to_currency": "{from} → {to}",
|
||||||
"to_currency_from_currency": "{to} → {from}"
|
"to_currency_from_currency": "{to} → {from}",
|
||||||
|
"rate": "Rate"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"active": "\u662f\u5426\u555f\u7528\uff1f",
|
"active": "\u662f\u5426\u555f\u7528\uff1f",
|
||||||
|
@@ -1400,8 +1400,11 @@ return [
|
|||||||
'exchange_rates_intro' => 'Firefly III supports downloading and using exchange rates. Read more about this in <a href="https://docs.firefly-iii.org/LOL_NOT_FINISHED_YET_TODO">the documentation</a>.',
|
'exchange_rates_intro' => 'Firefly III supports downloading and using exchange rates. Read more about this in <a href="https://docs.firefly-iii.org/LOL_NOT_FINISHED_YET_TODO">the documentation</a>.',
|
||||||
'exchange_rates_from_to' => 'Between {from} and {to} (and the other way around)',
|
'exchange_rates_from_to' => 'Between {from} and {to} (and the other way around)',
|
||||||
'header_exchange_rates_rates' => 'Exchange rates',
|
'header_exchange_rates_rates' => 'Exchange rates',
|
||||||
'exchange_rates_intro_rates' => 'Firefly III bla bla bla exchange rates.',
|
'exchange_rates_intro_rates' => 'Firefly III bla bla bla exchange rates. Inverse is automatically calculated if not provided. Will go back to last found rate.',
|
||||||
'header_exchange_rates_table' => 'Table with exchange rates',
|
'header_exchange_rates_table' => 'Table with exchange rates',
|
||||||
|
'help_rate_form' => 'On this day, how many {to} will you get for one {from}?',
|
||||||
|
'save_new_rate' => 'Save new rate',
|
||||||
|
'add_new_rate' => 'Add a new exchange rate',
|
||||||
|
|
||||||
// Financial administrations
|
// Financial administrations
|
||||||
'administration_index' => 'Financial administration',
|
'administration_index' => 'Financial administration',
|
||||||
|
@@ -115,6 +115,7 @@ return [
|
|||||||
// exchange rates
|
// exchange rates
|
||||||
'from_currency_to_currency' => '{from} → {to}',
|
'from_currency_to_currency' => '{from} → {to}',
|
||||||
'to_currency_from_currency' => '{to} → {from}',
|
'to_currency_from_currency' => '{to} → {from}',
|
||||||
|
'rate' => 'Rate',
|
||||||
|
|
||||||
'under' => 'Under',
|
'under' => 'Under',
|
||||||
'symbol' => 'Symbol',
|
'symbol' => 'Symbol',
|
||||||
|
@@ -115,7 +115,9 @@ Route::group(
|
|||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||||
Route::get('rates/{fromCurrencyCode}/{toCurrencyCode}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
Route::get('rates/{fromCurrencyCode}/{toCurrencyCode}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||||
// Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
Route::delete('rates/{fromCurrencyCode}/{toCurrencyCode}', ['uses' => 'DestroyController@destroy', 'as' => 'destroy']);
|
||||||
|
Route::put('{userGroupExchangeRate}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||||
|
Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
||||||
//
|
//
|
||||||
// Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
// Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||||
// Route::post('{userGroup}/use', ['uses' => 'UpdateController@useUserGroup', 'as' => 'use']);
|
// Route::post('{userGroup}/use', ['uses' => 'UpdateController@useUserGroup', 'as' => 'use']);
|
||||||
|
Reference in New Issue
Block a user