mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-11-30 10:01:51 +00:00
Merge pull request #11290 from firefly-iii/release-1764179030
🤖 Automatically merge the PR into the develop branch.
This commit is contained in:
@@ -75,7 +75,7 @@ class CreateController extends Controller
|
|||||||
$subTitleIcon = 'fa-plus';
|
$subTitleIcon = 'fa-plus';
|
||||||
$request->old('_token');
|
$request->old('_token');
|
||||||
$preFilled = $request->old();
|
$preFilled = $request->old();
|
||||||
if(!array_key_exists('transaction_currency_id', $preFilled)) {
|
if (!array_key_exists('transaction_currency_id', $preFilled)) {
|
||||||
$preFilled['transaction_currency_id'] = $this->primaryCurrency->id;
|
$preFilled['transaction_currency_id'] = $this->primaryCurrency->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,10 +77,10 @@ class Navigation
|
|||||||
|
|
||||||
if (!array_key_exists($repeatFreq, $functionMap)) {
|
if (!array_key_exists($repeatFreq, $functionMap)) {
|
||||||
Log::error(sprintf(
|
Log::error(sprintf(
|
||||||
'The periodicity %s is unknown. Choose one of available periodicity: %s',
|
'The periodicity %s is unknown. Choose one of available periodicity: %s',
|
||||||
$repeatFreq,
|
$repeatFreq,
|
||||||
implode(', ', array_keys($functionMap))
|
implode(', ', array_keys($functionMap))
|
||||||
));
|
));
|
||||||
|
|
||||||
return $theDate;
|
return $theDate;
|
||||||
}
|
}
|
||||||
@@ -93,7 +93,7 @@ class Navigation
|
|||||||
if ($end < $start) {
|
if ($end < $start) {
|
||||||
[$start, $end] = [$end, $start];
|
[$start, $end] = [$end, $start];
|
||||||
}
|
}
|
||||||
$periods = [];
|
$periods = [];
|
||||||
// first, 13 periods of [range]
|
// first, 13 periods of [range]
|
||||||
$loopCount = 0;
|
$loopCount = 0;
|
||||||
$loopDate = clone $end;
|
$loopDate = clone $end;
|
||||||
@@ -151,13 +151,13 @@ class Navigation
|
|||||||
public function diffInPeriods(string $period, int $skip, Carbon $beginning, Carbon $end): int
|
public function diffInPeriods(string $period, int $skip, Carbon $beginning, Carbon $end): int
|
||||||
{
|
{
|
||||||
Log::debug(sprintf(
|
Log::debug(sprintf(
|
||||||
'diffInPeriods: %s (skip: %d), between %s and %s.',
|
'diffInPeriods: %s (skip: %d), between %s and %s.',
|
||||||
$period,
|
$period,
|
||||||
$skip,
|
$skip,
|
||||||
$beginning->format('Y-m-d'),
|
$beginning->format('Y-m-d'),
|
||||||
$end->format('Y-m-d')
|
$end->format('Y-m-d')
|
||||||
));
|
));
|
||||||
$map = [
|
$map = [
|
||||||
'daily' => 'diffInDays',
|
'daily' => 'diffInDays',
|
||||||
'weekly' => 'diffInWeeks',
|
'weekly' => 'diffInWeeks',
|
||||||
'monthly' => 'diffInMonths',
|
'monthly' => 'diffInMonths',
|
||||||
@@ -170,7 +170,7 @@ class Navigation
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
$func = $map[$period];
|
$func = $map[$period];
|
||||||
// first do the diff
|
// first do the diff
|
||||||
$floatDiff = $beginning->{$func}($end, true); // @phpstan-ignore-line
|
$floatDiff = $beginning->{$func}($end, true); // @phpstan-ignore-line
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ class Navigation
|
|||||||
}
|
}
|
||||||
|
|
||||||
// then do ceil()
|
// then do ceil()
|
||||||
$diff = ceil($floatDiff);
|
$diff = ceil($floatDiff);
|
||||||
|
|
||||||
Log::debug(sprintf('Diff is %f periods (%d rounded up)', $floatDiff, $diff));
|
Log::debug(sprintf('Diff is %f periods (%d rounded up)', $floatDiff, $diff));
|
||||||
|
|
||||||
@@ -193,11 +193,11 @@ class Navigation
|
|||||||
$parameter = $skip + 1;
|
$parameter = $skip + 1;
|
||||||
$diff = ceil($diff / $parameter) * $parameter;
|
$diff = ceil($diff / $parameter) * $parameter;
|
||||||
Log::debug(sprintf(
|
Log::debug(sprintf(
|
||||||
'diffInPeriods: skip is %d, so param is %d, and diff becomes %d',
|
'diffInPeriods: skip is %d, so param is %d, and diff becomes %d',
|
||||||
$skip,
|
$skip,
|
||||||
$parameter,
|
$parameter,
|
||||||
$diff
|
$diff
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int)$diff;
|
return (int)$diff;
|
||||||
@@ -205,7 +205,7 @@ class Navigation
|
|||||||
|
|
||||||
public function endOfPeriod(Carbon $end, string $repeatFreq): Carbon
|
public function endOfPeriod(Carbon $end, string $repeatFreq): Carbon
|
||||||
{
|
{
|
||||||
$currentEnd = clone $end;
|
$currentEnd = clone $end;
|
||||||
// Log::debug(sprintf('Now in endOfPeriod("%s", "%s").', $currentEnd->toIso8601String(), $repeatFreq));
|
// Log::debug(sprintf('Now in endOfPeriod("%s", "%s").', $currentEnd->toIso8601String(), $repeatFreq));
|
||||||
|
|
||||||
$functionMap = [
|
$functionMap = [
|
||||||
@@ -239,7 +239,7 @@ class Navigation
|
|||||||
Log::debug('Session data available.');
|
Log::debug('Session data available.');
|
||||||
|
|
||||||
/** @var Carbon $tStart */
|
/** @var Carbon $tStart */
|
||||||
$tStart = session('start', today(config('app.timezone'))->startOfMonth());
|
$tStart = session('start', today(config('app.timezone'))->startOfMonth());
|
||||||
|
|
||||||
/** @var Carbon $tEnd */
|
/** @var Carbon $tEnd */
|
||||||
$tEnd = session('end', today(config('app.timezone'))->endOfMonth());
|
$tEnd = session('end', today(config('app.timezone'))->endOfMonth());
|
||||||
@@ -260,9 +260,10 @@ class Navigation
|
|||||||
if ($today->isSameMonth($end)) {
|
if ($today->isSameMonth($end)) {
|
||||||
$res = $today->endOfDay()->milli(0);
|
$res = $today->endOfDay()->milli(0);
|
||||||
// add sanity check.
|
// add sanity check.
|
||||||
if($res->lt($end)) {
|
if ($res->lt($end)) {
|
||||||
throw new FireflyException(sprintf('[b] endOfPeriod(%s, %s) failed, because it resulted in %s.', $end->toW3cString(), $repeatFreq, $res->toW3cString()));
|
throw new FireflyException(sprintf('[b] endOfPeriod(%s, %s) failed, because it resulted in %s.', $end->toW3cString(), $repeatFreq, $res->toW3cString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,10 +271,11 @@ class Navigation
|
|||||||
if ($currentEnd->lt($end)) {
|
if ($currentEnd->lt($end)) {
|
||||||
throw new FireflyException(sprintf('[c] endOfPeriod(%s, %s) failed, because it resulted in %s.', $end->toW3cString(), $repeatFreq, $currentEnd->toW3cString()));
|
throw new FireflyException(sprintf('[c] endOfPeriod(%s, %s) failed, because it resulted in %s.', $end->toW3cString(), $repeatFreq, $currentEnd->toW3cString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $end->endOfMonth();
|
return $end->endOfMonth();
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = match ($repeatFreq) {
|
$result = match ($repeatFreq) {
|
||||||
'last7' => $currentEnd->addDays(7)->startOfDay(),
|
'last7' => $currentEnd->addDays(7)->startOfDay(),
|
||||||
'last30' => $currentEnd->addDays(30)->startOfDay(),
|
'last30' => $currentEnd->addDays(30)->startOfDay(),
|
||||||
'last90' => $currentEnd->addDays(90)->startOfDay(),
|
'last90' => $currentEnd->addDays(90)->startOfDay(),
|
||||||
@@ -303,7 +305,7 @@ class Navigation
|
|||||||
|
|
||||||
return $end;
|
return $end;
|
||||||
}
|
}
|
||||||
$function = $functionMap[$repeatFreq];
|
$function = $functionMap[$repeatFreq];
|
||||||
|
|
||||||
if (array_key_exists($repeatFreq, $modifierMap)) {
|
if (array_key_exists($repeatFreq, $modifierMap)) {
|
||||||
$currentEnd->{$function}($modifierMap[$repeatFreq])->milli(0); // @phpstan-ignore-line
|
$currentEnd->{$function}($modifierMap[$repeatFreq])->milli(0); // @phpstan-ignore-line
|
||||||
@@ -353,7 +355,7 @@ class Navigation
|
|||||||
'yearly' => 'endOfYear',
|
'yearly' => 'endOfYear',
|
||||||
];
|
];
|
||||||
|
|
||||||
$currentEnd = clone $theCurrentEnd;
|
$currentEnd = clone $theCurrentEnd;
|
||||||
|
|
||||||
if (array_key_exists($repeatFreq, $functionMap)) {
|
if (array_key_exists($repeatFreq, $functionMap)) {
|
||||||
$function = $functionMap[$repeatFreq];
|
$function = $functionMap[$repeatFreq];
|
||||||
@@ -396,7 +398,7 @@ class Navigation
|
|||||||
*/
|
*/
|
||||||
public function listOfPeriods(Carbon $start, Carbon $end): array
|
public function listOfPeriods(Carbon $start, Carbon $end): array
|
||||||
{
|
{
|
||||||
$locale = app('steam')->getLocale();
|
$locale = app('steam')->getLocale();
|
||||||
// define period to increment
|
// define period to increment
|
||||||
$increment = 'addDay';
|
$increment = 'addDay';
|
||||||
$format = $this->preferredCarbonFormat($start, $end);
|
$format = $this->preferredCarbonFormat($start, $end);
|
||||||
@@ -413,8 +415,8 @@ class Navigation
|
|||||||
$increment = 'addYear';
|
$increment = 'addYear';
|
||||||
$displayFormat = (string)trans('config.year_js');
|
$displayFormat = (string)trans('config.year_js');
|
||||||
}
|
}
|
||||||
$begin = clone $start;
|
$begin = clone $start;
|
||||||
$entries = [];
|
$entries = [];
|
||||||
while ($begin < $end) {
|
while ($begin < $end) {
|
||||||
$formatted = $begin->format($format);
|
$formatted = $begin->format($format);
|
||||||
$displayed = $begin->isoFormat($displayFormat);
|
$displayed = $begin->isoFormat($displayFormat);
|
||||||
@@ -597,9 +599,9 @@ class Navigation
|
|||||||
|
|
||||||
public function startOfPeriod(Carbon $theDate, string $repeatFreq): Carbon
|
public function startOfPeriod(Carbon $theDate, string $repeatFreq): Carbon
|
||||||
{
|
{
|
||||||
$date = clone $theDate;
|
$date = clone $theDate;
|
||||||
// Log::debug(sprintf('Now in startOfPeriod("%s", "%s")', $date->toIso8601String(), $repeatFreq));
|
// Log::debug(sprintf('Now in startOfPeriod("%s", "%s")', $date->toIso8601String(), $repeatFreq));
|
||||||
$functionMap = [
|
$functionMap = [
|
||||||
'1D' => 'startOfDay',
|
'1D' => 'startOfDay',
|
||||||
'daily' => 'startOfDay',
|
'daily' => 'startOfDay',
|
||||||
'1W' => 'startOfWeek',
|
'1W' => 'startOfWeek',
|
||||||
@@ -646,7 +648,7 @@ class Navigation
|
|||||||
return $date;
|
return $date;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = match ($repeatFreq) {
|
$result = match ($repeatFreq) {
|
||||||
'last7' => $date->subDays(7)->startOfDay(),
|
'last7' => $date->subDays(7)->startOfDay(),
|
||||||
'last30' => $date->subDays(30)->startOfDay(),
|
'last30' => $date->subDays(30)->startOfDay(),
|
||||||
'last90' => $date->subDays(90)->startOfDay(),
|
'last90' => $date->subDays(90)->startOfDay(),
|
||||||
@@ -678,7 +680,7 @@ class Navigation
|
|||||||
public function subtractPeriod(Carbon $theDate, string $repeatFreq, ?int $subtract = null): Carbon
|
public function subtractPeriod(Carbon $theDate, string $repeatFreq, ?int $subtract = null): Carbon
|
||||||
{
|
{
|
||||||
$subtract ??= 1;
|
$subtract ??= 1;
|
||||||
$date = clone $theDate;
|
$date = clone $theDate;
|
||||||
// 1D 1W 1M 3M 6M 1Y
|
// 1D 1W 1M 3M 6M 1Y
|
||||||
$functionMap = [
|
$functionMap = [
|
||||||
'1D' => 'subDays',
|
'1D' => 'subDays',
|
||||||
@@ -717,7 +719,7 @@ class Navigation
|
|||||||
// this is then subtracted from $theDate (* $subtract).
|
// this is then subtracted from $theDate (* $subtract).
|
||||||
if ('custom' === $repeatFreq) {
|
if ('custom' === $repeatFreq) {
|
||||||
/** @var Carbon $tStart */
|
/** @var Carbon $tStart */
|
||||||
$tStart = session('start', today(config('app.timezone'))->startOfMonth());
|
$tStart = session('start', today(config('app.timezone'))->startOfMonth());
|
||||||
|
|
||||||
/** @var Carbon $tEnd */
|
/** @var Carbon $tEnd */
|
||||||
$tEnd = session('end', today(config('app.timezone'))->endOfMonth());
|
$tEnd = session('end', today(config('app.timezone'))->endOfMonth());
|
||||||
@@ -811,7 +813,7 @@ class Navigation
|
|||||||
|
|
||||||
return $fiscalHelper->endOfFiscalYear($end);
|
return $fiscalHelper->endOfFiscalYear($end);
|
||||||
}
|
}
|
||||||
$list = [
|
$list = [
|
||||||
'last7',
|
'last7',
|
||||||
'last30',
|
'last30',
|
||||||
'last90',
|
'last90',
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ use Illuminate\Support\Facades\Log;
|
|||||||
use Psr\Container\ContainerExceptionInterface;
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
use Psr\Container\NotFoundExceptionInterface;
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
use Spatie\Period\Boundaries;
|
use Spatie\Period\Boundaries;
|
||||||
use Spatie\Period\Exceptions\InvalidPeriod;
|
|
||||||
use Spatie\Period\Period;
|
use Spatie\Period\Period;
|
||||||
use Spatie\Period\Precision;
|
use Spatie\Period\Precision;
|
||||||
|
|
||||||
@@ -203,8 +202,8 @@ trait RecalculatesAvailableBudgetsTrait
|
|||||||
}
|
}
|
||||||
if (null === $availableBudget && $currentEnd->gte($current)) {
|
if (null === $availableBudget && $currentEnd->gte($current)) {
|
||||||
$currentPeriod = Period::make($current, $currentEnd, precision: Precision::DAY(), boundaries: Boundaries::EXCLUDE_NONE());
|
$currentPeriod = Period::make($current, $currentEnd, precision: Precision::DAY(), boundaries: Boundaries::EXCLUDE_NONE());
|
||||||
$daily = $this->getDailyAmount($budgetLimit);
|
$daily = $this->getDailyAmount($budgetLimit);
|
||||||
$amount = bcmul((string)$daily, (string)$currentPeriod->length(), 12);
|
$amount = bcmul((string)$daily, (string)$currentPeriod->length(), 12);
|
||||||
|
|
||||||
// no need to calculate if period is equal.
|
// no need to calculate if period is equal.
|
||||||
if ($currentPeriod->equals($limitPeriod)) {
|
if ($currentPeriod->equals($limitPeriod)) {
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ return [
|
|||||||
// see cer.php for exchange rates feature flag.
|
// see cer.php for exchange rates feature flag.
|
||||||
],
|
],
|
||||||
'version' => 'develop/2025-11-26',
|
'version' => 'develop/2025-11-26',
|
||||||
'build_time' => 1764136346,
|
'build_time' => 1764178914,
|
||||||
'api_version' => '2.1.0', // field is no longer used.
|
'api_version' => '2.1.0', // field is no longer used.
|
||||||
'db_version' => 28, // field is no longer used.
|
'db_version' => 28, // field is no longer used.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user