Update frontend to facilitate bills.

This commit is contained in:
James Cole 2021-07-25 19:39:35 +02:00
parent a18742d250
commit 217a382616
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
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_code' => ['currency_code', 'string'],
'date' => ['date', 'date'],
'end_date' => ['end_date', 'date'],
'extension_date' => ['extension_date', 'date'],
'repeat_freq' => ['repeat_freq', 'string'],
'skip' => ['skip', 'integer'],
'active' => ['active', 'boolean'],
@ -75,16 +77,18 @@ class StoreRequest extends FormRequest
public function rules(): array
{
return [
'name' => 'between:1,255|uniqueObjectForUser:bills,name',
'amount_min' => 'numeric|gt:0',
'amount_max' => 'numeric|gt:0',
'currency_id' => 'numeric|exists:transaction_currencies,id',
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
'date' => 'date',
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly',
'skip' => 'between:0,31',
'active' => [new IsBoolean],
'notes' => 'between:1,65536',
'name' => 'between:1,255|uniqueObjectForUser:bills,name',
'amount_min' => 'numeric|gt:0|required',
'amount_max' => 'numeric|gt:0|required',
'currency_id' => 'numeric|exists:transaction_currencies,id',
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
'date' => 'date|required',
'end_date' => 'date|after:date',
'extension_date' => 'date|after:date',
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly|required',
'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_code' => ['currency_code', 'string'],
'date' => ['date', 'date'],
'end_date' => ['end_date', 'date'],
'extension_date' => ['extension_date', 'date'],
'repeat_freq' => ['repeat_freq', 'string'],
'skip' => ['skip', 'integer'],
'active' => ['active', 'boolean'],
@ -75,16 +77,18 @@ class UpdateRequest extends FormRequest
$bill = $this->route()->parameter('bill');
return [
'name' => sprintf('between:1,255|uniqueObjectForUser:bills,name,%d', $bill->id),
'amount_min' => 'numeric|gt:0',
'amount_max' => 'numeric|gt:0',
'currency_id' => 'numeric|exists:transaction_currencies,id',
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
'date' => 'date',
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly',
'skip' => 'between:0,31',
'active' => [new IsBoolean],
'notes' => 'between:1,65536',
'name' => sprintf('between:1,255|uniqueObjectForUser:bills,name,%d', $bill->id),
'amount_min' => 'numeric|gt:0',
'amount_max' => 'numeric|gt:0',
'currency_id' => 'numeric|exists:transaction_currencies,id',
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
'date' => 'date',
'end_date' => 'date|after:date',
'extension_date' => 'date|after:date',
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly',
'skip' => 'between:0,31',
'active' => [new IsBoolean],
'notes' => 'between:1,65536',
];
}

View File

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

View File

@ -25,6 +25,7 @@ namespace FireflyIII\Http\Middleware;
use Closure;
use FireflyIII\Models\Account;
use FireflyIII\Models\Bill;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Http\Request;
@ -58,6 +59,10 @@ class InterestingMessage
Preferences::mark();
$this->handleAccountMessage($request);
}
if ($this->billMessage($request)) {
Preferences::mark();
$this->handleBillMessage($request);
}
return $next($request);
}
@ -88,11 +93,12 @@ class InterestingMessage
/**
* @param Request $request
*/
private function handleAccountMessage(Request $request): void {
private function handleAccountMessage(Request $request): void
{
// get parameters from request.
$accountId = $request->get('account_id');
$message = $request->get('message');
$message = $request->get('message');
/** @var Account $account */
$account = auth()->user()->accounts()->withTrashed()->find($accountId);
@ -103,10 +109,35 @@ class InterestingMessage
if ('deleted' === $message) {
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]));
}
}
/**
* @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
*/
@ -162,4 +193,18 @@ class InterestingMessage
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 */
protected $fillable
= ['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 */
protected $hidden = ['amount_min_encrypted', 'amount_max_encrypted', 'name_encrypted', 'match_encrypted'];

View File

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

View File

@ -23,7 +23,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### 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!
- Correct menu display, thanks @vonsogt!