Update frontend to facilitate bills.

This commit is contained in:
James Cole
2021-07-25 19:39:35 +02:00
parent a18742d250
commit 217a382616
8 changed files with 81 additions and 25 deletions

View File

@@ -55,6 +55,8 @@ class StoreRequest extends FormRequest
'currency_id' => ['currency_id', 'integer'], 'currency_id' => ['currency_id', 'integer'],
'currency_code' => ['currency_code', 'string'], 'currency_code' => ['currency_code', 'string'],
'date' => ['date', 'date'], 'date' => ['date', 'date'],
'end_date' => ['end_date', 'date'],
'extension_date' => ['extension_date', 'date'],
'repeat_freq' => ['repeat_freq', 'string'], 'repeat_freq' => ['repeat_freq', 'string'],
'skip' => ['skip', 'integer'], 'skip' => ['skip', 'integer'],
'active' => ['active', 'boolean'], 'active' => ['active', 'boolean'],
@@ -75,16 +77,18 @@ class StoreRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
return [ return [
'name' => 'between:1,255|uniqueObjectForUser:bills,name', 'name' => 'between:1,255|uniqueObjectForUser:bills,name',
'amount_min' => 'numeric|gt:0', 'amount_min' => 'numeric|gt:0|required',
'amount_max' => 'numeric|gt:0', 'amount_max' => 'numeric|gt:0|required',
'currency_id' => 'numeric|exists:transaction_currencies,id', 'currency_id' => 'numeric|exists:transaction_currencies,id',
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code', 'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
'date' => 'date', 'date' => 'date|required',
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly', 'end_date' => 'date|after:date',
'skip' => 'between:0,31', 'extension_date' => 'date|after:date',
'active' => [new IsBoolean], 'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly|required',
'notes' => 'between:1,65536', 'skip' => 'between:0,31',
'active' => [new IsBoolean],
'notes' => 'between:1,65536',
]; ];
} }

View File

@@ -53,6 +53,8 @@ class UpdateRequest extends FormRequest
'currency_id' => ['currency_id', 'integer'], 'currency_id' => ['currency_id', 'integer'],
'currency_code' => ['currency_code', 'string'], 'currency_code' => ['currency_code', 'string'],
'date' => ['date', 'date'], 'date' => ['date', 'date'],
'end_date' => ['end_date', 'date'],
'extension_date' => ['extension_date', 'date'],
'repeat_freq' => ['repeat_freq', 'string'], 'repeat_freq' => ['repeat_freq', 'string'],
'skip' => ['skip', 'integer'], 'skip' => ['skip', 'integer'],
'active' => ['active', 'boolean'], 'active' => ['active', 'boolean'],
@@ -75,16 +77,18 @@ class UpdateRequest extends FormRequest
$bill = $this->route()->parameter('bill'); $bill = $this->route()->parameter('bill');
return [ return [
'name' => sprintf('between:1,255|uniqueObjectForUser:bills,name,%d', $bill->id), 'name' => sprintf('between:1,255|uniqueObjectForUser:bills,name,%d', $bill->id),
'amount_min' => 'numeric|gt:0', 'amount_min' => 'numeric|gt:0',
'amount_max' => 'numeric|gt:0', 'amount_max' => 'numeric|gt:0',
'currency_id' => 'numeric|exists:transaction_currencies,id', 'currency_id' => 'numeric|exists:transaction_currencies,id',
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code', 'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
'date' => 'date', 'date' => 'date',
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly', 'end_date' => 'date|after:date',
'skip' => 'between:0,31', 'extension_date' => 'date|after:date',
'active' => [new IsBoolean], 'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly',
'notes' => 'between:1,65536', 'skip' => 'between:0,31',
'active' => [new IsBoolean],
'notes' => 'between:1,65536',
]; ];
} }

View File

@@ -67,6 +67,8 @@ class BillFactory
'transaction_currency_id' => $currency->id, 'transaction_currency_id' => $currency->id,
'amount_max' => $data['amount_max'], 'amount_max' => $data['amount_max'],
'date' => $data['date'], 'date' => $data['date'],
'end_date' => $data['end_date'] ?? null,
'extension_date' => $data['extension_date'] ?? null,
'repeat_freq' => $data['repeat_freq'], 'repeat_freq' => $data['repeat_freq'],
'skip' => $skip, 'skip' => $skip,
'automatch' => true, 'automatch' => true,

View File

