diff --git a/app/Console/Commands/Correction/CorrectDatabase.php b/app/Console/Commands/Correction/CorrectDatabase.php index 02059baadf..db9d072f64 100644 --- a/app/Console/Commands/Correction/CorrectDatabase.php +++ b/app/Console/Commands/Correction/CorrectDatabase.php @@ -61,6 +61,7 @@ class CorrectDatabase extends Command 'firefly-iii:create-link-types', 'firefly-iii:create-access-tokens', 'firefly-iii:remove-bills', + 'firefly-iii:fix-negative-limits', 'firefly-iii:enable-currencies', 'firefly-iii:fix-transfer-budgets', 'firefly-iii:fix-uneven-amount', diff --git a/app/Console/Commands/Correction/FixBudgetLimits.php b/app/Console/Commands/Correction/FixBudgetLimits.php new file mode 100644 index 0000000000..b833708447 --- /dev/null +++ b/app/Console/Commands/Correction/FixBudgetLimits.php @@ -0,0 +1,45 @@ +get(); + if (0 === $set->count()) { + $this->info('All budget limits are OK.'); + return 0; + } + $count = BudgetLimit::where('amount', '<', '0')->update(['amount' => DB::raw('amount * -1')]); + + $this->info(sprintf('Fixed %d budget limit(s)', $count)); + + return 0; + } +} diff --git a/app/Console/Commands/Upgrade/UpgradeDatabase.php b/app/Console/Commands/Upgrade/UpgradeDatabase.php index 0f4b60f08f..9364bc59bb 100644 --- a/app/Console/Commands/Upgrade/UpgradeDatabase.php +++ b/app/Console/Commands/Upgrade/UpgradeDatabase.php @@ -82,6 +82,7 @@ class UpgradeDatabase extends Command 'firefly-iii:create-link-types', 'firefly-iii:create-access-tokens', 'firefly-iii:remove-bills', + 'firefly-iii:fix-negative-limits', 'firefly-iii:enable-currencies', 'firefly-iii:fix-transfer-budgets', 'firefly-iii:fix-uneven-amount', diff --git a/app/Http/Controllers/Budget/BudgetLimitController.php b/app/Http/Controllers/Budget/BudgetLimitController.php index bdcd6a6b11..b89884e40b 100644 --- a/app/Http/Controllers/Budget/BudgetLimitController.php +++ b/app/Http/Controllers/Budget/BudgetLimitController.php @@ -160,6 +160,9 @@ class BudgetLimitController extends Controller if ((int) $amount > 268435456) { $amount = '268435456'; } + if((float) $amount < 0.0) { + $amount = bcmul($amount, '-1'); + } if (null !== $limit) { $limit->amount = $amount; @@ -226,6 +229,9 @@ class BudgetLimitController extends Controller if ((int) $amount > 268435456) { // 268 million $amount = '268435456'; } + if((float) $amount < 0.0) { + $amount = bcmul($amount, '-1'); + } $limit = $this->blRepository->update($budgetLimit, ['amount' => $amount]); $array = $limit->toArray(); diff --git a/app/Http/Controllers/System/InstallController.php b/app/Http/Controllers/System/InstallController.php index 5777c8285e..9a2a5227b9 100644 --- a/app/Http/Controllers/System/InstallController.php +++ b/app/Http/Controllers/System/InstallController.php @@ -93,6 +93,7 @@ class InstallController extends Controller 'firefly-iii:create-link-types' => [], 'firefly-iii:create-access-tokens' => [], 'firefly-iii:remove-bills' => [], + 'firefly-iii:fix-negative-limits' => [], 'firefly-iii:enable-currencies' => [], 'firefly-iii:fix-transfer-budgets' => [], 'firefly-iii:fix-uneven-amount' => [],