mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-01-11 00:16:54 +00:00
Stuff for recurring transactions [skip ci]
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
<td>Out</td>
|
||||
<td>
|
||||
{{mf($show['statistics']['period']['out'])}}
|
||||
<a href="#transactions-thisaccount-this-period-expensesonly"><span class="glyphicon glyphicon-circle-arrow-right"></span></a>
|
||||
<a href="{{route('accounts.show',$account->id)}}#transactions-thisaccount-this-period-expensesonly"><span class="glyphicon glyphicon-circle-arrow-right"></span></a>
|
||||
</td>
|
||||
<td>
|
||||
{{mf($show['statistics']['period']['t_out'])}}
|
||||
|
||||
@@ -74,7 +74,9 @@
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<small>
|
||||
<a href="{{route('budgets.show',$budget->id)}}?rep={{$rep->id}}">
|
||||
{{$rep->periodShow()}}
|
||||
</a>
|
||||
</small>
|
||||
</div>
|
||||
@if($limit->repeats == 1)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<td>
|
||||
@foreach($journal->components as $component)
|
||||
@if($component->class == 'Budget')
|
||||
<a href="#budget-overview-in-month"><span class="glyphicon glyphicon-tasks" title="Budget: {{{$component->name}}}"></span></a>
|
||||
<a href="{{route('budgets.show',$component->id)}}#GETTHEREPSOMEHOW_ORLIMITQUERYbudget-overview-in-month"><span class="glyphicon glyphicon-tasks" title="Budget: {{{$component->name}}}"></span></a>
|
||||
@endif
|
||||
@if($component->class == 'Category')
|
||||
<a href="#category-overview-in-month"><span class="glyphicon glyphicon-tag" title="Category: {{{$component->name}}}"></span></a>
|
||||
|
||||
196
app/views/recurring/create.blade.php
Normal file
196
app/views/recurring/create.blade.php
Normal file
@@ -0,0 +1,196 @@
|
||||
@extends('layouts.default')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<h1>Firefly
|
||||
<small>Create a recurring transaction</small>
|
||||
</h1>
|
||||
<p class="lead">Use recurring transactions to track repeated expenses</p>
|
||||
<p class="text-info">
|
||||
Bla bla.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{Form::open(['class' => 'form-horizontal','url' => route('recurring.store')])}}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<h4>Mandatory fields</h4>
|
||||
|
||||
<!-- name -->
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-4 control-label">Name</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" name="name" class="form-control" id="name" value="{{Input::old('name')}}" placeholder="Name">
|
||||
@if($errors->has('name'))
|
||||
<p class="text-danger">{{$errors->first('name')}}</p>
|
||||
@else
|
||||
<span class="help-block">For example: rent, gas, insurance</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="match" class="col-sm-4 control-label">Matches on</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" name="match" class="form-control" id="match" value="{{Input::old('match')}}" data-role="tagsinput">
|
||||
@if($errors->has('match'))
|
||||
<p class="text-danger">{{$errors->first('match')}}</p>
|
||||
@else
|
||||
<span class="help-block">For example: rent, [company name]. All matches need to
|
||||
be present for the recurring transaction to be recognized. This field is not case-sensitive.</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('amount_min', 'Minimum amount', ['class' => 'col-sm-4 control-label'])}}
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">€</span>
|
||||
{{Form::input('number','amount_min', Input::old('amount_min'), ['step' => 'any', 'class' => 'form-control'])}}
|
||||
</div>
|
||||
|
||||
@if($errors->has('amount_min'))
|
||||
<p class="text-danger">{{$errors->first('amount_min')}}</p>
|
||||
@else
|
||||
<span class="help-block">Firefly will only include transactions with a higher amount than this. If your rent
|
||||
is usually around € 500,-, enter <code>450</code> to be safe.</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('amount_max', 'Maximum amount', ['class' => 'col-sm-4 control-label'])}}
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">€</span>
|
||||
{{Form::input('number','amount_max', Input::old('amount_max'), ['step' => 'any', 'class' => 'form-control'])}}
|
||||
</div>
|
||||
|
||||
@if($errors->has('amount_max'))
|
||||
<p class="text-danger">{{$errors->first('amount_max')}}</p>
|
||||
@else
|
||||
<span class="help-block">Firefly will only include transactions with a lower amount than this. If your rent
|
||||
is usually around € 500,-, enter <code>550</code> to be safe.</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('date', 'Date', ['class' => 'col-sm-4 control-label'])}}
|
||||
<div class="col-sm-8">
|
||||
{{ Form::input('date','date', Input::old('date') ?: date('Y-m-d'), ['class'
|
||||
=> 'form-control']) }}
|
||||
@if($errors->has('date'))
|
||||
<p class="text-danger">{{$errors->first('date')}}</p>
|
||||
@else
|
||||
<span class="help-block">Select the next date you expect the transaction to occur.</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="period" class="col-sm-4 control-label">Recurrence</label>
|
||||
<div class="col-sm-8">
|
||||
{{Form::select('repeat_freq',$periods,Input::old('repeat_freq') ?: 'monthly',['class' => 'form-control'])}}
|
||||
@if($errors->has('repeat_freq'))
|
||||
<p class="text-danger">{{$errors->first('repeat_freq')}}</p>
|
||||
@else
|
||||
<span class="help-block">Select the period over which this transaction repeats</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<h4>Optional fields</h4>
|
||||
|
||||
<div class="form-group">
|
||||
{{ Form::label('skip', 'Skip', ['class' => 'col-sm-4 control-label'])}}
|
||||
<div class="col-sm-8">
|
||||
{{Form::input('number','skip', Input::old('skip') ?: 0, ['class' => 'form-control'])}}
|
||||
|
||||
@if($errors->has('skip'))
|
||||
<p class="text-danger">{{$errors->first('skip')}}</p>
|
||||
@else
|
||||
<span class="help-block">Make Firefly skip every <em>n</em> times. Fill in <code>2</code>, and Firefly
|
||||
will match, skip, skip and match a transaction.</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- select budget -->
|
||||
|
||||
|
||||
|
||||
<!-- select category -->
|
||||
|
||||
<!-- select beneficiary -->
|
||||
|
||||
<div class="form-group">
|
||||
<label for="automatch" class="col-sm-4 control-label">Auto-match</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{{Form::checkbox('automatch',1,Input::old('automatch') == '1' || !Input::old('automatch'))}}
|
||||
Yes
|
||||
</label>
|
||||
</div>
|
||||
<span class="help-block">Firefly will automatically match transactions.</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="active" class="col-sm-4 control-label">Active</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{{Form::checkbox('active',1,Input::old('active') == '1' || !Input::old('active'))}}
|
||||
Yes
|
||||
</label>
|
||||
</div>
|
||||
<span class="help-block">This recurring transaction is actually active.</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
|
||||
<!-- add another after this one? -->
|
||||
<div class="form-group">
|
||||
<label for="create" class="col-sm-4 control-label"> </label>
|
||||
<div class="col-sm-8">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
{{Form::checkbox('create',1,Input::old('create') == '1')}}
|
||||
Create another (return to this form)
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-4 col-sm-8">
|
||||
<button type="submit" class="btn btn-default btn-success">Create the recurring transaction</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{Form::close()}}
|
||||
|
||||
|
||||
@stop
|
||||
@section('styles')
|
||||
<?php echo stylesheet_link_tag('recurring'); ?>
|
||||
@stop
|
||||
@section('scripts')
|
||||
<?php echo javascript_include_tag('recurring'); ?>
|
||||
|
||||
@stop
|
||||
37
app/views/recurring/delete.blade.php
Normal file
37
app/views/recurring/delete.blade.php
Normal file
@@ -0,0 +1,37 @@
|
||||
@extends('layouts.default')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<h1>Firefly
|
||||
<small>Delete recurring transaction "{{{$recurringTransaction->name}}}"</small>
|
||||
</h1>
|
||||
<p class="lead">
|
||||
Remember that deleting something is permanent.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{Form::open(['class' => 'form-horizontal','url' => route('recurring.destroy',$recurringTransaction->id)])}}
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<p class="text-danger">
|
||||
Press "Delete permanently" If you are sure you want to delete "{{{$recurringTransaction->name}}}".
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-8">
|
||||
<button type="submit" class="btn btn-default btn-danger">Delete permanently</button>
|
||||
<a href="{{route('recurring.index')}}" class="btn-default btn">Cancel</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{Form::close()}}
|
||||
@stop
|
||||
@@ -5,6 +5,7 @@
|
||||
<h1>Firefly
|
||||
<small>Recurring transactions</small>
|
||||
</h1>
|
||||
<p class="lead">Use recurring transactions to track repeated expenses</p>
|
||||
<p class="text-info">We all have bills to pay. Firefly can help you organize those bills into recurring transactions,
|
||||
which are exactly what the name suggests. Firefly can match new (and existing) transactions to such a recurring transaction
|
||||
and help you organize these expenses into manageable groups. The front page of Firefly will show you which recurring
|
||||
@@ -22,10 +23,54 @@
|
||||
<th>Amount between</th>
|
||||
<th>Expected every</th>
|
||||
<th>Next expected match</th>
|
||||
<th>Automatch</th>
|
||||
<th>Auto-match</th>
|
||||
<th>Active</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
@foreach($list as $entry)
|
||||
<tr>
|
||||
<td><a href="#">{{{$entry->name}}}</a></td>
|
||||
<td>
|
||||
@foreach(explode(' ',$entry->match) as $word)
|
||||
<span class="label label-default">{{{$word}}}</span>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
{{mf($entry->amount_min)}} –
|
||||
{{mf($entry->amount_max)}}
|
||||
</td>
|
||||
<td>
|
||||
{{$entry->repeat_freq}}
|
||||
</td>
|
||||
<td>
|
||||
{{$entry->next()->format('d-m-Y')}}
|
||||
</td>
|
||||
<td>
|
||||
@if($entry->automatch)
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
@else
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if($entry->active)
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
@else
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group btn-group-xs">
|
||||
<a href="{{route('recurring.edit',$entry->id)}}" class="btn btn-default"><span class="glyphicon glyphicon-pencil"></span></a>
|
||||
<a href="{{route('recurring.delete',$entry->id)}}" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
<p>
|
||||
<a href="{{route('recurring.create')}}" class="btn btn-success btn-large">Create new recurring transaction</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
Reference in New Issue
Block a user