Auto commit for release 'develop' on 2024-04-02

This commit is contained in:
github-actions
2024-04-02 07:47:24 +02:00
parent 9e5faf919f
commit 746f1fd300
86 changed files with 84794 additions and 84469 deletions

View File

@@ -54,9 +54,11 @@ class UpdateController extends Controller
); );
} }
public function useUserGroup(UserGroup $userGroup): JsonResponse { public function useUserGroup(UserGroup $userGroup): JsonResponse
{
// group validation is already in place, so can just update the user. // group validation is already in place, so can just update the user.
$this->repository->useUserGroup($userGroup); $this->repository->useUserGroup($userGroup);
return response()->json([], 204); return response()->json([], 204);
} }

View File

@@ -73,7 +73,7 @@ class CorrectDatabase extends Command
// new! // new!
'firefly-iii:unify-group-accounts', 'firefly-iii:unify-group-accounts',
'firefly-iii:trigger-credit-recalculation', 'firefly-iii:trigger-credit-recalculation',
'firefly-iii:migrate-preferences' 'firefly-iii:migrate-preferences',
]; ];
foreach ($commands as $command) { foreach ($commands as $command) {
$this->friendlyLine(sprintf('Now executing command "%s"', $command)); $this->friendlyLine(sprintf('Now executing command "%s"', $command));

View File

@@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
/* /*
* MigratePreferences.php * MigratePreferences.php
* Copyright (c) 2024 james@firefly-iii.org. * Copyright (c) 2024 james@firefly-iii.org.
@@ -33,7 +35,7 @@ class MigratePreferences extends Command
* *
* @var string * @var string
*/ */
protected $signature = 'firefly-iii:migrate-preferences'; protected $signature = 'firefly-iii:migrate-preferences';
/** /**
* The console command description. * The console command description.
@@ -49,26 +51,26 @@ class MigratePreferences extends Command
{ {
$items = config('firefly.admin_specific_prefs'); $items = config('firefly.admin_specific_prefs');
$users = User::get(); $users = User::get();
/** @var User $user */ /** @var User $user */
foreach($users as $user) { foreach ($users as $user) {
$count = 0; $count = 0;
foreach($items as $item) { foreach ($items as $item) {
$preference = Preference::where('name', $item)->where('user_id', $user->id)->first(); $preference = Preference::where('name', $item)->where('user_id', $user->id)->first();
if(null === $preference) { if (null === $preference) {
continue; continue;
} }
if(null !== $preference->user_group_id) { if (null !== $preference->user_group_id) {
$preference->user_group_id = $user->user_group_id; $preference->user_group_id = $user->user_group_id;
$preference->save(); $preference->save();
$count++; ++$count;
} }
} }
if($count > 0) { if ($count > 0) {
$this->info(sprintf('Migrated %d preference(s) for user #%d ("%s").', $count, $user->id, $user->email)); $this->info(sprintf('Migrated %d preference(s) for user #%d ("%s").', $count, $user->id, $user->email));
} }
} }
return CommandAlias::SUCCESS; return CommandAlias::SUCCESS;
} }
} }

View File

