mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-05 12:12:18 +00:00
Update meta files for new release.
This commit is contained in:
12
.ci/php-cs-fixer/composer.lock
generated
12
.ci/php-cs-fixer/composer.lock
generated
@@ -226,16 +226,16 @@
|
||||
},
|
||||
{
|
||||
"name": "friendsofphp/php-cs-fixer",
|
||||
"version": "v3.36.0",
|
||||
"version": "v3.37.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
||||
"reference": "e889301f276c6ce2c391d6aafae9a162e785b064"
|
||||
"reference": "d5ccc3807fd496ac2b448e8e5e57aa0772f0d18b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/e889301f276c6ce2c391d6aafae9a162e785b064",
|
||||
"reference": "e889301f276c6ce2c391d6aafae9a162e785b064",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d5ccc3807fd496ac2b448e8e5e57aa0772f0d18b",
|
||||
"reference": "d5ccc3807fd496ac2b448e8e5e57aa0772f0d18b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -307,7 +307,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.36.0"
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.37.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -315,7 +315,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-27T10:12:29+00:00"
|
||||
"time": "2023-10-28T14:49:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
|
@@ -1,4 +1,25 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* IndexController.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Api\V2\Controllers\Model\Currency;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* UpgradeCurrencyPreferences.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Console\Commands\Upgrade;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* CreateController.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Controllers\TransactionCurrency;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* DeleteController.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Controllers\TransactionCurrency;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* EditController.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Controllers\TransactionCurrency;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* IndexController.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Controllers\TransactionCurrency;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* CurrencyRepository.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Repositories\UserGroups\Currency;
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* CurrencyRepositoryInterface.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Repositories\UserGroups\Currency;
|
||||
|
@@ -126,25 +126,12 @@ class Amount
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
*
|
||||
* @deprecated use getDefaultCurrencyByUserGroup instead.
|
||||
* @return TransactionCurrency
|
||||
*/
|
||||
public function getDefaultCurrencyByUser(User $user): TransactionCurrency
|
||||
{
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty('getDefaultCurrency');
|
||||
$cache->addProperty($user->id);
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
}
|
||||
$default = $user->currencies()->where('user_default', true)->first();
|
||||
if (null === $default) {
|
||||
$default = $this->getSystemCurrency();
|
||||
$user->currencies()->sync([$default->id => ['user_default' => true]]);
|
||||
}
|
||||
$cache->store($default);
|
||||
|
||||
return $default;
|
||||
return $this->getDefaultCurrencyByUserGroup($user->userGroup);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -58,7 +58,8 @@ class BillTransformer extends AbstractTransformer
|
||||
public function transform(Bill $bill): array
|
||||
{
|
||||
$paidData = $this->paidData($bill);
|
||||
$payDates = $this->payDates($bill);
|
||||
$lastPaidDate = $this->getLastPaidDate($paidData);
|
||||
$payDates = $this->payDates($bill, $lastPaidDate);
|
||||
$currency = $bill->transactionCurrency;
|
||||
$notes = $this->repository->getNoteText($bill);
|
||||
$notes = '' === $notes ? null : $notes;
|
||||
@@ -86,8 +87,8 @@ class BillTransformer extends AbstractTransformer
|
||||
$payDatesFormatted[] = Carbon::createFromFormat('!Y-m-d', $string, config('app.timezone'))->toAtomString();
|
||||
}
|
||||
$nextExpectedMatch = null;
|
||||
if (null !== $paidData['next_expected_match']) {
|
||||
$nextExpectedMatch = Carbon::createFromFormat('!Y-m-d', $paidData['next_expected_match'], config('app.timezone'))->toAtomString();
|
||||
if (null !== ($payDates[0] ?? null)) {
|
||||
$nextExpectedMatch = Carbon::createFromFormat('!Y-m-d', $payDates[0], config('app.timezone'))->toAtomString();
|
||||
}
|
||||
$nextExpectedMatchDiff = trans('firefly.not_expected_period');
|
||||
// converting back and forth is bad code but OK.
|
||||
@@ -182,31 +183,6 @@ class BillTransformer extends AbstractTransformer
|
||||
$lastPaidDate = $this->lastPaidDate($set, $start);
|
||||
app('log')->debug(sprintf('Result of lastPaidDate is %s', $lastPaidDate->format('Y-m-d')));
|
||||
|
||||
/*
|
||||
* The next expected match (nextMatch) is, initially, the bill's date.
|
||||
*/
|
||||
$nextMatch = clone $bill->date;
|
||||
/*
|
||||
* Diff in months (or other period) between bill start and last paid date or $start.
|
||||
*/
|
||||
$steps = app('navigation')->diffInPeriods($bill->repeat_freq, $bill->skip, $start, $nextMatch);
|
||||
$nextMatch = app('navigation')->addPeriod($nextMatch, $bill->repeat_freq, $steps);
|
||||
|
||||
if ($nextMatch->lt($lastPaidDate)) {
|
||||
/*
|
||||
* Add another period because it's before the last paid date
|
||||
*/
|
||||
app('log')->debug('Because the last paid date was before our next expected match, add another period.');
|
||||
$nextMatch = app('navigation')->addPeriod($nextMatch, $bill->repeat_freq, $bill->skip);
|
||||
}
|
||||
|
||||
if ($nextMatch->isSameDay($lastPaidDate)) {
|
||||
/*
|
||||
* Add another period because it's the same day as the last paid date.
|
||||
*/
|
||||
app('log')->debug('Because the last paid date was on the same day as our next expected match, add another day.');
|
||||
$nextMatch = app('navigation')->addPeriod($nextMatch, $bill->repeat_freq, $bill->skip);
|
||||
}
|
||||
/*
|
||||
* At this point the "next match" is exactly after the last time the bill was paid.
|
||||
*/
|
||||
@@ -219,11 +195,8 @@ class BillTransformer extends AbstractTransformer
|
||||
];
|
||||
}
|
||||
|
||||
app('log')->debug(sprintf('Next match: %s', $nextMatch->toIso8601String()));
|
||||
|
||||
return [
|
||||
'paid_dates' => $result,
|
||||
'next_expected_match' => $nextMatch->format('Y-m-d'),
|
||||
'paid_dates' => $result
|
||||
];
|
||||
}
|
||||
|
||||
@@ -253,12 +226,13 @@ class BillTransformer extends AbstractTransformer
|
||||
|
||||
/**
|
||||
* @param Bill $bill
|
||||
* @param Carbon $lastPaidDate
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function payDates(Bill $bill): array
|
||||
protected function payDates(Bill $bill, ?Carbon $lastPaidDate): array
|
||||
{
|
||||
app('log')->debug(sprintf('Now in payDates() for bill #%d', $bill->id));
|
||||
app('log')->debug(sprintf('Now in payDates(#%d, "%s")', $bill->id, $lastPaidDate?->format('Y-m-d')));
|
||||
if (null === $this->parameters->get('start') || null === $this->parameters->get('end')) {
|
||||
app('log')->debug('No start or end date, give empty array.');
|
||||
|
||||
@@ -303,7 +277,11 @@ class BillTransformer extends AbstractTransformer
|
||||
}
|
||||
app('log')->debug(sprintf('Next expected match is %s', $nextExpectedMatch->format('Y-m-d')));
|
||||
// add to set, if the date is ON or after the start parameter
|
||||
if ($nextExpectedMatch->gte($this->parameters->get('start'))) {
|
||||
// AND date is after last paid date
|
||||
if ($nextExpectedMatch->gte($this->parameters->get('start'))
|
||||
&& (null === $lastPaidDate || $nextExpectedMatch->gt($lastPaidDate))
|
||||
) {
|
||||
app('log')->debug('Add date to set.');
|
||||
$set->push(clone $nextExpectedMatch);
|
||||
}
|
||||
|
||||
@@ -315,7 +293,7 @@ class BillTransformer extends AbstractTransformer
|
||||
|
||||
|
||||
$loop++;
|
||||
if ($loop > 4) {
|
||||
if ($loop > 12) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -359,4 +337,30 @@ class BillTransformer extends AbstractTransformer
|
||||
app('log')->debug(sprintf('Number of steps is %d, result is %s', $steps, $result->format('Y-m-d')));
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $paidData
|
||||
*
|
||||
* @return Carbon|null
|
||||
*/
|
||||
private function getLastPaidDate(array $paidData): ?Carbon
|
||||
{
|
||||
app('log')->debug('getLastPaidDate()');
|
||||
$return = null;
|
||||
foreach ($paidData['paid_dates'] as $entry) {
|
||||
if (null !== $return) {
|
||||
$current = Carbon::createFromFormat('!Y-m-d', $entry['date'], config('app.timezone'));
|
||||
if ($current->gt($return)) {
|
||||
$return = clone $current;
|
||||
}
|
||||
app('log')->debug(sprintf('Last paid date is: %s', $return->format('Y-m-d')));
|
||||
}
|
||||
if (null === $return) {
|
||||
$return = Carbon::createFromFormat('!Y-m-d', $entry['date'], config('app.timezone'));
|
||||
app('log')->debug(sprintf('Last paid date is: %s', $return->format('Y-m-d')));
|
||||
}
|
||||
}
|
||||
app('log')->debug(sprintf('Last paid date is: "%s"', $return?->format('Y-m-d')));
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
@@ -358,6 +358,8 @@ class BillTransformer extends AbstractTransformer
|
||||
* Given a bill and a date, this method will tell you at which moment this bill expects its next
|
||||
* transaction. Whether or not it is there already, is not relevant.
|
||||
*
|
||||
* TODO this method is bad compared to the v1 one.
|
||||
*
|
||||
* @param Bill $bill
|
||||
* @param Carbon $date
|
||||
*
|
||||
|
28
changelog.md
28
changelog.md
@@ -3,40 +3,36 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## 6.0.28 - 2023-10-28
|
||||
## 6.0.28 - 2023-10-29
|
||||
|
||||
### Added
|
||||
|
||||
- #8076 Clone and edit button
|
||||
- #7204 ability to
|
||||
- [Issue 8076](https://github.com/firefly-iii/firefly-iii/issues/8076) Added a "Clone and edit"-button
|
||||
- [Issue 7204](https://github.com/firefly-iii/firefly-iii/issues/7204) Added the ability to customize the URL protocol types Firefly III accepts
|
||||
- [Issue 8098](https://github.com/firefly-iii/firefly-iii/issues/8098) More tests in the navigation class, thanks @tonicospinelli!
|
||||
|
||||
### Changed
|
||||
|
||||
- New actions for GitHub
|
||||
- Currencies are now linked to users, and can be enabled per user
|
||||
- Refactored upgrade commands
|
||||
- Refactored the Actions of GitHub
|
||||
- The transaction currencies are now linked to users, and can be enabled per user
|
||||
- A few upgrade commands are refactored
|
||||
- You can no longer edit vital parts of reconciled transactions
|
||||
|
||||
### Deprecated
|
||||
|
||||
- Remove old v3 layout.
|
||||
|
||||
### Removed
|
||||
|
||||
- Initial release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Bad math in the order of piggy banks
|
||||
- #8084 @JoSchrader fixed an issue with a duplicate button
|
||||
|
||||
### Security
|
||||
|
||||
- Initial release.
|
||||
- [Issue 8084](https://github.com/firefly-iii/firefly-iii/issues/8084) @JoSchrader fixed an issue with a duplicate button
|
||||
- [Issue 8103](https://github.com/firefly-iii/firefly-iii/issues/8103) Bulk edit would not accept transaction descriptions longer than 255 characters
|
||||
- [Issue 8099](https://github.com/firefly-iii/firefly-iii/issues/8099) The bill index would never skip the number of periods you indicated
|
||||
- [Issue 8069](https://github.com/firefly-iii/firefly-iii/issues/8069) Rule descriptions would always "1" as description. Thanks @Maxco10!
|
||||
|
||||
### API
|
||||
|
||||
- Initial release.
|
||||
- API will no longer accept changes to amount and account fields for reconciled transactions
|
||||
|
||||
## v6.0.27 - 2023-10-16
|
||||
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* 2023_10_21_113213_add_currency_pivot_tables.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
18
package-lock.json
generated
18
package-lock.json
generated
@@ -452,9 +452,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
|
||||
"integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz",
|
||||
"integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.0",
|
||||
@@ -498,9 +498,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/bootstrap5-autocomplete": {
|
||||
"version": "1.1.22",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap5-autocomplete/-/bootstrap5-autocomplete-1.1.22.tgz",
|
||||
"integrity": "sha512-vn4/+j/MmupcfQB9dwoGFadyk3OorxZh2Eyo8YVSBiaJBcaM1u+FYl0lgOCHQWRqN3MXqM4YCebo8xiyFIW/fw=="
|
||||
"version": "1.1.23",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap5-autocomplete/-/bootstrap5-autocomplete-1.1.23.tgz",
|
||||
"integrity": "sha512-jmqk7muFampKGPNzp6ABCAZWB38rfRpUyqx1vqn4Wssj88X1xODQGI+hnPAPGfePIjMLEK0Xhd1Is4kva1PUrg=="
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
@@ -932,9 +932,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.69.4",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz",
|
||||
"integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==",
|
||||
"version": "1.69.5",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",
|
||||
"integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chokidar": ">=3.0.0 <4.0.0",
|
||||
|
1
public/build/assets/create-1321af8a.js
Normal file
1
public/build/assets/create-1321af8a.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"_load-translations-9a154502.js": {
|
||||
"file": "assets/load-translations-9a154502.js",
|
||||
"integrity": "sha384-itMUG9zYhmhBh14Fji0Z+b58lSGbj9NiOxl9TLL5hBuysuuj5MW45/qYEAoQnTuf"
|
||||
"_load-translations-87b32220.js": {
|
||||
"file": "assets/load-translations-87b32220.js",
|
||||
"integrity": "sha384-LUgquSUz4wVrMfbb+2ydJ62mkgPPdNzpRUho5uNkTiYfVX2htuR3SALdplVf/PkK"
|
||||
},
|
||||
"node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf": {
|
||||
"file": "assets/fa-brands-400-003f1154.ttf",
|
||||
@@ -34,22 +34,22 @@
|
||||
"integrity": "sha384-B73JAwYNSgI4rwb14zwxigHgAkg1Ms+j6+9sJoDpiL11+VW5RjQCLfIh0RVoi0h6"
|
||||
},
|
||||
"resources/assets/v2/pages/dashboard/dashboard.js": {
|
||||
"file": "assets/dashboard-daa2fdbe.js",
|
||||
"file": "assets/dashboard-42661760.js",
|
||||
"imports": [
|
||||
"_load-translations-9a154502.js"
|
||||
"_load-translations-87b32220.js"
|
||||
],
|
||||
"isEntry": true,
|
||||
"src": "resources/assets/v2/pages/dashboard/dashboard.js",
|
||||
"integrity": "sha384-nf4KZ2V1EMO9ibJQVNxubCV1Mu6ZBoHiikFCS4qxGDEb8RgVOrHwiPsYz5IBAN/E"
|
||||
"integrity": "sha384-YDUMtay8vqXg8UEhHKPzu4HAobu10REigb/p5ljIF+hGupVods6Vc/wqxUxx0fqy"
|
||||
},
|
||||
"resources/assets/v2/pages/transactions/create.js": {
|
||||
"file": "assets/create-baf83427.js",
|
||||
"file": "assets/create-1321af8a.js",
|
||||
"imports": [
|
||||
"_load-translations-9a154502.js"
|
||||
"_load-translations-87b32220.js"
|
||||
],
|
||||
"isEntry": true,
|
||||
"src": "resources/assets/v2/pages/transactions/create.js",
|
||||
"integrity": "sha384-GOua2oSQz4NG3Qzo673cdZhVsMZflu6vIgRlkZpHK4yqqbpyCoMdLOyQvWUoJpA0"
|
||||
"integrity": "sha384-IhP3MrZwa0yb46MNueQyisca3xFP0rXA14CDqZyFuZTj4SWixSkGcMpjxGIBz6QO"
|
||||
},
|
||||
"resources/assets/v2/sass/app.scss": {
|
||||
"file": "assets/app-28a195fd.css",
|
||||
|
@@ -24,9 +24,9 @@
|
||||
"expense_account": "Compte de despeses",
|
||||
"revenue_account": "Compte d'ingressos",
|
||||
"budget": "Pressupost",
|
||||
"account_type_Asset account": "Asset account",
|
||||
"account_type_Expense account": "Expense account",
|
||||
"account_type_Revenue account": "Revenue account",
|
||||
"account_type_Asset account": "Compte d'actius",
|
||||
"account_type_Expense account": "Compte de despeses",
|
||||
"account_type_Revenue account": "Compte d'ingressos",
|
||||
"account_type_Debt": "Deute",
|
||||
"account_type_Loan": "Cr\u00e8dit",
|
||||
"account_type_Mortgage": "Hipoteca"
|
||||
|
@@ -24,9 +24,9 @@
|
||||
"expense_account": "Cuenta de gastos",
|
||||
"revenue_account": "Cuenta de ingresos",
|
||||
"budget": "Presupuesto",
|
||||
"account_type_Asset account": "Asset account",
|
||||
"account_type_Expense account": "Expense account",
|
||||
"account_type_Revenue account": "Revenue account",
|
||||
"account_type_Asset account": "Cuenta de activos",
|
||||
"account_type_Expense account": "Cuenta de gastos",
|
||||
"account_type_Revenue account": "Cuenta de ingresos",
|
||||
"account_type_Debt": "Deuda",
|
||||
"account_type_Loan": "Pr\u00e9stamo",
|
||||
"account_type_Mortgage": "Hipoteca"
|
||||
|
@@ -24,9 +24,9 @@
|
||||
"expense_account": "Compte de d\u00e9penses",
|
||||
"revenue_account": "Compte de recettes",
|
||||
"budget": "Budget",
|
||||
"account_type_Asset account": "Asset account",
|
||||
"account_type_Expense account": "Expense account",
|
||||
"account_type_Revenue account": "Revenue account",
|
||||
"account_type_Asset account": "Compte d\u2019actif",
|
||||
"account_type_Expense account": "Compte de d\u00e9penses",
|
||||
"account_type_Revenue account": "Compte de recettes",
|
||||
"account_type_Debt": "Dette",
|
||||
"account_type_Loan": "Pr\u00eat",
|
||||
"account_type_Mortgage": "Pr\u00eat hypoth\u00e9caire"
|
||||
|
@@ -9,7 +9,7 @@
|
||||
"paid": "Pagati",
|
||||
"unpaid": "Da pagare",
|
||||
"default_group_title_name_plain": "ungrouped",
|
||||
"subscriptions_in_group": "Subscriptions in group \"%{title}\"",
|
||||
"subscriptions_in_group": "Abbonamenti nel gruppo \"%{title}\"",
|
||||
"subscr_expected_x_times": "Expect to pay %{amount} %{times} times this period",
|
||||
"overspent": "Speso troppo",
|
||||
"money_flowing_in": "Entrate",
|
||||
|
@@ -24,9 +24,9 @@
|
||||
"expense_account": "\u652f\u51fa\u53e3\u5ea7",
|
||||
"revenue_account": "\u53ce\u5165\u53e3\u5ea7",
|
||||
"budget": "\u4e88\u7b97",
|
||||
"account_type_Asset account": "Asset account",
|
||||
"account_type_Expense account": "Expense account",
|
||||
"account_type_Revenue account": "Revenue account",
|
||||
"account_type_Asset account": "\u8cc7\u7523\u53e3\u5ea7",
|
||||
"account_type_Expense account": "\u652f\u51fa\u53e3\u5ea7",
|
||||
"account_type_Revenue account": "\u53ce\u5165\u53e3\u5ea7",
|
||||
"account_type_Debt": "\u501f\u91d1",
|
||||
"account_type_Loan": "\u30ed\u30fc\u30f3",
|
||||
"account_type_Mortgage": "\u4f4f\u5b85\u30ed\u30fc\u30f3"
|
||||
|
@@ -24,9 +24,9 @@
|
||||
"expense_account": "Conta de despesas",
|
||||
"revenue_account": "Conta de Receitas",
|
||||
"budget": "Or\u00e7amento",
|
||||
"account_type_Asset account": "Asset account",
|
||||
"account_type_Expense account": "Expense account",
|
||||
"account_type_Revenue account": "Revenue account",
|
||||
"account_type_Asset account": "Conta de ativos",
|
||||
"account_type_Expense account": "Conta de despesas",
|
||||
"account_type_Revenue account": "Conta de receitas",
|
||||
"account_type_Debt": "D\u00edvida",
|
||||
"account_type_Loan": "Empr\u00e9stimo",
|
||||
"account_type_Mortgage": "Hipoteca"
|
||||
|
35
resources/assets/v2/api/v2/model/currency/get.js
Normal file
35
resources/assets/v2/api/v2/model/currency/get.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* list.js
|
||||
* Copyright (c) 2022 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {api} from "../../../../boot/axios";
|
||||
import format from "date-fns/format";
|
||||
|
||||
export default class Get {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param params
|
||||
* @returns {Promise<AxiosResponse<any>>}
|
||||
*/
|
||||
list(params) {
|
||||
return api.get('/api/v2/currencies', {params: params});
|
||||
}
|
||||
|
||||
}
|
@@ -28,7 +28,7 @@ export default class Get {
|
||||
* @param params
|
||||
* @returns {Promise<AxiosResponse<any>>}
|
||||
*/
|
||||
get(params) {
|
||||
list(params) {
|
||||
return api.get('/api/v2/piggy-banks', {params: params});
|
||||
}
|
||||
|
||||
|
@@ -28,7 +28,7 @@ export default class Get {
|
||||
* @param params
|
||||
* @returns {Promise<AxiosResponse<any>>}
|
||||
*/
|
||||
get(params) {
|
||||
list(params) {
|
||||
return api.get('/api/v2/subscriptions', {params: params});
|
||||
}
|
||||
|
||||
|
@@ -28,7 +28,7 @@ export default class Get {
|
||||
* @param params
|
||||
* @returns {Promise<AxiosResponse<any>>}
|
||||
*/
|
||||
get(params) {
|
||||
list(params) {
|
||||
return api.get('/api/v2/transactions', {params: params});
|
||||
}
|
||||
}
|
||||
|
@@ -61,7 +61,7 @@ export default () => ({
|
||||
const end = new Date(window.store.get('end'));
|
||||
const cacheKey = getCacheKey(PIGGY_CACHE_KEY, start, end);
|
||||
const getter = new Get();
|
||||
getter.get(params).then((response) => {
|
||||
getter.list(params).then((response) => {
|
||||
apiData = [...apiData, ...response.data.data];
|
||||
if (parseInt(response.data.meta.pagination.total_pages) > params.page) {
|
||||
params.page++;
|
||||
|
@@ -318,7 +318,7 @@ export default () => ({
|
||||
|
||||
//console.log('Downloading page ' + params.page + '...');
|
||||
const getter = new Get();
|
||||
getter.get(params).then((response) => {
|
||||
getter.list(params).then((response) => {
|
||||
transactions = [...transactions, ...response.data.data];
|
||||
//this.drawChart(this.generateOptions(response.data));
|
||||
//this.loading = false;
|
||||
|
@@ -36,7 +36,7 @@ let subscriptionData = {};
|
||||
|
||||
function downloadSubscriptions(params) {
|
||||
const getter = new Get();
|
||||
return getter.get(params)
|
||||
return getter.list(params)
|
||||
// first promise: parse the data:
|
||||
.then((response) => {
|
||||
let data = response.data.data;
|
||||
|
@@ -25,6 +25,7 @@ import {parseFromEntries} from "./shared/parse-from-entries.js";
|
||||
import formatMoney from "../../util/format-money.js";
|
||||
import Autocomplete from "bootstrap5-autocomplete";
|
||||
import Post from "../../api/v2/model/transaction/post.js";
|
||||
import Get from "../../api/v2/model/currency/get.js";
|
||||
import {getVariable} from "../../store/get-variable.js";
|
||||
import {I18n} from "i18n-js";
|
||||
import {loadTranslations} from "../../support/load-translations.js";
|
||||
@@ -45,6 +46,7 @@ let transactions = function () {
|
||||
showErrorMessage: false,
|
||||
entries: [],
|
||||
loadingCurrencies: true,
|
||||
defaultCurrency: {},
|
||||
enabledCurrencies: [],
|
||||
nativeCurrencies: [],
|
||||
foreignCurrencies: [],
|
||||
@@ -52,6 +54,7 @@ let transactions = function () {
|
||||
source: [],
|
||||
destination: [],
|
||||
},
|
||||
errorMessageText: '',
|
||||
detectTransactionType() {
|
||||
const sourceType = this.entries[0].source_account.type ?? 'unknown';
|
||||
const destType = this.entries[0].destination_account.type ?? 'unknown';
|
||||
@@ -129,6 +132,37 @@ let transactions = function () {
|
||||
},
|
||||
loadCurrencies() {
|
||||
console.log('Loading user currencies.');
|
||||
let params = {
|
||||
page: 1,
|
||||
limit: 1337
|
||||
};
|
||||
let getter = new Get();
|
||||
getter.list({}).then((response) => {
|
||||
for(let i in response.data.data) {
|
||||
if(response.data.data.hasOwnProperty(i)) {
|
||||
let current = response.data.data[i];
|
||||
if(current.attributes.enabled) {
|
||||
let obj =
|
||||
|
||||
{
|
||||
id: current.id,
|
||||
name: current.attributes.name,
|
||||
code: current.attributes.code,
|
||||
default: current.attributes.default,
|
||||
symbol: current.attributes.symbol,
|
||||
decimal_places: current.attributes.decimal_places,
|
||||
|
||||
};
|
||||
if(obj.default) {
|
||||
this.defaultCurrency = obj;
|
||||
}
|
||||
this.enabledCurrencies.push(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.loadingCurrencies = false;
|
||||
console.log(this.enabledCurrencies);
|
||||
});
|
||||
},
|
||||
changeSourceAccount(item, ac) {
|
||||
if (typeof item === 'undefined') {
|
||||
@@ -275,7 +309,7 @@ let transactions = function () {
|
||||
this.showErrorMessage = true;
|
||||
// todo create error banner.
|
||||
// todo release form
|
||||
console.error(error);
|
||||
this.errorMessageText = error.response.data.message;
|
||||
});
|
||||
},
|
||||
addSplit() {
|
||||
|
@@ -33,9 +33,16 @@ export function createEmptySplit() {
|
||||
let formatted = format(now, 'yyyy-MM-dd HH:mm');
|
||||
return {
|
||||
description: '',
|
||||
|
||||
// amount information:
|
||||
amount: '',
|
||||
currency_code: 'EUR',
|
||||
|
||||
// source and destination
|
||||
source_account: getAccount(),
|
||||
destination_account: getAccount(),
|
||||
|
||||
// date and time
|
||||
date: formatted
|
||||
};
|
||||
}
|
||||
|
@@ -35,6 +35,7 @@ export function parseFromEntries(entries, transactionType) {
|
||||
current.destination_name = entry.destination_account.name;
|
||||
current.amount = entry.amount;
|
||||
current.date = entry.date;
|
||||
current.currency_code = entry.currency_code;
|
||||
|
||||
// if ID is set:
|
||||
if ('' !== entry.source_account.id.toString()) {
|
||||
|
@@ -17,10 +17,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<template x-if="showErrorMessage">
|
||||
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||||
A simple ERROR alert with <a href="#" class="alert-link">an example link</a>. Give it a
|
||||
click
|
||||
if you like.
|
||||
<div class="alert alert-danger alert-dismissible fade show" role="alert" x-text="errorMessageText">
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -38,7 +35,7 @@
|
||||
type="button" role="tab"
|
||||
:aria-controls="'split-'+index+'-pane'"
|
||||
aria-selected="true">{{ __('firefly.single_split') }} #
|
||||
<span x-text="index"></span>
|
||||
<span x-text="index+1"></span>
|
||||
</button>
|
||||
</li>
|
||||
</template>
|
||||
@@ -125,7 +122,7 @@
|
||||
<i class="fa-solid fa-calendar"></i>
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="datetime-local" class="form-control" id="date_0"
|
||||
<input type="datetime-local" class="form-control" :id="'date_' + index"
|
||||
@change="detectTransactionType"
|
||||
x-model="transaction.date"
|
||||
>
|
||||
@@ -148,16 +145,12 @@
|
||||
<span class="form-control-plaintext"><em class="fa-solid fa-spinner fa-spin"></em></span>
|
||||
</template>
|
||||
<template x-if="!loadingCurrencies">
|
||||
<select class="form-control">
|
||||
<option>
|
||||
Euro
|
||||
</option>
|
||||
<option>
|
||||
Euro
|
||||
</option>
|
||||
<option>
|
||||
Euro
|
||||
</option>
|
||||
<select class="form-control" :id="'currency_code_' + index"
|
||||
x-model="transaction.currency_code"
|
||||
>
|
||||
<template x-for="currency in enabledCurrencies">
|
||||
<option :selected="currency.id == defaultCurrency.id" :label="currency.name" :value="currency.code" x-text="currency.name"></option>
|
||||
</template>
|
||||
</select>
|
||||
</template>
|
||||
</div>
|
||||
|
@@ -22,18 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* V2 API route for TransactionSum API endpoints
|
||||
* TODO what to do with these routes
|
||||
*/
|
||||
//Route::group(
|
||||
// ['namespace' => 'FireflyIII\Api\V2\Controllers\Transaction\Sum', 'prefix' => 'v2/transaction/sum',
|
||||
// 'as' => 'api.v2.transaction.sum.',],
|
||||
// static function () {
|
||||
// Route::get('bills/paid', ['uses' => 'BillController@paid', 'as' => 'bills.paid']);
|
||||
// }
|
||||
//);
|
||||
|
||||
/**
|
||||
* V2 API route for Summary boxes
|
||||
*/
|
||||
@@ -134,7 +122,7 @@ Route::group(
|
||||
'as' => 'api.v2.subscriptions.',
|
||||
],
|
||||
static function () {
|
||||
Route::get('', ['uses' => 'ShowController@index', 'as' => 'index']);
|
||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||
Route::get('{userGroupBill}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||
Route::get('sum/paid', ['uses' => 'SumController@paid', 'as' => 'sum.paid']);
|
||||
Route::get('sum/unpaid', ['uses' => 'SumController@unpaid', 'as' => 'sum.unpaid']);
|
||||
@@ -151,7 +139,21 @@ Route::group(
|
||||
'as' => 'api.v2.piggy-banks.',
|
||||
],
|
||||
static function () {
|
||||
Route::get('', ['uses' => 'ShowController@index', 'as' => 'index']);
|
||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* V2 API route for transaction currencies
|
||||
*/
|
||||
Route::group(
|
||||
[
|
||||
'namespace' => 'FireflyIII\Api\V2\Controllers\Model\Currency',
|
||||
'prefix' => 'v2/currencies',
|
||||
'as' => 'api.v2.currencies.',
|
||||
],
|
||||
static function () {
|
||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||
}
|
||||
);
|
||||
|
||||
@@ -179,12 +181,12 @@ Route::group(
|
||||
'as' => 'api.v2.budgets',
|
||||
],
|
||||
static function () {
|
||||
Route::get('', ['uses' => 'Budget\ListController@index', 'as' => 'index']);
|
||||
Route::get('', ['uses' => 'Budget\IndexController@index', 'as' => 'index']);
|
||||
Route::get('{budget}', ['uses' => 'Budget\ShowController@show', 'as' => 'show']);
|
||||
Route::get('{budget}/limits', ['uses' => 'BudgetLimit\ListController@index', 'as' => 'budget-limits.index']);
|
||||
Route::get('sum/budgeted', ['uses' => 'Budget\ShowController@budgeted', 'as' => 'sum.budgeted']);
|
||||
Route::get('sum/spent', ['uses' => 'Budget\SumController@spent', 'as' => 'sum.spent']);
|
||||
Route::get('{budget}/budgeted', ['uses' => 'Budget\SumController@budgeted', 'as' => 'budget.budgeted']);
|
||||
Route::get('{budget}/limits', ['uses' => 'BudgetLimit\IndexController@index', 'as' => 'budget-limits.index']);
|
||||
Route::get('sum/budgeted', ['uses' => 'Budget\IndexController@budgeted', 'as' => 'sum.budgeted']);
|
||||
Route::get('sum/spent', ['uses' => 'Budget\IndexController@spent', 'as' => 'sum.spent']);
|
||||
Route::get('{budget}/budgeted', ['uses' => 'Budget\ShowController@budgeted', 'as' => 'budget.budgeted']);
|
||||
Route::get('{budget}/spent', ['uses' => 'Budget\ShowController@spent', 'as' => 'budget.spent']);
|
||||
}
|
||||
);
|
||||
@@ -213,7 +215,7 @@ Route::group(
|
||||
'as' => 'api.v2.user-groups.',
|
||||
],
|
||||
static function () {
|
||||
Route::get('', ['uses' => 'ShowController@index', 'as' => 'index']);
|
||||
Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']);
|
||||
Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']);
|
||||
Route::get('{userGroup}', ['uses' => 'ShowController@show', 'as' => 'show']);
|
||||
Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']);
|
||||
|
@@ -1,5 +1,26 @@
|
||||
<?php
|
||||
|
||||
|
||||
/*
|
||||
* NavigationCustomEndOfPeriodTest.php
|
||||
* Copyright (c) 2023 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\integration\Support;
|
||||
|
Reference in New Issue
Block a user