diff --git a/database/migrations/2016_01_11_193428_changes_for_v370.php b/database/migrations/2016_01_11_193428_changes_for_v370.php index 20ba91e746..263b39e7b6 100644 --- a/database/migrations/2016_01_11_193428_changes_for_v370.php +++ b/database/migrations/2016_01_11_193428_changes_for_v370.php @@ -31,7 +31,7 @@ class ChangesForV370 extends Migration $table->integer('user_id')->unsigned(); $table->unsignedSmallInteger('order'); $table->string('title', 255); - $table->text('description'); + $table->text('description')->nullable(); $table->unsignedTinyInteger('active')->default(1); // connect rule groups to users @@ -54,7 +54,7 @@ class ChangesForV370 extends Migration $table->unsignedTinyInteger('stop_processing')->default(0); $table->string('title', 255); - $table->text('description'); + $table->text('description')->nullable(); // connect rules to users @@ -78,7 +78,7 @@ class ChangesForV370 extends Migration $table->unsignedTinyInteger('stop_processing')->default(0); $table->string('trigger_type', 50); - $table->string('trigger_value', 255); + $table->string('trigger_value', 255)->nullable(); @@ -101,7 +101,7 @@ class ChangesForV370 extends Migration $table->unsignedTinyInteger('stop_processing')->default(0); $table->string('action_type', 50); - $table->string('action_value', 255); + $table->string('action_value', 255)->nullable(); diff --git a/database/seeds/TestDataSeeder.php b/database/seeds/TestDataSeeder.php index bb6ce4c74e..925f17048a 100644 --- a/database/seeds/TestDataSeeder.php +++ b/database/seeds/TestDataSeeder.php @@ -41,7 +41,7 @@ class TestDataSeeder extends Seeder public function createRules() { - // basic rules group. user should always have one + // three rule groups to get started. $ruleGroup = new RuleGroup; $ruleGroup->user()->associate($this->user); $ruleGroup->order = 1; @@ -49,19 +49,36 @@ class TestDataSeeder extends Seeder $ruleGroup->title = 'Default rules'; $ruleGroup->description = 'All your rules not in a particular group.'; $ruleGroup->save(); + unset($ruleGroup); + + $ruleGroup = new RuleGroup; + $ruleGroup->user()->associate($this->user); + $ruleGroup->order = 2; + $ruleGroup->active = 1; + $ruleGroup->title = 'Empty rule group'; + $ruleGroup->description = 'Intentionally has no rules.'; + $ruleGroup->save(); + unset($ruleGroup); - // a normal rule: saves transactions where description contains "groceries" - // and from account is "MyBank Checking Account" - // send it to Groceries/Groceries + $ruleGroup = new RuleGroup; + $ruleGroup->user()->associate($this->user); + $ruleGroup->order = 3; + $ruleGroup->active = 1; + $ruleGroup->title = 'Rules for bills'; + $ruleGroup->description = 'All rules for bills and recurring costs.'; + $ruleGroup->save(); + unset($ruleGroup); + + // move groceries to correct budget/category $rule = new Rule; $rule->user()->associate($this->user); - $rule->ruleGroup()->associate($ruleGroup); + $rule->ruleGroup()->associate(RuleGroup::find(1)); $rule->order = 1; $rule->active = 1; $rule->stop_processing = 0; - $rule->title = 'A strange rule for testing.'; - $rule->description = 'This rule triggers on transactions with the description "David Bowie" and puts them in the category "Blackstar".'; + $rule->title = 'Move groceries'; + $rule->description = 'Move groceries to correct category and budget.'; $rule->save(); @@ -108,8 +125,9 @@ class TestDataSeeder extends Seeder $ruleAction->active = 1; $ruleAction->stop_processing = 0; $ruleAction->action_type = 'set_category'; - $ruleAction->action_value = 'Automated Groceries'; + $ruleAction->action_value = 'Groceries'; $ruleAction->save(); + unset($ruleAction); // actions for this rule. one, set budget $ruleAction = new RuleAction; @@ -120,6 +138,306 @@ class TestDataSeeder extends Seeder $ruleAction->action_type = 'set_budget'; $ruleAction->action_value = 'Groceries'; $ruleAction->save(); + unset($ruleAction); + + + // move "gas" to "Car" and "Car" + $rule = new Rule; + $rule->user()->associate($this->user); + $rule->ruleGroup()->associate(RuleGroup::find(1)); + $rule->order = 2; + $rule->active = 1; + $rule->stop_processing = 0; + $rule->title = 'Move gas'; + $rule->description = null; + + $rule->save(); + + // initial trigger for this rule: + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 1; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'user_action'; + $ruleTrigger->trigger_value = 'store-journal'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // content trigger for this rule. + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 2; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'description_contains'; + $ruleTrigger->trigger_value = 'gas'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // another + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 3; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'from_account_is'; + $ruleTrigger->trigger_value = 'MyBank Checking Account'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // actions for this rule. one, set category + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 1; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_category'; + $ruleAction->action_value = 'Car'; + $ruleAction->save(); + unset($ruleAction); + + // actions for this rule. one, set budget + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 2; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_budget'; + $ruleAction->action_value = 'Car'; + $ruleAction->save(); + unset($ruleAction); + + // move savings to money management + $rule = new Rule; + $rule->user()->associate($this->user); + $rule->ruleGroup()->associate(RuleGroup::find(1)); + $rule->order = 2; + $rule->active = 1; + $rule->stop_processing = 0; + $rule->title = 'Move savings'; + $rule->description = null; + + $rule->save(); + + // initial trigger for this rule: + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 1; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'user_action'; + $ruleTrigger->trigger_value = 'store-journal'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // is transfer + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 2; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'transaction_type'; + $ruleTrigger->trigger_value = 'Transfer'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // content trigger for this rule. + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 3; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'description_is'; + $ruleTrigger->trigger_value = 'Save money'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // another + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 4; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'from_account_is'; + $ruleTrigger->trigger_value = 'MyBank Checking Account'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // another + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 5; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'to_account_is'; + $ruleTrigger->trigger_value = 'Savings'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // actions for this rule. one, set category + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 1; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_category'; + $ruleAction->action_value = 'Money Management'; + $ruleAction->save(); + unset($ruleAction); + + // move TV bill to "Bills" and "House" + $rule = new Rule; + $rule->user()->associate($this->user); + $rule->ruleGroup()->associate(RuleGroup::find(3)); + $rule->order = 1; + $rule->active = 1; + $rule->stop_processing = 0; + $rule->title = 'TV Bill'; + $rule->description = null; + + $rule->save(); + + // initial trigger for this rule: + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 1; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'user_action'; + $ruleTrigger->trigger_value = 'store-journal'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // content trigger for this rule. + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 2; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'description_contains'; + $ruleTrigger->trigger_value = 'tv bill'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // another + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 3; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'from_account_is'; + $ruleTrigger->trigger_value = 'MyBank Checking Account'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // actions for this rule. one, set category + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 1; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_category'; + $ruleAction->action_value = 'House'; + $ruleAction->save(); + unset($ruleAction); + + // actions for this rule. one, set budget + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 2; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_budget'; + $ruleAction->action_value = 'Bills'; + $ruleAction->save(); + unset($ruleAction); + + // move rent to bills, rent. + $rule = new Rule; + $rule->user()->associate($this->user); + $rule->ruleGroup()->associate(RuleGroup::find(3)); + $rule->order = 2; + $rule->active = 1; + $rule->stop_processing = 0; + $rule->title = 'Rent'; + $rule->description = null; + + $rule->save(); + + // initial trigger for this rule: + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 1; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'user_action'; + $ruleTrigger->trigger_value = 'store-journal'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // content trigger for this rule. + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 2; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'description_contains'; + $ruleTrigger->trigger_value = 'rent'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // another + $ruleTrigger = new RuleTrigger; + $ruleTrigger->rule()->associate($rule); + $ruleTrigger->order = 3; + $ruleTrigger->active = 1; + $ruleTrigger->stop_processing = 0; + $ruleTrigger->trigger_type = 'from_account_is'; + $ruleTrigger->trigger_value = 'MyBank Checking Account'; + + $ruleTrigger->save(); + unset($ruleTrigger); + + // actions for this rule. one, set category + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 1; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_category'; + $ruleAction->action_value = 'House'; + $ruleAction->save(); + unset($ruleAction); + + // actions for this rule. one, set budget + $ruleAction = new RuleAction; + $ruleAction->rule()->associate($rule); + $ruleAction->order = 2; + $ruleAction->active = 1; + $ruleAction->stop_processing = 0; + $ruleAction->action_type = 'set_budget'; + $ruleAction->action_value = 'Bills'; + $ruleAction->save(); + unset($ruleAction); + + + // a normal rule: saves transactions where description contains "groceries" + // and from account is "MyBank Checking Account" + // send it to Groceries/Groceries //$ruleAction @@ -244,7 +562,7 @@ class TestDataSeeder extends Seeder [ 'accountRole' => 'ccAsset', 'ccMonthlyPaymentDate' => '2015-05-27', - 'ccType' => 'monthlyFull' + 'ccType' => 'monthlyFull', ], [ 'accountRole' => 'savingAsset', @@ -369,21 +687,21 @@ class TestDataSeeder extends Seeder [ 'piggy_bank_id' => $camera->id, 'date' => '2015-05-01', - 'amount' => '245' + 'amount' => '245', ] ); PiggyBankEvent::create( [ 'piggy_bank_id' => $camera->id, 'date' => '2015-06-01', - 'amount' => '245' + 'amount' => '245', ] ); PiggyBankEvent::create( [ 'piggy_bank_id' => $camera->id, 'date' => '2015-07-01', - 'amount' => '245' + 'amount' => '245', ] ); @@ -408,21 +726,21 @@ class TestDataSeeder extends Seeder [ 'piggy_bank_id' => $phone->id, 'date' => '2015-05-01', - 'amount' => '111' + 'amount' => '111', ] ); PiggyBankEvent::create( [ 'piggy_bank_id' => $phone->id, 'date' => '2015-06-01', - 'amount' => '111' + 'amount' => '111', ] ); PiggyBankEvent::create( [ 'piggy_bank_id' => $phone->id, 'date' => '2015-07-01', - 'amount' => '111' + 'amount' => '111', ] ); @@ -446,21 +764,21 @@ class TestDataSeeder extends Seeder [ 'piggy_bank_id' => $couch->id, 'date' => '2015-05-01', - 'amount' => '40' + 'amount' => '40', ] ); PiggyBankEvent::create( [ 'piggy_bank_id' => $couch->id, 'date' => '2015-06-01', - 'amount' => '40' + 'amount' => '40', ] ); PiggyBankEvent::create( [ 'piggy_bank_id' => $couch->id, 'date' => '2015-07-01', - 'amount' => '40' + 'amount' => '40', ] ); @@ -914,7 +1232,7 @@ class TestDataSeeder extends Seeder 'startdate' => $start->format('Y-m-d'), 'amount' => $amount, 'repeats' => 0, - 'repeat_freq' => 'monthly' + 'repeat_freq' => 'monthly', ] ); } diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 2e80cf5fc9..fa33d0ace7 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -59,23 +59,23 @@ return [ 'no_rules_in_group' => 'There are no rules in this group', // actions and triggers - 'rule_trigger_user_action' => '', - 'rule_trigger_from_account_starts' => 'from_account_starts', - 'rule_trigger_from_account_ends' => 'from_account_ends', + 'rule_trigger_user_action' => 'User action is ":trigger_value"', + 'rule_trigger_from_account_starts' => 'Source account starts with ":trigger_value"', + 'rule_trigger_from_account_ends' => 'Source account ends with ":trigger_value"', 'rule_trigger_from_account_is' => 'Source account is ":trigger_value"', - 'rule_trigger_from_account_contains' => '', - 'rule_trigger_to_account_starts' => '', - 'rule_trigger_to_account_ends' => '', - 'rule_trigger_to_account_is' => '', - 'rule_trigger_to_account_contains' => '', - 'rule_trigger_transaction_type' => '', - 'rule_trigger_amount_less' => '', + 'rule_trigger_from_account_contains' => 'Source account contains ":trigger_value"', + 'rule_trigger_to_account_starts' => 'Destination account starts with ":trigger_value"', + 'rule_trigger_to_account_ends' => 'Destination account ends with ":trigger_value"', + 'rule_trigger_to_account_is' => 'Destination account is ":trigger_value"', + 'rule_trigger_to_account_contains' => 'Destination account contains ":trigger_value"', + 'rule_trigger_transaction_type' => 'Transaction is of type ":trigger_value"', + 'rule_trigger_amount_less' => 'Amount is less than :trigger_value', 'rule_trigger_amount_exactly' => 'Amount is :trigger_value', - 'rule_trigger_amount_more' => '', - 'rule_trigger_description_starts' => '', - 'rule_trigger_description_ends' => '', + 'rule_trigger_amount_more' => 'Amount is more than :trigger_value', + 'rule_trigger_description_starts' => 'Description starts with ":trigger_value"', + 'rule_trigger_description_ends' => 'Description ends with ":trigger_value"', 'rule_trigger_description_contains' => 'Description contains ":trigger_value"', - 'rule_trigger_description_is' => '', + 'rule_trigger_description_is' => 'Description is ":trigger_value"', 'rule_action_set_category' => 'Set category to ":action_value"', 'rule_action_clear_category' => 'Clear category',