Merge pull request #7185 from firefly-iii/develop

Develop
This commit is contained in:
James Cole 2023-03-10 19:15:44 +01:00 committed by GitHub
commit 2a0acdbb27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
147 changed files with 2124 additions and 1633 deletions

View File

@ -16,7 +16,7 @@ body:
options: options:
- label: ... [the documentation](https://docs.firefly-iii.org/) does not mention anything about my problem - label: ... [the documentation](https://docs.firefly-iii.org/) does not mention anything about my problem
- label: ... there are no open or closed issues that are related to my problem - label: ... there are no open or closed issues that are related to my problem
- label: ... it's [definitely me, not you](https://github.com/firefly-iii/firefly-iii/blob/main/.github/its_you_not_me.md) - label: ... it's [definitely a Firefly III issue, not me](https://github.com/firefly-iii/firefly-iii/blob/main/.github/its_you_not_me.md)
- type: textarea - type: textarea
attributes: attributes:
@ -27,18 +27,18 @@ body:
- type: textarea - type: textarea
attributes: attributes:
label: Expected behaviour label: Debug information
description: Please describe precisely what you'd expect to happen. description: Please provide the table from the /debug page. Do not add backticks or quotes.
placeholder: The output from the /debug page
validations: validations:
required: true required: true
- type: textarea - type: textarea
attributes: attributes:
label: Debug information label: Expected behaviour
description: Please provide the table from the /debug page description: Please describe precisely what you'd expect to happen. Be specific.
placeholder: The output from the /debug page
validations: validations:
required: true required: false
- type: textarea - type: textarea
attributes: attributes:

View File

@ -8,9 +8,9 @@ body:
options: options:
- label: I've read the [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md) - label: I've read the [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md)
required: true required: true
- label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/firefly-iii/about-firefly-iii/what-its-not/) - label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/firefly-iii/more-information/what-its-not/)
required: true required: true
- label: I've used [the search](https://github.com/firefly-iii/firefly-iii/issues?q=is%3Aissue) and this has not been discussed before. - label: I've used [the search](https://github.com/firefly-iii/firefly-iii/issues?q=is%3Aissue) and this has not been requested before.
required: true required: true
- type: textarea - type: textarea
@ -18,9 +18,9 @@ body:
label: Description label: Description
description: Please describe your feature request description: Please describe your feature request
placeholder: | placeholder: |
- I would like Firefly III to do ABC. - I would like Firefly III to do (thing).
- What if you would add feature XYZ? - What if you would add feature (feature here)?
- Firefly III doesn't do DEF. - Firefly III doesn't do (thing).
validations: validations:
required: true required: true

View File

@ -94,19 +94,39 @@ class DestroyController extends Controller
case 'object_groups': case 'object_groups':
$this->destroyObjectGroups(); $this->destroyObjectGroups();
break; break;
case 'not_assets_liabilities':
$this->destroyAccounts(
[
AccountType::BENEFICIARY,
AccountType::CASH,
AccountType::CREDITCARD,
AccountType::DEFAULT,
AccountType::EXPENSE,
AccountType::IMPORT,
AccountType::INITIAL_BALANCE,
AccountType::LIABILITY_CREDIT,
AccountType::RECONCILIATION,
AccountType::REVENUE,
]
);
break;
case 'accounts': case 'accounts':
$this->destroyAccounts( $this->destroyAccounts(
[ [
AccountType::ASSET, AccountType::ASSET,
AccountType::DEFAULT,
AccountType::BENEFICIARY, AccountType::BENEFICIARY,
AccountType::EXPENSE, AccountType::CASH,
AccountType::REVENUE, AccountType::CREDITCARD,
AccountType::INITIAL_BALANCE,
AccountType::DEBT, AccountType::DEBT,
AccountType::DEFAULT,
AccountType::EXPENSE,
AccountType::IMPORT,
AccountType::INITIAL_BALANCE,
AccountType::LIABILITY_CREDIT,
AccountType::LOAN, AccountType::LOAN,
AccountType::MORTGAGE, AccountType::MORTGAGE,
AccountType::CREDITCARD, AccountType::RECONCILIATION,
AccountType::REVENUE,
] ]
); );
break; break;

View File

@ -53,7 +53,8 @@ class DestroyRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
$valid = 'budgets,bills,piggy_banks,rules,recurring,categories,tags,object_groups'. $valid = 'budgets,bills,piggy_banks,rules,recurring,categories,tags,object_groups'.
',accounts,asset_accounts,expense_accounts,revenue_accounts,liabilities,transactions,withdrawals,deposits,transfers'; ',accounts,asset_accounts,expense_accounts,revenue_accounts,liabilities,transactions,withdrawals,deposits,transfers'.
',not_assets_liabilities';
return [ return [
'objects' => sprintf('required|min:1|string|in:%s', $valid), 'objects' => sprintf('required|min:1|string|in:%s', $valid),

View File

@ -37,6 +37,7 @@ use FireflyIII\Helpers\Collector\Extensions\TimeCollection;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Query\JoinClause; use Illuminate\Database\Query\JoinClause;
@ -436,6 +437,10 @@ class GroupCollector implements GroupCollectorInterface
public function exists(): GroupCollectorInterface public function exists(): GroupCollectorInterface
{ {
$this->query->whereNull('transaction_groups.deleted_at'); $this->query->whereNull('transaction_groups.deleted_at');
$this->query->whereNotIn(
'transaction_types.type',
[TransactionType::LIABILITY_CREDIT, TransactionType::OPENING_BALANCE, TransactionType::RECONCILIATION]
);
return $this; return $this;
} }

View File

@ -28,10 +28,12 @@ use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Http\Middleware\IsDemoUser; use FireflyIII\Http\Middleware\IsDemoUser;
use FireflyIII\Http\Requests\InviteUserFormRequest; use FireflyIII\Http\Requests\InviteUserFormRequest;
use FireflyIII\Http\Requests\UserFormRequest; use FireflyIII\Http\Requests\UserFormRequest;
use FireflyIII\Models\InvitedUser;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Routing\Redirector; use Illuminate\Routing\Redirector;
use Illuminate\View\View; use Illuminate\View\View;
@ -87,6 +89,24 @@ class UserController extends Controller
return view('admin.users.delete', compact('user', 'subTitle')); return view('admin.users.delete', compact('user', 'subTitle'));
} }
/**
* @param InvitedUser $invitedUser
* @return RedirectResponse
*/
public function deleteInvite(InvitedUser $invitedUser): JsonResponse
{
Log::debug('Will now delete invitation');
if ($invitedUser->redeemed) {
Log::debug('Is already redeemed.');
session()->flash('error', trans('firefly.invite_is_already_redeemed', ['address' => $invitedUser->email]));
return response()->json(['success' => false]);
}
Log::debug('Delete!');
session()->flash('success', trans('firefly.invite_is_deleted', ['address' => $invitedUser->email]));
$this->repository->deleteInvite($invitedUser);
return response()->json(['success' => true]);
}
/** /**
* Destroy a user. * Destroy a user.
* *

View File

@ -187,7 +187,7 @@ class DebugController extends Controller
foreach ($handlers as $handler) { foreach ($handlers as $handler) {
if ($handler instanceof RotatingFileHandler) { if ($handler instanceof RotatingFileHandler) {
$logFile = $handler->getUrl(); $logFile = $handler->getUrl();
if (null !== $logFile) { if (null !== $logFile && file_exists($logFile)) {
$logContent = file_get_contents($logFile); $logContent = file_get_contents($logFile);
} }
} }

View File

@ -56,11 +56,11 @@ class AcceptHeaders
} }
// if bad 'Content-Type' header, refuse service. // if bad 'Content-Type' header, refuse service.
if (('POST' === $method || 'PUT' === $method) && !$request->hasHeader('Content-Type')) { if (('POST' === $method || 'PUT' === $method) && !$request->hasHeader('Content-Type')) {
$error = new BadHttpHeaderException('Content-Type header cannot be empty'); $error = new BadHttpHeaderException('Content-Type header cannot be empty.');
$error->statusCode = 415; $error->statusCode = 415;
throw $error; throw $error;
} }
if (('POST' === $method || 'PUT' === $method) && !in_array($submitted, $contentTypes, true)) { if (('POST' === $method || 'PUT' === $method) && !$this->acceptsHeader($submitted, $contentTypes)) {
$error = new BadHttpHeaderException(sprintf('Content-Type cannot be "%s"', $submitted)); $error = new BadHttpHeaderException(sprintf('Content-Type cannot be "%s"', $submitted));
$error->statusCode = 415; $error->statusCode = 415;
throw $error; throw $error;
@ -74,4 +74,17 @@ class AcceptHeaders
return $next($request); return $next($request);
} }
/**
* @param string $content
* @param array $accepted
* @return bool
*/
private function acceptsHeader(string $content, array $accepted): bool
{
if (str_contains($content, ';')) {
$content = trim(explode(';', $content)[0]);
}
return in_array($content, $accepted, true);
}
} }

View File

@ -30,6 +30,7 @@ use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException; use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Exception\RequestException;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
@ -102,7 +103,12 @@ class DownloadExchangeRates implements ShouldQueue
$base = sprintf('%s/%s/%s', (string)config('cer.url'), $this->date->year, $this->date->isoWeek); $base = sprintf('%s/%s/%s', (string)config('cer.url'), $this->date->year, $this->date->isoWeek);
$client = new Client(); $client = new Client();
$url = sprintf('%s/%s.json', $base, $currency->code); $url = sprintf('%s/%s.json', $base, $currency->code);
$res = $client->get($url); try {
$res = $client->get($url);
} catch(RequestException $e) {
app('log')->warning(sprintf('Trying to grab "%s" resulted in error "%d".', $url, $e->getMessage()));
return;
}
$statusCode = $res->getStatusCode(); $statusCode = $res->getStatusCode();
if (200 !== $statusCode) { if (200 !== $statusCode) {
app('log')->warning(sprintf('Trying to grab "%s" resulted in status code %d.', $url, $statusCode)); app('log')->warning(sprintf('Trying to grab "%s" resulted in status code %d.', $url, $statusCode));

View File

@ -91,6 +91,15 @@ class MailError extends Job implements ShouldQueue
} }
); );
} catch (Exception $e) { // intentional generic exception } catch (Exception $e) { // intentional generic exception
$message = $e->getMessage();
if (str_contains($message, 'Bcc')) {
Log::warning('[Bcc] Could not email or log the error. Please validate your email settings, use the .env.example file as a guide.');
return;
}
if (str_contains($message, 'RFC 2822')) {
Log::warning('[RFC] Could not email or log the error. Please validate your email settings, use the .env.example file as a guide.');
return;
}
throw new FireflyException($e->getMessage(), 0, $e); throw new FireflyException($e->getMessage(), 0, $e);
} }
} }

View File

