2023-10-08 16:11:04 +02:00
|
|
|
@extends('layout.v2')
|
|
|
|
|
@section('vite')
|
|
|
|
|
@vite(['resources/assets/v2/sass/app.scss', 'resources/assets/v2/pages/transactions/create.js'])
|
|
|
|
|
@endsection
|
|
|
|
|
@section('content')
|
|
|
|
|
<div class="app-content">
|
|
|
|
|
<!--begin::Container-->
|
|
|
|
|
<div class="container-fluid" x-data="transactions" id="form">
|
|
|
|
|
<div class="row mb-2">
|
|
|
|
|
<div class="col">
|
|
|
|
|
<template x-if="showSuccessMessage">
|
|
|
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
2023-12-23 16:15:13 +01:00
|
|
|
<a :href="successMessageLink" class="alert-link" x-text="successMessageText"></a>
|
2023-10-08 16:11:04 +02:00
|
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template x-if="showErrorMessage">
|
2023-10-28 17:17:09 +02:00
|
|
|
<div class="alert alert-danger alert-dismissible fade show" role="alert" x-text="errorMessageText">
|
2023-10-08 16:11:04 +02:00
|
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col">
|
|
|
|
|
<ul class="nav nav-tabs" id="splitTabs" role="tablist">
|
|
|
|
|
<template x-for="transaction,index in entries">
|
|
|
|
|
<li class="nav-item" role="presentation">
|
|
|
|
|
<button :id="'split-'+index+'-tab'"
|
|
|
|
|
:class="{'nav-link': true, 'active': index === 0 }"
|
|
|
|
|
data-bs-toggle="tab"
|
|
|
|
|
:data-bs-target="'#split-'+index+'-pane'"
|
|
|
|
|
type="button" role="tab"
|
|
|
|
|
:aria-controls="'split-'+index+'-pane'"
|
2023-10-21 07:45:28 +02:00
|
|
|
aria-selected="true">{{ __('firefly.single_split') }} #
|
2023-10-28 17:17:09 +02:00
|
|
|
<span x-text="index+1"></span>
|
2023-10-08 16:11:04 +02:00
|
|
|
</button>
|
|
|
|
|
</li>
|
|
|
|
|
</template>
|
|
|
|
|
<li class="nav-item" role="presentation">
|
|
|
|
|
<button class="nav-link" type="button" role="tab" @click="addSplit()"
|
|
|
|
|
><em class="fa-solid fa-plus-circle"></em>
|
|
|
|
|
</button>
|
|
|
|
|
</li>
|
|
|
|
|
<li class="nav-item">
|
|
|
|
|
<a class="nav-link disabled" aria-disabled="true">
|
2023-10-21 07:45:28 +02:00
|
|
|
{{ __('firefly.total') }}:
|
2023-10-08 16:11:04 +02:00
|
|
|
<span x-text="formattedTotalAmount()"></span>
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="tab-content" id="splitTabsContent">
|
|
|
|
|
<template x-for="transaction,index in entries">
|
|
|
|
|
<div
|
|
|
|
|
:class="{'tab-pane fade pt-2':true, 'show active': index ===0}"
|
|
|
|
|
:id="'split-'+index+'-pane'"
|
|
|
|
|
role="tabpanel"
|
|
|
|
|
:aria-labelledby="'split-'+index+'-tab'"
|
|
|
|
|
tabindex="0"
|
|
|
|
|
x-init="addedSplit()"
|
|
|
|
|
>
|
|
|
|
|
<div class="row mb-2">
|
|
|
|
|
<div class="col-xl-6 col-lg-6 col-md-12 col-xs-12 mb-2">
|
|
|
|
|
<div class="card">
|
|
|
|
|
<div class="card-header">
|
2023-10-21 07:45:28 +02:00
|
|
|
<h3 class="card-title"
|
|
|
|
|
>{{ __('firefly.basic_journal_information') }}</h3>
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="card-body">
|
|
|
|
|
|
|
|
|
|
<div class="row mb-3">
|
2023-10-21 07:45:28 +02:00
|
|
|
<label :for="'description_' + index"
|
2023-10-08 16:11:04 +02:00
|
|
|
class="col-sm-1 col-form-label d-none d-sm-block">
|
2023-10-21 07:45:28 +02:00
|
|
|
<em
|
|
|
|
|
title="TODO explain me"
|
|
|
|
|
class="fa-solid fa-font"></em>
|
2023-10-08 16:11:04 +02:00
|
|
|
</label>
|
|
|
|
|
<div class="col-sm-10">
|
|
|
|
|
<input type="text" class="form-control ac-description"
|
|
|
|
|
:id="'description_' + index"
|
|
|
|
|
@change="detectTransactionType"
|
|
|
|
|
x-model="transaction.description"
|
2023-10-21 07:45:28 +02:00
|
|
|
placeholder="{{ __('firefly.description') }}">
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="row mb-3">
|
2023-10-21 07:45:28 +02:00
|
|
|
<label :for="'source_' + index" class="col-sm-1 col-form-label d-none d-sm-block">
|
2023-10-08 16:11:04 +02:00
|
|
|
<i class="fa-solid fa-arrow-right"></i>
|
|
|
|
|
</label>
|
|
|
|
|
<div class="col-sm-10">
|
2023-10-21 07:45:28 +02:00
|
|
|
<input type="text"
|
|
|
|
|
class="form-control ac-source"
|
|
|
|
|
:id="'source_' + index"
|
2023-10-29 05:24:57 +01:00
|
|
|
x-model="transaction.source_account.alpine_name"
|
2023-10-08 16:11:04 +02:00
|
|
|
:data-index="index"
|
2023-10-21 07:45:28 +02:00
|
|
|
placeholder="{{ __('firefly.source_account') }}">
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="row mb-3">
|
2023-10-21 07:45:28 +02:00
|
|
|
<label :for ="'dest_' + index" class="col-sm-1 col-form-label d-none d-sm-block">
|
2023-10-08 16:11:04 +02:00
|
|
|
<i class="fa-solid fa-arrow-left"></i>
|
|
|
|
|
</label>
|
|
|
|
|
<div class="col-sm-10">
|
2023-10-21 07:45:28 +02:00
|
|
|
<input type="text"
|
|
|
|
|
class="form-control ac-dest"
|
|
|
|
|
:id="'dest_' + index"
|
2023-10-29 05:24:57 +01:00
|
|
|
x-model="transaction.destination_account.alpine_name"
|
2023-10-08 16:11:04 +02:00
|
|
|
:data-index="index"
|
2023-10-21 07:45:28 +02:00
|
|
|
placeholder="{{ __('firefly.destination_account') }}">
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row mb-3">
|
|
|
|
|
<label for="date_0" class="col-sm-1 col-form-label d-none d-sm-block">
|
|
|
|
|
<i class="fa-solid fa-calendar"></i>
|
|
|
|
|
</label>
|
|
|
|
|
<div class="col-sm-10">
|
2023-10-28 17:17:09 +02:00
|
|
|
<input type="datetime-local" class="form-control" :id="'date_' + index"
|
2023-10-08 16:11:04 +02:00
|
|
|
@change="detectTransactionType"
|
|
|
|
|
x-model="transaction.date"
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-xl-6 col-lg-6 col-md-12 col-xs-12 mb-2">
|
|
|
|
|
<div class="card">
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<h3 class="card-title">
|
|
|
|
|
{{ __('firefly.transaction_journal_amount') }}
|
|
|
|
|
</h3>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-body">
|
|
|
|
|
<div class="row mb-3">
|
2023-10-21 07:45:28 +02:00
|
|
|
<div class="col-sm-3">
|
|
|
|
|
<template x-if="loadingCurrencies">
|
|
|
|
|
<span class="form-control-plaintext"><em class="fa-solid fa-spinner fa-spin"></em></span>
|
|
|
|
|
</template>
|
|
|
|
|
<template x-if="!loadingCurrencies">
|
2023-10-28 17:17:09 +02:00
|
|
|
<select class="form-control" :id="'currency_code_' + index"
|
|
|
|
|
x-model="transaction.currency_code"
|
|
|
|
|
>
|
2023-10-29 05:24:57 +01:00
|
|
|
<template x-for="currency in nativeCurrencies">
|
2023-10-28 17:17:09 +02:00
|
|
|
<option :selected="currency.id == defaultCurrency.id" :label="currency.name" :value="currency.code" x-text="currency.name"></option>
|
|
|
|
|
</template>
|
2023-10-21 07:45:28 +02:00
|
|
|
</select>
|
|
|
|
|
</template>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-sm-9">
|
2023-12-23 16:15:13 +01:00
|
|
|
<input type="number" step="any" min="0"
|
2023-10-08 16:11:04 +02:00
|
|
|
:id="'amount_' + index"
|
|
|
|
|
:data-index="index"
|
2023-12-23 16:15:13 +01:00
|
|
|
:class="{'is-invalid': transaction.errors.amount.length > 0, 'input-mask' : true, 'form-control': true}"
|
|
|
|
|
x-model="transaction.amount" data-inputmask="currency"
|
2023-10-08 16:11:04 +02:00
|
|
|
@change="changedAmount"
|
2023-10-29 05:24:57 +01:00
|
|
|
placeholder="0.00">
|
2023-12-23 16:15:13 +01:00
|
|
|
<template x-if="transaction.errors.amount.length > 0">
|
|
|
|
|
<div class="invalid-feedback" x-text="transaction.errors.amount[0]"></div>
|
|
|
|
|
</template>
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-footer">
|
|
|
|
|
amount card
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-xl-4 col-lg-6 col-md-12 col-xs-12 mb-2">
|
|
|
|
|
<div class="card">
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<h3 class="card-title">
|
|
|
|
|
{{ __('firefly.transaction_journal_meta') }}
|
|
|
|
|
</h3>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-body">
|
|
|
|
|
important meta info card
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-footer">
|
|
|
|
|
important meta info card
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-xl-4 col-lg-6 col-md-12 col-xs-12 mb-2">
|
|
|
|
|
<div class="card">
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<h3 class="card-title">
|
|
|
|
|
{{ __('firefly.transaction_journal_extra') }}
|
|
|
|
|
</h3>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-body">
|
|
|
|
|
Less important meta
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-footer">
|
|
|
|
|
Less important meta
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-xl-4 col-lg-6 col-md-12 col-xs-12 mb-2">
|
|
|
|
|
<div class="card">
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<h3 class="card-title">
|
|
|
|
|
{{ __('firefly.submission_options') }}
|
|
|
|
|
|
|
|
|
|
</h3>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="card-body">
|
2023-12-23 16:15:13 +01:00
|
|
|
<div class="form-check">
|
|
|
|
|
<input class="form-check-input" x-model="returnHereButton" type="checkbox" id="returnButton">
|
|
|
|
|
<label class="form-check-label" for="returnButton">
|
|
|
|
|
Return here to create a new transaction
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-check">
|
|
|
|
|
<input class="form-check-input" x-model="resetButton" type="checkbox" id="resetButton" :disabled="!returnHereButton">
|
|
|
|
|
<label class="form-check-label" for="resetButton">
|
|
|
|
|
Reset the form after returning
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-check">
|
|
|
|
|
<input class="form-check-input" type="checkbox" id="rulesButton" :checked="rulesButton">
|
|
|
|
|
<label class="form-check-label" for="rulesButton">
|
|
|
|
|
Run rules on this transaction
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-check">
|
|
|
|
|
<input class="form-check-input" type="checkbox" id="webhookButton" :checked="webhookButton">
|
|
|
|
|
<label class="form-check-label" for="webhookButton">
|
|
|
|
|
Run webhooks on this transaction
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
<div class="card-footer">
|
|
|
|
|
submission options
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-12">
|
|
|
|
|
<template x-if="0 !== index">
|
2023-12-23 16:15:13 +01:00
|
|
|
<button :disabled="submitting" class="btn btn-danger" @click="removeSplit(index)">Remove this split
|
2023-10-08 16:11:04 +02:00
|
|
|
</button>
|
|
|
|
|
</template>
|
2023-12-23 16:15:13 +01:00
|
|
|
<button class="btn btn-info" :disabled="submitting">Add another split</button>
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col text-end">
|
2023-12-23 16:15:13 +01:00
|
|
|
<button class="btn btn-success" :disabled="submitting" @click="submitTransaction()">Submit</button>
|
2023-10-08 16:11:04 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
@endsection
|