mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
New view and what-not for feature.
This commit is contained in:
parent
287c2e7af8
commit
5f4db7874c
@ -21,7 +21,7 @@ class RecurringController extends BaseController
|
|||||||
public function __construct(RTR $repository, RI $helper)
|
public function __construct(RTR $repository, RI $helper)
|
||||||
{
|
{
|
||||||
$this->_repository = $repository;
|
$this->_repository = $repository;
|
||||||
$this->_helper = $helper;
|
$this->_helper = $helper;
|
||||||
|
|
||||||
View::share('title', 'Recurring transactions');
|
View::share('title', 'Recurring transactions');
|
||||||
View::share('mainTitleIcon', 'fa-rotate-right');
|
View::share('mainTitleIcon', 'fa-rotate-right');
|
||||||
@ -102,6 +102,27 @@ class RecurringController extends BaseController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param RecurringTransaction $recurringTransaction
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function rescan(RecurringTransaction $recurringTransaction)
|
||||||
|
{
|
||||||
|
// do something!
|
||||||
|
/** @var \Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface $repo */
|
||||||
|
$repo = App::make('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||||
|
$set = $repo->get();
|
||||||
|
|
||||||
|
/** @var TransactionJournal $journal */
|
||||||
|
foreach ($set as $journal) {
|
||||||
|
Event::fire('recurring.rescan', [$recurringTransaction, $journal]);
|
||||||
|
}
|
||||||
|
Session::flash('success','Rescanned everything.');
|
||||||
|
return Redirect::back();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function store()
|
public function store()
|
||||||
{
|
{
|
||||||
$data = Input::except(['_token', 'post_submit_action']);
|
$data = Input::except(['_token', 'post_submit_action']);
|
||||||
@ -170,14 +191,14 @@ class RecurringController extends BaseController
|
|||||||
Session::flash('error', 'Could not update recurring transaction: ' . $messageBag->first());
|
Session::flash('error', 'Could not update recurring transaction: ' . $messageBag->first());
|
||||||
|
|
||||||
return Redirect::route('transactions.edit', $recurringTransaction->id)->withInput()
|
return Redirect::route('transactions.edit', $recurringTransaction->id)->withInput()
|
||||||
->withErrors($messageBag);
|
->withErrors($messageBag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'validate_only':
|
case 'validate_only':
|
||||||
$data = Input::all();
|
$data = Input::all();
|
||||||
$data['id'] = $recurringTransaction->id;
|
$data['id'] = $recurringTransaction->id;
|
||||||
$messageBags = $this->_helper->validate($data);
|
$messageBags = $this->_helper->validate($data);
|
||||||
|
|
||||||
Session::flash('warnings', $messageBags['warnings']);
|
Session::flash('warnings', $messageBags['warnings']);
|
||||||
|
@ -5,6 +5,7 @@ namespace Firefly\Storage\TransactionJournal;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Queue\Jobs\Job;
|
use Illuminate\Queue\Jobs\Job;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\MessageBag;
|
use Illuminate\Support\MessageBag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,6 +25,15 @@ class EloquentTransactionJournalRepository implements TransactionJournalReposito
|
|||||||
$this->_user = \Auth::user();
|
$this->_user = \Auth::user();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get them ALL
|
||||||
|
*
|
||||||
|
* @return Collection
|
||||||
|
*/
|
||||||
|
public function get() {
|
||||||
|
return $this->_user->transactionjournals()->with('transactions')->get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Job $job
|
* @param Job $job
|
||||||
* @param array $payload
|
* @param array $payload
|
||||||
|
@ -4,6 +4,7 @@ namespace Firefly\Storage\TransactionJournal;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Queue\Jobs\Job;
|
use Illuminate\Queue\Jobs\Job;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface TransactionJournalRepositoryInterface
|
* Interface TransactionJournalRepositoryInterface
|
||||||
@ -20,6 +21,13 @@ interface TransactionJournalRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function importTransaction(Job $job, array $payload);
|
public function importTransaction(Job $job, array $payload);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get them ALL
|
||||||
|
*
|
||||||
|
* @return Collection
|
||||||
|
*/
|
||||||
|
public function get();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Job $job
|
* @param Job $job
|
||||||
* @param array $payload
|
* @param array $payload
|
||||||
|
@ -32,6 +32,48 @@ class EloquentRecurringTrigger
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function rescan(\RecurringTransaction $recurring, \TransactionJournal $journal)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Match words.
|
||||||
|
*/
|
||||||
|
$wordMatch = false;
|
||||||
|
$matches = explode(' ', $recurring->match);
|
||||||
|
$description = strtolower($journal->description);
|
||||||
|
$count = 0;
|
||||||
|
foreach ($matches as $word) {
|
||||||
|
if (!(strpos($description, $word) === false)) {
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($count > 0) {
|
||||||
|
$wordMatch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Match amount.
|
||||||
|
*/
|
||||||
|
$transactions = $journal->transactions()->get();
|
||||||
|
$amountMatch = false;
|
||||||
|
if (count($transactions) > 1) {
|
||||||
|
|
||||||
|
$amount = max(floatval($transactions[0]->amount), floatval($transactions[1]->amount));
|
||||||
|
$min = floatval($recurring->amount_min);
|
||||||
|
$max = floatval($recurring->amount_max);
|
||||||
|
if ($amount >= $min && $amount <= $max) {
|
||||||
|
$amountMatch = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If both, update!
|
||||||
|
*/
|
||||||
|
if ($wordMatch && $amountMatch) {
|
||||||
|
$journal->recurringTransaction()->associate($recurring);
|
||||||
|
$journal->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger!
|
* Trigger!
|
||||||
*
|
*
|
||||||
@ -39,6 +81,8 @@ class EloquentRecurringTrigger
|
|||||||
*/
|
*/
|
||||||
public function subscribe(Dispatcher $events)
|
public function subscribe(Dispatcher $events)
|
||||||
{
|
{
|
||||||
|
//Event::fire('recurring.rematch', [$recurringTransaction, $journal]);
|
||||||
|
$events->listen('recurring.rescan', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@rescan');
|
||||||
// $events->listen('recurring.destroy', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@destroy');
|
// $events->listen('recurring.destroy', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@destroy');
|
||||||
// $events->listen('recurring.store', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@store');
|
// $events->listen('recurring.store', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@store');
|
||||||
// $events->listen('recurring.update', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@update');
|
// $events->listen('recurring.update', 'Firefly\Trigger\Recurring\EloquentRecurringTrigger@update');
|
||||||
|
@ -219,6 +219,7 @@ Route::group(['before' => 'auth'], function () {
|
|||||||
// recurring transactions controller
|
// recurring transactions controller
|
||||||
Route::get('/recurring',['uses' => 'RecurringController@index', 'as' => 'recurring.index']);
|
Route::get('/recurring',['uses' => 'RecurringController@index', 'as' => 'recurring.index']);
|
||||||
Route::get('/recurring/show/{recurring}',['uses' => 'RecurringController@show', 'as' => 'recurring.show']);
|
Route::get('/recurring/show/{recurring}',['uses' => 'RecurringController@show', 'as' => 'recurring.show']);
|
||||||
|
Route::get('/recurring/rescan/{recurring}',['uses' => 'RecurringController@rescan', 'as' => 'recurring.rescan']);
|
||||||
Route::get('/recurring/create',['uses' => 'RecurringController@create', 'as' => 'recurring.create']);
|
Route::get('/recurring/create',['uses' => 'RecurringController@create', 'as' => 'recurring.create']);
|
||||||
Route::get('/recurring/edit/{recurring}',['uses' => 'RecurringController@edit','as' => 'recurring.edit']);
|
Route::get('/recurring/edit/{recurring}',['uses' => 'RecurringController@edit','as' => 'recurring.edit']);
|
||||||
Route::get('/recurring/delete/{recurring}',['uses' => 'RecurringController@delete','as' => 'recurring.delete']);
|
Route::get('/recurring/delete/{recurring}',['uses' => 'RecurringController@delete','as' => 'recurring.delete']);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
@extends('layouts.default')
|
@extends('layouts.default')
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-sm-6 col-md-12">
|
<div class="col-lg-6 col-sm-12 col-md-12">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-rotate-right"></i> {{{$recurring->name}}}
|
<i class="fa fa-rotate-right"></i> {{{$recurring->name}}}
|
||||||
@ -53,6 +53,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-lg-6 col-sm-12 col-md-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
More
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<p>
|
||||||
|
<a href="{{route('recurring.rescan',$recurring->id)}}" class="btn btn-default">Rescan old transactions</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
Loading…
Reference in New Issue
Block a user