@@ -41,8 +41,8 @@ class CreateGroupMemberships extends Command
use ShowsFriendlyMessages; use ShowsFriendlyMessages;
public const string CONFIG_NAME = '560_create_group_memberships'; public const string CONFIG_NAME = '560_create_group_memberships';
protected $description = 'Update group memberships'; protected $description = 'Update group memberships';
protected $signature = 'firefly-iii:create-group-memberships'; protected $signature = 'firefly-iii:create-group-memberships';
/** /**
* Execute the console command. * Execute the console command.
@@ -78,19 +78,20 @@ class CreateGroupMemberships extends Command
public static function createGroupMembership(User $user): void public static function createGroupMembership(User $user): void
{ {
// check if membership exists // check if membership exists
$userGroup = UserGroup::where('title', $user->email)->first(); $userGroup = UserGroup::where('title', $user->email)->first();
if (null === $userGroup) { if (null === $userGroup) {
$userGroup = UserGroup::create(['title' => $user->email, 'default_administration' => true]); $userGroup = UserGroup::create(['title' => $user->email, 'default_administration' => true]);
} }
$userRole = UserRole::where('title', UserRoleEnum::OWNER->value)->first(); $userRole = UserRole::where('title', UserRoleEnum::OWNER->value)->first();
if (null === $userRole) { if (null === $userRole) {
throw new FireflyException('Firefly III could not find a user role. Please make sure all migrations have run.'); throw new FireflyException('Firefly III could not find a user role. Please make sure all migrations have run.');
} }
$membership = GroupMembership::where('user_id', $user->id) $membership = GroupMembership::where('user_id', $user->id)
->where('user_group_id', $userGroup->id) ->where('user_group_id', $userGroup->id)
->where('user_role_id', $userRole->id)->first(); ->where('user_role_id', $userRole->id)->first()
;
if (null === $membership) { if (null === $membership) {
GroupMembership::create( GroupMembership::create(
[ [
@@ -105,5 +106,4 @@ class CreateGroupMemberships extends Command
$user->save(); $user->save();
} }
} }
} }

View File

@@ -66,14 +66,14 @@ class PreferencesController extends Controller
*/ */
public function index(AccountRepositoryInterface $repository) public function index(AccountRepositoryInterface $repository)
{ {
$accounts = $repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]); $accounts = $repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]);
$isDocker = env('IS_DOCKER', false); $isDocker = env('IS_DOCKER', false);
$groupedAccounts = []; $groupedAccounts = [];
/** @var Account $account */ /** @var Account $account */
foreach ($accounts as $account) { foreach ($accounts as $account) {
$type = $account->accountType->type; $type = $account->accountType->type;
$role = sprintf('opt_group_%s', $repository->getMetaValue($account, 'account_role')); $role = sprintf('opt_group_%s', $repository->getMetaValue($account, 'account_role'));
if (in_array($type, [AccountType::MORTGAGE, AccountType::DEBT, AccountType::LOAN], true)) { if (in_array($type, [AccountType::MORTGAGE, AccountType::DEBT, AccountType::LOAN], true)) {
$role = sprintf('opt_group_l_%s', $type); $role = sprintf('opt_group_l_%s', $type);
@@ -94,23 +94,23 @@ class PreferencesController extends Controller
if (!is_array($frontpageAccounts)) { if (!is_array($frontpageAccounts)) {
$frontpageAccounts = $accountIds; $frontpageAccounts = $accountIds;
} }
$language = app('steam')->getLanguage(); $language = app('steam')->getLanguage();
$languages = config('firefly.languages'); $languages = config('firefly.languages');
$locale = app('preferences')->get('locale', config('firefly.default_locale', 'equal'))->data; $locale = app('preferences')->get('locale', config('firefly.default_locale', 'equal'))->data;
$listPageSize = app('preferences')->get('listPageSize', 50)->data; $listPageSize = app('preferences')->get('listPageSize', 50)->data;
$darkMode = app('preferences')->get('darkMode', 'browser')->data; $darkMode = app('preferences')->get('darkMode', 'browser')->data;
$slackUrl = app('preferences')->get('slack_webhook_url', '')->data; $slackUrl = app('preferences')->get('slack_webhook_url', '')->data;
$customFiscalYear = app('preferences')->get('customFiscalYear', 0)->data; $customFiscalYear = app('preferences')->get('customFiscalYear', 0)->data;
$fiscalYearStartStr = app('preferences')->get('fiscalYearStart', '01-01')->data; $fiscalYearStartStr = app('preferences')->get('fiscalYearStart', '01-01')->data;
if (is_array($fiscalYearStartStr)) { if (is_array($fiscalYearStartStr)) {
$fiscalYearStartStr = '01-01'; $fiscalYearStartStr = '01-01';
} }
$fiscalYearStart = sprintf('%s-%s', date('Y'), (string)$fiscalYearStartStr); $fiscalYearStart = sprintf('%s-%s', date('Y'), (string)$fiscalYearStartStr);
$tjOptionalFields = app('preferences')->get('transaction_journal_optional_fields', [])->data; $tjOptionalFields = app('preferences')->get('transaction_journal_optional_fields', [])->data;
$availableDarkModes = config('firefly.available_dark_modes'); $availableDarkModes = config('firefly.available_dark_modes');
// notification preferences (single value for each): // notification preferences (single value for each):
$notifications = []; $notifications = [];
foreach (config('firefly.available_notifications') as $notification) { foreach (config('firefly.available_notifications') as $notification) {
$notifications[$notification] = app('preferences')->get(sprintf('notification_%s', $notification), true)->data; $notifications[$notification] = app('preferences')->get(sprintf('notification_%s', $notification), true)->data;
} }
@@ -125,7 +125,7 @@ class PreferencesController extends Controller
app('log')->error($e->getMessage()); app('log')->error($e->getMessage());
$locales = []; $locales = [];
} }
$locales = ['equal' => (string)trans('firefly.equal_to_language')] + $locales; $locales = ['equal' => (string)trans('firefly.equal_to_language')] + $locales;
// an important fallback is that the frontPageAccount array gets refilled automatically // an important fallback is that the frontPageAccount array gets refilled automatically
// when it turns up empty. // when it turns up empty.
if (0 === count($frontpageAccounts)) { if (0 === count($frontpageAccounts)) {
@@ -164,7 +164,7 @@ class PreferencesController extends Controller
} }
// extract notifications: // extract notifications:
$all = $request->all(); $all = $request->all();
foreach (config('firefly.available_notifications') as $option) { foreach (config('firefly.available_notifications') as $option) {
$key = sprintf('notification_%s', $option); $key = sprintf('notification_%s', $option);
if (array_key_exists($key, $all)) { if (array_key_exists($key, $all)) {
@@ -194,8 +194,8 @@ class PreferencesController extends Controller
} }
// custom fiscal year // custom fiscal year
$customFiscalYear = 1 === (int)$request->get('customFiscalYear'); $customFiscalYear = 1 === (int)$request->get('customFiscalYear');
$string = strtotime((string)$request->get('fiscalYearStart')); $string = strtotime((string)$request->get('fiscalYearStart'));
if (false !== $string) { if (false !== $string) {
$fiscalYearStart = date('m-d', $string); $fiscalYearStart = date('m-d', $string);
app('preferences')->set('customFiscalYear', $customFiscalYear); app('preferences')->set('customFiscalYear', $customFiscalYear);
@@ -204,15 +204,15 @@ class PreferencesController extends Controller
// save page size: // save page size:
app('preferences')->set('listPageSize', 50); app('preferences')->set('listPageSize', 50);
$listPageSize = (int)$request->get('listPageSize'); $listPageSize = (int)$request->get('listPageSize');
if ($listPageSize > 0 && $listPageSize < 1337) { if ($listPageSize > 0 && $listPageSize < 1337) {
app('preferences')->set('listPageSize', $listPageSize); app('preferences')->set('listPageSize', $listPageSize);
} }
// language: // language:
/** @var Preference $currentLang */ /** @var Preference $currentLang */
$currentLang = app('preferences')->get('language', 'en_US'); $currentLang = app('preferences')->get('language', 'en_US');
$lang = $request->get('language'); $lang = $request->get('language');
if (array_key_exists($lang, config('firefly.languages'))) { if (array_key_exists($lang, config('firefly.languages'))) {
app('preferences')->set('language', $lang); app('preferences')->set('language', $lang);
} }
@@ -229,8 +229,8 @@ class PreferencesController extends Controller
} }
// optional fields for transactions: // optional fields for transactions:
$setOptions = $request->get('tj') ?? []; $setOptions = $request->get('tj') ?? [];
$optionalTj = [ $optionalTj = [
'interest_date' => array_key_exists('interest_date', $setOptions), 'interest_date' => array_key_exists('interest_date', $setOptions),
'book_date' => array_key_exists('book_date', $setOptions), 'book_date' => array_key_exists('book_date', $setOptions),
'process_date' => array_key_exists('process_date', $setOptions), 'process_date' => array_key_exists('process_date', $setOptions),
@@ -247,7 +247,7 @@ class PreferencesController extends Controller
app('preferences')->set('transaction_journal_optional_fields', $optionalTj); app('preferences')->set('transaction_journal_optional_fields', $optionalTj);
// dark mode // dark mode
$darkMode = $request->get('darkMode') ?? 'browser'; $darkMode = $request->get('darkMode') ?? 'browser';
if (in_array($darkMode, config('firefly.available_dark_modes'), true)) { if (in_array($darkMode, config('firefly.available_dark_modes'), true)) {
app('preferences')->set('darkMode', $darkMode); app('preferences')->set('darkMode', $darkMode);
} }

View File

@@ -54,7 +54,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static Builder|Preference whereUpdatedAt($value) * @method static Builder|Preference whereUpdatedAt($value)
* @method static Builder|Preference whereUserId($value) * @method static Builder|Preference whereUserId($value)
* *
* @property mixed $user_group_id * @property mixed $user_group_id
* *
* @mixin Eloquent * @mixin Eloquent
*/ */
@@ -64,7 +64,7 @@ class Preference extends Model
use ReturnsIntegerUserIdTrait; use ReturnsIntegerUserIdTrait;
protected $casts protected $casts
= [ = [
'created_at' => 'datetime', 'created_at' => 'datetime',
'updated_at' => 'datetime', 'updated_at' => 'datetime',
'data' => 'array', 'data' => 'array',
@@ -81,15 +81,16 @@ class Preference extends Model
{ {
if (auth()->check()) { if (auth()->check()) {
/** @var User $user */ /** @var User $user */
$user = auth()->user(); $user = auth()->user();
// some preferences do not have an administration ID. // some preferences do not have an administration ID.
// some need it, to make sure the correct one is selected. // some need it, to make sure the correct one is selected.
$userGroupId = (int)$user->user_group_id; $userGroupId = (int)$user->user_group_id;
$userGroupId = $userGroupId === 0 ? null : $userGroupId; $userGroupId = 0 === $userGroupId ? null : $userGroupId;
/** @var Preference|null $preference */
$preference = null; /** @var null|Preference $preference */
$items = config('firefly.admin_specific_prefs'); $preference = null;
$items = config('firefly.admin_specific_prefs');
if (null !== $userGroupId && in_array($value, $items, true)) { if (null !== $userGroupId && in_array($value, $items, true)) {
// find a preference with a specific user_group_id // find a preference with a specific user_group_id
$preference = $user->preferences()->where('user_group_id', $userGroupId)->where('name', $value)->first(); $preference = $user->preferences()->where('user_group_id', $userGroupId)->where('name', $value)->first();
@@ -106,7 +107,7 @@ class Preference extends Model
if (null !== $preference) { if (null !== $preference) {
return $preference; return $preference;
} }
$default = config('firefly.default_preferences'); $default = config('firefly.default_preferences');
if (array_key_exists($value, $default)) { if (array_key_exists($value, $default)) {
$preference = new self(); $preference = new self();
$preference->name = $value; $preference->name = $value;

View File

@@ -289,7 +289,8 @@ class UserGroupRepository implements UserGroupRepositoryInterface
return $roles; return $roles;
} }
#[\Override] public function useUserGroup(UserGroup $userGroup): void #[\Override]
public function useUserGroup(UserGroup $userGroup): void
{ {
$this->user->user_group_id = $userGroup->id; $this->user->user_group_id = $userGroup->id;
$this->user->save(); $this->user->save();

View File

@@ -24,12 +24,9 @@ declare(strict_types=1);
namespace FireflyIII\Rules; namespace FireflyIII\Rules;
use FireflyIII\Models\TransactionType;
use FireflyIII\Models\UserGroup; use FireflyIII\Models\UserGroup;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use FireflyIII\Repositories\UserGroup\UserGroupRepositoryInterface;
use FireflyIII\User; use FireflyIII\User;
use FireflyIII\Validation\AccountValidator;
use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\ValidationRule;
/** /**
@@ -38,8 +35,10 @@ use Illuminate\Contracts\Validation\ValidationRule;
class IsDefaultUserGroupName implements ValidationRule class IsDefaultUserGroupName implements ValidationRule
{ {
private UserGroup $userGroup; private UserGroup $userGroup;
public function __construct(UserGroup $userGroup) {
$this->userGroup =$userGroup; public function __construct(UserGroup $userGroup)
{
$this->userGroup = $userGroup;
} }
/** /**
@@ -51,12 +50,13 @@ class IsDefaultUserGroupName implements ValidationRule
// are you owner of this group and the name is the same? fail. // are you owner of this group and the name is the same? fail.
/** @var User $user */ /** @var User $user */
$user = auth()->user(); $user = auth()->user();
/** @var UserRepositoryInterface $userRepos */ /** @var UserRepositoryInterface $userRepos */
$userRepos = app(UserRepositoryInterface::class); $userRepos = app(UserRepositoryInterface::class);
$roles = $userRepos->getRolesInGroup($user, $this->userGroup->id); $roles = $userRepos->getRolesInGroup($user, $this->userGroup->id);
if($this->userGroup->title === $user->email && in_array('owner', $roles, true)) { if ($this->userGroup->title === $user->email && in_array('owner', $roles, true)) {
$fail('validation.administration_owner_rename')->translate(); $fail('validation.administration_owner_rename')->translate();
} }
} }

View File

@@ -44,14 +44,15 @@ class Preferences
} }
return Preference::where('user_id', $user->id) return Preference::where('user_id', $user->id)
->where(function (Builder $q) use ($user) { ->where(function (Builder $q) use ($user): void {
$q->whereNull('user_group_id'); $q->whereNull('user_group_id');
$q->orWhere('user_group_id', $user->user_group_id); $q->orWhere('user_group_id', $user->user_group_id);
}) })
->get(); ->get()
;
} }
public function get(string $name, null | array | bool | int | string $default = null): ?Preference public function get(string $name, null|array|bool|int|string $default = null): ?Preference
{ {
/** @var null|User $user */ /** @var null|User $user */
$user = auth()->user(); $user = auth()->user();
@@ -65,11 +66,11 @@ class Preferences
return $this->getForUser($user, $name, $default); return $this->getForUser($user, $name, $default);
} }
public function getForUser(User $user, string $name, null | array | bool | int | string $default = null): ?Preference public function getForUser(User $user, string $name, null|array|bool|int|string $default = null): ?Preference
{ {
// don't care about user group ID, except for some specific preferences. // don't care about user group ID, except for some specific preferences.
$userGroupId = $this->getUserGroupId($user, $name); $userGroupId = $this->getUserGroupId($user, $name);
$preference = Preference::where('user_group_id', $userGroupId)->where('user_id', $user->id)->where('name', $name)->first(['id', 'user_id', 'name', 'data', 'updated_at', 'created_at']); $preference = Preference::where('user_group_id', $userGroupId)->where('user_id', $user->id)->where('name', $name)->first(['id', 'user_id', 'name', 'data', 'updated_at', 'created_at']);
if (null !== $preference && null === $preference->data) { if (null !== $preference && null === $preference->data) {
$preference->delete(); $preference->delete();
@@ -106,14 +107,14 @@ class Preferences
Cache::put($key, '', 5); Cache::put($key, '', 5);
} }
public function setForUser(User $user, string $name, null | array | bool | int | string $value): Preference public function setForUser(User $user, string $name, null|array|bool|int|string $value): Preference
{ {
$fullName = sprintf('preference%s%s', $user->id, $name); $fullName = sprintf('preference%s%s', $user->id, $name);
$groupId = $this->getUserGroupId($user, $name); $groupId = $this->getUserGroupId($user, $name);
Cache::forget($fullName); Cache::forget($fullName);
/** @var null|Preference $pref */ /** @var null|Preference $pref */
$pref = Preference::where('user_group_id', $groupId)->where('user_id', $user->id)->where('name', $name)->first(['id', 'name', 'data', 'updated_at', 'created_at']); $pref = Preference::where('user_group_id', $groupId)->where('user_id', $user->id)->where('name', $name)->first(['id', 'name', 'data', 'updated_at', 'created_at']);
if (null !== $pref && null === $value) { if (null !== $pref && null === $value) {
$pref->delete(); $pref->delete();
@@ -138,7 +139,7 @@ class Preferences
public function beginsWith(User $user, string $search): Collection public function beginsWith(User $user, string $search): Collection
{ {
return Preference::where('user_id', $user->id)->where('name', 'LIKE', $search . '%')->get(); return Preference::where('user_id', $user->id)->where('name', 'LIKE', $search.'%')->get();
} }
/** /**
@@ -152,14 +153,14 @@ class Preferences
public function getArrayForUser(User $user, array $list): array public function getArrayForUser(User $user, array $list): array
{ {
$result = []; $result = [];
$preferences = Preference $preferences = Preference::where('user_id', $user->id)
::where('user_id', $user->id) ->where(function (Builder $q) use ($user): void {
->where(function (Builder $q) use ($user) {
$q->whereNull('user_group_id'); $q->whereNull('user_group_id');
$q->orWhere('user_group_id', $user->user_group_id); $q->orWhere('user_group_id', $user->user_group_id);
}) })
->whereIn('name', $list) ->whereIn('name', $list)
->get(['id', 'name', 'data']); ->get(['id', 'name', 'data'])
;
/** @var Preference $preference */ /** @var Preference $preference */
foreach ($preferences as $preference) { foreach ($preferences as $preference) {
@@ -174,7 +175,7 @@ class Preferences
return $result; return $result;
} }
public function getFresh(string $name, null | array | bool | int | string $default = null): ?Preference public function getFresh(string $name, null|array|bool|int|string $default = null): ?Preference
{ {
/** @var null|User $user */ /** @var null|User $user */
$user = auth()->user(); $user = auth()->user();
@@ -212,7 +213,7 @@ class Preferences
Session::forget('first'); Session::forget('first');
} }
public function set(string $name, null | array | bool | int | string $value): Preference public function set(string $name, null|array|bool|int|string $value): Preference
{ {
/** @var User $user */ /** @var User $user */
$user = auth()->user(); $user = auth()->user();
@@ -235,6 +236,7 @@ class Preferences
if (in_array($preferenceName, $items, true)) { if (in_array($preferenceName, $items, true)) {
$groupId = (int)$user->user_group_id; $groupId = (int)$user->user_group_id;
} }
return $groupId; return $groupId;
} }
} }

View File

@@ -35,7 +35,8 @@ class PreferenceTransformer extends AbstractTransformer
*/ */
public function transform(Preference $preference): array public function transform(Preference $preference): array
{ {
$userGroupId = $preference->user_group_id === 0 ? null : $preference->user_group_id; $userGroupId = 0 === $preference->user_group_id ? null : $preference->user_group_id;
return [ return [
'id' => $preference->id, 'id' => $preference->id,
'created_at' => $preference->created_at->toAtomString(), 'created_at' => $preference->created_at->toAtomString(),

36
composer.lock generated
View File

@@ -8897,23 +8897,23 @@
"packages-dev": [ "packages-dev": [
{ {
"name": "barryvdh/laravel-debugbar", "name": "barryvdh/laravel-debugbar",
"version": "v3.12.4", "version": "v3.13.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git", "url": "https://github.com/barryvdh/laravel-debugbar.git",
"reference": "e7a9a217512d8f1d07448fd241ce2ac0922ddc2c" "reference": "354a42f3e0b083cdd6f9da5a9d1c0c63b074547a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/e7a9a217512d8f1d07448fd241ce2ac0922ddc2c", "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/354a42f3e0b083cdd6f9da5a9d1c0c63b074547a",
"reference": "e7a9a217512d8f1d07448fd241ce2ac0922ddc2c", "reference": "354a42f3e0b083cdd6f9da5a9d1c0c63b074547a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"illuminate/routing": "^9|^10|^11", "illuminate/routing": "^9|^10|^11",
"illuminate/session": "^9|^10|^11", "illuminate/session": "^9|^10|^11",
"illuminate/support": "^9|^10|^11", "illuminate/support": "^9|^10|^11",
"maximebf/debugbar": "~1.21.0", "maximebf/debugbar": "~1.22.0",
"php": "^8.0", "php": "^8.0",
"symfony/finder": "^6|^7" "symfony/finder": "^6|^7"
}, },
@@ -8926,7 +8926,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.10-dev" "dev-master": "3.13-dev"
}, },
"laravel": { "laravel": {
"providers": [ "providers": [
@@ -8965,7 +8965,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/barryvdh/laravel-debugbar/issues", "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.12.4" "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.13.0"
}, },
"funding": [ "funding": [
{ {
@@ -8977,7 +8977,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2024-04-01T09:14:15+00:00" "time": "2024-04-01T16:39:30+00:00"
}, },
{ {
"name": "barryvdh/laravel-ide-helper", "name": "barryvdh/laravel-ide-helper",
@@ -9606,25 +9606,27 @@
}, },
{ {
"name": "maximebf/debugbar", "name": "maximebf/debugbar",
"version": "v1.21.3", "version": "v1.22.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/maximebf/php-debugbar.git", "url": "https://github.com/maximebf/php-debugbar.git",
"reference": "0b407703b08ea0cf6ebc61e267cc96ff7000911b" "reference": "d7b6e1dc2dc85c01ed63ab158b00a7f46abdebcc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/0b407703b08ea0cf6ebc61e267cc96ff7000911b", "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/d7b6e1dc2dc85c01ed63ab158b00a7f46abdebcc",
"reference": "0b407703b08ea0cf6ebc61e267cc96ff7000911b", "reference": "d7b6e1dc2dc85c01ed63ab158b00a7f46abdebcc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.1|^8", "php": "^7.2|^8",
"psr/log": "^1|^2|^3", "psr/log": "^1|^2|^3",
"symfony/var-dumper": "^4|^5|^6|^7" "symfony/var-dumper": "^4|^5|^6|^7"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": ">=7.5.20 <10.0", "dbrekelmans/bdi": "^1",
"phpunit/phpunit": "^8|^9",
"symfony/panther": "^1|^2.1",
"twig/twig": "^1.38|^2.7|^3.0" "twig/twig": "^1.38|^2.7|^3.0"
}, },
"suggest": { "suggest": {
@@ -9635,7 +9637,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.21-dev" "dev-master": "1.22-dev"
} }
}, },
"autoload": { "autoload": {
@@ -9666,9 +9668,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/maximebf/php-debugbar/issues", "issues": "https://github.com/maximebf/php-debugbar/issues",
"source": "https://github.com/maximebf/php-debugbar/tree/v1.21.3" "source": "https://github.com/maximebf/php-debugbar/tree/v1.22.1"
}, },
"time": "2024-03-12T14:23:07+00:00" "time": "2024-04-01T10:44:20+00:00"
}, },
{ {
"name": "mockery/mockery", "name": "mockery/mockery",

View File

@@ -117,7 +117,7 @@ return [
'expression_engine' => false, 'expression_engine' => false,
// see cer.php for exchange rates feature flag. // see cer.php for exchange rates feature flag.
], ],
'version' => '6.1.13', 'version' => 'develop/2024-04-02',
'api_version' => '2.0.13', 'api_version' => '2.0.13',
'db_version' => 24, 'db_version' => 24,
@@ -437,7 +437,7 @@ return [
'transfers' => 'fa-exchange', 'transfers' => 'fa-exchange',
], ],
'bindables' => [ 'bindables' => [
// models // models
'account' => Account::class, 'account' => Account::class,
'attachment' => Attachment::class, 'attachment' => Attachment::class,
@@ -495,7 +495,7 @@ return [
'userGroupBill' => UserGroupBill::class, 'userGroupBill' => UserGroupBill::class,
'userGroup' => UserGroup::class, 'userGroup' => UserGroup::class,
], ],
'rule-actions' => [ 'rule-actions' => [
'set_category' => SetCategory::class, 'set_category' => SetCategory::class,
'clear_category' => ClearCategory::class, 'clear_category' => ClearCategory::class,
'set_budget' => SetBudget::class, 'set_budget' => SetBudget::class,
@@ -529,7 +529,7 @@ return [
// 'set_foreign_amount' => SetForeignAmount::class, // 'set_foreign_amount' => SetForeignAmount::class,
// 'set_foreign_currency' => SetForeignCurrency::class, // 'set_foreign_currency' => SetForeignCurrency::class,
], ],
'context-rule-actions' => [ 'context-rule-actions' => [
'set_category', 'set_category',
'set_budget', 'set_budget',
'add_tag', 'add_tag',
@@ -548,13 +548,13 @@ return [
'convert_transfer', 'convert_transfer',
], ],
'test-triggers' => [ 'test-triggers' => [
'limit' => 10, 'limit' => 10,
'range' => 200, 'range' => 200,
], ],
// expected source types for each transaction type, in order of preference. // expected source types for each transaction type, in order of preference.
'expected_source_types' => [ 'expected_source_types' => [
'source' => [ 'source' => [
TransactionTypeModel::WITHDRAWAL => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeModel::WITHDRAWAL => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE],
TransactionTypeEnum::DEPOSIT->value => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::REVENUE, AccountType::CASH], TransactionTypeEnum::DEPOSIT->value => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::REVENUE, AccountType::CASH],
@@ -599,7 +599,7 @@ return [
TransactionTypeModel::LIABILITY_CREDIT => [AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeModel::LIABILITY_CREDIT => [AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE],
], ],
], ],
'allowed_opposing_types' => [ 'allowed_opposing_types' => [
'source' => [ 'source' => [
AccountType::ASSET => [ AccountType::ASSET => [
AccountType::ASSET, AccountType::ASSET,
@@ -689,7 +689,7 @@ return [
], ],
], ],
// depending on the account type, return the allowed transaction types: // depending on the account type, return the allowed transaction types:
'allowed_transaction_types' => [ 'allowed_transaction_types' => [
'source' => [ 'source' => [
AccountType::ASSET => [ AccountType::ASSET => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeModel::WITHDRAWAL,
@@ -758,7 +758,7 @@ return [
], ],
// having the source + dest will tell you the transaction type. // having the source + dest will tell you the transaction type.
'account_to_transaction' => [ 'account_to_transaction' => [
AccountType::ASSET => [ AccountType::ASSET => [
AccountType::ASSET => TransactionTypeModel::TRANSFER, AccountType::ASSET => TransactionTypeModel::TRANSFER,
AccountType::CASH => TransactionTypeModel::WITHDRAWAL, AccountType::CASH => TransactionTypeModel::WITHDRAWAL,
@@ -823,7 +823,7 @@ return [
], ],
// allowed source -> destination accounts. // allowed source -> destination accounts.
'source_dests' => [ 'source_dests' => [
TransactionTypeModel::WITHDRAWAL => [ TransactionTypeModel::WITHDRAWAL => [
AccountType::ASSET => [AccountType::EXPENSE, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::CASH], AccountType::ASSET => [AccountType::EXPENSE, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::CASH],
AccountType::LOAN => [AccountType::EXPENSE, AccountType::CASH], AccountType::LOAN => [AccountType::EXPENSE, AccountType::CASH],
@@ -862,7 +862,7 @@ return [
], ],
], ],
// if you add fields to this array, don't forget to update the export routine (ExportDataGenerator). // if you add fields to this array, don't forget to update the export routine (ExportDataGenerator).
'journal_meta_fields' => [ 'journal_meta_fields' => [
// sepa // sepa
'sepa_cc', 'sepa_cc',
'sepa_ct_op', 'sepa_ct_op',
@@ -896,33 +896,33 @@ return [
'recurrence_count', 'recurrence_count',
'recurrence_date', 'recurrence_date',
], ],
'webhooks' => [ 'webhooks' => [
'max_attempts' => env('WEBHOOK_MAX_ATTEMPTS', 3), 'max_attempts' => env('WEBHOOK_MAX_ATTEMPTS', 3),
], ],
'can_have_virtual_amounts' => [AccountType::ASSET], 'can_have_virtual_amounts' => [AccountType::ASSET],
'can_have_opening_balance' => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], 'can_have_opening_balance' => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE],
'dynamic_creation_allowed' => [ 'dynamic_creation_allowed' => [
AccountType::EXPENSE, AccountType::EXPENSE,
AccountType::REVENUE, AccountType::REVENUE,
AccountType::INITIAL_BALANCE, AccountType::INITIAL_BALANCE,
AccountType::RECONCILIATION, AccountType::RECONCILIATION,
AccountType::LIABILITY_CREDIT, AccountType::LIABILITY_CREDIT,
], ],
'valid_asset_fields' => ['account_role', 'account_number', 'currency_id', 'BIC', 'include_net_worth'], 'valid_asset_fields' => ['account_role', 'account_number', 'currency_id', 'BIC', 'include_net_worth'],
'valid_cc_fields' => ['account_role', 'cc_monthly_payment_date', 'cc_type', 'account_number', 'currency_id', 'BIC', 'include_net_worth'], 'valid_cc_fields' => ['account_role', 'cc_monthly_payment_date', 'cc_type', 'account_number', 'currency_id', 'BIC', 'include_net_worth'],
'valid_account_fields' => ['account_number', 'currency_id', 'BIC', 'interest', 'interest_period', 'include_net_worth', 'liability_direction'], 'valid_account_fields' => ['account_number', 'currency_id', 'BIC', 'interest', 'interest_period', 'include_net_worth', 'liability_direction'],
// dynamic date ranges are as follows: // dynamic date ranges are as follows:
'dynamic_date_ranges' => ['last7', 'last30', 'last90', 'last365', 'MTD', 'QTD', 'YTD'], 'dynamic_date_ranges' => ['last7', 'last30', 'last90', 'last365', 'MTD', 'QTD', 'YTD'],
// only used in v1 // only used in v1
'allowed_sort_parameters' => ['order', 'name', 'iban'], 'allowed_sort_parameters' => ['order', 'name', 'iban'],
// preselected account lists possibilities: // preselected account lists possibilities:
'preselected_accounts' => ['all', 'assets', 'liabilities'], 'preselected_accounts' => ['all', 'assets', 'liabilities'],
// allowed sort columns for API's // allowed sort columns for API's
'sorting' => [ 'sorting' => [
'allowed' => [ 'allowed' => [
'transactions' => ['description', 'amount'], 'transactions' => ['description', 'amount'],
'accounts' => ['name', 'active', 'iban', 'balance', 'last_activity'], 'accounts' => ['name', 'active', 'iban', 'balance', 'last_activity'],

View File

@@ -1,12 +1,13 @@
<?php <?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException; use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
return new class extends Migration return new class () extends Migration {
{
/** /**
* Run the migrations. * Run the migrations.
*/ */
@@ -31,8 +32,5 @@ return new class extends Migration
/** /**
* Reverse the migrations. * Reverse the migrations.
*/ */
public function down(): void public function down(): void {}
{
//
}
}; };

View File

@@ -3,7 +3,7 @@
"html_language": "nl", "html_language": "nl",
"date_time_fns": "d MMMM yyyy @ HH:mm:ss", "date_time_fns": "d MMMM yyyy @ HH:mm:ss",
"month_and_day_fns": "d MMMM y", "month_and_day_fns": "d MMMM y",
"date_time_fns_short": "MMMM do, yyyy @ HH:mm" "date_time_fns_short": "d MMMM yyyy @ HH:mm"
}, },
"validation": { "validation": {
"bad_type_source": "Firefly III kan het transactietype niet bepalen op basis van deze bronrekening.", "bad_type_source": "Firefly III kan het transactietype niet bepalen op basis van deze bronrekening.",

View File

@@ -3,7 +3,7 @@
"html_language": "nl", "html_language": "nl",
"date_time_fns": "d MMMM yyyy @ HH:mm:ss", "date_time_fns": "d MMMM yyyy @ HH:mm:ss",
"month_and_day_fns": "d MMMM y", "month_and_day_fns": "d MMMM y",
"date_time_fns_short": "MMMM do, yyyy @ HH:mm" "date_time_fns_short": "d MMMM yyyy @ HH:mm"
}, },
"validation": { "validation": {
"bad_type_source": "Firefly III kan het transactietype niet bepalen op basis van deze bronrekening.", "bad_type_source": "Firefly III kan het transactietype niet bepalen op basis van deze bronrekening.",

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'No tens accés a aquesta administració.', 'no_access_user_group' => 'No tens accés a aquesta administració.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Du har ikke de korrekte adgangsrettigheder for denne administration.', 'no_access_user_group' => 'Du har ikke de korrekte adgangsrettigheder for denne administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Für diese Verwaltung haben Sie nicht die erforderlichen Zugriffsrechte.', 'no_access_user_group' => 'Für diese Verwaltung haben Sie nicht die erforderlichen Zugriffsrechte.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Δεν έχετε τα σωστά δικαιώματα πρόσβασης για αυτή τη διαχείριση.', 'no_access_user_group' => 'Δεν έχετε τα σωστά δικαιώματα πρόσβασης για αυτή τη διαχείριση.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -264,7 +264,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.', 'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
// Ignore this comment // Ignore this comment

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'No tiene permisos para esta administración.', 'no_access_user_group' => 'No tiene permisos para esta administración.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Vous n\'avez pas les droits d\'accès corrects pour cette administration.', 'no_access_user_group' => 'Vous n\'avez pas les droits d\'accès corrects pour cette administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Non hai i diritti di accesso corretti per questa amministrazione.', 'no_access_user_group' => 'Non hai i diritti di accesso corretti per questa amministrazione.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'この管理のための適切なアクセス権がありません。', 'no_access_user_group' => 'この管理のための適切なアクセス権がありません。',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => '이 관리에 대한 올바른 액세스 권한이 없습니다.', 'no_access_user_group' => '이 관리에 대한 올바른 액세스 권한이 없습니다.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Du har ikke rettigheter til denne handlingen.', 'no_access_user_group' => 'Du har ikke rettigheter til denne handlingen.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

View File

@@ -64,7 +64,7 @@ return [
// 'date_time' => '%B %e, %Y, @ %T', // 'date_time' => '%B %e, %Y, @ %T',
'date_time_js' => 'D MMMM YYYY @ HH:mm:ss', 'date_time_js' => 'D MMMM YYYY @ HH:mm:ss',
'date_time_fns' => 'd MMMM yyyy @ HH:mm:ss', 'date_time_fns' => 'd MMMM yyyy @ HH:mm:ss',
'date_time_fns_short' => 'MMMM do, yyyy @ HH:mm', 'date_time_fns_short' => 'd MMMM yyyy @ HH:mm',
// 'specific_day' => '%e %B %Y', // 'specific_day' => '%e %B %Y',
'specific_day_js' => 'D MMMM YYYY', 'specific_day_js' => 'D MMMM YYYY',

View File

@@ -42,7 +42,7 @@ return [
'fatal_error' => 'Er is een fatale fout opgetreden. Controleer de logbestanden in "storage/logs" of gebruik "docker logs -f [container]" om te zien wat er gebeurde.', 'fatal_error' => 'Er is een fatale fout opgetreden. Controleer de logbestanden in "storage/logs" of gebruik "docker logs -f [container]" om te zien wat er gebeurde.',
'maintenance_mode' => 'Firefly III is in onderhoudsmodus.', 'maintenance_mode' => 'Firefly III is in onderhoudsmodus.',
'be_right_back' => 'Zo terug!', 'be_right_back' => 'Zo terug!',
'check_back' => 'Firefly III is down for some necessary maintenance. Please check back in a second. If you happen to see this message on the demo site, just wait a few minutes. The database is reset every few hours.', 'check_back' => 'Firefly III is offline voor hoognodig onderhoud. Kom later terug. Als je dit bericht op de demo site ziet, wacht dan een paar minuten. De database wordt elke paar uur gereset.',
'error_occurred' => 'Oeps! Er is een fout opgetreden.', 'error_occurred' => 'Oeps! Er is een fout opgetreden.',
'db_error_occurred' => 'Oeps! Er is een database-fout opgetreden.', 'db_error_occurred' => 'Oeps! Er is een database-fout opgetreden.',
'error_not_recoverable' => 'Helaas was deze fout niet te herstellen :(. Firefly III is stuk. De fout is:', 'error_not_recoverable' => 'Helaas was deze fout niet te herstellen :(. Firefly III is stuk. De fout is:',

File diff suppressed because it is too large Load Diff

View File

@@ -70,5 +70,5 @@ return [
'cannot_find_budget' => 'Firefly III kan budget ":name" niet vinden', 'cannot_find_budget' => 'Firefly III kan budget ":name" niet vinden',
'cannot_find_category' => 'Firefly III kan categorie ":name" niet vinden', 'cannot_find_category' => 'Firefly III kan categorie ":name" niet vinden',
'cannot_set_budget' => 'Firefly III kan budget ":name" niet instellen op een transactie van het type ":type"', 'cannot_set_budget' => 'Firefly III kan budget ":name" niet instellen op een transactie van het type ":type"',
'journal_invalid_amount' => 'Firefly III can\'t set amount ":amount" because it is not a valid number.', 'journal_invalid_amount' => 'Firefly III kan bedrag ":amount" niet instellen omdat dit geen geldig getal is.',
]; ];

View File

@@ -55,11 +55,11 @@ return [
'reconciled_forbidden_field' => 'Deze transactie is al afgestemd, dus je kan ":field" niet wijzigen', 'reconciled_forbidden_field' => 'Deze transactie is al afgestemd, dus je kan ":field" niet wijzigen',
'deleted_user' => 'Je kan je niet registreren met dit e-mailadres.', 'deleted_user' => 'Je kan je niet registreren met dit e-mailadres.',
'rule_trigger_value' => 'Deze waarde is niet geldig voor de geselecteerde trigger.', 'rule_trigger_value' => 'Deze waarde is niet geldig voor de geselecteerde trigger.',
'rule_action_expression' => 'Invalid expression. :error', 'rule_action_expression' => 'Ongeldige expressie (foutmelding in het Engels): :error',
'rule_action_value' => 'Deze waarde is niet geldig voor de geselecteerde actie.', 'rule_action_value' => 'Deze waarde is niet geldig voor de geselecteerde actie.',
'file_already_attached' => 'Het geuploade bestand ":name" is al gelinkt aan deze transactie.', 'file_already_attached' => 'Het geuploade bestand ":name" is al gelinkt aan deze transactie.',
'file_attached' => 'Bestand ":name" is succesvol geüpload.', 'file_attached' => 'Bestand ":name" is succesvol geüpload.',
'file_zero' => 'The file is zero bytes in size.', 'file_zero' => 'Het bestand is nul bytes.',
'must_exist' => 'Het ID in veld :attribute bestaat niet.', 'must_exist' => 'Het ID in veld :attribute bestaat niet.',
'all_accounts_equal' => 'Alle rekeningen in dit veld moeten gelijk zijn.', 'all_accounts_equal' => 'Alle rekeningen in dit veld moeten gelijk zijn.',
'group_title_mandatory' => 'Een groepstitel is verplicht wanneer er meer dan één transactie is.', 'group_title_mandatory' => 'Een groepstitel is verplicht wanneer er meer dan één transactie is.',
@@ -197,7 +197,7 @@ return [
* *
*/ */
'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password', 'secure_password' => 'Dit is geen veilig wachtwoord. Probeer het nog een keer. Zie ook: https://bit.ly/FF3-password',
'valid_recurrence_rep_type' => 'Dit is geen geldige herhaling voor periodieke transacties.', 'valid_recurrence_rep_type' => 'Dit is geen geldige herhaling voor periodieke transacties.',
'valid_recurrence_rep_moment' => 'Ongeldig herhaalmoment voor dit type herhaling.', 'valid_recurrence_rep_moment' => 'Ongeldig herhaalmoment voor dit type herhaling.',
'invalid_account_info' => 'Ongeldige rekeninginformatie.', 'invalid_account_info' => 'Ongeldige rekeninginformatie.',
@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Je hebt niet de juiste toegangsrechten voor deze administratie.', 'no_access_user_group' => 'Je hebt niet de juiste toegangsrechten voor deze administratie.',
'administration_owner_rename' => 'Je kan je standaardgrootboek niet hernoemen.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Du har ikkje rettigheter til denne handlinga.', 'no_access_user_group' => 'Du har ikkje rettigheter til denne handlinga.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Nie masz odpowiednich praw dostępu dla tej administracji.', 'no_access_user_group' => 'Nie masz odpowiednich praw dostępu dla tej administracji.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Você não direitos de acesso suficientes para esta administração.', 'no_access_user_group' => 'Você não direitos de acesso suficientes para esta administração.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Não tem as permissões de acesso necessárias para esta administração.', 'no_access_user_group' => 'Não tem as permissões de acesso necessárias para esta administração.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Nu aveți drepturile de acces corecte pentru această administrare.', 'no_access_user_group' => 'Nu aveți drepturile de acces corecte pentru această administrare.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'У вас нет необходимых прав доступа для данного административного действия.', 'no_access_user_group' => 'У вас нет необходимых прав доступа для данного административного действия.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'Nimate ustreznih pravic dostopa do te administracije.', 'no_access_user_group' => 'Nimate ustreznih pravic dostopa do te administracije.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'У Вас немає необхідних прав доступу для цих налаштувань.', 'no_access_user_group' => 'У Вас немає необхідних прав доступу для цих налаштувань.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => '您没有管理员访问权限', 'no_access_user_group' => '您没有管理员访问权限',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

File diff suppressed because it is too large Load Diff

View File

@@ -300,6 +300,7 @@ return [
// no access to administration: // no access to administration:
'no_access_user_group' => 'You do not have the correct access rights for this administration.', 'no_access_user_group' => 'You do not have the correct access rights for this administration.',
'administration_owner_rename' => 'You can\'t rename your standard administration.',
]; ];
/* /*

View File

@@ -1308,7 +1308,7 @@ Breadcrumbs::for(
Breadcrumbs::for( Breadcrumbs::for(
'administrations.edit', 'administrations.edit',
static function (Generator $breadcrumbs, UserGroup $userGroup): void { static function (Generator $breadcrumbs, UserGroup $userGroup): void {
$breadcrumbs->parent('administrations.show',$userGroup); $breadcrumbs->parent('administrations.show', $userGroup);
$breadcrumbs->push(trans('firefly.edit_administration_breadcrumb', ['title' => limitStringLength($userGroup->title)]), route('administrations.edit', [$userGroup->id])); $breadcrumbs->push(trans('firefly.edit_administration_breadcrumb', ['title' => limitStringLength($userGroup->title)]), route('administrations.edit', [$userGroup->id]));
} }
); );

View File

@@ -47,7 +47,7 @@ Route::group(
Route::group( Route::group(
['middleware' => 'binders-only', 'namespace' => 'FireflyIII\Http\Controllers\System'], ['middleware' => 'binders-only', 'namespace' => 'FireflyIII\Http\Controllers\System'],
static function (): void { static function (): void {
Route::get('offline', static fn() => view('errors.offline')); Route::get('offline', static fn () => view('errors.offline'));
Route::get('health', ['uses' => 'HealthcheckController@check', 'as' => 'healthcheck']); Route::get('health', ['uses' => 'HealthcheckController@check', 'as' => 'healthcheck']);
} }
); );
@@ -150,27 +150,32 @@ Route::group(
// show // show
Route::get('show/{account}/all', ['uses' => 'Account\ShowController@showAll', 'as' => 'show.all']); Route::get('show/{account}/all', ['uses' => 'Account\ShowController@showAll', 'as' => 'show.all']);
Route::get('show/{account}/{start_date?}/{end_date?}', ['uses' => 'Account\ShowController@show', 'as' => 'show']) Route::get('show/{account}/{start_date?}/{end_date?}', ['uses' => 'Account\ShowController@show', 'as' => 'show'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// reconcile routes: // reconcile routes:
Route::get('reconcile/{account}/index/{start_date?}/{end_date?}', ['uses' => 'Account\ReconcileController@reconcile', 'as' => 'reconcile']) Route::get('reconcile/{account}/index/{start_date?}/{end_date?}', ['uses' => 'Account\ReconcileController@reconcile', 'as' => 'reconcile'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::post('reconcile/{account}/submit/{start_date?}/{end_date?}', ['uses' => 'Account\ReconcileController@submit', 'as' => 'reconcile.submit']) Route::post('reconcile/{account}/submit/{start_date?}/{end_date?}', ['uses' => 'Account\ReconcileController@submit', 'as' => 'reconcile.submit'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// reconcile JSON routes // reconcile JSON routes
Route::get('reconcile/{account}/overview/{start_date?}/{end_date?}', ['uses' => 'Json\ReconcileController@overview', 'as' => 'reconcile.overview']) Route::get('reconcile/{account}/overview/{start_date?}/{end_date?}', ['uses' => 'Json\ReconcileController@overview', 'as' => 'reconcile.overview'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'reconcile/{account}/transactions/{start_date?}/{end_date?}', 'reconcile/{account}/transactions/{start_date?}/{end_date?}',
['uses' => 'Json\ReconcileController@transactions', 'as' => 'reconcile.transactions'] ['uses' => 'Json\ReconcileController@transactions', 'as' => 'reconcile.transactions']
) )
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -247,16 +252,18 @@ Route::group(
Route::get('show/{budget}/{budgetLimit}', ['uses' => 'Budget\ShowController@showByBudgetLimit', 'as' => 'show.limit']); Route::get('show/{budget}/{budgetLimit}', ['uses' => 'Budget\ShowController@showByBudgetLimit', 'as' => 'show.limit']);
Route::get('list/no-budget/all', ['uses' => 'Budget\ShowController@noBudgetAll', 'as' => 'no-budget-all']); Route::get('list/no-budget/all', ['uses' => 'Budget\ShowController@noBudgetAll', 'as' => 'no-budget-all']);
Route::get('list/no-budget/{start_date?}/{end_date?}', ['uses' => 'Budget\ShowController@noBudget', 'as' => 'no-budget']) Route::get('list/no-budget/{start_date?}/{end_date?}', ['uses' => 'Budget\ShowController@noBudget', 'as' => 'no-budget'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// reorder budgets // reorder budgets
Route::post('reorder', ['uses' => 'Budget\IndexController@reorder', 'as' => 'reorder']); Route::post('reorder', ['uses' => 'Budget\IndexController@reorder', 'as' => 'reorder']);
// index // index
Route::get('{start_date?}/{end_date?}', ['uses' => 'Budget\IndexController@index', 'as' => 'index']) Route::get('{start_date?}/{end_date?}', ['uses' => 'Budget\IndexController@index', 'as' => 'index'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -265,8 +272,9 @@ Route::group(
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'budget-limits', 'as' => 'budget-limits.'], ['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'budget-limits', 'as' => 'budget-limits.'],
static function (): void { static function (): void {
Route::get('create/{budget}/{start_date}/{end_date}', ['uses' => 'Budget\BudgetLimitController@create', 'as' => 'create']) Route::get('create/{budget}/{start_date}/{end_date}', ['uses' => 'Budget\BudgetLimitController@create', 'as' => 'create'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::post('store', ['uses' => 'Budget\BudgetLimitController@store', 'as' => 'store']); Route::post('store', ['uses' => 'Budget\BudgetLimitController@store', 'as' => 'store']);
Route::post('delete/{budgetLimit}', ['uses' => 'Budget\BudgetLimitController@delete', 'as' => 'delete']); Route::post('delete/{budgetLimit}', ['uses' => 'Budget\BudgetLimitController@delete', 'as' => 'delete']);
@@ -297,14 +305,16 @@ Route::group(
// show category: // show category:
Route::get('show/{category}/all', ['uses' => 'Category\ShowController@showAll', 'as' => 'show.all']); Route::get('show/{category}/all', ['uses' => 'Category\ShowController@showAll', 'as' => 'show.all']);
Route::get('show/{category}/{start_date?}/{end_date?}', ['uses' => 'Category\ShowController@show', 'as' => 'show']) Route::get('show/{category}/{start_date?}/{end_date?}', ['uses' => 'Category\ShowController@show', 'as' => 'show'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// no category controller: // no category controller:
Route::get('list/no-category/all', ['uses' => 'Category\NoCategoryController@showAll', 'as' => 'no-category.all']); Route::get('list/no-category/all', ['uses' => 'Category\NoCategoryController@showAll', 'as' => 'no-category.all']);
Route::get('list/no-category/{start_date?}/{end_date?}', ['uses' => 'Category\NoCategoryController@show', 'as' => 'no-category']) Route::get('list/no-category/{start_date?}/{end_date?}', ['uses' => 'Category\NoCategoryController@show', 'as' => 'no-category'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -331,25 +341,30 @@ Route::group(
Route::get('expense', ['uses' => 'AccountController@expenseAccounts', 'as' => 'expense']); Route::get('expense', ['uses' => 'AccountController@expenseAccounts', 'as' => 'expense']);
Route::get('revenue', ['uses' => 'AccountController@revenueAccounts', 'as' => 'revenue']); Route::get('revenue', ['uses' => 'AccountController@revenueAccounts', 'as' => 'revenue']);
Route::get('report/{accountList}/{start_date}/{end_date}', ['uses' => 'AccountController@report', 'as' => 'report']) Route::get('report/{accountList}/{start_date}/{end_date}', ['uses' => 'AccountController@report', 'as' => 'report'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('period/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@period', 'as' => 'period']) Route::get('period/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@period', 'as' => 'period'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('income-category/{account}/all/all', ['uses' => 'AccountController@incomeCategoryAll', 'as' => 'income-category-all']); Route::get('income-category/{account}/all/all', ['uses' => 'AccountController@incomeCategoryAll', 'as' => 'income-category-all']);
Route::get('expense-category/{account}/all/all', ['uses' => 'AccountController@expenseCategoryAll', 'as' => 'expense-category-all']); Route::get('expense-category/{account}/all/all', ['uses' => 'AccountController@expenseCategoryAll', 'as' => 'expense-category-all']);
Route::get('expense-budget/{account}/all/all', ['uses' => 'AccountController@expenseBudgetAll', 'as' => 'expense-budget-all']); Route::get('expense-budget/{account}/all/all', ['uses' => 'AccountController@expenseBudgetAll', 'as' => 'expense-budget-all']);
Route::get('income-category/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@incomeCategory', 'as' => 'income-category']) Route::get('income-category/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@incomeCategory', 'as' => 'income-category'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('expense-category/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@expenseCategory', 'as' => 'expense-category']) Route::get('expense-category/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@expenseCategory', 'as' => 'expense-category'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('expense-budget/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@expenseBudget', 'as' => 'expense-budget']) Route::get('expense-budget/{account}/{start_date}/{end_date}', ['uses' => 'AccountController@expenseBudget', 'as' => 'expense-budget'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -368,11 +383,13 @@ Route::group(
static function (): void { static function (): void {
Route::get('frontpage', ['uses' => 'BudgetController@frontpage', 'as' => 'frontpage']); Route::get('frontpage', ['uses' => 'BudgetController@frontpage', 'as' => 'frontpage']);
Route::get('period/0/{currency}/{accountList}/{start_date}/{end_date}', ['uses' => 'BudgetController@periodNoBudget', 'as' => 'period.no-budget']) Route::get('period/0/{currency}/{accountList}/{start_date}/{end_date}', ['uses' => 'BudgetController@periodNoBudget', 'as' => 'period.no-budget'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('period/{budget}/{currency}/{accountList}/{start_date}/{end_date}', ['uses' => 'BudgetController@period', 'as' => 'period']) Route::get('period/{budget}/{currency}/{accountList}/{start_date}/{end_date}', ['uses' => 'BudgetController@period', 'as' => 'period'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('budget/{budget}/{budgetLimit}', ['uses' => 'BudgetController@budgetLimit', 'as' => 'budget-limit']); Route::get('budget/{budget}/{budgetLimit}', ['uses' => 'BudgetController@budgetLimit', 'as' => 'budget-limit']);
Route::get('budget/{budget}', ['uses' => 'BudgetController@budget', 'as' => 'budget']); Route::get('budget/{budget}', ['uses' => 'BudgetController@budget', 'as' => 'budget']);
@@ -386,23 +403,27 @@ Route::group(
'category/expense/{accountList}/{budgetList}/{start_date}/{end_date}', 'category/expense/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetReportController@categoryExpense', 'as' => 'category-expense'] ['uses' => 'BudgetReportController@categoryExpense', 'as' => 'category-expense']
) )
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'budget/expense/{accountList}/{budgetList}/{start_date}/{end_date}', 'budget/expense/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetReportController@budgetExpense', 'as' => 'budget-expense'] ['uses' => 'BudgetReportController@budgetExpense', 'as' => 'budget-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'source-account/expense/{accountList}/{budgetList}/{start_date}/{end_date}', 'source-account/expense/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetReportController@sourceAccountExpense', 'as' => 'source-account-expense'] ['uses' => 'BudgetReportController@sourceAccountExpense', 'as' => 'source-account-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'destination-account/expense/{accountList}/{budgetList}/{start_date}/{end_date}', 'destination-account/expense/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetReportController@destinationAccountExpense', 'as' => 'destination-account-expense'] ['uses' => 'BudgetReportController@destinationAccountExpense', 'as' => 'destination-account-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('operations/{accountList}/{budget}/{start_date}/{end_date}', ['uses' => 'BudgetReportController@mainChart', 'as' => 'main']); Route::get('operations/{accountList}/{budget}/{start_date}/{end_date}', ['uses' => 'BudgetReportController@mainChart', 'as' => 'main']);
} }
); );
@@ -419,51 +440,61 @@ Route::group(
'report-period/0/{accountList}/{start_date}/{end_date}', 'report-period/0/{accountList}/{start_date}/{end_date}',
['uses' => 'CategoryController@reportPeriodNoCategory', 'as' => 'period.no-category'] ['uses' => 'CategoryController@reportPeriodNoCategory', 'as' => 'period.no-category']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('report-period/{category}/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@reportPeriod', 'as' => 'period'])->where( Route::get('report-period/{category}/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@reportPeriod', 'as' => 'period'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'category/expense/{accountList}/{categoryList}/{start_date}/{end_date}', 'category/expense/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@categoryExpense', 'as' => 'category-expense'] ['uses' => 'CategoryReportController@categoryExpense', 'as' => 'category-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'category/income/{accountList}/{categoryList}/{start_date}/{end_date}', 'category/income/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@categoryIncome', 'as' => 'category-income'] ['uses' => 'CategoryReportController@categoryIncome', 'as' => 'category-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'budget/expense/{accountList}/{categoryList}/{start_date}/{end_date}', 'budget/expense/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@budgetExpense', 'as' => 'budget-expense'] ['uses' => 'CategoryReportController@budgetExpense', 'as' => 'budget-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'source/expense/{accountList}/{categoryList}/{start_date}/{end_date}', 'source/expense/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@sourceExpense', 'as' => 'source-expense'] ['uses' => 'CategoryReportController@sourceExpense', 'as' => 'source-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'source/income/{accountList}/{categoryList}/{start_date}/{end_date}', 'source/income/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@sourceIncome', 'as' => 'source-income'] ['uses' => 'CategoryReportController@sourceIncome', 'as' => 'source-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'dest/expense/{accountList}/{categoryList}/{start_date}/{end_date}', 'dest/expense/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@destinationExpense', 'as' => 'dest-expense'] ['uses' => 'CategoryReportController@destinationExpense', 'as' => 'dest-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'dest/income/{accountList}/{categoryList}/{start_date}/{end_date}', 'dest/income/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryReportController@destinationIncome', 'as' => 'dest-income'] ['uses' => 'CategoryReportController@destinationIncome', 'as' => 'dest-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('operations/{accountList}/{category}/{start_date}/{end_date}', ['uses' => 'CategoryReportController@mainChart', 'as' => 'main'])->where( Route::get('operations/{accountList}/{category}/{start_date}/{end_date}', ['uses' => 'CategoryReportController@mainChart', 'as' => 'main'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -472,52 +503,62 @@ Route::group(
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers\Chart', 'prefix' => 'chart/tag', 'as' => 'chart.tag.'], ['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers\Chart', 'prefix' => 'chart/tag', 'as' => 'chart.tag.'],
static function (): void { static function (): void {
Route::get('tag/expense/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagReportController@tagExpense', 'as' => 'tag-expense']) Route::get('tag/expense/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagReportController@tagExpense', 'as' => 'tag-expense'])
->where(['start_date' => DATEFORMAT]) ->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('tag/income/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagReportController@tagIncome', 'as' => 'tag-income'])->where( Route::get('tag/income/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagReportController@tagIncome', 'as' => 'tag-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'category/expense/{accountList}/{tagList}/{start_date}/{end_date}', 'category/expense/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@categoryExpense', 'as' => 'category-expense'] ['uses' => 'TagReportController@categoryExpense', 'as' => 'category-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'category/income/{accountList}/{tagList}/{start_date}/{end_date}', 'category/income/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@categoryIncome', 'as' => 'category-income'] ['uses' => 'TagReportController@categoryIncome', 'as' => 'category-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'budget/expense/{accountList}/{tagList}/{start_date}/{end_date}', 'budget/expense/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@budgetExpense', 'as' => 'budget-expense'] ['uses' => 'TagReportController@budgetExpense', 'as' => 'budget-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'source/expense/{accountList}/{tagList}/{start_date}/{end_date}', 'source/expense/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@sourceExpense', 'as' => 'source-expense'] ['uses' => 'TagReportController@sourceExpense', 'as' => 'source-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'source/income/{accountList}/{tagList}/{start_date}/{end_date}', 'source/income/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@sourceIncome', 'as' => 'source-income'] ['uses' => 'TagReportController@sourceIncome', 'as' => 'source-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'dest/expense/{accountList}/{tagList}/{start_date}/{end_date}', 'dest/expense/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@destinationExpense', 'as' => 'dest-expense'] ['uses' => 'TagReportController@destinationExpense', 'as' => 'dest-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'dest/income/{accountList}/{tagList}/{start_date}/{end_date}', 'dest/income/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagReportController@destinationIncome', 'as' => 'dest-income'] ['uses' => 'TagReportController@destinationIncome', 'as' => 'dest-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('operations/{accountList}/{tag}/{start_date}/{end_date}', ['uses' => 'TagReportController@mainChart', 'as' => 'main'])->where( Route::get('operations/{accountList}/{tag}/{start_date}/{end_date}', ['uses' => 'TagReportController@mainChart', 'as' => 'main'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -528,34 +569,40 @@ Route::group(
Route::get('main/{accountList}/{account}/{start_date}/{end_date}', ['uses' => 'DoubleReportController@mainChart', 'as' => 'main'])->where( Route::get('main/{accountList}/{account}/{start_date}/{end_date}', ['uses' => 'DoubleReportController@mainChart', 'as' => 'main'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'category/expense/{accountList}/{doubleList}/{start_date}/{end_date}', 'category/expense/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleReportController@categoryExpense', 'as' => 'category-expense'] ['uses' => 'DoubleReportController@categoryExpense', 'as' => 'category-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'category/income/{accountList}/{doubleList}/{start_date}/{end_date}', 'category/income/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleReportController@categoryIncome', 'as' => 'category-income'] ['uses' => 'DoubleReportController@categoryIncome', 'as' => 'category-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'budget/expense/{accountList}/{doubleList}/{start_date}/{end_date}', 'budget/expense/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleReportController@budgetExpense', 'as' => 'budget-expense'] ['uses' => 'DoubleReportController@budgetExpense', 'as' => 'budget-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'tag/expense/{accountList}/{doubleList}/{start_date}/{end_date}', 'tag/expense/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleReportController@tagExpense', 'as' => 'tag-expense'] ['uses' => 'DoubleReportController@tagExpense', 'as' => 'tag-expense']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'tag/income/{accountList}/{doubleList}/{start_date}/{end_date}', 'tag/income/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleReportController@tagIncome', 'as' => 'tag-income'] ['uses' => 'DoubleReportController@tagIncome', 'as' => 'tag-income']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -574,11 +621,13 @@ Route::group(
Route::get('operations/{accountList}/{start_date}/{end_date}', ['uses' => 'ReportController@operations', 'as' => 'operations'])->where( Route::get('operations/{accountList}/{start_date}/{end_date}', ['uses' => 'ReportController@operations', 'as' => 'operations'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('net-worth/{accountList}/{start_date}/{end_date}/', ['uses' => 'ReportController@netWorth', 'as' => 'net-worth'])->where( Route::get('net-worth/{accountList}/{start_date}/{end_date}/', ['uses' => 'ReportController@netWorth', 'as' => 'net-worth'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -589,18 +638,22 @@ Route::group(
Route::get('categories/{objectType}/{start_date}/{end_date}', ['uses' => 'TransactionController@categories', 'as' => 'categories'])->where( Route::get('categories/{objectType}/{start_date}/{end_date}', ['uses' => 'TransactionController@categories', 'as' => 'categories'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('budgets/{start_date}/{end_date}', ['uses' => 'TransactionController@budgets', 'as' => 'budgets'])->where(['start_date' => DATEFORMAT]) Route::get('budgets/{start_date}/{end_date}', ['uses' => 'TransactionController@budgets', 'as' => 'budgets'])->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'destinationAccounts/{objectType}/{start_date}/{end_date}', 'destinationAccounts/{objectType}/{start_date}/{end_date}',
['uses' => 'TransactionController@destinationAccounts', 'as' => 'destinationAccounts'] ['uses' => 'TransactionController@destinationAccounts', 'as' => 'destinationAccounts']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('sourceAccounts/{objectType}/{start_date}/{end_date}', ['uses' => 'TransactionController@sourceAccounts', 'as' => 'sourceAccounts'])->where( Route::get('sourceAccounts/{objectType}/{start_date}/{end_date}', ['uses' => 'TransactionController@sourceAccounts', 'as' => 'sourceAccounts'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -658,7 +711,8 @@ Route::group(
'budget/total-budgeted/{currency}/{start_date}/{end_date}', 'budget/total-budgeted/{currency}/{start_date}/{end_date}',
['uses' => 'Json\BudgetController@getBudgetInformation', 'as' => 'budget.total-budgeted'] ['uses' => 'Json\BudgetController@getBudgetInformation', 'as' => 'budget.total-budgeted']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// boxes // boxes
Route::get('box/balance', ['uses' => 'Json\BoxController@balance', 'as' => 'box.balance']); Route::get('box/balance', ['uses' => 'Json\BoxController@balance', 'as' => 'box.balance']);
Route::get('box/available', ['uses' => 'Json\BoxController@available', 'as' => 'box.available']); Route::get('box/available', ['uses' => 'Json\BoxController@available', 'as' => 'box.available']);
@@ -798,7 +852,8 @@ Route::group(
Route::get('general/{accountList}/{start_date}/{end_date}', ['uses' => 'AccountController@general', 'as' => 'general'])->where( Route::get('general/{accountList}/{start_date}/{end_date}', ['uses' => 'AccountController@general', 'as' => 'general'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -809,7 +864,8 @@ Route::group(
Route::get('overview/{accountList}/{start_date}/{end_date}', ['uses' => 'BillController@overview', 'as' => 'overview'])->where( Route::get('overview/{accountList}/{start_date}/{end_date}', ['uses' => 'BillController@overview', 'as' => 'overview'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -821,32 +877,38 @@ Route::group(
Route::get('operations/{accountList}/{doubleList}/{start_date}/{end_date}', ['uses' => 'DoubleController@operations', 'as' => 'operations'])->where( Route::get('operations/{accountList}/{doubleList}/{start_date}/{end_date}', ['uses' => 'DoubleController@operations', 'as' => 'operations'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'ops-asset/{accountList}/{doubleList}/{start_date}/{end_date}', 'ops-asset/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleController@operationsPerAsset', 'as' => 'ops-asset'] ['uses' => 'DoubleController@operationsPerAsset', 'as' => 'ops-asset']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'top-expenses/{accountList}/{doubleList}/{start_date}/{end_date}', 'top-expenses/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleController@topExpenses', 'as' => 'top-expenses'] ['uses' => 'DoubleController@topExpenses', 'as' => 'top-expenses']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'avg-expenses/{accountList}/{doubleList}/{start_date}/{end_date}', 'avg-expenses/{accountList}/{doubleList}/{start_date}/{end_date}',
['uses' => 'DoubleController@avgExpenses', 'as' => 'avg-expenses'] ['uses' => 'DoubleController@avgExpenses', 'as' => 'avg-expenses']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('top-income/{accountList}/{doubleList}/{start_date}/{end_date}', ['uses' => 'DoubleController@topIncome', 'as' => 'top-income'])->where( Route::get('top-income/{accountList}/{doubleList}/{start_date}/{end_date}', ['uses' => 'DoubleController@topIncome', 'as' => 'top-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('avg-income/{accountList}/{doubleList}/{start_date}/{end_date}', ['uses' => 'DoubleController@avgIncome', 'as' => 'avg-income'])->where( Route::get('avg-income/{accountList}/{doubleList}/{start_date}/{end_date}', ['uses' => 'DoubleController@avgIncome', 'as' => 'avg-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -862,15 +924,18 @@ Route::group(
Route::get('operations/{accountList}/{start_date}/{end_date}', ['uses' => 'OperationsController@operations', 'as' => 'operations'])->where( Route::get('operations/{accountList}/{start_date}/{end_date}', ['uses' => 'OperationsController@operations', 'as' => 'operations'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('income/{accountList}/{start_date}/{end_date}', ['uses' => 'OperationsController@income', 'as' => 'income'])->where( Route::get('income/{accountList}/{start_date}/{end_date}', ['uses' => 'OperationsController@income', 'as' => 'income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('expenses/{accountList}/{start_date}/{end_date}', ['uses' => 'OperationsController@expenses', 'as' => 'expenses'])->where( Route::get('expenses/{accountList}/{start_date}/{end_date}', ['uses' => 'OperationsController@expenses', 'as' => 'expenses'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -887,49 +952,59 @@ Route::group(
Route::get('operations/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@operations', 'as' => 'operations'])->where( Route::get('operations/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@operations', 'as' => 'operations'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('income/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@income', 'as' => 'income'])->where( Route::get('income/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@income', 'as' => 'income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('expenses/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@expenses', 'as' => 'expenses'])->where( Route::get('expenses/{accountList}/{start_date}/{end_date}', ['uses' => 'CategoryController@expenses', 'as' => 'expenses'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('accounts/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@accounts', 'as' => 'accounts'])->where( Route::get('accounts/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@accounts', 'as' => 'accounts'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('categories/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@categories', 'as' => 'categories'])->where( Route::get('categories/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@categories', 'as' => 'categories'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'account-per-category/{accountList}/{categoryList}/{start_date}/{end_date}', 'account-per-category/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryController@accountPerCategory', 'as' => 'account-per-category'] ['uses' => 'CategoryController@accountPerCategory', 'as' => 'account-per-category']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'top-expenses/{accountList}/{categoryList}/{start_date}/{end_date}', 'top-expenses/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryController@topExpenses', 'as' => 'top-expenses'] ['uses' => 'CategoryController@topExpenses', 'as' => 'top-expenses']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'avg-expenses/{accountList}/{categoryList}/{start_date}/{end_date}', 'avg-expenses/{accountList}/{categoryList}/{start_date}/{end_date}',
['uses' => 'CategoryController@avgExpenses', 'as' => 'avg-expenses'] ['uses' => 'CategoryController@avgExpenses', 'as' => 'avg-expenses']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('top-income/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@topIncome', 'as' => 'top-income'])->where( Route::get('top-income/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@topIncome', 'as' => 'top-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('avg-income/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@avgIncome', 'as' => 'avg-income'])->where( Route::get('avg-income/{accountList}/{categoryList}/{start_date}/{end_date}', ['uses' => 'CategoryController@avgIncome', 'as' => 'avg-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -945,34 +1020,41 @@ Route::group(
Route::get('accounts/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@accounts', 'as' => 'accounts'])->where( Route::get('accounts/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@accounts', 'as' => 'accounts'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('tags/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@tags', 'as' => 'tags'])->where( Route::get('tags/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@tags', 'as' => 'tags'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'account-per-tag/{accountList}/{tagList}/{start_date}/{end_date}', 'account-per-tag/{accountList}/{tagList}/{start_date}/{end_date}',
['uses' => 'TagController@accountPerTag', 'as' => 'account-per-tag'] ['uses' => 'TagController@accountPerTag', 'as' => 'account-per-tag']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('top-expenses/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@topExpenses', 'as' => 'top-expenses'])->where( Route::get('top-expenses/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@topExpenses', 'as' => 'top-expenses'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('avg-expenses/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@avgExpenses', 'as' => 'avg-expenses'])->where( Route::get('avg-expenses/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@avgExpenses', 'as' => 'avg-expenses'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('top-income/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@topIncome', 'as' => 'top-income'])->where( Route::get('top-income/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@topIncome', 'as' => 'top-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('avg-income/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@avgIncome', 'as' => 'avg-income'])->where( Route::get('avg-income/{accountList}/{tagList}/{start_date}/{end_date}', ['uses' => 'TagController@avgIncome', 'as' => 'avg-income'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -983,7 +1065,8 @@ Route::group(
Route::get('general/{accountList}/{start_date}/{end_date}', ['uses' => 'BalanceController@general', 'as' => 'general'])->where( Route::get('general/{accountList}/{start_date}/{end_date}', ['uses' => 'BalanceController@general', 'as' => 'general'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -994,34 +1077,41 @@ Route::group(
Route::get('general/{accountList}/{start_date}/{end_date}/', ['uses' => 'BudgetController@general', 'as' => 'general'])->where( Route::get('general/{accountList}/{start_date}/{end_date}/', ['uses' => 'BudgetController@general', 'as' => 'general'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// TODO is route still used? // TODO is route still used?
Route::get('period/{accountList}/{start_date}/{end_date}', ['uses' => 'BudgetController@period', 'as' => 'period'])->where(['start_date' => DATEFORMAT]) Route::get('period/{accountList}/{start_date}/{end_date}', ['uses' => 'BudgetController@period', 'as' => 'period'])->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('accounts/{accountList}/{budgetList}/{start_date}/{end_date}', ['uses' => 'BudgetController@accounts', 'as' => 'accounts'])->where( Route::get('accounts/{accountList}/{budgetList}/{start_date}/{end_date}', ['uses' => 'BudgetController@accounts', 'as' => 'accounts'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('budgets/{accountList}/{budgetList}/{start_date}/{end_date}', ['uses' => 'BudgetController@budgets', 'as' => 'budgets'])->where( Route::get('budgets/{accountList}/{budgetList}/{start_date}/{end_date}', ['uses' => 'BudgetController@budgets', 'as' => 'budgets'])->where(
['start_date' => DATEFORMAT] ['start_date' => DATEFORMAT]
) )
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'account-per-budget/{accountList}/{budgetList}/{start_date}/{end_date}', 'account-per-budget/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetController@accountPerBudget', 'as' => 'account-per-budget'] ['uses' => 'BudgetController@accountPerBudget', 'as' => 'account-per-budget']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'top-expenses/{accountList}/{budgetList}/{start_date}/{end_date}', 'top-expenses/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetController@topExpenses', 'as' => 'top-expenses'] ['uses' => 'BudgetController@topExpenses', 'as' => 'top-expenses']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get( Route::get(
'avg-expenses/{accountList}/{budgetList}/{start_date}/{end_date}', 'avg-expenses/{accountList}/{budgetList}/{start_date}/{end_date}',
['uses' => 'BudgetController@avgExpenses', 'as' => 'avg-expenses'] ['uses' => 'BudgetController@avgExpenses', 'as' => 'avg-expenses']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
} }
); );
@@ -1094,7 +1184,8 @@ Route::group(
Route::get('show/{tagOrId}/all', ['uses' => 'TagController@showAll', 'as' => 'show.all']); Route::get('show/{tagOrId}/all', ['uses' => 'TagController@showAll', 'as' => 'show.all']);
Route::get('show/{tagOrId}/{start_date?}/{end_date?}', ['uses' => 'TagController@show', 'as' => 'show'])->where(['start_date' => DATEFORMAT]) Route::get('show/{tagOrId}/{start_date?}/{end_date?}', ['uses' => 'TagController@show', 'as' => 'show'])->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
Route::get('edit/{tag}', ['uses' => 'TagController@edit', 'as' => 'edit']); Route::get('edit/{tag}', ['uses' => 'TagController@edit', 'as' => 'edit']);
Route::get('delete/{tag}', ['uses' => 'TagController@delete', 'as' => 'delete']); Route::get('delete/{tag}', ['uses' => 'TagController@delete', 'as' => 'delete']);
@@ -1119,7 +1210,8 @@ Route::group(
Route::get('{objectType}/{start_date?}/{end_date?}', ['uses' => 'Transaction\IndexController@index', 'as' => 'index'])->where( Route::get('{objectType}/{start_date?}/{end_date?}', ['uses' => 'Transaction\IndexController@index', 'as' => 'index'])->where(
['objectType' => 'withdrawal|deposit|transfers|transfer|all'] ['objectType' => 'withdrawal|deposit|transfers|transfer|all']
)->where(['start_date' => DATEFORMAT]) )->where(['start_date' => DATEFORMAT])
->where(['end_date' => DATEFORMAT]); ->where(['end_date' => DATEFORMAT])
;
// create group: // create group:
Route::get('create/{objectType}', ['uses' => 'Transaction\CreateController@create', 'as' => 'create']); Route::get('create/{objectType}', ['uses' => 'Transaction\CreateController@create', 'as' => 'create']);