mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
All code for issue #38.
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
/**
|
||||
@@ -37,6 +36,51 @@ class ChangesForV322 extends Migration
|
||||
$table->dropSoftDeletes();
|
||||
}
|
||||
);
|
||||
|
||||
// drop keys from bills (foreign bills_uid_for and unique uid_name_unique)
|
||||
Schema::table(
|
||||
'bills', function (Blueprint $table) {
|
||||
$table->dropForeign('bills_uid_for');
|
||||
$table->dropUnique('uid_name_unique');
|
||||
}
|
||||
);
|
||||
// drop foreign key from transaction_journals (bill_id_foreign)
|
||||
Schema::table(
|
||||
'transaction_journals', function (Blueprint $table) {
|
||||
$table->dropForeign('bill_id_foreign');
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
// drop foreign key from budget_limits:
|
||||
Schema::table(
|
||||
'budget_limits', function (Blueprint $table) {
|
||||
$table->dropForeign('bid_foreign');
|
||||
$table->dropUnique('unique_bl_combi');
|
||||
}
|
||||
);
|
||||
|
||||
// rename bills to recurring_transactions
|
||||
Schema::rename('bills', 'recurring_transactions');
|
||||
// recreate foreign key recurring_transactions_user_id_foreign in recurring_transactions
|
||||
// recreate unique recurring_transactions_user_id_name_unique in recurring_transactions
|
||||
Schema::table(
|
||||
'recurring_transactions', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->unique(['user_id', 'name']);
|
||||
}
|
||||
);
|
||||
|
||||
// rename bill_id to recurring_transaction_id
|
||||
// recreate foreign transaction_journals_recurring_transaction_id_foreign in transaction_journals
|
||||
Schema::table(
|
||||
'transaction_journals', function (Blueprint $table) {
|
||||
$table->renameColumn('bill_id', 'recurring_transaction_id');
|
||||
$table->foreign('recurring_transaction_id')->references('id')->on('recurring_transactions')->onDelete('set null');
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -55,13 +99,13 @@ class ChangesForV322 extends Migration
|
||||
Schema::table(
|
||||
'budget_limits', function (Blueprint $table) {
|
||||
|
||||
// try {
|
||||
//$table->dropUnique('limits_component_id_startdate_repeat_freq_unique');
|
||||
// } catch (QueryException $e) {
|
||||
//$table->dropUnique('unique_ci_combi');
|
||||
// } catch (PDOException $e) {
|
||||
// $table->dropUnique('unique_ci_combi');
|
||||
// }
|
||||
// try {
|
||||
//$table->dropUnique('limits_component_id_startdate_repeat_freq_unique');
|
||||
// } catch (QueryException $e) {
|
||||
//$table->dropUnique('unique_ci_combi');
|
||||
// } catch (PDOException $e) {
|
||||
// $table->dropUnique('unique_ci_combi');
|
||||
// }
|
||||
|
||||
}
|
||||
);
|
||||
@@ -91,6 +135,48 @@ class ChangesForV322 extends Migration
|
||||
$table->softDeletes();
|
||||
}
|
||||
);
|
||||
|
||||
// rename everything related to recurring transactions, aka bills:
|
||||
Schema::table(
|
||||
'transaction_journals', function (Blueprint $table) {
|
||||
|
||||
|
||||
// drop relation
|
||||
$table->dropForeign('transaction_journals_recurring_transaction_id_foreign');
|
||||
// rename column
|
||||
$table->renameColumn('recurring_transaction_id', 'bill_id');
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
Schema::table(
|
||||
'recurring_transactions', function (Blueprint $table) {
|
||||
$table->dropForeign('recurring_transactions_user_id_foreign');
|
||||
$table->dropUnique('recurring_transactions_user_id_name_unique');
|
||||
}
|
||||
);
|
||||
// rename table:
|
||||
Schema::rename('recurring_transactions', 'bills');
|
||||
|
||||
// recreate foreign relation:
|
||||
Schema::table(
|
||||
'transaction_journals', function (Blueprint $table) {
|
||||
$table->foreign('bill_id', 'bill_id_foreign')->references('id')->on('bills')->onDelete('set null');
|
||||
}
|
||||
);
|
||||
|
||||
// recreate more foreign relations.
|
||||
Schema::table(
|
||||
'bills', function (Blueprint $table) {
|
||||
// connect user id to users
|
||||
$table->foreign('user_id', 'bills_uid_for')->references('id')->on('users')->onDelete('cascade');
|
||||
|
||||
// for a user, the name must be unique
|
||||
$table->unique(['user_id', 'name'], 'uid_name_unique');
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -36,19 +36,19 @@ class TestContentSeeder extends Seeder
|
||||
$deleteBudget = Budget::create(['user_id' => $user->id, 'name' => 'Delete me']);
|
||||
|
||||
// some limits:
|
||||
$startDate = Carbon::now()->startOfMonth();
|
||||
$endDate = Carbon::now()->endOfMonth();
|
||||
$startDate = Carbon::now()->startOfMonth();
|
||||
$endDate = Carbon::now()->endOfMonth();
|
||||
$secondStart = Carbon::now()->subMonth()->startOfMonth();
|
||||
$secondEnd = Carbon::now()->subMonth()->endOfMonth();
|
||||
$limitOne = BudgetLimit::create(
|
||||
$secondEnd = Carbon::now()->subMonth()->endOfMonth();
|
||||
$limitOne = BudgetLimit::create(
|
||||
['startdate' => $startDate->format('Y-m-d'), 'amount' => 201, 'repeats' => 0, 'repeat_freq' => 'monthly',
|
||||
'budget_id' => $groceriesBudget->id]
|
||||
);
|
||||
$limitTwo = BudgetLimit::create(
|
||||
$limitTwo = BudgetLimit::create(
|
||||
['startdate' => $secondStart->format('Y-m-d'), 'amount' => 202, 'repeats' => 0, 'repeat_freq' => 'monthly',
|
||||
'budget_id' => $billsBudget->id]
|
||||
);
|
||||
$limitThree = BudgetLimit::create(
|
||||
$limitThree = BudgetLimit::create(
|
||||
['startdate' => '2014-01-01', 'amount' => 203, 'repeats' => 0, 'repeat_freq' => 'monthly',
|
||||
'budget_id' => $deleteBudget->id]
|
||||
);
|
||||
@@ -58,7 +58,8 @@ class TestContentSeeder extends Seeder
|
||||
['budget_limit_id' => $limitOne->id, 'startdate' => $startDate->format('Y-m-d'), 'enddate' => $endDate->format('Y-m-d'), 'amount' => 201]
|
||||
);
|
||||
$repTwo = LimitRepetition::create(
|
||||
['budget_limit_id' => $limitTwo->id, 'startdate' => $secondStart->format('Y-m-d'), 'enddate' => $secondEnd->format('Y-m-d'), 'amount' => 202]
|
||||
['budget_limit_id' => $limitTwo->id, 'startdate' => $secondStart->format('Y-m-d'), 'enddate' => $secondEnd->format('Y-m-d'),
|
||||
'amount' => 202]
|
||||
);
|
||||
$repThree = LimitRepetition::create(
|
||||
['budget_limit_id' => $limitThree->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 203]
|
||||
@@ -79,7 +80,7 @@ class TestContentSeeder extends Seeder
|
||||
Component::create(['user_id' => $user->id, 'name' => 'Some Component 7', 'class' => 'Category']);
|
||||
|
||||
// piggy bank
|
||||
$piggy = PiggyBank::create(
|
||||
$piggy = PiggyBank::create(
|
||||
[
|
||||
'account_id' => $savings->id,
|
||||
'name' => 'New camera',
|
||||
@@ -99,7 +100,7 @@ class TestContentSeeder extends Seeder
|
||||
PiggyBankEvent::create(['piggy_bank_id' => 1, 'date' => $startDate->format('Y-m-d'), 'amount' => 100]);
|
||||
PiggyBankRepetition::create(
|
||||
[
|
||||
'piggy_bank_id' => $piggy->id,
|
||||
'piggy_bank_id' => $piggy->id,
|
||||
'startdate' => Carbon::now()->format('Y-m-d'),
|
||||
'targetdate' => null,
|
||||
'currentamount' => 0
|
||||
@@ -107,7 +108,7 @@ class TestContentSeeder extends Seeder
|
||||
);
|
||||
|
||||
// piggy bank
|
||||
$piggyTargeted = PiggyBank::create(
|
||||
$piggyTargeted = PiggyBank::create(
|
||||
[
|
||||
'account_id' => $savings->id,
|
||||
'name' => 'New clothes',
|
||||
@@ -128,15 +129,15 @@ class TestContentSeeder extends Seeder
|
||||
PiggyBankEvent::create(['piggy_bank_id' => $piggyTargeted->id, 'date' => $startDate->format('Y-m-d'), 'amount' => 100]);
|
||||
PiggyBankRepetition::create(
|
||||
[
|
||||
'piggy_bank_id' => $piggyTargeted->id,
|
||||
'piggy_bank_id' => $piggyTargeted->id,
|
||||
'startdate' => Carbon::now()->format('Y-m-d'),
|
||||
'targetdate' => Carbon::now()->addMonths(4)->format('Y-m-d'),
|
||||
'currentamount' => 0
|
||||
]
|
||||
);
|
||||
|
||||
// recurring transaction
|
||||
$recurring = \RecurringTransaction::create(
|
||||
// bill
|
||||
$firstBill = \Bill::create(
|
||||
[
|
||||
'user_id' => $user->id,
|
||||
'name' => 'Huur',
|
||||
@@ -151,8 +152,8 @@ class TestContentSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// recurring transaction
|
||||
$secondRecurring = \RecurringTransaction::create(
|
||||
// bill
|
||||
$secondBill = \Bill::create(
|
||||
[
|
||||
'user_id' => $user->id,
|
||||
'name' => 'Gas licht',
|
||||
@@ -198,7 +199,7 @@ class TestContentSeeder extends Seeder
|
||||
while ($start <= $end) {
|
||||
$this->createTransaction(
|
||||
$checking, $portaal, 500, $withdrawal, 'Huur Portaal for ' . $start->format('F Y'), $start->format('Y-m-') . '01', $billsBudget, $house,
|
||||
$recurring
|
||||
$firstBill
|
||||
);
|
||||
$this->createTransaction(
|
||||
$checking, $vitens, 12, $withdrawal, 'Water for ' . $start->format('F Y'), $start->format('Y-m-') . '02', $billsBudget, $house
|
||||
@@ -261,28 +262,27 @@ class TestContentSeeder extends Seeder
|
||||
*
|
||||
* @param Budget $budget
|
||||
* @param Category $category
|
||||
* @param RecurringTransaction $recurring
|
||||
* @param Bill $bill
|
||||
*
|
||||
* @return TransactionJournal
|
||||
*/
|
||||
public function createTransaction(
|
||||
Account $from, Account $to, $amount, TransactionType $type, $description, $date, Budget $budget = null, Category $category = null,
|
||||
$recurring = null
|
||||
Account $from, Account $to, $amount, TransactionType $type, $description, $date, Budget $budget = null, Category $category = null, Bill $bill = null
|
||||
) {
|
||||
$user = User::whereEmail('thegrumpydictator@gmail.com')->first();
|
||||
$euro = TransactionCurrency::whereCode('EUR')->first();
|
||||
$recurringID = is_null($recurring) ? null : $recurring->id;
|
||||
$user = User::whereEmail('thegrumpydictator@gmail.com')->first();
|
||||
$euro = TransactionCurrency::whereCode('EUR')->first();
|
||||
$billID = is_null($bill) ? null : $bill->id;
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = TransactionJournal::create(
|
||||
[
|
||||
'user_id' => $user->id,
|
||||
'transaction_type_id' => $type->id,
|
||||
'transaction_currency_id' => $euro->id,
|
||||
'recurring_transaction_id' => $recurringID,
|
||||
'description' => $description,
|
||||
'completed' => 1,
|
||||
'date' => $date
|
||||
'user_id' => $user->id,
|
||||
'transaction_type_id' => $type->id,
|
||||
'transaction_currency_id' => $euro->id,
|
||||
'bill_id' => $billID,
|
||||
'description' => $description,
|
||||
'completed' => 1,
|
||||
'date' => $date
|
||||
]
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user