@ -90,7 +90,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static EloquentBuilder|Account whereVirtualBalance($value) * @method static EloquentBuilder|Account whereVirtualBalance($value)
* @method static Builder|Account withTrashed() * @method static Builder|Account withTrashed()
* @method static Builder|Account withoutTrashed() * @method static Builder|Account withoutTrashed()
* @mixin Eloquent
* @property Carbon $lastActivityDate * @property Carbon $lastActivityDate
* @property string $startBalance * @property string $startBalance
* @property string $endBalance * @property string $endBalance
@ -103,6 +102,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property string $current_debt * @property string $current_debt
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static EloquentBuilder|Account whereUserGroupId($value) * @method static EloquentBuilder|Account whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Account extends Model class Account extends Model
{ {

View File

@ -78,9 +78,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUserId($value)
* @method static Builder|Attachment withTrashed() * @method static Builder|Attachment withTrashed()
* @method static Builder|Attachment withoutTrashed() * @method static Builder|Attachment withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Attachment extends Model class Attachment extends Model
{ {

View File

@ -42,7 +42,6 @@ use Illuminate\Support\Carbon;
* @method static Builder|AuditLogEntry query() * @method static Builder|AuditLogEntry query()
* @method static \Illuminate\Database\Query\Builder|AuditLogEntry withTrashed() * @method static \Illuminate\Database\Query\Builder|AuditLogEntry withTrashed()
* @method static \Illuminate\Database\Query\Builder|AuditLogEntry withoutTrashed() * @method static \Illuminate\Database\Query\Builder|AuditLogEntry withoutTrashed()
* @mixin Eloquent
* @property int $id * @property int $id
* @property Carbon|null $created_at * @property Carbon|null $created_at
* @property Carbon|null $updated_at * @property Carbon|null $updated_at
@ -65,6 +64,7 @@ use Illuminate\Support\Carbon;
* @method static Builder|AuditLogEntry whereDeletedAt($value) * @method static Builder|AuditLogEntry whereDeletedAt($value)
* @method static Builder|AuditLogEntry whereId($value) * @method static Builder|AuditLogEntry whereId($value)
* @method static Builder|AuditLogEntry whereUpdatedAt($value) * @method static Builder|AuditLogEntry whereUpdatedAt($value)
* @mixin Eloquent
*/ */
class AuditLogEntry extends Model class AuditLogEntry extends Model
{ {

View File

@ -62,9 +62,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|AvailableBudget whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|AvailableBudget whereUserId($value)
* @method static Builder|AvailableBudget withTrashed() * @method static Builder|AvailableBudget withTrashed()
* @method static Builder|AvailableBudget withoutTrashed() * @method static Builder|AvailableBudget withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|AvailableBudget whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|AvailableBudget whereUserGroupId($value)
* @mixin Eloquent
*/ */
class AvailableBudget extends Model class AvailableBudget extends Model
{ {

View File

@ -95,9 +95,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Bill whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Bill whereUserId($value)
* @method static Builder|Bill withTrashed() * @method static Builder|Bill withTrashed()
* @method static Builder|Bill withoutTrashed() * @method static Builder|Bill withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Bill whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Bill whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Bill extends Model class Bill extends Model
{ {

View File

@ -74,12 +74,12 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Budget whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Budget whereUserId($value)
* @method static Builder|Budget withTrashed() * @method static Builder|Budget withTrashed()
* @method static Builder|Budget withoutTrashed() * @method static Builder|Budget withoutTrashed()
* @mixin Eloquent
* @property string $email * @property string $email
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Budget whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Budget whereUserGroupId($value)
* @property-read Collection|Note[] $notes * @property-read Collection|Note[] $notes
* @property-read int|null $notes_count * @property-read int|null $notes_count
* @mixin Eloquent
*/ */
class Budget extends Model class Budget extends Model
{ {

View File

@ -68,9 +68,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Category whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Category whereUserId($value)
* @method static Builder|Category withTrashed() * @method static Builder|Category withTrashed()
* @method static Builder|Category withoutTrashed() * @method static Builder|Category withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Category whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Category whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Category extends Model class Category extends Model
{ {

View File

@ -60,9 +60,9 @@ use Illuminate\Support\Carbon;
* @method static Builder|CurrencyExchangeRate whereUpdatedAt($value) * @method static Builder|CurrencyExchangeRate whereUpdatedAt($value)
* @method static Builder|CurrencyExchangeRate whereUserId($value) * @method static Builder|CurrencyExchangeRate whereUserId($value)
* @method static Builder|CurrencyExchangeRate whereUserRate($value) * @method static Builder|CurrencyExchangeRate whereUserRate($value)
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static Builder|CurrencyExchangeRate whereUserGroupId($value) * @method static Builder|CurrencyExchangeRate whereUserGroupId($value)
* @mixin Eloquent
*/ */
class CurrencyExchangeRate extends Model class CurrencyExchangeRate extends Model
{ {

View File

@ -30,6 +30,7 @@ use FireflyIII\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/** /**
* Class InvitedUser * Class InvitedUser
@ -38,7 +39,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
* @method static Builder|InvitedUser newModelQuery() * @method static Builder|InvitedUser newModelQuery()
* @method static Builder|InvitedUser newQuery() * @method static Builder|InvitedUser newQuery()
* @method static Builder|InvitedUser query() * @method static Builder|InvitedUser query()
* @mixin Eloquent
* @property int $id * @property int $id
* @property Carbon|null $created_at * @property Carbon|null $created_at
* @property Carbon|null $updated_at * @property Carbon|null $updated_at
@ -55,6 +55,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
* @method static Builder|InvitedUser whereRedeemed($value) * @method static Builder|InvitedUser whereRedeemed($value)
* @method static Builder|InvitedUser whereUpdatedAt($value) * @method static Builder|InvitedUser whereUpdatedAt($value)
* @method static Builder|InvitedUser whereUserId($value) * @method static Builder|InvitedUser whereUserId($value)
* @mixin Eloquent
*/ */
class InvitedUser extends Model class InvitedUser extends Model
{ {
@ -72,4 +73,25 @@ class InvitedUser extends Model
{ {
return $this->belongsTo(User::class); return $this->belongsTo(User::class);
} }
/**
* Route binder. Converts the key in the URL to the specified object (or throw 404).
*
* @param string $value
*
* @return WebhookAttempt
* @throws NotFoundHttpException
*/
public static function routeBinder(string $value): InvitedUser
{
if (auth()->check()) {
$attemptId = (int)$value;
/** @var InvitedUser $attempt */
$attempt = self::find($attemptId);
if (null !== $attempt) {
return $attempt;
}
}
throw new NotFoundHttpException();
}
} }

View File

@ -85,9 +85,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Recurrence whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Recurrence whereUserId($value)
* @method static Builder|Recurrence withTrashed() * @method static Builder|Recurrence withTrashed()
* @method static Builder|Recurrence withoutTrashed() * @method static Builder|Recurrence withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Recurrence whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Recurrence whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Recurrence extends Model class Recurrence extends Model
{ {

View File

@ -73,10 +73,10 @@ use Illuminate\Support\Carbon;
* @method static \Illuminate\Database\Eloquent\Builder|RecurrenceTransaction whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|RecurrenceTransaction whereUpdatedAt($value)
* @method static Builder|RecurrenceTransaction withTrashed() * @method static Builder|RecurrenceTransaction withTrashed()
* @method static Builder|RecurrenceTransaction withoutTrashed() * @method static Builder|RecurrenceTransaction withoutTrashed()
* @mixin Eloquent
* @property int|null $transaction_type_id * @property int|null $transaction_type_id
* @method static \Illuminate\Database\Eloquent\Builder|RecurrenceTransaction whereTransactionTypeId($value) * @method static \Illuminate\Database\Eloquent\Builder|RecurrenceTransaction whereTransactionTypeId($value)
* @property-read TransactionType|null $transactionType * @property-read TransactionType|null $transactionType
* @mixin Eloquent
*/ */
class RecurrenceTransaction extends Model class RecurrenceTransaction extends Model
{ {

View File

@ -74,9 +74,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Rule whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Rule whereUserId($value)
* @method static Builder|Rule withTrashed() * @method static Builder|Rule withTrashed()
* @method static Builder|Rule withoutTrashed() * @method static Builder|Rule withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Rule whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Rule whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Rule extends Model class Rule extends Model
{ {

View File

@ -66,9 +66,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUserId($value)
* @method static Builder|RuleGroup withTrashed() * @method static Builder|RuleGroup withTrashed()
* @method static Builder|RuleGroup withoutTrashed() * @method static Builder|RuleGroup withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUserGroupId($value)
* @mixin Eloquent
*/ */
class RuleGroup extends Model class RuleGroup extends Model
{ {

View File

@ -75,9 +75,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereZoomLevel($value) * @method static \Illuminate\Database\Eloquent\Builder|Tag whereZoomLevel($value)
* @method static Builder|Tag withTrashed() * @method static Builder|Tag withTrashed()
* @method static Builder|Tag withoutTrashed() * @method static Builder|Tag withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|Tag whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|Tag whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Tag extends Model class Tag extends Model
{ {

View File

@ -84,8 +84,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static Builder|Transaction whereUpdatedAt($value) * @method static Builder|Transaction whereUpdatedAt($value)
* @method static \Illuminate\Database\Query\Builder|Transaction withTrashed() * @method static \Illuminate\Database\Query\Builder|Transaction withTrashed()
* @method static \Illuminate\Database\Query\Builder|Transaction withoutTrashed() * @method static \Illuminate\Database\Query\Builder|Transaction withoutTrashed()
* @mixin Eloquent
* @property int $the_count * @property int $the_count
* @mixin Eloquent
*/ */
class Transaction extends Model class Transaction extends Model
{ {

View File

@ -59,9 +59,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|TransactionGroup whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|TransactionGroup whereUserId($value)
* @method static Builder|TransactionGroup withTrashed() * @method static Builder|TransactionGroup withTrashed()
* @method static Builder|TransactionGroup withoutTrashed() * @method static Builder|TransactionGroup withoutTrashed()
* @mixin Eloquent
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static \Illuminate\Database\Eloquent\Builder|TransactionGroup whereUserGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|TransactionGroup whereUserGroupId($value)
* @mixin Eloquent
*/ */
class TransactionGroup extends Model class TransactionGroup extends Model
{ {

View File

@ -112,12 +112,12 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static EloquentBuilder|TransactionJournal whereUserId($value) * @method static EloquentBuilder|TransactionJournal whereUserId($value)
* @method static \Illuminate\Database\Query\Builder|TransactionJournal withTrashed() * @method static \Illuminate\Database\Query\Builder|TransactionJournal withTrashed()
* @method static \Illuminate\Database\Query\Builder|TransactionJournal withoutTrashed() * @method static \Illuminate\Database\Query\Builder|TransactionJournal withoutTrashed()
* @mixin Eloquent
* @property-read Collection|Location[] $locations * @property-read Collection|Location[] $locations
* @property-read int|null $locations_count * @property-read int|null $locations_count
* @property int $the_count * @property int $the_count
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static EloquentBuilder|TransactionJournal whereUserGroupId($value) * @method static EloquentBuilder|TransactionJournal whereUserGroupId($value)
* @mixin Eloquent
*/ */
class TransactionJournal extends Model class TransactionJournal extends Model
{ {

View File

@ -69,13 +69,13 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static Builder|Webhook whereUserId($value) * @method static Builder|Webhook whereUserId($value)
* @method static \Illuminate\Database\Query\Builder|Webhook withTrashed() * @method static \Illuminate\Database\Query\Builder|Webhook withTrashed()
* @method static \Illuminate\Database\Query\Builder|Webhook withoutTrashed() * @method static \Illuminate\Database\Query\Builder|Webhook withoutTrashed()
* @mixin Eloquent
* @property string $title * @property string $title
* @property string $secret * @property string $secret
* @method static Builder|Webhook whereSecret($value) * @method static Builder|Webhook whereSecret($value)
* @method static Builder|Webhook whereTitle($value) * @method static Builder|Webhook whereTitle($value)
* @property int|null $user_group_id * @property int|null $user_group_id
* @method static Builder|Webhook whereUserGroupId($value) * @method static Builder|Webhook whereUserGroupId($value)
* @mixin Eloquent
*/ */
class Webhook extends Model class Webhook extends Model
{ {

View File

@ -55,10 +55,10 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereStatusCode($value) * @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereStatusCode($value)
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereWebhookMessageId($value) * @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereWebhookMessageId($value)
* @mixin Eloquent
* @method static Builder|WebhookAttempt onlyTrashed() * @method static Builder|WebhookAttempt onlyTrashed()
* @method static Builder|WebhookAttempt withTrashed() * @method static Builder|WebhookAttempt withTrashed()
* @method static Builder|WebhookAttempt withoutTrashed() * @method static Builder|WebhookAttempt withoutTrashed()
* @mixin Eloquent
*/ */
class WebhookAttempt extends Model class WebhookAttempt extends Model
{ {

View File

@ -63,9 +63,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static Builder|WebhookMessage whereUpdatedAt($value) * @method static Builder|WebhookMessage whereUpdatedAt($value)
* @method static Builder|WebhookMessage whereUuid($value) * @method static Builder|WebhookMessage whereUuid($value)
* @method static Builder|WebhookMessage whereWebhookId($value) * @method static Builder|WebhookMessage whereWebhookId($value)
* @mixin Eloquent
* @property-read Collection|WebhookAttempt[] $webhookAttempts * @property-read Collection|WebhookAttempt[] $webhookAttempts
* @property-read int|null $webhook_attempts_count * @property-read int|null $webhook_attempts_count
* @mixin Eloquent
*/ */
class WebhookMessage extends Model class WebhookMessage extends Model
{ {

View File

@ -119,6 +119,15 @@ class UserRepository implements UserRepositoryInterface
return Role::create(['name' => $name, 'display_name' => $displayName, 'description' => $description]); return Role::create(['name' => $name, 'display_name' => $displayName, 'description' => $description]);
} }
/**
* @inheritDoc
*/
public function deleteInvite(InvitedUser $invite): void
{
Log::debug(sprintf('Deleting invite #%d', $invite->id));
$invite->delete();
}
/** /**
* @param User $user * @param User $user
* *
@ -286,24 +295,24 @@ class UserRepository implements UserRepositoryInterface
* *
* @return bool * @return bool
*/ */
public function hasRole(User|Authenticatable|null $user, string $role): bool public function hasRole(User|Authenticatable|null $user, string $role): bool
{ {
if (null === $user) { if (null === $user) {
return false;
}
/** @var Role $userRole */
foreach ($user->roles as $userRole) {
if ($userRole->name === $role) {
return true;
}
}
return false; return false;
} }
/** @var Role $userRole */
foreach ($user->roles as $userRole) {
if ($userRole->name === $role) {
return true;
}
}
return false;
}
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function inviteUser(User|Authenticatable|null $user, string $email): InvitedUser public function inviteUser(User|Authenticatable|null $user, string $email): InvitedUser
{ {
$now = today(config('app.timezone')); $now = today(config('app.timezone'));

View File

@ -102,6 +102,12 @@ interface UserRepositoryInterface
*/ */
public function deleteEmptyGroups(): void; public function deleteEmptyGroups(): void;
/**
* @param InvitedUser $invite
* @return void
*/
public function deleteInvite(InvitedUser $invite): void;
/** /**
* @param User $user * @param User $user
* *

View File

@ -147,6 +147,12 @@ class UpdateRequest implements UpdateRequestInterface
]; ];
$current = config('firefly.version'); $current = config('firefly.version');
$latest = $information['version']; $latest = $information['version'];
// strip the 'v' from the version if it's there.
if (str_starts_with($latest, 'v')) {
$latest = substr($latest, 1);
}
$compare = version_compare($latest, $current); $compare = version_compare($latest, $current);
Log::debug(sprintf('Current version is "%s", latest is "%s", result is: %d', $current, $latest, $compare)); Log::debug(sprintf('Current version is "%s", latest is "%s", result is: %d', $current, $latest, $compare));

View File

@ -204,6 +204,21 @@ class Navigation
return $date; return $date;
} }
$result = match ($repeatFreq) {
'last7' => $date->subDays(7)->startOfDay(),
'last30' => $date->subDays(30)->startOfDay(),
'last90' => $date->subDays(90)->startOfDay(),
'last365' => $date->subDays(365)->startOfDay(),
'MTD' => $date->startOfMonth()->startOfDay(),
'QTD' => $date->firstOfQuarter()->startOfDay(),
'YTD' => $date->startOfYear()->startOfDay(),
default => null,
};
if (null !== $result) {
return $result;
}
if ('custom' === $repeatFreq) { if ('custom' === $repeatFreq) {
return $date; // the date is already at the start. return $date; // the date is already at the start.
} }

View File

@ -141,7 +141,7 @@ trait ConvertsDataTypes
$string = str_replace($secondSearch, '', $string); $string = str_replace($secondSearch, '', $string);
// clear zalgo text (TODO also in API v2) // clear zalgo text (TODO also in API v2)
$string = preg_replace('/\pM/u', '', $string); $string = preg_replace('/(\pM{2})\pM+/u', '\1', $string);
if (null === $string) { if (null === $string) {
return null; return null;
} }

View File

@ -423,7 +423,7 @@ class Steam
]; ];
// clear zalgo text // clear zalgo text
$string = preg_replace('/\pM/u', '', $string); $string = preg_replace('/(\pM{2})\pM+/u', '\1', $string);
return str_replace($search, '', $string); return str_replace($search, '', $string);
} }

View File

@ -122,7 +122,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static Builder|User whereRememberToken($value) * @method static Builder|User whereRememberToken($value)
* @method static Builder|User whereReset($value) * @method static Builder|User whereReset($value)
* @method static Builder|User whereUpdatedAt($value) * @method static Builder|User whereUpdatedAt($value)
* @mixin Eloquent
* @property string|null $objectguid * @property string|null $objectguid
* @property-read int|null $accounts_count * @property-read int|null $accounts_count
* @property-read int|null $attachments_count * @property-read int|null $attachments_count
@ -165,6 +164,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property-read int|null $group_memberships_count * @property-read int|null $group_memberships_count
* @property-read UserGroup|null $userGroup * @property-read UserGroup|null $userGroup
* @method static Builder|User whereUserGroupId($value) * @method static Builder|User whereUserGroupId($value)
* @mixin Eloquent
*/ */
class User extends Authenticatable class User extends Authenticatable
{ {

View File

@ -108,6 +108,7 @@ trait WithdrawalValidation
if (null !== $found) { if (null !== $found) {
$type = $found->accountType->type; $type = $found->accountType->type;
if (in_array($type, $validTypes, true)) { if (in_array($type, $validTypes, true)) {
$this->destination = $found;
return true; return true;
} }
$this->destError = (string)trans('validation.withdrawal_dest_bad_data', ['id' => $accountId, 'name' => $accountName]); $this->destError = (string)trans('validation.withdrawal_dest_bad_data', ['id' => $accountId, 'name' => $accountName]);

View File

@ -43,6 +43,9 @@ trait CurrencyValidation
*/ */
protected function validateForeignCurrencyInformation(Validator $validator): void protected function validateForeignCurrencyInformation(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateForeignCurrencyInformation()'); Log::debug('Now in validateForeignCurrencyInformation()');
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);

View File

@ -90,6 +90,9 @@ trait GroupValidation
*/ */
protected function validateDescriptions(Validator $validator): void protected function validateDescriptions(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in GroupValidation::validateDescriptions()'); Log::debug('Now in GroupValidation::validateDescriptions()');
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);
$validDescriptions = 0; $validDescriptions = 0;
@ -113,6 +116,9 @@ trait GroupValidation
*/ */
protected function validateGroupDescription(Validator $validator): void protected function validateGroupDescription(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateGroupDescription()'); Log::debug('Now in validateGroupDescription()');
$data = $validator->getData(); $data = $validator->getData();
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);

View File

@ -43,6 +43,9 @@ trait TransactionValidation
*/ */
public function validateAccountInformation(Validator $validator): void public function validateAccountInformation(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateAccountInformation (TransactionValidation) ()'); Log::debug('Now in validateAccountInformation (TransactionValidation) ()');
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);
$data = $validator->getData(); $data = $validator->getData();
@ -137,9 +140,49 @@ trait TransactionValidation
$validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError); $validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError);
$validator->errors()->add(sprintf('transactions.%d.destination_name', $index), $accountValidator->destError); $validator->errors()->add(sprintf('transactions.%d.destination_name', $index), $accountValidator->destError);
} }
// sanity check for reconciliation accounts. They can't both be null. // sanity check for reconciliation accounts. They can't both be null.
$this->sanityCheckReconciliation($validator, $transactionType, $index, $source, $destination); $this->sanityCheckReconciliation($validator, $transactionType, $index, $source, $destination);
// deposit and the source is a liability or an asset account with a different
// currency than submitted? then the foreign currency info must be present as well (and filled in).
if (0 === $validator->errors()->count() && null !== $accountValidator->source && TransactionType::DEPOSIT === ucfirst($transactionType)) {
$accountType = $accountValidator?->source?->accountType?->type;
if (in_array($accountType, config('firefly.valid_currency_account_types'), true) && !$this->hasForeignCurrencyInfo($transaction)) {
$validator->errors()->add(sprintf('transactions.%d.foreign_amount', $index), (string)trans('validation.require_foreign_currency'));
}
}
// withdrawal or transfer and the destination is a liability or an asset account with a different
// currency than submitted? then the foreign currency info must be present as well (and filled in).
if (0 === $validator->errors()->count() && null !== $accountValidator->destination &&
(TransactionType::WITHDRAWAL === ucfirst($transactionType) || (TransactionType::TRANSFER === ucfirst($transactionType)))) {
$accountType = $accountValidator?->destination?->accountType?->type;
if (in_array($accountType, config('firefly.valid_currency_account_types'), true) && !$this->hasForeignCurrencyInfo($transaction)) {
$validator->errors()->add(sprintf('transactions.%d.foreign_amount', $index), (string)trans('validation.require_foreign_currency'));
}
}
// account validator has a valid source and a valid destination
}
/**
* @param array $transaction
* @return bool
*/
private function hasForeignCurrencyInfo(array $transaction): bool
{
if (!array_key_exists('foreign_currency_code', $transaction) && !array_key_exists('foreign_currency_id', $transaction)) {
return false;
}
if (!array_key_exists('foreign_amount', $transaction)) {
return false;
}
if ('' === $transaction['foreign_amount']) {
return false;
}
if (bccomp('0', $transaction['foreign_amount']) === 0) {
return false;
}
return true;
} }
/** /**
@ -324,6 +367,9 @@ trait TransactionValidation
*/ */
public function validateOneTransaction(Validator $validator): void public function validateOneTransaction(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateOneTransaction()'); Log::debug('Now in validateOneTransaction()');
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);
// need at least one transaction // need at least one transaction
@ -341,6 +387,9 @@ trait TransactionValidation
*/ */
public function validateTransactionArray(Validator $validator): void public function validateTransactionArray(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);
foreach ($transactions as $key => $value) { foreach ($transactions as $key => $value) {
if (!is_int($key)) { if (!is_int($key)) {
@ -359,6 +408,9 @@ trait TransactionValidation
*/ */
public function validateTransactionTypes(Validator $validator): void public function validateTransactionTypes(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateTransactionTypes()'); Log::debug('Now in validateTransactionTypes()');
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);
@ -427,6 +479,9 @@ trait TransactionValidation
*/ */
private function validateEqualAccounts(Validator $validator): void private function validateEqualAccounts(Validator $validator): void
{ {
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateEqualAccounts()'); Log::debug('Now in validateEqualAccounts()');
$transactions = $this->getTransactionsArray($validator); $transactions = $this->getTransactionsArray($validator);

View File

@ -2,6 +2,34 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
## 6.0.1 - 2023-03-11
### Changed
- [Issue 7129](https://github.com/firefly-iii/firefly-iii/issues/7129) Catch common email errors as log errors.
### Fixed
- [Issue 7109](https://github.com/firefly-iii/firefly-iii/issues/7109) Fix CSS in subdirectories, thanks @GaneshKandu
- [Issue 7112](https://github.com/firefly-iii/firefly-iii/issues/7112) Version number parsing
- [Issue 6985](https://github.com/firefly-iii/firefly-iii/issues/6985) Mandrill mail support
- [Issue 7131](https://github.com/firefly-iii/firefly-iii/issues/7131) Fix account sorting, thanks @lflare
- [Issue 7130](https://github.com/firefly-iii/firefly-iii/issues/7130) Fix missing date range parsers
- [Issue 7156](https://github.com/firefly-iii/firefly-iii/issues/7156) Default values for email settings break tokens
- [Issue 7140](https://github.com/firefly-iii/firefly-iii/issues/7140) Header with charset would break API validation
- [Issue 7144](https://github.com/firefly-iii/firefly-iii/issues/7144) Debug page could not handle missing log files
- [Issue 7159](https://github.com/firefly-iii/firefly-iii/issues/7159) Bad parsing in success messages
- [Issue 7104](https://github.com/firefly-iii/firefly-iii/issues/7104) Missing colors in dark mode
- [Issue 7120](https://github.com/firefly-iii/firefly-iii/issues/7120) Missing borders in dark mode
- [Issue 7156](https://github.com/firefly-iii/firefly-iii/issues/7156) Bad HTML parsing in transaction form
- [Issue 7166](https://github.com/firefly-iii/firefly-iii/issues/7166) Rule trigger would trigger on the wrong transaction set
- [Issue 7112](https://github.com/firefly-iii/firefly-iii/issues/7112) Content filter would strip emojis
- [Issue 7175](https://github.com/firefly-iii/firefly-iii/issues/7175) Could not delete user invite
- [Issue 7177](https://github.com/firefly-iii/firefly-iii/issues/7177) Missing currency info would break cron job
### API
- [Issue 7127](https://github.com/firefly-iii/firefly-iii/issues/7127) Expand API with new option for "destroy" button.
- [Issue 7124](https://github.com/firefly-iii/firefly-iii/issues/7124) API would not break on missing foreign currency information
## 6.0.0 - 2023-03-03 ## 6.0.0 - 2023-03-03
This is release **6.0.0** of Firefly III. This is release **6.0.0** of Firefly III.

View File

@ -97,7 +97,7 @@
"league/commonmark": "2.*", "league/commonmark": "2.*",
"league/csv": "^9.7", "league/csv": "^9.7",
"league/fractal": "0.*", "league/fractal": "0.*",
"nunomaduro/collision": "^7.0", "nunomaduro/collision": "^7.1",
"pragmarx/google2fa": "^8.0", "pragmarx/google2fa": "^8.0",
"predis/predis": "^2.1", "predis/predis": "^2.1",
"psr/log": "<4", "psr/log": "<4",
@ -105,7 +105,8 @@
"rcrowe/twigbridge": "^0.14", "rcrowe/twigbridge": "^0.14",
"spatie/laravel-ignition": "^2", "spatie/laravel-ignition": "^2",
"symfony/http-client": "^6.0", "symfony/http-client": "^6.0",
"symfony/mailgun-mailer": "^6.0" "symfony/mailgun-mailer": "^6.0",
"therobfonz/laravel-mandrill-driver": "^5.0"
}, },
"require-dev": { "require-dev": {
"barryvdh/laravel-ide-helper": "2.*", "barryvdh/laravel-ide-helper": "2.*",
@ -113,7 +114,7 @@
"fakerphp/faker": "1.*", "fakerphp/faker": "1.*",
"filp/whoops": "2.*", "filp/whoops": "2.*",
"mockery/mockery": "1.*", "mockery/mockery": "1.*",
"nunomaduro/larastan": "^2.0", "nunomaduro/larastan": "^2.5",
"phpstan/phpstan": "^1.10", "phpstan/phpstan": "^1.10",
"phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-strict-rules": "^1.4", "phpstan/phpstan-strict-rules": "^1.4",

284
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "7de460f25e29fa2bf56806de51c5ab1a", "content-hash": "d039ac062900b9cf70e12f1e7a6cacd9",
"packages": [ "packages": [
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@ -1068,16 +1068,16 @@
}, },
{ {
"name": "filp/whoops", "name": "filp/whoops",
"version": "2.14.6", "version": "2.15.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/filp/whoops.git", "url": "https://github.com/filp/whoops.git",
"reference": "f7948baaa0330277c729714910336383286305da" "reference": "e864ac957acd66e1565f25efda61e37791a5db0b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da", "url": "https://api.github.com/repos/filp/whoops/zipball/e864ac957acd66e1565f25efda61e37791a5db0b",
"reference": "f7948baaa0330277c729714910336383286305da", "reference": "e864ac957acd66e1565f25efda61e37791a5db0b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1127,7 +1127,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/filp/whoops/issues", "issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.14.6" "source": "https://github.com/filp/whoops/tree/2.15.1"
}, },
"funding": [ "funding": [
{ {
@ -1135,7 +1135,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-11-02T16:23:29+00:00" "time": "2023-03-06T18:09:13+00:00"
}, },
{ {
"name": "firebase/php-jwt", "name": "firebase/php-jwt",
@ -1586,16 +1586,16 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "2.4.3", "version": "2.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "67c26b443f348a51926030c83481b85718457d3d" "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", "url": "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf",
"reference": "67c26b443f348a51926030c83481b85718457d3d", "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1685,7 +1685,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/psr7/issues", "issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.4.3" "source": "https://github.com/guzzle/psr7/tree/2.4.4"
}, },
"funding": [ "funding": [
{ {
@ -1701,7 +1701,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-10-26T14:07:24+00:00" "time": "2023-03-09T13:19:02+00:00"
}, },
{ {
"name": "guzzlehttp/uri-template", "name": "guzzlehttp/uri-template",
@ -1944,16 +1944,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v10.2.0", "version": "v10.3.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "3799f7f3118d57dc5d3dfaabde69a912fff65a7e" "reference": "90f24d9e2860ecf6b5492e966956270ceb98c03d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/3799f7f3118d57dc5d3dfaabde69a912fff65a7e", "url": "https://api.github.com/repos/laravel/framework/zipball/90f24d9e2860ecf6b5492e966956270ceb98c03d",
"reference": "3799f7f3118d57dc5d3dfaabde69a912fff65a7e", "reference": "90f24d9e2860ecf6b5492e966956270ceb98c03d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2140,7 +2140,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2023-03-02T14:55:50+00:00" "time": "2023-03-09T14:00:53+00:00"
}, },
{ {
"name": "laravel/passport", "name": "laravel/passport",
@ -3480,6 +3480,60 @@
], ],
"time": "2021-06-28T04:27:21+00:00" "time": "2021-06-28T04:27:21+00:00"
}, },
{
"name": "mailchimp/transactional",
"version": "1.0.50",
"source": {
"type": "git",
"url": "https://github.com/mailchimp/mailchimp-transactional-php.git",
"reference": "701b00f538f36a2a5b138f880ab5eebbfeff4b7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mailchimp/mailchimp-transactional-php/zipball/701b00f538f36a2a5b138f880ab5eebbfeff4b7d",
"reference": "701b00f538f36a2a5b138f880ab5eebbfeff4b7d",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"guzzlehttp/guzzle": "^6.4 || ^7.2",
"php": ">=7.2"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.12",
"phpunit/phpunit": "^7",
"squizlabs/php_codesniffer": "~2.6"
},
"type": "library",
"autoload": {
"psr-4": {
"MailchimpTransactional\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"proprietary"
],
"authors": [
{
"name": "Mailchimp",
"homepage": "https://github.com/mailchimp/mailchimp-transactional-php"
}
],
"homepage": "http://swagger.io",
"keywords": [
"api",
"php",
"sdk",
"swagger"
],
"support": {
"source": "https://github.com/mailchimp/mailchimp-transactional-php/tree/v1.0.50"
},
"time": "2022-11-07T20:12:03+00:00"
},
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "3.3.1", "version": "3.3.1",
@ -3834,34 +3888,35 @@
}, },
{ {
"name": "nunomaduro/collision", "name": "nunomaduro/collision",
"version": "v7.0.5", "version": "v7.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nunomaduro/collision.git", "url": "https://github.com/nunomaduro/collision.git",
"reference": "5c654ee5fa187cf2f4cb226d773582ec6d402a55" "reference": "2b97fed4950cf0ff148c18b853975ec8ea135e90"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/5c654ee5fa187cf2f4cb226d773582ec6d402a55", "url": "https://api.github.com/repos/nunomaduro/collision/zipball/2b97fed4950cf0ff148c18b853975ec8ea135e90",
"reference": "5c654ee5fa187cf2f4cb226d773582ec6d402a55", "reference": "2b97fed4950cf0ff148c18b853975ec8ea135e90",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"filp/whoops": "^2.14.6", "filp/whoops": "^2.14.6",
"nunomaduro/termwind": "^1.15.1", "nunomaduro/termwind": "^1.15.1",
"php": "^8.1.0", "php": "^8.1.0",
"symfony/console": "^6.2.5" "symfony/console": "^6.2.7"
}, },
"require-dev": { "require-dev": {
"laravel/framework": "^10.0.3", "brianium/paratest": "^7.1.0",
"laravel/pint": "^1.5.0", "laravel/framework": "^10.2.0",
"laravel/sail": "^1.20.2", "laravel/pint": "^1.6.0",
"laravel/sail": "^1.21.1",
"laravel/sanctum": "^3.2.1", "laravel/sanctum": "^3.2.1",
"laravel/tinker": "^2.8.0", "laravel/tinker": "^2.8.1",
"nunomaduro/larastan": "^2.4.1", "nunomaduro/larastan": "^2.4.1",
"orchestra/testbench-core": "^8.0.1", "orchestra/testbench-core": "^8.0.3",
"pestphp/pest": "^2.0.0", "pestphp/pest": "^2.0.0",
"phpunit/phpunit": "^10.0.9", "phpunit/phpunit": "^10.0.14",
"sebastian/environment": "^6.0.0", "sebastian/environment": "^6.0.0",
"spatie/laravel-ignition": "^2.0.0" "spatie/laravel-ignition": "^2.0.0"
}, },
@ -3922,7 +3977,7 @@
"type": "patreon" "type": "patreon"
} }
], ],
"time": "2023-02-19T16:25:13+00:00" "time": "2023-03-03T10:00:22+00:00"
}, },
{ {
"name": "nunomaduro/termwind", "name": "nunomaduro/termwind",
@ -4335,16 +4390,16 @@
}, },
{ {
"name": "phpseclib/phpseclib", "name": "phpseclib/phpseclib",
"version": "3.0.18", "version": "3.0.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpseclib/phpseclib.git", "url": "https://github.com/phpseclib/phpseclib.git",
"reference": "f28693d38ba21bb0d9f0c411ee5dae2b178201da" "reference": "cc181005cf548bfd8a4896383bb825d859259f95"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f28693d38ba21bb0d9f0c411ee5dae2b178201da", "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/cc181005cf548bfd8a4896383bb825d859259f95",
"reference": "f28693d38ba21bb0d9f0c411ee5dae2b178201da", "reference": "cc181005cf548bfd8a4896383bb825d859259f95",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4425,7 +4480,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/phpseclib/phpseclib/issues", "issues": "https://github.com/phpseclib/phpseclib/issues",
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.18" "source": "https://github.com/phpseclib/phpseclib/tree/3.0.19"
}, },
"funding": [ "funding": [
{ {
@ -4441,7 +4496,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-12-17T18:26:50+00:00" "time": "2023-03-05T17:13:09+00:00"
}, },
{ {
"name": "pragmarx/google2fa", "name": "pragmarx/google2fa",
@ -5446,16 +5501,16 @@
}, },
{ {
"name": "spatie/backtrace", "name": "spatie/backtrace",
"version": "1.2.2", "version": "1.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/backtrace.git", "url": "https://github.com/spatie/backtrace.git",
"reference": "7b34fee6c1ad45f8ee0498d17cd8ea9a076402c1" "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/backtrace/zipball/7b34fee6c1ad45f8ee0498d17cd8ea9a076402c1", "url": "https://api.github.com/repos/spatie/backtrace/zipball/ec4dd16476b802dbdc6b4467f84032837e316b8c",
"reference": "7b34fee6c1ad45f8ee0498d17cd8ea9a076402c1", "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5464,6 +5519,7 @@
"require-dev": { "require-dev": {
"ext-json": "*", "ext-json": "*",
"phpunit/phpunit": "^9.3", "phpunit/phpunit": "^9.3",
"spatie/phpunit-snapshot-assertions": "^4.2",
"symfony/var-dumper": "^5.1" "symfony/var-dumper": "^5.1"
}, },
"type": "library", "type": "library",
@ -5491,7 +5547,7 @@
"spatie" "spatie"
], ],
"support": { "support": {
"source": "https://github.com/spatie/backtrace/tree/1.2.2" "source": "https://github.com/spatie/backtrace/tree/1.4.0"
}, },
"funding": [ "funding": [
{ {
@ -5503,7 +5559,7 @@
"type": "other" "type": "other"
} }
], ],
"time": "2023-02-21T08:29:12+00:00" "time": "2023-03-04T08:57:24+00:00"
}, },
{ {
"name": "spatie/flare-client-php", "name": "spatie/flare-client-php",
@ -8251,6 +8307,68 @@
], ],
"time": "2023-02-24T10:42:00+00:00" "time": "2023-02-24T10:42:00+00:00"
}, },
{
"name": "therobfonz/laravel-mandrill-driver",
"version": "5.0.0",
"source": {
"type": "git",
"url": "https://github.com/luisdalmolin/laravel-mandrill-driver.git",
"reference": "a492a580e984c9bae5d59bbc2660f75af4ea2c0d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/luisdalmolin/laravel-mandrill-driver/zipball/a492a580e984c9bae5d59bbc2660f75af4ea2c0d",
"reference": "a492a580e984c9bae5d59bbc2660f75af4ea2c0d",
"shasum": ""
},
"require": {
"illuminate/support": "^10.0",
"mailchimp/transactional": "^1.0",
"php": "^8.1",
"symfony/mailer": "^6.0"
},
"require-dev": {
"mockery/mockery": "^1.4.4",
"phpunit/phpunit": "^9.5.10"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"LaravelMandrill\\MandrillServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"LaravelMandrill\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Rob Fonseca",
"email": "robfonseca@gmail.com"
},
{
"name": "Brandon Ferens",
"email": "brandon@kirschbaumdevelopment.com"
}
],
"description": "Mandrill Driver for Laravel 9+",
"keywords": [
"laravel",
"mandrill"
],
"support": {
"issues": "https://github.com/luisdalmolin/laravel-mandrill-driver/issues",
"source": "https://github.com/luisdalmolin/laravel-mandrill-driver/tree/5.0.0"
},
"time": "2023-01-31T13:48:27+00:00"
},
{ {
"name": "tijsverkoyen/css-to-inline-styles", "name": "tijsverkoyen/css-to-inline-styles",
"version": "2.2.6", "version": "2.2.6",
@ -9159,16 +9277,16 @@
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
"version": "1.11.0", "version": "1.11.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/DeepCopy.git", "url": "https://github.com/myclabs/DeepCopy.git",
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9206,7 +9324,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/myclabs/DeepCopy/issues", "issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
}, },
"funding": [ "funding": [
{ {
@ -9214,20 +9332,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-03-03T13:19:32+00:00" "time": "2023-03-08T13:26:56+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v4.15.3", "version": "v4.15.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290",
"reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9268,22 +9386,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4"
}, },
"time": "2023-01-16T22:05:37+00:00" "time": "2023-03-05T19:49:14+00:00"
}, },
{ {
"name": "nunomaduro/larastan", "name": "nunomaduro/larastan",
"version": "2.4.1", "version": "2.5.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nunomaduro/larastan.git", "url": "https://github.com/nunomaduro/larastan.git",
"reference": "238fdbfba3aae133cdec73e99826c9b0232141f7" "reference": "072e2c9566ae000bf66c92384fc933b81885244b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nunomaduro/larastan/zipball/238fdbfba3aae133cdec73e99826c9b0232141f7", "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/072e2c9566ae000bf66c92384fc933b81885244b",
"reference": "238fdbfba3aae133cdec73e99826c9b0232141f7", "reference": "072e2c9566ae000bf66c92384fc933b81885244b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9297,11 +9415,11 @@
"illuminate/support": "^9.47.0 || ^10.0.0", "illuminate/support": "^9.47.0 || ^10.0.0",
"php": "^8.0.2", "php": "^8.0.2",
"phpmyadmin/sql-parser": "^5.6.0", "phpmyadmin/sql-parser": "^5.6.0",
"phpstan/phpstan": "^1.9.8" "phpstan/phpstan": "~1.10.3"
}, },
"require-dev": { "require-dev": {
"nikic/php-parser": "^4.15.2", "nikic/php-parser": "^4.15.2",
"orchestra/testbench": "^7.19.0|^8.0.0", "orchestra/testbench": "^7.19.0 || ^8.0.0",
"phpunit/phpunit": "^9.5.27" "phpunit/phpunit": "^9.5.27"
}, },
"suggest": { "suggest": {
@ -9346,7 +9464,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/nunomaduro/larastan/issues", "issues": "https://github.com/nunomaduro/larastan/issues",
"source": "https://github.com/nunomaduro/larastan/tree/2.4.1" "source": "https://github.com/nunomaduro/larastan/tree/2.5.1"
}, },
"funding": [ "funding": [
{ {
@ -9366,7 +9484,7 @@
"type": "patreon" "type": "patreon"
} }
], ],
"time": "2023-02-05T12:19:17+00:00" "time": "2023-03-04T23:46:40+00:00"
}, },
{ {
"name": "phar-io/manifest", "name": "phar-io/manifest",
@ -9676,16 +9794,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.10.3", "version": "1.10.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "5419375b5891add97dc74be71e6c1c34baaddf64" "reference": "50d089a3e0904b0fe7e2cf2d4fd37d427d64235a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/5419375b5891add97dc74be71e6c1c34baaddf64", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/50d089a3e0904b0fe7e2cf2d4fd37d427d64235a",
"reference": "5419375b5891add97dc74be71e6c1c34baaddf64", "reference": "50d089a3e0904b0fe7e2cf2d4fd37d427d64235a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9715,7 +9833,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/phpstan/phpstan/issues", "issues": "https://github.com/phpstan/phpstan/issues",
"source": "https://github.com/phpstan/phpstan/tree/1.10.3" "source": "https://github.com/phpstan/phpstan/tree/1.10.6"
}, },
"funding": [ "funding": [
{ {
@ -9731,7 +9849,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-02-25T14:47:13+00:00" "time": "2023-03-09T16:55:12+00:00"
}, },
{ {
"name": "phpstan/phpstan-deprecation-rules", "name": "phpstan/phpstan-deprecation-rules",
@ -9832,16 +9950,16 @@
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "10.0.1", "version": "10.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "b9c21a93dd8c8eed79879374884ee733259475cc" "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b9c21a93dd8c8eed79879374884ee733259475cc", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/20800e84296ea4732f9a125e08ce86b4004ae3e4",
"reference": "b9c21a93dd8c8eed79879374884ee733259475cc", "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9863,8 +9981,8 @@
"phpunit/phpunit": "^10.0" "phpunit/phpunit": "^10.0"
}, },
"suggest": { "suggest": {
"ext-pcov": "*", "ext-pcov": "PHP extension that provides line coverage",
"ext-xdebug": "*" "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -9897,7 +10015,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.1" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.2"
}, },
"funding": [ "funding": [
{ {
@ -9905,7 +10023,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-02-25T05:35:03+00:00" "time": "2023-03-06T13:00:19+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -10150,16 +10268,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "10.0.14", "version": "10.0.15",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "7065dbebcb0f66cf16a45fc9cfc28c2351e06169" "reference": "9b0c2245ef173a3d9546f6a4393a85d60eabe071"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7065dbebcb0f66cf16a45fc9cfc28c2351e06169", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b0c2245ef173a3d9546f6a4393a85d60eabe071",
"reference": "7065dbebcb0f66cf16a45fc9cfc28c2351e06169", "reference": "9b0c2245ef173a3d9546f6a4393a85d60eabe071",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -10191,7 +10309,7 @@
"sebastian/version": "^4.0" "sebastian/version": "^4.0"
}, },
"suggest": { "suggest": {
"ext-soap": "*" "ext-soap": "To be able to generate mocks based on WSDL files"
}, },
"bin": [ "bin": [
"phpunit" "phpunit"
@ -10230,7 +10348,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "issues": "https://github.com/sebastianbergmann/phpunit/issues",
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.14" "source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.15"
}, },
"funding": [ "funding": [
{ {
@ -10246,7 +10364,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-03-01T05:37:49+00:00" "time": "2023-03-09T06:43:13+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",

View File

@ -31,6 +31,7 @@ use FireflyIII\Models\Bill;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Models\InvitedUser;
use FireflyIII\Models\LinkType; use FireflyIII\Models\LinkType;
use FireflyIII\Models\ObjectGroup; use FireflyIII\Models\ObjectGroup;
use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBank;
@ -106,8 +107,8 @@ return [
'webhooks' => true, 'webhooks' => true,
'handle_debts' => true, 'handle_debts' => true,
], ],
'version' => '6.0.0', 'version' => '6.0.1',
'api_version' => '2.0.0', 'api_version' => '2.0.1',
'db_version' => 19, 'db_version' => 19,
// generic settings // generic settings
@ -445,6 +446,7 @@ return [
'webhook' => Webhook::class, 'webhook' => Webhook::class,
'webhookMessage' => WebhookMessage::class, 'webhookMessage' => WebhookMessage::class,
'webhookAttempt' => WebhookAttempt::class, 'webhookAttempt' => WebhookAttempt::class,
'invitedUser' => InvitedUser::class,
// strings // strings
'currency_code' => CurrencyCode::class, 'currency_code' => CurrencyCode::class,
@ -470,6 +472,7 @@ return [
'dynamicConfigKey' => DynamicConfigKey::class, 'dynamicConfigKey' => DynamicConfigKey::class,
'eitherConfigKey' => EitherConfigKey::class, 'eitherConfigKey' => EitherConfigKey::class,
], ],
'rule-actions' => [ 'rule-actions' => [
'set_category' => SetCategory::class, 'set_category' => SetCategory::class,

View File

@ -33,7 +33,7 @@ return [
| and used as needed; however, this mailer will be used by default. | and used as needed; however, this mailer will be used by default.
| |
*/ */
'default' => env('MAIL_MAILER', 'smtp'), 'default' => envNonEmpty('MAIL_MAILER', 'log'),
'mailers' => [ 'mailers' => [
'smtp' => [ 'smtp' => [
@ -55,6 +55,10 @@ return [
'transport' => 'mailgun', 'transport' => 'mailgun',
], ],
'mandrill' => [
'transport' => 'mandrill',
],
'postmark' => [ 'postmark' => [
'transport' => 'postmark', 'transport' => 'postmark',
], ],

View File

@ -101,18 +101,18 @@ module.exports = configure(function (ctx) {
type: 'https' type: 'https'
}, },
port: 8080, port: 8080,
host: 'firefly-dev.sd.home', host: 'firefly-dev.sd.local',
open: false, // opens browser window automatically open: false, // opens browser window automatically
proxy: [ proxy: [
{ {
context: ['/sanctum', '/api'], context: ['/sanctum', '/api'],
target: 'https://firefly.sd.home', // Laravel Homestead end-point target: 'https://firefly.sd.local', // Laravel Homestead end-point
// avoid problems with session and XSRF cookies // avoid problems with session and XSRF cookies
// When using capacitor, use the IP of the dev server streaming the app // When using capacitor, use the IP of the dev server streaming the app
// For SPA and PWA use localhost, given that the app is streamed on that host // For SPA and PWA use localhost, given that the app is streamed on that host
// xxx address is your machine current IP address // xxx address is your machine current IP address
cookieDomainRewrite: cookieDomainRewrite:
ctx.modeName === 'capacitor' ? '10.0.0.1' : '.sd.home', ctx.modeName === 'capacitor' ? '10.0.0.1' : '.sd.local',
changeOrigin: true, changeOrigin: true,
} }
] ]

View File

@ -221,8 +221,8 @@ export default {
"pref_last90": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 90 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", "pref_last90": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 90 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2",
"pref_last30": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 30 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", "pref_last30": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 30 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2",
"pref_last7": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 7 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", "pref_last7": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 7 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2",
"pref_YTD": "\u0391\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03ae \u03c4\u03bf\u03c5 \u03ad\u03c4\u03bf\u03c5\u03c2 \u03c9\u03c2 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1", "pref_YTD": "\u0388\u03c4\u03bf\u03c2 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1",
"pref_QTD": "\u0391\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03ae \u03c4\u03bf\u03c5 \u03c4\u03c1\u03b9\u03bc\u03ae\u03bd\u03bf\u03c5 \u03c9\u03c2 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1", "pref_QTD": "\u03a4\u03c1\u03af\u03bc\u03b7\u03bd\u03bf \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1",
"pref_MTD": "\u0391\u03c0\u03cc \u03c4\u03b7\u03bd\u03bd \u03b1\u03c1\u03c7\u03ae \u03c4\u03bf\u03c5 \u03bc\u03ae\u03bd\u03b1 \u03c9\u03c2 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1" "pref_MTD": "\u039c\u03ae\u03bd\u03b1\u03c2 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1"
} }
} }

View File

@ -38,7 +38,7 @@ export default {
}, },
"list": { "list": {
"name": "\u540d\u7a31", "name": "\u540d\u7a31",
"account_number": "Account number", "account_number": "\u5e33\u6236\u865f\u78bc",
"currentBalance": "\u76ee\u524d\u9918\u984d", "currentBalance": "\u76ee\u524d\u9918\u984d",
"lastActivity": "\u4e0a\u6b21\u6d3b\u52d5", "lastActivity": "\u4e0a\u6b21\u6d3b\u52d5",
"active": "\u662f\u5426\u555f\u7528\uff1f" "active": "\u662f\u5426\u555f\u7528\uff1f"
@ -46,15 +46,15 @@ export default {
"breadcrumbs": { "breadcrumbs": {
"placeholder": "[Placeholder]", "placeholder": "[Placeholder]",
"budgets": "\u9810\u7b97", "budgets": "\u9810\u7b97",
"subscriptions": "Subscriptions", "subscriptions": "\u8a02\u95b1",
"transactions": "Transactions", "transactions": "\u4ea4\u6613",
"title_expenses": "Expenses", "title_expenses": "\u652f\u51fa",
"title_withdrawal": "Expenses", "title_withdrawal": "Expenses",
"title_revenue": "Revenue \/ income", "title_revenue": "Revenue \/ income",
"title_deposit": "Revenue \/ income", "title_deposit": "Revenue \/ income",
"title_transfer": "Transfers", "title_transfer": "\u8f49\u5e33",
"title_transfers": "Transfers", "title_transfers": "\u8f49\u5e33",
"asset_accounts": "Asset accounts", "asset_accounts": "\u8cc7\u7522\u5e33\u6236",
"expense_accounts": "Expense accounts", "expense_accounts": "Expense accounts",
"revenue_accounts": "Revenue accounts", "revenue_accounts": "Revenue accounts",
"liabilities_accounts": "Liabilities" "liabilities_accounts": "Liabilities"
@ -204,8 +204,8 @@ export default {
"currencies": "\u8ca8\u5e63", "currencies": "\u8ca8\u5e63",
"administration": "\u7ba1\u7406", "administration": "\u7ba1\u7406",
"profile": "\u500b\u4eba\u6a94\u6848", "profile": "\u500b\u4eba\u6a94\u6848",
"source_account": "Source account", "source_account": "\u4f86\u6e90\u5e33\u6236",
"destination_account": "Destination account", "destination_account": "\u76ee\u6a19\u5e33\u6236",
"amount": "\u91d1\u984d", "amount": "\u91d1\u984d",
"date": "\u65e5\u671f", "date": "\u65e5\u671f",
"time": "Time", "time": "Time",

View File

@ -338,7 +338,7 @@ page container: q-ma-xs (margin all, xs) AND q-mb-md to give the page content so
<q-footer class="bg-grey-8 text-white" bordered> <q-footer class="bg-grey-8 text-white" bordered>
<q-toolbar> <q-toolbar>
<div> <div>
<small>Firefly III v v6.0.0 &copy; James Cole, AGPL-3.0-or-later.</small> <small>Firefly III v v6.0.1 &copy; James Cole, AGPL-3.0-or-later.</small>
</div> </div>
</q-toolbar> </q-toolbar>
</q-footer> </q-footer>

2
public/v1/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@ -5,18 +5,18 @@
*/ */
/*! /*!
* Sizzle CSS Selector Engine v2.3.9 * Sizzle CSS Selector Engine v2.3.10
* https://sizzlejs.com/ * https://sizzlejs.com/
* *
* Copyright JS Foundation and other contributors * Copyright JS Foundation and other contributors
* Released under the MIT license * Released under the MIT license
* https://js.foundation/ * https://js.foundation/
* *
* Date: 2022-12-19 * Date: 2023-02-14
*/ */
/*! /*!
* jQuery JavaScript Library v3.6.3 * jQuery JavaScript Library v3.6.4
* https://jquery.com/ * https://jquery.com/
* *
* Includes Sizzle.js * Includes Sizzle.js
@ -26,5 +26,5 @@
* Released under the MIT license * Released under the MIT license
* https://jquery.org/license * https://jquery.org/license
* *
* Date: 2022-12-20T21:28Z * Date: 2023-03-08T15:28Z
*/ */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -88,7 +88,7 @@ function stopSorting() {
//$.post('api/v1/accounts/' + id, {order: newOrder, _token: token}); //$.post('api/v1/accounts/' + id, {order: newOrder, _token: token});
$.ajax({ $.ajax({
url: 'api/v1/accounts/' + id, url: 'api/v1/accounts/' + id,
data: {order: newOrder}, data: JSON.stringify({order: newOrder}),
type: 'PUT', type: 'PUT',
}); });
}); });

33
public/v1/js/ff/admin/users.js vendored Normal file
View File

@ -0,0 +1,33 @@
/*
* users.js
* Copyright (c) 2023 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
$(function () {
"use strict";
$('.delete-invite').on('click', deleteInvite);
});
function deleteInvite(e) {
let link = $(e.currentTarget);
$.post(link.attr('href'), {_token: token}).then(function () {
location.reload();
});
return false;
}

View File

@ -224,7 +224,6 @@ function deleteBudgetLimit(e) {
var url = deleteBudgetLimitUrl.replace('REPLACEME', budgetLimitId.toString()); var url = deleteBudgetLimitUrl.replace('REPLACEME', budgetLimitId.toString());
$.post(url, {_token: token}).then(function () { $.post(url, {_token: token}).then(function () {
$('.bl_entry[data-budget-limit-id="' + budgetLimitId + '"]').remove(); $('.bl_entry[data-budget-limit-id="' + budgetLimitId + '"]').remove();
}); });
return false; return false;
} }

View File

@ -20,9 +20,18 @@
/** global: moment, token, dateRangeMeta,dateRangeConfig, accountingConfig, accounting, currencySymbol, mon_decimal_point, frac_digits, showFullList, showOnlyTop, mon_thousands_sep */ /** global: moment, token, dateRangeMeta,dateRangeConfig, accountingConfig, accounting, currencySymbol, mon_decimal_point, frac_digits, showFullList, showOnlyTop, mon_thousands_sep */
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content'),
'Content-Type': 'application/json'
}
});
$(function () { $(function () {
"use strict"; "use strict";
configAccounting(currencySymbol); configAccounting(currencySymbol);
// on submit of logout button: // on submit of logout button:
@ -37,11 +46,7 @@ $(function () {
$('button[type="submit"]').prop('disabled', true); $('button[type="submit"]').prop('disabled', true);
}); });
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
// when you click on a currency, this happens: // when you click on a currency, this happens:
$('.currency-option').on('click', currencySelect); $('.currency-option').on('click', currencySelect);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -192,6 +192,13 @@
border-color: #15181a; border-color: #15181a;
cursor: not-allowed; cursor: not-allowed;
} }
.skin-firefly-iii .text-warning {
color: #f39c12 !important;
}
.skin-firefly-iii a.text-warning:hover,
.skin-firefly-iii a.text-warning:focus {
color: #d39e00 !important;
}
.skin-firefly-iii h4 { .skin-firefly-iii h4 {
color: #44DEF1; color: #44DEF1;
} }
@ -450,7 +457,7 @@
.skin-firefly-iii .input-group textarea { .skin-firefly-iii .input-group textarea {
background-color: #353c42; background-color: #353c42;
color: #bec5cb; color: #bec5cb;
border: 1px solid #353c42; border: 1px solid #73818f;
} }
.skin-firefly-iii .list-group { .skin-firefly-iii .list-group {
color: #bec5cb; color: #bec5cb;

File diff suppressed because one or more lines are too long

View File

@ -24,8 +24,8 @@
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 300;
src: local(''), src: local(''),
url('/v3-local/fonts/source-sans-pro-v21-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/v3-local/fonts/source-sans-pro-v21-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
} }
/* source-sans-pro-regular - latin */ /* source-sans-pro-regular - latin */
@ -34,8 +34,8 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
src: local(''), src: local(''),
url('/v3-local/fonts/source-sans-pro-v21-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/v3-local/fonts/source-sans-pro-v21-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('v3-local/fonts/source-sans-pro-v21-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
} }
/* source-sans-pro-italic - latin */ /* source-sans-pro-italic - latin */
@ -44,8 +44,8 @@
font-style: italic; font-style: italic;
font-weight: 400; font-weight: 400;
src: local(''), src: local(''),
url('/v3-local/fonts/source-sans-pro-v21-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/v3-local/fonts/source-sans-pro-v21-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
} }
/* source-sans-pro-700 - latin */ /* source-sans-pro-700 - latin */
@ -54,6 +54,6 @@
font-style: normal; font-style: normal;
font-weight: 700; font-weight: 700;
src: local(''), src: local(''),
url('/v3-local/fonts/source-sans-pro-v21-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/v3-local/fonts/source-sans-pro-v21-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('../../v3-local/fonts/source-sans-pro-v21-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
} }

View File

@ -1 +1 @@
<!DOCTYPE html><html><head><base href=/v3/ ><title>Firefly III</title><meta charset=utf-8><meta content="Personal finances manager" name=description><meta content="telephone=no" name=format-detection><meta content=no name=msapplication-tap-highlight><meta content="user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width" name=viewport><link href=favicon-32x32.png rel=icon sizes=32x32 type=image/png><link href=favicon-16x16.png rel=icon sizes=16x16 type=image/png><link href=maskable76.png rel=apple-touch-icon sizes=76x76><link href=maskable120.png rel=apple-touch-icon sizes=120x120><link href=maskable152.png rel=apple-touch-icon sizes=152x152><link href=apple-touch-icon.png rel=apple-touch-icon sizes=180x180><link color=#3c8dbc href=safari-pinned-tab.svg rel=mask-icon><link href=maskable192.png rel=icon sizes=192x192><link href=maskable128.png rel=icon sizes=128x128><link href=manifest.webmanifest rel=manifest><meta content=#1e6581 name=msapplication-TileColor><meta content=maskable512.png name=msapplication-TileImage><meta content=no name=msapplication-tap-highlight><meta content="Firefly III" name=application-name><meta content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir" name=robots><meta content=yes name=apple-mobile-web-app-capable><meta content="Firefly III" name=apple-mobile-web-app-title><meta content="Firefly III" name=application-name><meta content=#3c8dbc name=msapplication-TileColor><meta content="mstile-144x144.png?v=3e8AboOwbd" name=msapplication-TileImage><meta content=#3c8dbc name=theme-color><script defer src=/v3/js/vendor.43fbf1b0.js></script><script defer src=/v3/js/app.8ad7cfe1.js></script><link href=/v3/css/vendor.b7419aa9.css rel=stylesheet><link href=/v3/css/app.50c7ba73.css rel=stylesheet></head><body><div id=q-app></div></body></html> <!DOCTYPE html><html><head><base href=/v3/ ><title>Firefly III</title><meta charset=utf-8><meta content="Personal finances manager" name=description><meta content="telephone=no" name=format-detection><meta content=no name=msapplication-tap-highlight><meta content="user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width" name=viewport><link href=favicon-32x32.png rel=icon sizes=32x32 type=image/png><link href=favicon-16x16.png rel=icon sizes=16x16 type=image/png><link href=maskable76.png rel=apple-touch-icon sizes=76x76><link href=maskable120.png rel=apple-touch-icon sizes=120x120><link href=maskable152.png rel=apple-touch-icon sizes=152x152><link href=apple-touch-icon.png rel=apple-touch-icon sizes=180x180><link color=#3c8dbc href=safari-pinned-tab.svg rel=mask-icon><link href=maskable192.png rel=icon sizes=192x192><link href=maskable128.png rel=icon sizes=128x128><link href=manifest.webmanifest rel=manifest><meta content=#1e6581 name=msapplication-TileColor><meta content=maskable512.png name=msapplication-TileImage><meta content=no name=msapplication-tap-highlight><meta content="Firefly III" name=application-name><meta content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir" name=robots><meta content=yes name=apple-mobile-web-app-capable><meta content="Firefly III" name=apple-mobile-web-app-title><meta content="Firefly III" name=application-name><meta content=#3c8dbc name=msapplication-TileColor><meta content="mstile-144x144.png?v=3e8AboOwbd" name=msapplication-TileImage><meta content=#3c8dbc name=theme-color><script defer src=/v3/js/vendor.43fbf1b0.js></script><script defer src=/v3/js/app.16587ec0.js></script><link href=/v3/css/vendor.b7419aa9.css rel=stylesheet><link href=/v3/css/app.50c7ba73.css rel=stylesheet></head><body><div id=q-app></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -40,7 +40,7 @@
:value="cBill.id">{{ cBill.name }} :value="cBill.id">{{ cBill.name }}
</option> </option>
</select> </select>
<p v-if="this.bills.length === 1" class="help-block" v-text="$t('firefly.no_bill_pointer')"></p> <p v-if="this.bills.length === 1" class="help-block" v-html="$t('firefly.no_bill_pointer')"></p>
<ul v-for="error in this.error" class="list-unstyled"> <ul v-for="error in this.error" class="list-unstyled">
<li class="text-danger">{{ error }}</li> <li class="text-danger">{{ error }}</li>
</ul> </ul>

View File

@ -40,7 +40,7 @@
:value="cBudget.id">{{ cBudget.name }} :value="cBudget.id">{{ cBudget.name }}
</option> </option>
</select> </select>
<p v-if="this.budgets.length === 1" class="help-block" v-text="$t('firefly.no_budget_pointer')"></p> <p v-if="this.budgets.length === 1" class="help-block" v-html="$t('firefly.no_budget_pointer')"></p>
<ul v-for="error in this.error" class="list-unstyled"> <ul v-for="error in this.error" class="list-unstyled">
<li class="text-danger">{{ error }}</li> <li class="text-danger">{{ error }}</li>
</ul> </ul>

View File

@ -529,7 +529,7 @@ export default {
// if count is 0, send user onwards. // if count is 0, send user onwards.
if (this.createAnother) { if (this.createAnother) {
// do message: // do message:
this.success_message = this.$t('firefly.transaction_stored_link', {ID: groupId, title: $(title).text()}); this.success_message = this.$t('firefly.transaction_stored_link', {ID: groupId, title: this.escapeHTML(title)});
this.error_message = ''; this.error_message = '';
if (this.resetFormAfter) { if (this.resetFormAfter) {
// also clear form. // also clear form.

View File

@ -140,7 +140,7 @@
"internal_reference": "Referencia interna", "internal_reference": "Referencia interna",
"webhook_response": "Respuesta", "webhook_response": "Respuesta",
"webhook_trigger": "Disparador", "webhook_trigger": "Disparador",
"webhook_delivery": "Delivery" "webhook_delivery": "Entrega"
}, },
"list": { "list": {
"active": "\u00bfEst\u00e1 Activo?", "active": "\u00bfEst\u00e1 Activo?",

View File

@ -19,9 +19,9 @@
"fire_webhooks_checkbox": "Fire webhooks", "fire_webhooks_checkbox": "Fire webhooks",
"no_budget_pointer": "You seem to have no budgets yet. You should create some on the <a href=\"budgets\">budgets<\/a>-page. Budgets can help you keep track of expenses.", "no_budget_pointer": "You seem to have no budgets yet. You should create some on the <a href=\"budgets\">budgets<\/a>-page. Budgets can help you keep track of expenses.",
"no_bill_pointer": "You seem to have no bills yet. You should create some on the <a href=\"bills\">bills<\/a>-page. Bills can help you keep track of expenses.", "no_bill_pointer": "You seem to have no bills yet. You should create some on the <a href=\"bills\">bills<\/a>-page. Bills can help you keep track of expenses.",
"source_account": "Source account", "source_account": "\u4f86\u6e90\u5e33\u6236",
"hidden_fields_preferences": "You can enable more transaction options in your <a href=\"preferences\">preferences<\/a>.", "hidden_fields_preferences": "You can enable more transaction options in your <a href=\"preferences\">preferences<\/a>.",
"destination_account": "Destination account", "destination_account": "\u76ee\u6a19\u5e33\u6236",
"add_another_split": "\u589e\u52a0\u62c6\u5206", "add_another_split": "\u589e\u52a0\u62c6\u5206",
"submission": "Submission", "submission": "Submission",
"create_another": "After storing, return here to create another one.", "create_another": "After storing, return here to create another one.",
@ -144,8 +144,8 @@
}, },
"list": { "list": {
"active": "\u662f\u5426\u555f\u7528\uff1f", "active": "\u662f\u5426\u555f\u7528\uff1f",
"trigger": "Trigger", "trigger": "\u89f8\u767c\u5668",
"response": "Response", "response": "\u56de\u61c9",
"delivery": "Delivery", "delivery": "Delivery",
"url": "URL", "url": "URL",
"secret": "Secret" "secret": "Secret"

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version заявка за потвърждение', 'authorization_request' => 'Firefly III v:version заявка за потвърждение',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Съдържанието на това поле е невалидно без информация за валута.', 'require_currency_info' => 'Съдържанието на това поле е невалидно без информация за валута.',
'not_transfer_account' => 'Този акаунт не е акаунт, който може да се използва за прехвърляния.', 'not_transfer_account' => 'Този акаунт не е акаунт, който може да се използва за прехвърляния.',
'require_currency_amount' => 'Съдържанието на това поле е невалидно без стойност в другата валута.', 'require_currency_amount' => 'Съдържанието на това поле е невалидно без стойност в другата валута.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Описанието на транзакцията не трябва да е равно на общото описание.', 'equal_description' => 'Описанието на транзакцията не трябва да е равно на общото описание.',
'file_invalid_mime' => 'Файлът ":name" е от тип ":mime", който не се приема за качване.', 'file_invalid_mime' => 'Файлът ":name" е от тип ":mime", който не се приема за качване.',
'file_too_large' => 'Файлът ":name" е твърде голям.', 'file_too_large' => 'Файлът ":name" е твърде голям.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visitar l\'URL del webhook', 'visit_webhook_url' => 'Visitar l\'URL del webhook',
'reset_webhook_secret' => 'Reiniciar el secret del webhook', 'reset_webhook_secret' => 'Reiniciar el secret del webhook',
'webhook_stored_link' => 'S\'ha desat <a href="webhooks/show/{ID}">el Webook #{ID} ("{title}")</a> correctament.', 'webhook_stored_link' => 'S\'ha desat <a href="webhooks/show/{ID}">el Webook #{ID} ("{title}")</a> correctament.',
'webhook_updated_link' => 'S\'ha actualitzat el <a href="webhooks/show/{ID}">Webook #{ID}</a> ("{title}").', 'webhook_updated_link' => 'S\'ha actualitzat el <a href="webhooks/show/{ID}">Webook #{ID}</a> ("{title}").',
// API access // API access
'authorization_request' => 'Firefly III v:version Sol·licitud d\'Autorització', 'authorization_request' => 'Firefly III v:version Sol·licitud d\'Autorització',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invitar nou usuari', 'invite_new_user_title' => 'Invitar nou usuari',
'invite_new_user_text' => 'Com a administrador, pots convidar usuaris a l\'administració de Firefly III. Amb aquest enllaç podran crear un compte. L\'usuari convidat, i el seu compte d\'invitació apareixeran a la taula inferior. Pots compartir l\'enllaç.', 'invite_new_user_text' => 'Com a administrador, pots convidar usuaris a l\'administració de Firefly III. Amb aquest enllaç podran crear un compte. L\'usuari convidat, i el seu compte d\'invitació apareixeran a la taula inferior. Pots compartir l\'enllaç.',
'invited_user_mail' => 'Correu electrònic', 'invited_user_mail' => 'Correu electrònic',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'El contingut d\'aquest camp no és vàlid sense informació de la moneda.', 'require_currency_info' => 'El contingut d\'aquest camp no és vàlid sense informació de la moneda.',
'not_transfer_account' => 'Aquest compte no és un compte que puguis fer servir per transferències.', 'not_transfer_account' => 'Aquest compte no és un compte que puguis fer servir per transferències.',
'require_currency_amount' => 'El contingut d\'aquest camp no és vàlid sense informació de la quantitat estrangera.', 'require_currency_amount' => 'El contingut d\'aquest camp no és vàlid sense informació de la quantitat estrangera.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'La descripció de la transacció no hauria de ser igual a la descripció global.', 'equal_description' => 'La descripció de la transacció no hauria de ser igual a la descripció global.',
'file_invalid_mime' => 'El fitxer ":name" és de tipus ":mime", el qual no s\'accepta com a pujada.', 'file_invalid_mime' => 'El fitxer ":name" és de tipus ":mime", el qual no s\'accepta com a pujada.',
'file_too_large' => 'El fitxer ":name" és massa gran.', 'file_too_large' => 'El fitxer ":name" és massa gran.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Požadavek na ověření Firefly III verze :version', 'authorization_request' => 'Požadavek na ověření Firefly III verze :version',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Obsah tohoto pole je neplatný bez informace o měně.', 'require_currency_info' => 'Obsah tohoto pole je neplatný bez informace o měně.',
'not_transfer_account' => 'Tento účet není účet, který lze použít pro převody.', 'not_transfer_account' => 'Tento účet není účet, který lze použít pro převody.',
'require_currency_amount' => 'Obsah tohoto pole je neplatný bez informace o měně.', 'require_currency_amount' => 'Obsah tohoto pole je neplatný bez informace o měně.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Popis transakce nesmí být stejný jako globální popis.', 'equal_description' => 'Popis transakce nesmí být stejný jako globální popis.',
'file_invalid_mime' => 'Soubor ":name" je typu ":mime", který není schválen pro nahrání.', 'file_invalid_mime' => 'Soubor ":name" je typu ":mime", který není schválen pro nahrání.',
'file_too_large' => 'Soubor ":name" je příliš velký.', 'file_too_large' => 'Soubor ":name" je příliš velký.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Besøg webhook-URL', 'visit_webhook_url' => 'Besøg webhook-URL',
'reset_webhook_secret' => 'Nulstil webhook-hemmelighed', 'reset_webhook_secret' => 'Nulstil webhook-hemmelighed',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version Anmodning om Autorisation', 'authorization_request' => 'Firefly III v:version Anmodning om Autorisation',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Indholdet af dette felt er ugyldigt uden møntfodsinformation.', 'require_currency_info' => 'Indholdet af dette felt er ugyldigt uden møntfodsinformation.',
'not_transfer_account' => 'Denne konto kan ikke benyttes til overførsler.', 'not_transfer_account' => 'Denne konto kan ikke benyttes til overførsler.',
'require_currency_amount' => 'Indholdet af dette felt er ugyldigt uden information om det udenlandske beløb.', 'require_currency_amount' => 'Indholdet af dette felt er ugyldigt uden information om det udenlandske beløb.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Overførselsbeskrivelse bør ikke være den samme som den generelle beskrivelse.', 'equal_description' => 'Overførselsbeskrivelse bør ikke være den samme som den generelle beskrivelse.',
'file_invalid_mime' => 'Filen ":name" er af typen ":mime", som ikke er gyldig som en ny upload.', 'file_invalid_mime' => 'Filen ":name" er af typen ":mime", som ikke er gyldig som en ny upload.',
'file_too_large' => 'Filen ":name" er for stor.', 'file_too_large' => 'Filen ":name" er for stor.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Webhook-URL besuchen', 'visit_webhook_url' => 'Webhook-URL besuchen',
'reset_webhook_secret' => 'Webhook Secret zurücksetzen', 'reset_webhook_secret' => 'Webhook Secret zurücksetzen',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> wurde gespeichert.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> wurde gespeichert.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") wurde aktualisiert.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") wurde aktualisiert.',
// API access // API access
'authorization_request' => 'Firefly III v:version Autorisierungsanfrage', 'authorization_request' => 'Firefly III v:version Autorisierungsanfrage',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Neuen Nutzer einladen', 'invite_new_user_title' => 'Neuen Nutzer einladen',
'invite_new_user_text' => 'Als Administrator können Sie Benutzer einladen, sich auf Ihrer Firefly III Administration zu registrieren. Über den direkten Link, den Sie mit ihnen teilen können, können diese ein Konto registrieren. Der eingeladene Benutzer und sein Einladungslink erscheinen in der unten stehenden Tabelle. Sie können den Einladungslink mit ihm teilen.', 'invite_new_user_text' => 'Als Administrator können Sie Benutzer einladen, sich auf Ihrer Firefly III Administration zu registrieren. Über den direkten Link, den Sie mit ihnen teilen können, können diese ein Konto registrieren. Der eingeladene Benutzer und sein Einladungslink erscheinen in der unten stehenden Tabelle. Sie können den Einladungslink mit ihm teilen.',
'invited_user_mail' => 'E-Mail Adresse', 'invited_user_mail' => 'E-Mail Adresse',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Der Inhalt dieses Feldes ist ohne Währungsinformationen ungültig.', 'require_currency_info' => 'Der Inhalt dieses Feldes ist ohne Währungsinformationen ungültig.',
'not_transfer_account' => 'Dieses Konto ist kein Konto, welches für Buchungen genutzt werden kann.', 'not_transfer_account' => 'Dieses Konto ist kein Konto, welches für Buchungen genutzt werden kann.',
'require_currency_amount' => 'Der Inhalt dieses Feldes ist ohne Eingabe eines Betrags in Fremdwährung ungültig.', 'require_currency_amount' => 'Der Inhalt dieses Feldes ist ohne Eingabe eines Betrags in Fremdwährung ungültig.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Die Transaktionsbeschreibung darf nicht der globalen Beschreibung entsprechen.', 'equal_description' => 'Die Transaktionsbeschreibung darf nicht der globalen Beschreibung entsprechen.',
'file_invalid_mime' => 'Die Datei „:name” ist vom Typ „:mime”, welcher nicht zum Hochladen zugelassen ist.', 'file_invalid_mime' => 'Die Datei „:name” ist vom Typ „:mime”, welcher nicht zum Hochladen zugelassen ist.',
'file_too_large' => 'Die Datei „:name” ist zu groß.', 'file_too_large' => 'Die Datei „:name” ist zu groß.',

View File

@ -47,9 +47,9 @@ return [
'last_seven_days' => 'Τελευταίες επτά ημέρες', 'last_seven_days' => 'Τελευταίες επτά ημέρες',
'last_thirty_days' => 'Τελευταίες τριάντα ημέρες', 'last_thirty_days' => 'Τελευταίες τριάντα ημέρες',
'last_180_days' => 'Τελευταίες 180 ημέρες', 'last_180_days' => 'Τελευταίες 180 ημέρες',
'month_to_date' => 'Από την αρχή του μήνα ως σήμερα', 'month_to_date' => 'Μήνας μέχρι σήμερα',
'year_to_date' => 'Από την αρχή του έτους ως σήμερα', 'year_to_date' => 'Έτος μέχρι σήμερα',
'YTD' => 'Από την αρχή του έτους ως σήμερα', 'YTD' => 'ΤΡΕΧΟΝ ΕΤΟΣ',
'welcome_back' => 'Τι παίζει;', 'welcome_back' => 'Τι παίζει;',
'everything' => 'Όλα', 'everything' => 'Όλα',
'today' => 'σήμερα', 'today' => 'σήμερα',
@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Επισκεφθείτε το URL του webhook', 'visit_webhook_url' => 'Επισκεφθείτε το URL του webhook',
'reset_webhook_secret' => 'Επαναφορά μυστικού webhook', 'reset_webhook_secret' => 'Επαναφορά μυστικού webhook',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> έχει αποθηκευτεί.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> έχει αποθηκευτεί.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Το Webhook #{ID}</a> ("{title}") έχει ενημερωθεί.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Το Webhook #{ID}</a> ("{title}") έχει ενημερωθεί.',
// API access // API access
'authorization_request' => 'Αίτημα Εξουσιοδότησης Firefly III v:version', 'authorization_request' => 'Αίτημα Εξουσιοδότησης Firefly III v:version',
@ -1317,9 +1317,9 @@ return [
'pref_last90' => 'Τελευταίες 90 ημέρες', 'pref_last90' => 'Τελευταίες 90 ημέρες',
'pref_last30' => 'Τελευταίες 30 ημέρες', 'pref_last30' => 'Τελευταίες 30 ημέρες',
'pref_last7' => 'Τελευταίες 7 ημέρες', 'pref_last7' => 'Τελευταίες 7 ημέρες',
'pref_YTD' => 'Από την αρχή του έτους ως σήμερα', 'pref_YTD' => 'Έτος μέχρι σήμερα',
'pref_QTD' => 'Από την αρχή του τριμήνου ως σήμερα', 'pref_QTD' => 'Τρίμηνο μέχρι σήμερα',
'pref_MTD' => 'Από τηνν αρχή του μήνα ως σήμερα', 'pref_MTD' => 'Μήνας μέχρι σήμερα',
'pref_languages' => 'Γλώσσες', 'pref_languages' => 'Γλώσσες',
'pref_locale' => 'Ρυθμίσεις τοποθεσίας', 'pref_locale' => 'Ρυθμίσεις τοποθεσίας',
'pref_languages_help' => 'Το Firefly III υποστηρίζει διάφορες γλώσσες. Ποιά προτιμάτε;', 'pref_languages_help' => 'Το Firefly III υποστηρίζει διάφορες γλώσσες. Ποιά προτιμάτε;',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',
@ -2409,12 +2411,12 @@ return [
'admin_maintanance_title' => 'Συντήρηση', 'admin_maintanance_title' => 'Συντήρηση',
'admin_maintanance_expl' => 'Μερικά ωραία κουμπιά για συντήρηση στο Firefly III', 'admin_maintanance_expl' => 'Μερικά ωραία κουμπιά για συντήρηση στο Firefly III',
'admin_maintenance_clear_cache' => 'Εκκαθάριση cache', 'admin_maintenance_clear_cache' => 'Εκκαθάριση cache',
'admin_notifications' => 'Admin notifications', 'admin_notifications' => 'Ειδοποιήσεις διαχειριστή',
'admin_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. If you want to get these messages over Slack as well, set the "incoming webhook" URL.', 'admin_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. If you want to get these messages over Slack as well, set the "incoming webhook" URL.',
'admin_notification_check_user_new_reg' => 'User gets post-registration welcome message', 'admin_notification_check_user_new_reg' => 'User gets post-registration welcome message',
'admin_notification_check_admin_new_reg' => 'Administrator(s) get new user registration notification', 'admin_notification_check_admin_new_reg' => 'Administrator(s) get new user registration notification',
'admin_notification_check_new_version' => 'A new version is available', 'admin_notification_check_new_version' => 'Μια νέα έκδοση είναι διαθέσιμη',
'admin_notification_check_invite_created' => 'A user is invited to Firefly III', 'admin_notification_check_invite_created' => 'Ένας χρήστης θα λάβει πρόσκληση για το Firefly III',
'admin_notification_check_invite_redeemed' => 'A user invitation is redeemed', 'admin_notification_check_invite_redeemed' => 'A user invitation is redeemed',
'all_invited_users' => 'All invited users', 'all_invited_users' => 'All invited users',
'save_notification_settings' => 'Save settings', 'save_notification_settings' => 'Save settings',
@ -2697,8 +2699,8 @@ return [
'ale_action_update_transaction_type' => 'Changed transaction type', 'ale_action_update_transaction_type' => 'Changed transaction type',
'ale_action_update_notes' => 'Changed notes', 'ale_action_update_notes' => 'Changed notes',
'ale_action_update_description' => 'Changed description', 'ale_action_update_description' => 'Changed description',
'ale_action_add_to_piggy' => 'Piggy bank', 'ale_action_add_to_piggy' => 'Κουμπαράς',
'ale_action_remove_from_piggy' => 'Piggy bank', 'ale_action_remove_from_piggy' => 'Κουμπαράς',
'ale_action_add_tag' => 'Added tag', 'ale_action_add_tag' => 'Added tag',
]; ];

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Το περιεχόμενο αυτού του πεδίου δεν είναι έγκυρη χωρίς νομισματικές πληροφορίες.', 'require_currency_info' => 'Το περιεχόμενο αυτού του πεδίου δεν είναι έγκυρη χωρίς νομισματικές πληροφορίες.',
'not_transfer_account' => 'Αυτός ο λογαριασμός δεν είναι λογαριασμός που μπορεί να χρησιμοποιηθεί για συναλλαγές.', 'not_transfer_account' => 'Αυτός ο λογαριασμός δεν είναι λογαριασμός που μπορεί να χρησιμοποιηθεί για συναλλαγές.',
'require_currency_amount' => 'Το περιεχόμενο αυτού του πεδίου δεν είναι έγκυρο χωρίς πληροφορίες ετερόχθονος ποσού.', 'require_currency_amount' => 'Το περιεχόμενο αυτού του πεδίου δεν είναι έγκυρο χωρίς πληροφορίες ετερόχθονος ποσού.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Η περιγραφή της συναλλαγής δεν πρέπει να ισούται με καθολική περιγραφή.', 'equal_description' => 'Η περιγραφή της συναλλαγής δεν πρέπει να ισούται με καθολική περιγραφή.',
'file_invalid_mime' => 'Το αρχείο ":name" είναι τύπου ":mime" που δεν είναι αποδεκτός ως νέας μεταφόρτωσης.', 'file_invalid_mime' => 'Το αρχείο ":name" είναι τύπου ":mime" που δεν είναι αποδεκτός ως νέας μεταφόρτωσης.',
'file_too_large' => 'Το αρχείο ":name" είναι πολύ μεγάλο.', 'file_too_large' => 'Το αρχείο ":name" είναι πολύ μεγάλο.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version Authorisation Request', 'authorization_request' => 'Firefly III v:version Authorisation Request',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'The content of this field is invalid without currency information.', 'require_currency_info' => 'The content of this field is invalid without currency information.',
'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.',
'require_currency_amount' => 'The content of this field is invalid without foreign amount information.', 'require_currency_amount' => 'The content of this field is invalid without foreign amount information.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Transaction description should not equal global description.', 'equal_description' => 'Transaction description should not equal global description.',
'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.', 'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.',
'file_too_large' => 'File ":name" is too large.', 'file_too_large' => 'File ":name" is too large.',

View File

@ -270,7 +270,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version Authorization Request', 'authorization_request' => 'Firefly III v:version Authorization Request',
@ -2274,6 +2274,8 @@ return [
// Ignore this comment // Ignore this comment
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -56,6 +56,7 @@ return [
'require_currency_info' => 'The content of this field is invalid without currency information.', 'require_currency_info' => 'The content of this field is invalid without currency information.',
'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.',
'require_currency_amount' => 'The content of this field is invalid without foreign amount information.', 'require_currency_amount' => 'The content of this field is invalid without foreign amount information.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Transaction description should not equal global description.', 'equal_description' => 'Transaction description should not equal global description.',
'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.', 'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.',
'file_too_large' => 'File ":name" is too large.', 'file_too_large' => 'File ":name" is too large.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visita la URL del webhook', 'visit_webhook_url' => 'Visita la URL del webhook',
'reset_webhook_secret' => 'Restablecer secreto del webhook', 'reset_webhook_secret' => 'Restablecer secreto del webhook',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">El webhook #{ID} ("{title}")</a> ha sido almacenado.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">El webhook #{ID} ("{title}")</a> ha sido almacenado.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">El webhook #{ID} ("{title}")</a> ha sido actualizado.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">El webhook #{ID} ("{title}")</a> ha sido actualizado.',
// API access // API access
'authorization_request' => 'Firefly III v:version Solicitud de autorización', 'authorization_request' => 'Firefly III v:version Solicitud de autorización',
@ -495,159 +495,159 @@ return [
'search_modifier_account_starts' => 'Cualquier cuenta comienza con ":value"', 'search_modifier_account_starts' => 'Cualquier cuenta comienza con ":value"',
'search_modifier_not_account_starts' => 'Ninguna cuenta comienza con ":value"', 'search_modifier_not_account_starts' => 'Ninguna cuenta comienza con ":value"',
'search_modifier_account_nr_is' => 'Número / IBAN de cualquier cuenta es ":value"', 'search_modifier_account_nr_is' => 'Número / IBAN de cualquier cuenta es ":value"',
'search_modifier_not_account_nr_is' => 'Neither account number / IBAN is ":value"', 'search_modifier_not_account_nr_is' => 'Ninguno de los números de cuenta / IBAN es ":value"',
'search_modifier_account_nr_contains' => 'Número de cuenta / IBAN de cualquier cuenta contiene ":value"', 'search_modifier_account_nr_contains' => 'Número de cuenta / IBAN de cualquier cuenta contiene ":value"',
'search_modifier_not_account_nr_contains' => 'Neither account number / IBAN contains ":value"', 'search_modifier_not_account_nr_contains' => 'Ninguno de los números de cuenta / IBAN contiene ":value"',
'search_modifier_account_nr_ends' => 'Número de cuenta / IBAN de cualquier cuenta termina con ":value"', 'search_modifier_account_nr_ends' => 'Número de cuenta / IBAN de cualquier cuenta termina con ":value"',
'search_modifier_not_account_nr_ends' => 'Neither account number / IBAN ends with ":value"', 'search_modifier_not_account_nr_ends' => 'Ninguno de los números de cuenta / IBAN termina con ":value"',
'search_modifier_account_nr_starts' => 'Número de cuenta / IBAN de cualquier cuenta empieza con ":value"', 'search_modifier_account_nr_starts' => 'Número de cuenta / IBAN de cualquier cuenta empieza con ":value"',
'search_modifier_not_account_nr_starts' => 'Neither account number / IBAN starts with ":value"', 'search_modifier_not_account_nr_starts' => 'Ninguno de los números de cuenta / IBAN comienza con ":value"',
'search_modifier_category_contains' => 'La categoría contiene ":value"', 'search_modifier_category_contains' => 'La categoría contiene ":value"',
'search_modifier_not_category_contains' => 'Category does not contain ":value"', 'search_modifier_not_category_contains' => 'La categoría no contiene ":value"',
'search_modifier_category_ends' => 'Category ends on ":value"', 'search_modifier_category_ends' => 'La categoría termina en ":value"',
'search_modifier_not_category_ends' => 'Category does not end on ":value"', 'search_modifier_not_category_ends' => 'La categoría no termina en ":value"',
'search_modifier_category_starts' => 'La categoría comienza con ":value"', 'search_modifier_category_starts' => 'La categoría comienza con ":value"',
'search_modifier_not_category_starts' => 'Category does not start with ":value"', 'search_modifier_not_category_starts' => 'La categoría no empieza con ":value"',
'search_modifier_budget_contains' => 'El presupuesto contiene ":value"', 'search_modifier_budget_contains' => 'El presupuesto contiene ":value"',
'search_modifier_not_budget_contains' => 'Budget does not contain ":value"', 'search_modifier_not_budget_contains' => 'El presupuesto no contiene ":value"',
'search_modifier_budget_ends' => 'El presupuesto termina con ":value"', 'search_modifier_budget_ends' => 'El presupuesto termina con ":value"',
'search_modifier_not_budget_ends' => 'Budget does not end on ":value"', 'search_modifier_not_budget_ends' => 'El presupuesto no termina en ":value"',
'search_modifier_budget_starts' => 'El presupuesto comienza con ":value"', 'search_modifier_budget_starts' => 'El presupuesto comienza con ":value"',
'search_modifier_not_budget_starts' => 'Budget does not start with ":value"', 'search_modifier_not_budget_starts' => 'El presupuesto no empieza con ":value"',
'search_modifier_bill_contains' => 'La factura contiene ":value"', 'search_modifier_bill_contains' => 'La factura contiene ":value"',
'search_modifier_not_bill_contains' => 'Bill does not contain ":value"', 'search_modifier_not_bill_contains' => 'La factura no contiene ":value"',
'search_modifier_bill_ends' => 'La factura termina con ":value"', 'search_modifier_bill_ends' => 'La factura termina con ":value"',
'search_modifier_not_bill_ends' => 'Bill does not end on ":value"', 'search_modifier_not_bill_ends' => 'La factura no termina en ":value"',
'search_modifier_bill_starts' => 'La factura comienza con ":value"', 'search_modifier_bill_starts' => 'La factura comienza con ":value"',
'search_modifier_not_bill_starts' => 'Bill does not start with ":value"', 'search_modifier_not_bill_starts' => 'La factura no empieza con ":value"',
'search_modifier_external_id_contains' => 'La ID externa contiene ":value"', 'search_modifier_external_id_contains' => 'La ID externa contiene ":value"',
'search_modifier_not_external_id_contains' => 'External ID does not contain ":value"', 'search_modifier_not_external_id_contains' => 'El ID externo no contiene ":value"',
'search_modifier_external_id_ends' => 'La ID externa termina con ":value"', 'search_modifier_external_id_ends' => 'La ID externa termina con ":value"',
'search_modifier_not_external_id_ends' => 'External ID does not end with ":value"', 'search_modifier_not_external_id_ends' => 'El ID externo no termina en ":value"',
'search_modifier_external_id_starts' => 'La ID externa comienza con ":value"', 'search_modifier_external_id_starts' => 'La ID externa comienza con ":value"',
'search_modifier_not_external_id_starts' => 'External ID does not start with ":value"', 'search_modifier_not_external_id_starts' => 'El ID externo no empieza con ":value"',
'search_modifier_internal_reference_contains' => 'La referencia interna contiene ":value"', 'search_modifier_internal_reference_contains' => 'La referencia interna contiene ":value"',
'search_modifier_not_internal_reference_contains' => 'Internal reference does not contain ":value"', 'search_modifier_not_internal_reference_contains' => 'La referencia interna no contiene ":value"',
'search_modifier_internal_reference_ends' => 'La referencia interna termina con ":value"', 'search_modifier_internal_reference_ends' => 'La referencia interna termina con ":value"',
'search_modifier_internal_reference_starts' => 'La referencia interna comienza con ":value"', 'search_modifier_internal_reference_starts' => 'La referencia interna comienza con ":value"',
'search_modifier_not_internal_reference_ends' => 'Internal reference does not end with ":value"', 'search_modifier_not_internal_reference_ends' => 'La referencia interna no termina en ":value"',
'search_modifier_not_internal_reference_starts' => 'Internal reference does not start with ":value"', 'search_modifier_not_internal_reference_starts' => 'La referencia interna no empieza con ":value"',
'search_modifier_external_url_is' => 'La URL externa es ":value"', 'search_modifier_external_url_is' => 'La URL externa es ":value"',
'search_modifier_not_external_url_is' => 'External URL is not ":value"', 'search_modifier_not_external_url_is' => 'La URL externa no es ":value"',
'search_modifier_external_url_contains' => 'La URL externa contiene ":value"', 'search_modifier_external_url_contains' => 'La URL externa contiene ":value"',
'search_modifier_not_external_url_contains' => 'External URL does not contain ":value"', 'search_modifier_not_external_url_contains' => 'La URL externa no contiene ":value"',
'search_modifier_external_url_ends' => 'La URL externa termina con ":value"', 'search_modifier_external_url_ends' => 'La URL externa termina con ":value"',
'search_modifier_not_external_url_ends' => 'External URL does not end with ":value"', 'search_modifier_not_external_url_ends' => 'La URL externa no termina en ":value"',
'search_modifier_external_url_starts' => 'La URL externa comienza con ":value"', 'search_modifier_external_url_starts' => 'La URL externa comienza con ":value"',
'search_modifier_not_external_url_starts' => 'External URL does not start with ":value"', 'search_modifier_not_external_url_starts' => 'La URL externa no empieza con ":value"',
'search_modifier_has_no_attachments' => 'La transacción no tiene archivos adjuntos', 'search_modifier_has_no_attachments' => 'La transacción no tiene archivos adjuntos',
'search_modifier_not_has_no_attachments' => 'Transaction has attachments', 'search_modifier_not_has_no_attachments' => 'La transacción tiene archivos adjuntos',
'search_modifier_not_has_attachments' => 'Transaction has no attachments', 'search_modifier_not_has_attachments' => 'La transacción no tiene archivos adjuntos',
'search_modifier_account_is_cash' => 'Either account is the "(cash)" account.', 'search_modifier_account_is_cash' => 'Cualquier cuenta es la cuenta de efectivo.',
'search_modifier_not_account_is_cash' => 'Neither account is the "(cash)" account.', 'search_modifier_not_account_is_cash' => 'Ninguna cuenta es la cuenta de efectivo.',
'search_modifier_journal_id' => 'La ID del registro es ":value"', 'search_modifier_journal_id' => 'La ID del registro es ":value"',
'search_modifier_not_journal_id' => 'The journal ID is not ":value"', 'search_modifier_not_journal_id' => 'La ID del registro no es ":value"',
'search_modifier_recurrence_id' => 'El ID de transacción recurrente es ":value"', 'search_modifier_recurrence_id' => 'El ID de transacción recurrente es ":value"',
'search_modifier_not_recurrence_id' => 'The recurring transaction ID is not ":value"', 'search_modifier_not_recurrence_id' => 'El ID de transacción recurrente no es ":value"',
'search_modifier_foreign_amount_is' => 'La cantidad en divisa extranjera es ":value"', 'search_modifier_foreign_amount_is' => 'La cantidad en divisa extranjera es ":value"',
'search_modifier_not_foreign_amount_is' => 'The foreign amount is not ":value"', 'search_modifier_not_foreign_amount_is' => 'La cantidad en divisa extranjera no es ":value"',
'search_modifier_foreign_amount_less' => 'La cantidad en divisa extranjera es menor que ":value"', 'search_modifier_foreign_amount_less' => 'La cantidad en divisa extranjera es menor que ":value"',
'search_modifier_not_foreign_amount_more' => 'The foreign amount is less than ":value"', 'search_modifier_not_foreign_amount_more' => 'La cantidad en divisa extranjera es menor que ":value"',
'search_modifier_not_foreign_amount_less' => 'The foreign amount is more than ":value"', 'search_modifier_not_foreign_amount_less' => 'La cantidad en divisa extranjera es superior a ":value"',
'search_modifier_foreign_amount_more' => 'La cantidad en divisa extranjera es superior a ":value"', 'search_modifier_foreign_amount_more' => 'La cantidad en divisa extranjera es superior a ":value"',
'search_modifier_exists' => 'Transaction exists (any transaction)', 'search_modifier_exists' => 'La transacción existe (cualquier transacción)',
'search_modifier_not_exists' => 'Transaction does not exist (no transaction)', 'search_modifier_not_exists' => 'La transacción no existe (ninguna transacción)',
// date fields // date fields
'search_modifier_interest_date_on' => 'La fecha de interés de la transacción es ":value"', 'search_modifier_interest_date_on' => 'La fecha de interés de la transacción es ":value"',
'search_modifier_not_interest_date_on' => 'Transaction interest date is not ":value"', 'search_modifier_not_interest_date_on' => 'La fecha de interés de la transacción no es ":value"',
'search_modifier_interest_date_on_year' => 'La fecha de interés de la transacción es en el año ":value"', 'search_modifier_interest_date_on_year' => 'La fecha de interés de la transacción es en el año ":value"',
'search_modifier_not_interest_date_on_year' => 'Transaction interest date is not in year ":value"', 'search_modifier_not_interest_date_on_year' => 'La fecha de interés de la transacción no es en el año ":value"',
'search_modifier_interest_date_on_month' => 'La fecha de interés de la transacción es en el mes ":value"', 'search_modifier_interest_date_on_month' => 'La fecha de interés de la transacción es en el mes ":value"',
'search_modifier_not_interest_date_on_month' => 'Transaction interest date is not in month ":value"', 'search_modifier_not_interest_date_on_month' => 'La fecha de interés de la transacción no es en el mes ":value"',
'search_modifier_interest_date_on_day' => 'La fecha de interés de la transacción es en el día ":value"', 'search_modifier_interest_date_on_day' => 'La fecha de interés de la transacción es en el día ":value"',
'search_modifier_not_interest_date_on_day' => 'Transaction interest date is not on day of month ":value"', 'search_modifier_not_interest_date_on_day' => 'La fecha de interés de la transacción no es en el día del mes ":value"',
'search_modifier_interest_date_before_year' => 'El año de interés de la transacción es anterior o igual a ":value"', 'search_modifier_interest_date_before_year' => 'El año de interés de la transacción es anterior o igual a ":value"',
'search_modifier_interest_date_before_month' => 'Transaction interest date is before or in month ":value"', 'search_modifier_interest_date_before_month' => 'La fecha de interés de la transacción es anterior o en el mes ":value"',
'search_modifier_interest_date_before_day' => 'Transaction interest date is before or on day of month ":value"', 'search_modifier_interest_date_before_day' => 'La fecha de interés de la transacción es anterior o en el día del mes ":value"',
'search_modifier_interest_date_after_year' => 'Transaction interest date is after or in year ":value"', 'search_modifier_interest_date_after_year' => 'La fecha de interés de la transacción es posterior o en el año ":value"',
'search_modifier_interest_date_after_month' => 'Transaction interest date is after or in month ":value"', 'search_modifier_interest_date_after_month' => 'La fecha de interés de la transacción es posterior o en el mes ":value"',
'search_modifier_interest_date_after_day' => 'Transaction interest date is after or on day of month ":value"', 'search_modifier_interest_date_after_day' => 'La fecha de interés de la transacción es posterior o el día del mes ":value"',
'search_modifier_book_date_on_year' => 'Transaction book date is in year ":value"', 'search_modifier_book_date_on_year' => 'La fecha del registro de la transacción es en el año ":value"',
'search_modifier_book_date_on_month' => 'Transaction book date is in month ":value"', 'search_modifier_book_date_on_month' => 'La fecha del registro de la transacción es en el mes ":value"',
'search_modifier_book_date_on_day' => 'Transaction book date is on day of month ":value"', 'search_modifier_book_date_on_day' => 'La fecha del registro de la transacción es en el día del mes ":value"',
'search_modifier_not_book_date_on_year' => 'Transaction book date is not in year ":value"', 'search_modifier_not_book_date_on_year' => 'La fecha del registro de la transacción no es en el año ":value"',
'search_modifier_not_book_date_on_month' => 'Transaction book date is not in month ":value"', 'search_modifier_not_book_date_on_month' => 'La fecha del registro de la transacción no es en el mes ":value"',
'search_modifier_not_book_date_on_day' => 'Transaction book date is not on day of month ":value"', 'search_modifier_not_book_date_on_day' => 'La fecha del registro de la transacción no es en el día del mes ":value"',
'search_modifier_book_date_before_year' => 'Transaction book date is before or in year ":value"', 'search_modifier_book_date_before_year' => 'La fecha del registro de la transacción es antes o en el año ":value"',
'search_modifier_book_date_before_month' => 'Transaction book date is before or in month ":value"', 'search_modifier_book_date_before_month' => 'La fecha del registro de la transacción es antes o en el mes ":value"',
'search_modifier_book_date_before_day' => 'Transaction book date is before or on day of month ":value"', 'search_modifier_book_date_before_day' => 'La fecha de registro de la transacción es anterior o en el día del mes ":value"',
'search_modifier_book_date_after_year' => 'Transaction book date is after or in year ":value"', 'search_modifier_book_date_after_year' => 'La fecha del registro de la transacción es después o en el año ":value"',
'search_modifier_book_date_after_month' => 'Transaction book date is after or in month ":value"', 'search_modifier_book_date_after_month' => 'La fecha del registro de la transacción es después o en el mes ":value"',
'search_modifier_book_date_after_day' => 'Transaction book date is after or on day of month ":value"', 'search_modifier_book_date_after_day' => 'La fecha de registro de la transacción es después o en el día del mes ":value"',
'search_modifier_process_date_on_year' => 'Transaction process date is in year ":value"', 'search_modifier_process_date_on_year' => 'La fecha del proceso de transacción es el año ":value"',
'search_modifier_process_date_on_month' => 'Transaction process date is in month ":value"', 'search_modifier_process_date_on_month' => 'La fecha del proceso de transacción es en el mes ":value"',
'search_modifier_process_date_on_day' => 'Transaction process date is on day of month ":value"', 'search_modifier_process_date_on_day' => 'La fecha del proceso de transacción es el día del mes ":value"',
'search_modifier_not_process_date_on_year' => 'Transaction process date is not in year ":value"', 'search_modifier_not_process_date_on_year' => 'La fecha del proceso de transacción no es el año ":value"',
'search_modifier_not_process_date_on_month' => 'Transaction process date is not in month ":value"', 'search_modifier_not_process_date_on_month' => 'La fecha del proceso de transacción no es en el mes ":value"',
'search_modifier_not_process_date_on_day' => 'Transaction process date is not on day of month ":value"', 'search_modifier_not_process_date_on_day' => 'La fecha del proceso de transacción no es el día del mes ":value"',
'search_modifier_process_date_before_year' => 'Transaction process date is before or in year ":value"', 'search_modifier_process_date_before_year' => 'La fecha del proceso de la transacción es antes o en el año ":value"',
'search_modifier_process_date_before_month' => 'Transaction process date is before or in month ":value"', 'search_modifier_process_date_before_month' => 'La fecha del proceso de la transacción es antes o en el mes ":value"',
'search_modifier_process_date_before_day' => 'Transaction process date is before or on day of month ":value"', 'search_modifier_process_date_before_day' => 'La fecha de proceso de la transacción es anterior o en el día del mes ":value"',
'search_modifier_process_date_after_year' => 'Transaction process date is after or in year ":value"', 'search_modifier_process_date_after_year' => 'La fecha del proceso de la transacción es después o en el año ":value"',
'search_modifier_process_date_after_month' => 'Transaction process date is after or in month ":value"', 'search_modifier_process_date_after_month' => 'La fecha del proceso de la transacción es después o en el mes ":value"',
'search_modifier_process_date_after_day' => 'Transaction process date is after or on day of month ":value"', 'search_modifier_process_date_after_day' => 'La fecha de proceso de la transacción es después o en el día del mes ":value"',
'search_modifier_due_date_on_year' => 'Transaction due date is in year ":value"', 'search_modifier_due_date_on_year' => 'La fecha de vencimiento de la transacción es en el año ":value"',
'search_modifier_due_date_on_month' => 'Transaction due date is in month ":value"', 'search_modifier_due_date_on_month' => 'La fecha del vencimiento de la transacción es en el mes ":value"',
'search_modifier_due_date_on_day' => 'Transaction due date is on day of month ":value"', 'search_modifier_due_date_on_day' => 'La fecha del vencimiento de la transacción es en el día del mes ":value"',
'search_modifier_not_due_date_on_year' => 'Transaction due date is not in year ":value"', 'search_modifier_not_due_date_on_year' => 'La fecha del vencimiento de la transacción no es en el año ":value"',
'search_modifier_not_due_date_on_month' => 'Transaction due date is not in month ":value"', 'search_modifier_not_due_date_on_month' => 'La fecha del vencimiento de la transacción no es en el mes ":value"',
'search_modifier_not_due_date_on_day' => 'Transaction due date is not on day of month ":value"', 'search_modifier_not_due_date_on_day' => 'La fecha del vencimiento de la transacción no es en el día del mes ":value"',
'search_modifier_due_date_before_year' => 'Transaction due date is before or in year ":value"', 'search_modifier_due_date_before_year' => 'La fecha de vencimiento de la transacción es antes o en el año ":value"',
'search_modifier_due_date_before_month' => 'Transaction due date is before or in month ":value"', 'search_modifier_due_date_before_month' => 'La fecha de vencimiento de la transacción es antes o en el mes ":value"',
'search_modifier_due_date_before_day' => 'Transaction due date is before or on day of month ":value"', 'search_modifier_due_date_before_day' => 'La fecha de vencimiento de la transacción es anterior o en el día del mes ":value"',
'search_modifier_due_date_after_year' => 'Transaction due date is after or in year ":value"', 'search_modifier_due_date_after_year' => 'La fecha del vencimiento de la transacción es después o en el año ":value"',
'search_modifier_due_date_after_month' => 'Transaction due date is after or in month ":value"', 'search_modifier_due_date_after_month' => 'La fecha del vencimiento de la transacción es después o en el mes ":value"',
'search_modifier_due_date_after_day' => 'Transaction due date is after or on day of month ":value"', 'search_modifier_due_date_after_day' => 'La fecha de vencimiento de la transacción es después o en el día del mes ":value"',
'search_modifier_payment_date_on_year' => 'Transaction payment date is in year ":value"', 'search_modifier_payment_date_on_year' => 'La fecha de pago de la transacción es en el año ":value"',
'search_modifier_payment_date_on_month' => 'Transaction payment date is in month ":value"', 'search_modifier_payment_date_on_month' => 'La fecha de pago de la transacción es en el mes ":value"',
'search_modifier_payment_date_on_day' => 'Transaction payment date is on day of month ":value"', 'search_modifier_payment_date_on_day' => 'La fecha de pago de la transacción es el día del mes ":value"',
'search_modifier_not_payment_date_on_year' => 'Transaction payment date is not in year ":value"', 'search_modifier_not_payment_date_on_year' => 'La fecha de pago de la transacción no es en el año ":value"',
'search_modifier_not_payment_date_on_month' => 'Transaction payment date is not in month ":value"', 'search_modifier_not_payment_date_on_month' => 'La fecha de pago de la transacción no es en el mes ":value"',
'search_modifier_not_payment_date_on_day' => 'Transaction payment date is not on day of month ":value"', 'search_modifier_not_payment_date_on_day' => 'La fecha de pago de la transacción no es el día del mes ":value"',
'search_modifier_payment_date_before_year' => 'Transaction payment date is before or in year ":value"', 'search_modifier_payment_date_before_year' => 'La fecha de pago de la transacción es antes o en el año ":value"',
'search_modifier_payment_date_before_month' => 'Transaction payment date is before or in month ":value"', 'search_modifier_payment_date_before_month' => 'La fecha de pago de la transacción es antes o en el mes ":value"',
'search_modifier_payment_date_before_day' => 'Transaction payment date is before or on day of month ":value"', 'search_modifier_payment_date_before_day' => 'La fecha de pago de la transacción es anterior o en el día del mes ":value"',
'search_modifier_payment_date_after_year' => 'Transaction payment date is after or in year ":value"', 'search_modifier_payment_date_after_year' => 'La fecha de pago de la transacción es después o en el año ":value"',
'search_modifier_payment_date_after_month' => 'Transaction payment date is after or in month ":value"', 'search_modifier_payment_date_after_month' => 'La fecha de pago de la transacción es después o en el mes ":value"',
'search_modifier_payment_date_after_day' => 'Transaction payment date is after or on day of month ":value"', 'search_modifier_payment_date_after_day' => 'La fecha de pago de la transacción es después o en el día del mes ":value"',
'search_modifier_invoice_date_on_year' => 'Transaction invoice date is in year ":value"', 'search_modifier_invoice_date_on_year' => 'La fecha de facturación de la transacción es en el año ":value"',
'search_modifier_invoice_date_on_month' => 'Transaction invoice date is in month ":value"', 'search_modifier_invoice_date_on_month' => 'La fecha de facturación de la transacción es en el mes ":value"',
'search_modifier_invoice_date_on_day' => 'Transaction invoice date is on day of month ":value"', 'search_modifier_invoice_date_on_day' => 'La fecha de facturación de la transacción es en el día ":value"',
'search_modifier_not_invoice_date_on_year' => 'Transaction invoice date is not in year ":value"', 'search_modifier_not_invoice_date_on_year' => 'La fecha de facturación de la transacción no es en el año ":value"',
'search_modifier_not_invoice_date_on_month' => 'Transaction invoice date is not in month ":value"', 'search_modifier_not_invoice_date_on_month' => 'La fecha de facturación de la transacción es en el mes ":value"',
'search_modifier_not_invoice_date_on_day' => 'Transaction invoice date is not on day of month ":value"', 'search_modifier_not_invoice_date_on_day' => 'La fecha de facturación de la transacción no es en el día del mes ":value"',
'search_modifier_invoice_date_before_year' => 'Transaction invoice date is before or in year ":value"', 'search_modifier_invoice_date_before_year' => 'La fecha de facturación de la transacción es antes o en el año ":value"',
'search_modifier_invoice_date_before_month' => 'Transaction invoice date is before or in month ":value"', 'search_modifier_invoice_date_before_month' => 'La fecha de facturación de la transacción es antes o en el mes ":value"',
'search_modifier_invoice_date_before_day' => 'Transaction invoice date is before or on day of month ":value"', 'search_modifier_invoice_date_before_day' => 'La fecha de facturación de la transacción es anterior o en el día del mes ":value"',
'search_modifier_invoice_date_after_year' => 'Transaction invoice date is after or in year ":value"', 'search_modifier_invoice_date_after_year' => 'La fecha de facturación de la transacción es después o en el año ":value"',
'search_modifier_invoice_date_after_month' => 'Transaction invoice date is after or in month ":value"', 'search_modifier_invoice_date_after_month' => 'La fecha de facturación de la transacción es después o en el mes ":value"',
'search_modifier_invoice_date_after_day' => 'Transaction invoice date is after or on day of month ":value"', 'search_modifier_invoice_date_after_day' => 'La fecha de facturación de la transacción es después o en el día del mes ":value"',
// other dates // other dates
'search_modifier_updated_at_on_year' => 'Transaction was last updated in year ":value"', 'search_modifier_updated_at_on_year' => 'La transacción fue actualizada por última vez en el año":value"',
'search_modifier_updated_at_on_month' => 'Transaction was last updated in month ":value"', 'search_modifier_updated_at_on_month' => 'La transacción fue actualizada por última vez en el mes ":value"',
'search_modifier_updated_at_on_day' => 'Transaction was last updated on day of month ":value"', 'search_modifier_updated_at_on_day' => 'La transacción fue actualizada por última vez en el día del mes: ":value"',
'search_modifier_not_updated_at_on_year' => 'Transaction was not last updated in year ":value"', 'search_modifier_not_updated_at_on_year' => 'La transacción no fue actualizada por última vez en el año":value"',
'search_modifier_not_updated_at_on_month' => 'Transaction was not last updated in month ":value"', 'search_modifier_not_updated_at_on_month' => 'La transacción no fue actualizada por última vez en el mes ":value"',
'search_modifier_not_updated_at_on_day' => 'Transaction was not last updated on day of month ":value"', 'search_modifier_not_updated_at_on_day' => 'La transacción no fue actualizada por última vez en el día del mes ":value"',
'search_modifier_updated_at_before_year' => 'Transaction was last updated in or before year ":value"', 'search_modifier_updated_at_before_year' => 'La transacción fue actualizada por última vez en o antes del año":value"',
'search_modifier_updated_at_before_month' => 'Transaction was last updated in or before month ":value"', 'search_modifier_updated_at_before_month' => 'La transacción se actualizó por última vez en o antes del mes ":value"',
'search_modifier_updated_at_before_day' => 'Transaction was last updated on or before day of month ":value"', 'search_modifier_updated_at_before_day' => 'La transacción se actualizó por última vez en o antes del día del mes ":value"',
'search_modifier_updated_at_after_year' => 'Transaction was last updated in or after year ":value"', 'search_modifier_updated_at_after_year' => 'La transacción se actualizó por última vez en o después del año ":value"',
'search_modifier_updated_at_after_month' => 'Transaction was last updated in or after month ":value"', 'search_modifier_updated_at_after_month' => 'La transacción se actualizó por última vez en o después del mes ":value"',
'search_modifier_updated_at_after_day' => 'Transaction was last updated on or after day of month ":value"', 'search_modifier_updated_at_after_day' => 'La transacción se actualizó por última vez en o después día del mes ":value"',
'search_modifier_created_at_on_year' => 'Transaction was created in year ":value"', 'search_modifier_created_at_on_year' => 'La transacción fue creada en el año":value"',
'search_modifier_created_at_on_month' => 'Transaction was created in month ":value"', 'search_modifier_created_at_on_month' => 'La transacción fue creada en el mes ":value"',
'search_modifier_created_at_on_day' => 'Transaction was created on day of month ":value"', 'search_modifier_created_at_on_day' => 'Transaction was created on day of month ":value"',
'search_modifier_not_created_at_on_year' => 'Transaction was not created in year ":value"', 'search_modifier_not_created_at_on_year' => 'Transaction was not created in year ":value"',
'search_modifier_not_created_at_on_month' => 'Transaction was not created in month ":value"', 'search_modifier_not_created_at_on_month' => 'Transaction was not created in month ":value"',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',
@ -2413,12 +2415,12 @@ return [
'admin_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. If you want to get these messages over Slack as well, set the "incoming webhook" URL.', 'admin_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. If you want to get these messages over Slack as well, set the "incoming webhook" URL.',
'admin_notification_check_user_new_reg' => 'User gets post-registration welcome message', 'admin_notification_check_user_new_reg' => 'User gets post-registration welcome message',
'admin_notification_check_admin_new_reg' => 'Administrator(s) get new user registration notification', 'admin_notification_check_admin_new_reg' => 'Administrator(s) get new user registration notification',
'admin_notification_check_new_version' => 'A new version is available', 'admin_notification_check_new_version' => 'Una nueva versión está disponible',
'admin_notification_check_invite_created' => 'A user is invited to Firefly III', 'admin_notification_check_invite_created' => 'Un usuario ha sido invitado a Firefly III',
'admin_notification_check_invite_redeemed' => 'A user invitation is redeemed', 'admin_notification_check_invite_redeemed' => 'Una invitación de usuario ha sido canjeada',
'all_invited_users' => 'All invited users', 'all_invited_users' => 'Todos los usuarios invitados',
'save_notification_settings' => 'Save settings', 'save_notification_settings' => 'Guardar ajustes',
'notification_settings_saved' => 'The notification settings have been saved', 'notification_settings_saved' => 'Se han guardado los ajustes de notificación',
'split_transaction_title' => 'Descripción de la transacción dividida', 'split_transaction_title' => 'Descripción de la transacción dividida',
@ -2565,8 +2567,8 @@ return [
'no_bills_create_default' => 'Crear una factura', 'no_bills_create_default' => 'Crear una factura',
// recurring transactions // recurring transactions
'create_right_now' => 'Create right now', 'create_right_now' => 'Crear ahora mismo',
'no_new_transaction_in_recurrence' => 'No new transaction was created. Perhaps it was already fired for this date?', 'no_new_transaction_in_recurrence' => 'No se ha creado ninguna nueva transacción. ¿Tal vez ya ha sido lanzada para esta fecha?',
'recurrences' => 'Transacciones Recurrentes', 'recurrences' => 'Transacciones Recurrentes',
'repeat_until_in_past' => 'Esta transacción recurrente dejó de repetirse el :date.', 'repeat_until_in_past' => 'Esta transacción recurrente dejó de repetirse el :date.',
'recurring_calendar_view' => 'Calendario', 'recurring_calendar_view' => 'Calendario',
@ -2681,25 +2683,25 @@ return [
'placeholder' => '[Placeholder]', 'placeholder' => '[Placeholder]',
// audit log entries // audit log entries
'audit_log_entries' => 'Audit log entries', 'audit_log_entries' => 'Auditoría de entradas de registro',
'ale_action_log_add' => 'Added :amount to piggy bank ":name"', 'ale_action_log_add' => 'Añadido :amount a la hucha ":name"',
'ale_action_log_remove' => 'Removed :amount from piggy bank ":name"', 'ale_action_log_remove' => 'Eliminado :amount de la hucha ":name"',
'ale_action_clear_budget' => 'Removed from budget', 'ale_action_clear_budget' => 'Eliminado del presupuesto',
'ale_action_clear_category' => 'Removed from category', 'ale_action_clear_category' => 'Eliminado de la categoría',
'ale_action_clear_notes' => 'Removed notes', 'ale_action_clear_notes' => 'Notas eliminadas',
'ale_action_clear_tag' => 'Cleared tag', 'ale_action_clear_tag' => 'Etiqueta limpiada',
'ale_action_clear_all_tags' => 'Cleared all tags', 'ale_action_clear_all_tags' => 'Limpiar todas las etiquetas',
'ale_action_set_bill' => 'Linked to bill', 'ale_action_set_bill' => 'Vinculado a la factura',
'ale_action_set_budget' => 'Set budget', 'ale_action_set_budget' => 'Establecer presupuesto',
'ale_action_set_category' => 'Set category', 'ale_action_set_category' => 'Establecer categoría',
'ale_action_set_source' => 'Set source account', 'ale_action_set_source' => 'Establecer cuenta de origen',
'ale_action_set_destination' => 'Set destination account', 'ale_action_set_destination' => 'Establecer cuenta de destino',
'ale_action_update_transaction_type' => 'Changed transaction type', 'ale_action_update_transaction_type' => 'Tipo de transacción cambiado',
'ale_action_update_notes' => 'Changed notes', 'ale_action_update_notes' => 'Notas cambiadas',
'ale_action_update_description' => 'Changed description', 'ale_action_update_description' => 'Descripción cambiada',
'ale_action_add_to_piggy' => 'Piggy bank', 'ale_action_add_to_piggy' => 'Hucha',
'ale_action_remove_from_piggy' => 'Piggy bank', 'ale_action_remove_from_piggy' => 'Hucha',
'ale_action_add_tag' => 'Added tag', 'ale_action_add_tag' => 'Etiqueta añadida',
]; ];

View File

@ -150,7 +150,7 @@ return [
'start' => 'Inicio del rango', 'start' => 'Inicio del rango',
'end' => 'Final del rango', 'end' => 'Final del rango',
'delete_account' => 'Borrar cuenta ":name"', 'delete_account' => 'Borrar cuenta ":name"',
'delete_webhook' => 'Delete webhook ":title"', 'delete_webhook' => 'Eliminar webhook ":title"',
'delete_bill' => 'Eliminar factura ":name"', 'delete_bill' => 'Eliminar factura ":name"',
'delete_budget' => 'Eliminar presupuesto ":name"', 'delete_budget' => 'Eliminar presupuesto ":name"',
'delete_category' => 'Eliminar categoría ":name"', 'delete_category' => 'Eliminar categoría ":name"',
@ -171,7 +171,7 @@ return [
'object_group_areYouSure' => '¿Seguro que quieres eliminar el grupo titulado ":title"?', 'object_group_areYouSure' => '¿Seguro que quieres eliminar el grupo titulado ":title"?',
'ruleGroup_areYouSure' => '¿Seguro que quieres eliminar el grupo de reglas titulado ":title"?', 'ruleGroup_areYouSure' => '¿Seguro que quieres eliminar el grupo de reglas titulado ":title"?',
'budget_areYouSure' => '¿Seguro que quieres eliminar el presupuesto llamado ":name"?', 'budget_areYouSure' => '¿Seguro que quieres eliminar el presupuesto llamado ":name"?',
'webhook_areYouSure' => 'Are you sure you want to delete the webhook named ":title"?', 'webhook_areYouSure' => '¿Seguro que quieres eliminar el webhook llamado ":title"?',
'category_areYouSure' => '¿Seguro que quieres eliminar la categoría llamada ":name"?', 'category_areYouSure' => '¿Seguro que quieres eliminar la categoría llamada ":name"?',
'recurring_areYouSure' => '¿Está seguro de que desea eliminar la transacción recurrente ":title"?', 'recurring_areYouSure' => '¿Está seguro de que desea eliminar la transacción recurrente ":title"?',
'currency_areYouSure' => '¿Está seguro que desea eliminar la moneda denominada ":name"?', 'currency_areYouSure' => '¿Está seguro que desea eliminar la moneda denominada ":name"?',
@ -299,7 +299,7 @@ return [
'submitted' => 'Enviado', 'submitted' => 'Enviado',
'key' => 'Clave', 'key' => 'Clave',
'value' => 'Contenido del registro', 'value' => 'Contenido del registro',
'webhook_delivery' => 'Delivery', 'webhook_delivery' => 'Entrega',
'webhook_response' => 'Respuesta', 'webhook_response' => 'Respuesta',
'webhook_trigger' => 'Disparador', 'webhook_trigger' => 'Disparador',
]; ];

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'El contenido de este campo no es válido sin la información montearia.', 'require_currency_info' => 'El contenido de este campo no es válido sin la información montearia.',
'not_transfer_account' => 'Esta cuenta no es una cuenta que se pueda utilizar para transferencias.', 'not_transfer_account' => 'Esta cuenta no es una cuenta que se pueda utilizar para transferencias.',
'require_currency_amount' => 'El contenido de este campo no es válido sin información de cantidad extranjera.', 'require_currency_amount' => 'El contenido de este campo no es válido sin información de cantidad extranjera.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'La descripción de la transacción no debería ser igual a la descripción global.', 'equal_description' => 'La descripción de la transacción no debería ser igual a la descripción global.',
'file_invalid_mime' => 'El archivo ":name" es de tipo ":mime", el cual no se acepta.', 'file_invalid_mime' => 'El archivo ":name" es de tipo ":mime", el cual no se acepta.',
'file_too_large' => 'El archivo ":name" es demasiado grande.', 'file_too_large' => 'El archivo ":name" es demasiado grande.',
@ -166,8 +167,8 @@ return [
'unique_piggy_bank_for_user' => 'En nombre de la hucha debe ser único.', 'unique_piggy_bank_for_user' => 'En nombre de la hucha debe ser único.',
'unique_object_group' => 'El nombre del grupo debe ser único', 'unique_object_group' => 'El nombre del grupo debe ser único',
'starts_with' => 'El valor debe comenzar con :values.', 'starts_with' => 'El valor debe comenzar con :values.',
'unique_webhook' => 'You already have a webhook with this combination of URL, trigger, response and delivery.', 'unique_webhook' => 'Ya tiene un webhook con esta combinación de URL, activador, respuesta y entrega.',
'unique_existing_webhook' => 'You already have another webhook with this combination of URL, trigger, response and delivery.', 'unique_existing_webhook' => 'Ya tiene otro webhook con esta combinación de URL, activador, respuesta y entrega.',
'same_account_type' => 'Ambas cuentas deben ser del mismo tipo de cuenta', 'same_account_type' => 'Ambas cuentas deben ser del mismo tipo de cuenta',
'same_account_currency' => 'Ambas cuentas deben tener la misma configuración de moneda', 'same_account_currency' => 'Ambas cuentas deben tener la misma configuración de moneda',
@ -231,7 +232,7 @@ return [
'withdrawal_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.', 'withdrawal_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.',
'withdrawal_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".', 'withdrawal_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".',
'reconciliation_source_bad_data' => 'Could not find a valid reconciliation account when searching for ID ":id" or name ":name".', 'reconciliation_source_bad_data' => 'No se ha podido encontrar una cuenta de reconciliación válida al buscar por ID ":id" o nombre ":name".',
'generic_source_bad_data' => 'No se pudo encontrar una cuenta de origen válida al buscar el ID ":id" o nombre ":name".', 'generic_source_bad_data' => 'No se pudo encontrar una cuenta de origen válida al buscar el ID ":id" o nombre ":name".',
@ -263,7 +264,7 @@ return [
'lc_source_need_data' => 'Necesita obtener un ID de cuenta de origen válido para continuar.', 'lc_source_need_data' => 'Necesita obtener un ID de cuenta de origen válido para continuar.',
'ob_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.', 'ob_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.',
'ob_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".', 'ob_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".',
'reconciliation_either_account' => 'To submit a reconciliation, you must submit either a source or a destination account. Not both, not neither.', 'reconciliation_either_account' => 'Para enviar una reconciliación, debe enviar una cuenta de origen o de destino. Ni ambas ni ninguna de las dos.',
'generic_invalid_source' => 'No puedes usar esta cuenta como cuenta de origen.', 'generic_invalid_source' => 'No puedes usar esta cuenta como cuenta de origen.',
'generic_invalid_destination' => 'No puede usar esta cuenta como cuenta de destino.', 'generic_invalid_destination' => 'No puede usar esta cuenta como cuenta de destino.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version Valtuutus Pyyntö', 'authorization_request' => 'Firefly III v:version Valtuutus Pyyntö',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Ilman valuuttatietoa tämän kentän sisältö on virheellinen.', 'require_currency_info' => 'Ilman valuuttatietoa tämän kentän sisältö on virheellinen.',
'not_transfer_account' => 'Tätä tiliä ei voi käyttää siirroissa.', 'not_transfer_account' => 'Tätä tiliä ei voi käyttää siirroissa.',
'require_currency_amount' => 'Tämän kentän sisältö on virheellinen ilman ulkomaanvaluuttatietoa.', 'require_currency_amount' => 'Tämän kentän sisältö on virheellinen ilman ulkomaanvaluuttatietoa.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'Tapahtuman kuvaus ei saisi olla sama kuin yleiskuvaus.', 'equal_description' => 'Tapahtuman kuvaus ei saisi olla sama kuin yleiskuvaus.',
'file_invalid_mime' => 'Lähetettävän tiedoston ":name" tyyppi ei voi olla ":mime".', 'file_invalid_mime' => 'Lähetettävän tiedoston ":name" tyyppi ei voi olla ":mime".',
'file_too_large' => 'Tiedoston ":name" koko on liian suuri.', 'file_too_large' => 'Tiedoston ":name" koko on liian suuri.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visiter l\'URL du webhook', 'visit_webhook_url' => 'Visiter l\'URL du webhook',
'reset_webhook_secret' => 'Réinitialiser le secret du webhook', 'reset_webhook_secret' => 'Réinitialiser le secret du webhook',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Le Webhook #{ID} ("{title}")</a> a été enregistré.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Le Webhook #{ID} ("{title}")</a> a été enregistré.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Le webhook #{ID}</a> ("{title}") a été mis à jour.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Le webhook #{ID}</a> ("{title}") a été mis à jour.',
// API access // API access
'authorization_request' => 'Firefly III v:version demande d\'autorisation', 'authorization_request' => 'Firefly III v:version demande d\'autorisation',
@ -1379,12 +1379,12 @@ return [
'optional_field_attachments' => 'Pièces jointes', 'optional_field_attachments' => 'Pièces jointes',
'optional_field_meta_data' => 'Métadonnées facultatives', 'optional_field_meta_data' => 'Métadonnées facultatives',
'external_url' => 'URL externe', 'external_url' => 'URL externe',
'pref_notification_bill_reminder' => 'Rappel au renouvellement des factures', 'pref_notification_bill_reminder' => 'Rappel à l\'expiration des factures',
'pref_notification_new_access_token' => 'Alerte à la création d\'un nouveau jeton d\'accès API', 'pref_notification_new_access_token' => 'Alerte à la création d\'un nouveau jeton d\'accès API',
'pref_notification_transaction_creation' => 'Alerte à la création automatique d\'une opération', 'pref_notification_transaction_creation' => 'Alerte à la création automatique d\'une opération',
'pref_notification_user_login' => 'Alerte à la connexion depuis un nouvel emplacement', 'pref_notification_user_login' => 'Alerte à la connexion depuis un nouvel emplacement',
'pref_notifications' => 'Notifications', 'pref_notifications' => 'Notifications',
'pref_notifications_help' => 'Indiquez si ce sont des notifications que vous souhaitez obtenir. Certaines notifications peuvent contenir des informations financières sensibles.', 'pref_notifications_help' => 'Sélectionnez les notifications que vous souhaitez recevoir. Certaines notifications peuvent contenir des informations financières sensibles.',
'slack_webhook_url' => 'Webhook URL de Slack', 'slack_webhook_url' => 'Webhook URL de Slack',
'slack_webhook_url_help' => 'Si vous voulez que Firefly III vous avertisse en utilisant Slack, entrez l\'URL du webhook ici. Sinon, laissez le champ vide. Si vous êtes un administrateur, vous devez également définir cette URL dans l\'administration.', 'slack_webhook_url_help' => 'Si vous voulez que Firefly III vous avertisse en utilisant Slack, entrez l\'URL du webhook ici. Sinon, laissez le champ vide. Si vous êtes un administrateur, vous devez également définir cette URL dans l\'administration.',
'slack_url_label' => 'URL du webhook entrant de Slack', 'slack_url_label' => 'URL du webhook entrant de Slack',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Inviter un nouvel utilisateur', 'invite_new_user_title' => 'Inviter un nouvel utilisateur',
'invite_new_user_text' => 'En tant qu\'administrateur, vous pouvez inviter des utilisateurs à s\'inscrire sur votre administration Firefly III. En partageant avec eux le lien direct, ils seront en mesure de créer un compte. L\'utilisateur invité et son lien d\'invitation apparaîtront dans le tableau ci-dessous. Vous êtes libre de partager le lien d\'invitation avec eux.', 'invite_new_user_text' => 'En tant qu\'administrateur, vous pouvez inviter des utilisateurs à s\'inscrire sur votre administration Firefly III. En partageant avec eux le lien direct, ils seront en mesure de créer un compte. L\'utilisateur invité et son lien d\'invitation apparaîtront dans le tableau ci-dessous. Vous êtes libre de partager le lien d\'invitation avec eux.',
'invited_user_mail' => 'Adresse e-mail', 'invited_user_mail' => 'Adresse e-mail',
@ -2415,7 +2417,7 @@ return [
'admin_notification_check_admin_new_reg' => 'Les administrateurs reçoivent une notification à l\'inscription de nouveaux utilisateurs', 'admin_notification_check_admin_new_reg' => 'Les administrateurs reçoivent une notification à l\'inscription de nouveaux utilisateurs',
'admin_notification_check_new_version' => 'Une nouvelle version est disponible', 'admin_notification_check_new_version' => 'Une nouvelle version est disponible',
'admin_notification_check_invite_created' => 'Un utilisateur est invité à rejoindre Firefly III', 'admin_notification_check_invite_created' => 'Un utilisateur est invité à rejoindre Firefly III',
'admin_notification_check_invite_redeemed' => 'Une invitation d\'utilisateur a été présentée', 'admin_notification_check_invite_redeemed' => 'Une invitation d\'utilisateur a été utilisée',
'all_invited_users' => 'Tous les utilisateurs invités', 'all_invited_users' => 'Tous les utilisateurs invités',
'save_notification_settings' => 'Enregistrer les paramètres', 'save_notification_settings' => 'Enregistrer les paramètres',
'notification_settings_saved' => 'Les paramètres de notification ont été enregistrés', 'notification_settings_saved' => 'Les paramètres de notification ont été enregistrés',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Le contenu de ce champ n\'est pas valide sans informations sur la devise.', 'require_currency_info' => 'Le contenu de ce champ n\'est pas valide sans informations sur la devise.',
'not_transfer_account' => 'Ce compte n\'est pas un compte qui peut être utilisé pour les transferts.', 'not_transfer_account' => 'Ce compte n\'est pas un compte qui peut être utilisé pour les transferts.',
'require_currency_amount' => 'Le contenu de ce champ est invalide sans informations sur le montant en devise étrangère.', 'require_currency_amount' => 'Le contenu de ce champ est invalide sans informations sur le montant en devise étrangère.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'La description de l\'opération ne doit pas être identique à la description globale.', 'equal_description' => 'La description de l\'opération ne doit pas être identique à la description globale.',
'file_invalid_mime' => 'Le fichier ":name" est du type ":mime" ce qui n\'est pas accepté pour un nouvel envoi.', 'file_invalid_mime' => 'Le fichier ":name" est du type ":mime" ce qui n\'est pas accepté pour un nouvel envoi.',
'file_too_large' => 'Le fichier ":name" est trop grand.', 'file_too_large' => 'Le fichier ":name" est trop grand.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version engedély kérelem', 'authorization_request' => 'Firefly III v:version engedély kérelem',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

View File

@ -66,6 +66,7 @@ return [
'require_currency_info' => 'Ennek a mezőnek a tartalma érvénytelen pénznem információ nélkül.', 'require_currency_info' => 'Ennek a mezőnek a tartalma érvénytelen pénznem információ nélkül.',
'not_transfer_account' => 'Ez a fiók nem használható fel tranzakciókhoz.', 'not_transfer_account' => 'Ez a fiók nem használható fel tranzakciókhoz.',
'require_currency_amount' => 'Ennek a mezőnek a tartalma érvénytelen devizanem információ nélkül.', 'require_currency_amount' => 'Ennek a mezőnek a tartalma érvénytelen devizanem információ nélkül.',
'require_foreign_currency' => 'This field requires a number',
'equal_description' => 'A tranzakció leírása nem egyezhet meg a globális leírással.', 'equal_description' => 'A tranzakció leírása nem egyezhet meg a globális leírással.',
'file_invalid_mime' => '":name" fájl ":mime" típusú ami nem lehet új feltöltés.', 'file_invalid_mime' => '":name" fájl ":mime" típusú ami nem lehet új feltöltés.',
'file_too_large' => '":name" fájl túl nagy.', 'file_too_large' => '":name" fájl túl nagy.',

View File

@ -280,7 +280,7 @@ return [
'visit_webhook_url' => 'Visit webhook URL', 'visit_webhook_url' => 'Visit webhook URL',
'reset_webhook_secret' => 'Reset webhook secret', 'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.', 'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.', 'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
// API access // API access
'authorization_request' => 'Firefly III v:version Permintaan Otorisasi', 'authorization_request' => 'Firefly III v:version Permintaan Otorisasi',
@ -2364,6 +2364,8 @@ return [
// administration // administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user', 'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address', 'invited_user_mail' => 'Email address',

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