@@ -25,6 +25,7 @@ namespace FireflyIII\Http\Middleware;
use Closure; use Closure;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\Bill;
use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -58,6 +59,10 @@ class InterestingMessage
Preferences::mark(); Preferences::mark();
$this->handleAccountMessage($request); $this->handleAccountMessage($request);
} }
if ($this->billMessage($request)) {
Preferences::mark();
$this->handleBillMessage($request);
}
return $next($request); return $next($request);
} }
@@ -88,11 +93,12 @@ class InterestingMessage
/** /**
* @param Request $request * @param Request $request
*/ */
private function handleAccountMessage(Request $request): void { private function handleAccountMessage(Request $request): void
{
// get parameters from request. // get parameters from request.
$accountId = $request->get('account_id'); $accountId = $request->get('account_id');
$message = $request->get('message'); $message = $request->get('message');
/** @var Account $account */ /** @var Account $account */
$account = auth()->user()->accounts()->withTrashed()->find($accountId); $account = auth()->user()->accounts()->withTrashed()->find($accountId);
@@ -103,10 +109,35 @@ class InterestingMessage
if ('deleted' === $message) { if ('deleted' === $message) {
session()->flash('success', (string)trans('firefly.account_deleted', ['name' => $account->name])); session()->flash('success', (string)trans('firefly.account_deleted', ['name' => $account->name]));
} }
if('created' === $message) { if ('created' === $message) {
session()->flash('success', (string)trans('firefly.stored_new_account', ['name' => $account->name])); session()->flash('success', (string)trans('firefly.stored_new_account', ['name' => $account->name]));
} }
} }
/**
* @param Request $request
*/
private function handleBillMessage(Request $request): void
{
// get parameters from request.
$billId = $request->get('bill_id');
$message = $request->get('message');
/** @var Bill $bill */
$bill = auth()->user()->bills()->withTrashed()->find($billId);
if (null === $bill) {
return;
}
if ('deleted' === $message) {
session()->flash('success', (string)trans('firefly.deleted_bill', ['name' => $bill->name]));
}
if ('created' === $message) {
session()->flash('success', (string)trans('firefly.stored_new_bill', ['name' => $bill->name]));
}
}
/** /**
* @param Request $request * @param Request $request
*/ */
@@ -162,4 +193,18 @@ class InterestingMessage
return null !== $accountId && null !== $message; return null !== $accountId && null !== $message;
} }
/**
* @param Request $request
*
* @return bool
*/
private function billMessage(Request $request): bool
{
// get parameters from request.
$billId = $request->get('bill_id');
$message = $request->get('message');
return null !== $billId && null !== $message;
}
} }

View File

@@ -122,7 +122,7 @@ class Bill extends Model
/** @var array Fields that can be filled */ /** @var array Fields that can be filled */
protected $fillable protected $fillable
= ['name', 'match', 'amount_min', 'user_id', 'amount_max', 'date', 'repeat_freq', 'skip', = ['name', 'match', 'amount_min', 'user_id', 'amount_max', 'date', 'repeat_freq', 'skip',
'automatch', 'active', 'transaction_currency_id']; 'automatch', 'active', 'transaction_currency_id', 'end_date', 'extension_date'];
/** @var array Hidden from view */ /** @var array Hidden from view */
protected $hidden = ['amount_min_encrypted', 'amount_max_encrypted', 'name_encrypted', 'match_encrypted']; protected $hidden = ['amount_min_encrypted', 'amount_max_encrypted', 'name_encrypted', 'match_encrypted'];

View File

@@ -38,6 +38,7 @@ class EitherConfigKey
'firefly.accountRoles', 'firefly.accountRoles',
'firefly.valid_liabilities', 'firefly.valid_liabilities',
'firefly.interest_periods', 'firefly.interest_periods',
'firefly.bill_periods',
'firefly.enable_external_map', 'firefly.enable_external_map',
'firefly.expected_source_types', 'firefly.expected_source_types',
'app.timezone', 'app.timezone',

View File

@@ -23,7 +23,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Fixed ### Fixed
- #4894 Bad number comparison - [Issue 4894](https://github.com/firefly-iii/firefly-iii/issues/4894) Bad number comparison
- Various Sonarqube issues, thanks @hazma-fadil! - Various Sonarqube issues, thanks @hazma-fadil!
- Correct menu display, thanks @vonsogt! - Correct menu display, thanks @vonsogt!