From 28e74407267930740a28c6731f33e1148e081e64 Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 6 Sep 2018 07:38:26 +0200 Subject: [PATCH] Add budget limit currency ID. --- app/Console/Commands/UpgradeDatabase.php | 28 ++++++++++++++ app/Models/BudgetLimit.php | 10 +++++ ...te_oauth_personal_access_clients_table.php | 4 +- .../2018_03_19_141348_changes_for_v472.php | 4 +- .../2018_04_07_210913_changes_for_v473.php | 5 ++- .../2018_04_29_174524_changes_for_v474.php | 4 +- .../2018_06_08_200526_changes_for_v475.php | 2 +- .../2018_09_05_195147_changes_for_v477.php | 37 +++++++++++++++++++ 8 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 database/migrations/2018_09_05_195147_changes_for_v477.php diff --git a/app/Console/Commands/UpgradeDatabase.php b/app/Console/Commands/UpgradeDatabase.php index b1b393398b..246222edfa 100644 --- a/app/Console/Commands/UpgradeDatabase.php +++ b/app/Console/Commands/UpgradeDatabase.php @@ -35,6 +35,7 @@ use FireflyIII\Models\AccountMeta; use FireflyIII\Models\AccountType; use FireflyIII\Models\Attachment; use FireflyIII\Models\Bill; +use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\Note; use FireflyIII\Models\Preference; use FireflyIII\Models\Rule; @@ -63,6 +64,7 @@ use UnexpectedValueException; * Upgrade user database. * @SuppressWarnings(PHPMD.ExcessiveClassComplexity) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * * @codeCoverageIgnore */ class UpgradeDatabase extends Command @@ -95,6 +97,7 @@ class UpgradeDatabase extends Command $this->migrateNotes(); $this->migrateAttachmentData(); $this->migrateBillsToRules(); + $this->budgetLimitCurrency(); $this->info('Firefly III database is up to date.'); @@ -435,6 +438,31 @@ class UpgradeDatabase extends Command ); } + /** + * + */ + private function budgetLimitCurrency(): void + { + $budgetLimits = BudgetLimit::get(); + /** @var BudgetLimit $budgetLimit */ + foreach ($budgetLimits as $budgetLimit) { + if (null === $budgetLimit->transaction_currency_id) { + $budget = $budgetLimit->budget; + if (null !== $budget) { + $user = $budget->user; + if (null !== $user) { + $currency = \Amount::getDefaultCurrencyByUser($user); + $budgetLimit->transaction_currency_id = $currency->id; + $budgetLimit->save(); + $this->line( + sprintf('Budget limit #%d (part of budget "%s") now has a currency setting (%s).', $budgetLimit->id, $budget->name, $currency->name) + ); + } + } + } + } + } + private function createNewTypes(): void { // create transaction type "Reconciliation". diff --git a/app/Models/BudgetLimit.php b/app/Models/BudgetLimit.php index f0d975d3c8..fe220e86f6 100644 --- a/app/Models/BudgetLimit.php +++ b/app/Models/BudgetLimit.php @@ -39,6 +39,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property string $amount * @property int $budget_id * @property string spent + * @property int $transaction_currency_id */ class BudgetLimit extends Model { @@ -89,4 +90,13 @@ class BudgetLimit extends Model { return $this->belongsTo(Budget::class); } + + /** + * @codeCoverageIgnore + * @return BelongsTo + */ + public function transactionCurrency(): BelongsTo + { + return $this->belongsTo(TransactionCurrency::class); + } } diff --git a/database/migrations/2018_01_01_000005_create_oauth_personal_access_clients_table.php b/database/migrations/2018_01_01_000005_create_oauth_personal_access_clients_table.php index e584f7fc4b..adc9006492 100644 --- a/database/migrations/2018_01_01_000005_create_oauth_personal_access_clients_table.php +++ b/database/migrations/2018_01_01_000005_create_oauth_personal_access_clients_table.php @@ -34,7 +34,7 @@ class CreateOauthPersonalAccessClientsTable extends Migration /** * Reverse the migrations. */ - public function down() + public function down(): void { Schema::drop('oauth_personal_access_clients'); } @@ -42,7 +42,7 @@ class CreateOauthPersonalAccessClientsTable extends Migration /** * Run the migrations. */ - public function up() + public function up(): void { Schema::create( 'oauth_personal_access_clients', function (Blueprint $table) { diff --git a/database/migrations/2018_03_19_141348_changes_for_v472.php b/database/migrations/2018_03_19_141348_changes_for_v472.php index 00997e749e..9a7c4b5a79 100644 --- a/database/migrations/2018_03_19_141348_changes_for_v472.php +++ b/database/migrations/2018_03_19_141348_changes_for_v472.php @@ -35,7 +35,7 @@ class ChangesForV472 extends Migration * * @return void */ - public function down() + public function down(): void { // } @@ -45,7 +45,7 @@ class ChangesForV472 extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table( 'attachments', diff --git a/database/migrations/2018_04_07_210913_changes_for_v473.php b/database/migrations/2018_04_07_210913_changes_for_v473.php index a6067a92e7..37b70d325c 100644 --- a/database/migrations/2018_04_07_210913_changes_for_v473.php +++ b/database/migrations/2018_04_07_210913_changes_for_v473.php @@ -36,8 +36,9 @@ class ChangesForV473 extends Migration * * @return void */ - public function down() + public function down(): void { + } /** @@ -45,7 +46,7 @@ class ChangesForV473 extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table( 'bills', diff --git a/database/migrations/2018_04_29_174524_changes_for_v474.php b/database/migrations/2018_04_29_174524_changes_for_v474.php index c9c79e6e82..2cda9d050b 100644 --- a/database/migrations/2018_04_29_174524_changes_for_v474.php +++ b/database/migrations/2018_04_29_174524_changes_for_v474.php @@ -35,7 +35,7 @@ class ChangesForV474 extends Migration * * @return void */ - public function down() + public function down(): void { } @@ -44,7 +44,7 @@ class ChangesForV474 extends Migration * * @return void */ - public function up() + public function up(): void { Schema::table( 'import_jobs', diff --git a/database/migrations/2018_06_08_200526_changes_for_v475.php b/database/migrations/2018_06_08_200526_changes_for_v475.php index b0c105e2ee..427d74bc65 100644 --- a/database/migrations/2018_06_08_200526_changes_for_v475.php +++ b/database/migrations/2018_06_08_200526_changes_for_v475.php @@ -29,7 +29,7 @@ class ChangesForV475 extends Migration * * @return void */ - public function up() + public function up(): void { Schema::create( 'recurrences', function (Blueprint $table) { diff --git a/database/migrations/2018_09_05_195147_changes_for_v477.php b/database/migrations/2018_09_05_195147_changes_for_v477.php new file mode 100644 index 0000000000..ba6ca35dcd --- /dev/null +++ b/database/migrations/2018_09_05_195147_changes_for_v477.php @@ -0,0 +1,37 @@ +integer('transaction_currency_id', false, true)->nullable()->after('budget_id'); + $table->foreign('transaction_currency_id')->references('id')->on('transaction_currencies')->onDelete('set null'); + } + ); + } +}