mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-11-03 20:55:05 +00:00 
			
		
		
		
	Update frontend to facilitate bills.
This commit is contained in:
		@@ -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',
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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',
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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'];
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user