Code for new release.

This commit is contained in:
James Cole 2024-01-02 20:19:09 +01:00
parent 9eca31529c
commit bc26ee5cde
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
85 changed files with 474 additions and 187 deletions

View File

@ -46,7 +46,7 @@ class CategoryController extends Controller
function ($request, $next) {
$this->repository = app(CategoryRepositoryInterface::class);
$userGroup = $this->validateUserGroup($request);
$userGroup = $this->validateUserGroup($request);
if (null !== $userGroup) {
$this->repository->setUserGroup($userGroup);
}

View File

@ -25,10 +25,8 @@ namespace FireflyIII\Api\V2\Controllers\Autocomplete;
use FireflyIII\Api\V2\Controllers\Controller;
use FireflyIII\Api\V2\Request\Autocomplete\AutocompleteRequest;
use FireflyIII\Models\Category;
use FireflyIII\Models\Tag;
use FireflyIII\Repositories\UserGroups\Tag\TagRepositoryInterface;
use FireflyIII\Repositories\UserGroups\Category\CategoryRepositoryInterface;
use Illuminate\Http\JsonResponse;
/**
@ -48,7 +46,7 @@ class TagController extends Controller
function ($request, $next) {
$this->repository = app(TagRepositoryInterface::class);
$userGroup = $this->validateUserGroup($request);
$userGroup = $this->validateUserGroup($request);
if (null !== $userGroup) {
$this->repository->setUserGroup($userGroup);
}
@ -70,14 +68,14 @@ class TagController extends Controller
public function tags(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$result = $this->repository->searchTag($data['query'], $this->parameters->get('limit'));
$result = $this->repository->searchTag($data['query'], $data['limit']);
$filtered = $result->map(
static function (Tag $item) {
return [
'id' => (string) $item->id,
'name' => $item->tag,
'id' => (string) $item->id,
'name' => $item->tag,
'value' => (string) $item->id,
'label' => $item->tag,
'label' => $item->tag,
];
}
);

View File

@ -95,7 +95,7 @@ class CreateController extends Controller
];
// interest calculation periods:
$interestPeriods = [
$interestPeriods = [
'daily' => (string) trans('firefly.interest_calc_daily'),
'monthly' => (string) trans('firefly.interest_calc_monthly'),
'yearly' => (string) trans('firefly.interest_calc_yearly'),
@ -110,12 +110,11 @@ class CreateController extends Controller
]
);
// issue #8321
$showNetWorth = true;
$showNetWorth = true;
if ('liabilities' !== $objectType && 'asset' !== $objectType) {
$showNetWorth = false;
}
// put previous url in session if not redirect from store (not "create another").
if (true !== session('accounts.create.fromStore')) {
$this->rememberPreviousUrl('accounts.create.url');
@ -138,8 +137,8 @@ class CreateController extends Controller
*/
public function store(AccountFormRequest $request)
{
$data = $request->getAccountData();
$account = $this->repository->store($data);
$data = $request->getAccountData();
$account = $this->repository->store($data);
$request->session()->flash('success', (string) trans('firefly.stored_new_account', ['name' => $account->name]));
app('preferences')->mark();
@ -157,7 +156,7 @@ class CreateController extends Controller
// store attachment(s):
/** @var null|array $files */
$files = $request->hasFile('attachments') ? $request->file('attachments') : null;
$files = $request->hasFile('attachments') ? $request->file('attachments') : null;
if (null !== $files && !auth()->user()->hasRole('demo')) {
$this->attachments->saveAttachmentsForModel($account, $files);
}
@ -171,7 +170,7 @@ class CreateController extends Controller
}
// redirect to previous URL.
$redirect = redirect($this->getPreviousUrl('accounts.create.url'));
$redirect = redirect($this->getPreviousUrl('accounts.create.url'));
if (1 === (int) $request->get('create_another')) {
// set value so create routine will not overwrite URL:
$request->session()->put('accounts.create.fromStore', true);

View File

@ -80,17 +80,17 @@ class EditController extends Controller
return $this->redirectAccountToAccount($account);
}
$objectType = config('firefly.shortNamesByFullName')[$account->accountType->type];
$subTitle = (string) trans(sprintf('firefly.edit_%s_account', $objectType), ['name' => $account->name]);
$subTitleIcon = config(sprintf('firefly.subIconsByIdentifier.%s', $objectType));
$roles = $this->getRoles();
$liabilityTypes = $this->getLiabilityTypes();
$location = $repository->getLocation($account);
$latitude = null !== $location ? $location->latitude : config('firefly.default_location.latitude');
$longitude = null !== $location ? $location->longitude : config('firefly.default_location.longitude');
$zoomLevel = null !== $location ? $location->zoom_level : config('firefly.default_location.zoom_level');
$hasLocation = null !== $location;
$locations = [
$objectType = config('firefly.shortNamesByFullName')[$account->accountType->type];
$subTitle = (string) trans(sprintf('firefly.edit_%s_account', $objectType), ['name' => $account->name]);
$subTitleIcon = config(sprintf('firefly.subIconsByIdentifier.%s', $objectType));
$roles = $this->getRoles();
$liabilityTypes = $this->getLiabilityTypes();
$location = $repository->getLocation($account);
$latitude = null !== $location ? $location->latitude : config('firefly.default_location.latitude');
$longitude = null !== $location ? $location->longitude : config('firefly.default_location.longitude');
$zoomLevel = null !== $location ? $location->zoom_level : config('firefly.default_location.zoom_level');
$hasLocation = null !== $location;
$locations = [
'location' => [
'latitude' => null !== old('location_latitude') ? old('location_latitude') : $latitude,
'longitude' => null !== old('location_longitude') ? old('location_longitude') : $longitude,
@ -99,13 +99,13 @@ class EditController extends Controller
],
];
$liabilityDirections = [
$liabilityDirections = [
'debit' => trans('firefly.liability_direction_debit'),
'credit' => trans('firefly.liability_direction_credit'),
];
// interest calculation periods:
$interestPeriods = [
$interestPeriods = [
'daily' => (string) trans('firefly.interest_calc_daily'),
'monthly' => (string) trans('firefly.interest_calc_monthly'),
'yearly' => (string) trans('firefly.interest_calc_yearly'),
@ -121,23 +121,23 @@ class EditController extends Controller
if ('0' === $openingBalanceAmount) {
$openingBalanceAmount = '';
}
$openingBalanceDate = $repository->getOpeningBalanceDate($account);
$currency = $this->repository->getAccountCurrency($account) ?? app('amount')->getDefaultCurrency();
$openingBalanceDate = $repository->getOpeningBalanceDate($account);
$currency = $this->repository->getAccountCurrency($account) ?? app('amount')->getDefaultCurrency();
// include this account in net-worth charts?
$includeNetWorth = $repository->getMetaValue($account, 'include_net_worth');
$includeNetWorth = null === $includeNetWorth ? true : '1' === $includeNetWorth;
$includeNetWorth = $repository->getMetaValue($account, 'include_net_worth');
$includeNetWorth = null === $includeNetWorth ? true : '1' === $includeNetWorth;
// issue #8321
$showNetWorth = true;
$showNetWorth = true;
if ('liabilities' !== $objectType && 'asset' !== $objectType) {
$showNetWorth = false;
}
// code to handle active-checkboxes
$hasOldInput = null !== $request->old('_token');
$virtualBalance = null === $account->virtual_balance ? '0' : $account->virtual_balance;
$preFilled = [
$hasOldInput = null !== $request->old('_token');
$virtualBalance = null === $account->virtual_balance ? '0' : $account->virtual_balance;
$preFilled = [
'account_number' => $repository->getMetaValue($account, 'account_number'),
'account_role' => $repository->getMetaValue($account, 'account_role'),
'cc_type' => $repository->getMetaValue($account, 'cc_type'),
@ -175,14 +175,14 @@ class EditController extends Controller
return $this->redirectAccountToAccount($account);
}
$data = $request->getAccountData();
$data = $request->getAccountData();
$this->repository->update($account, $data);
Log::channel('audit')->info(sprintf('Updated account #%d.', $account->id), $data);
$request->session()->flash('success', (string) trans('firefly.updated_account', ['name' => $account->name]));
// store new attachment(s):
/** @var null|array $files */
$files = $request->hasFile('attachments') ? $request->file('attachments') : null;
$files = $request->hasFile('attachments') ? $request->file('attachments') : null;
if (null !== $files && !auth()->user()->hasRole('demo')) {
$this->attachments->saveAttachmentsForModel($account, $files);
}

View File

@ -30,9 +30,6 @@ class CategoryRepository implements CategoryRepositoryInterface
{
use UserGroupTrait;
/**
* @inheritDoc
*/
public function searchCategory(string $query, int $limit): Collection
{
$search = $this->userGroup->categories();

View File

@ -29,11 +29,6 @@ interface CategoryRepositoryInterface
{
/**
* Search for a category using wild cards. Uses the database, so case sensitive.
*
* @param string $query
* @param int $limit
*
* @return Collection
*/
public function searchCategory(string $query, int $limit): Collection;
}

View File

@ -33,16 +33,13 @@ class TagRepository implements TagRepositoryInterface
{
use UserGroupTrait;
/**
* @inheritDoc
*/
public function searchTag(string $query): Collection
public function searchTag(string $query, int $limit): Collection
{
$query = sprintf('%%%s%%', $query);
$search = $this->user->tags();
if ('' !== $query) {
$search->where('tag', 'LIKE', $query);
$search->where('tag', 'LIKE', sprintf('%%%s%%', $query));
}
return $search->get(['tags.*']);
return $search->take($limit)->get(['tags.*']);
}
}

View File

@ -30,6 +30,5 @@ interface TagRepositoryInterface
/**
* Find one or more tags based on the query.
*/
public function searchTag(string $query): Collection;
public function searchTag(string $query, int $limit): Collection;
}

View File

@ -23,6 +23,7 @@ class IsValidAmount implements ValidationRule
if($this->emptyString($value)) {
$fail('validation.filled')->translate();
Log::info(sprintf('IsValidAmount: "%s" cannot be empty.', $value));
return;
}
@ -30,6 +31,7 @@ class IsValidAmount implements ValidationRule
if(!$this->isValidNumber($value)) {
$fail('validation.numeric')->translate();
Log::info(sprintf('IsValidAmount: "%s" is not a number.', $value));
return;
}
@ -37,6 +39,7 @@ class IsValidAmount implements ValidationRule
if($this->scientificNumber($value)) {
$fail('validation.scientific_notation')->translate();
Log::info(sprintf('IsValidAmount: "%s" cannot be in the scientific notation.', $value));
return;
}
@ -45,6 +48,7 @@ class IsValidAmount implements ValidationRule
$amount = bcmul('-1', self::BIG_AMOUNT);
$fail('validation.gte.numeric')->translate(['value' => $amount]);
Log::info(sprintf('IsValidAmount: "%s" must be more than %s.', $value, $amount));
return;
}

View File

@ -30,18 +30,21 @@ class IsValidPositiveAmount implements ValidationRule
if(!$this->isValidNumber($value)) {
$fail('validation.numeric')->translate();
Log::info(sprintf('IsValidPositiveAmount: "%s" is not a number.', $value));
return;
}
// must not be scientific notation:
if($this->scientificNumber($value)) {
$fail('validation.scientific_notation')->translate();
Log::info(sprintf('IsValidPositiveAmount: "%s" cannot be in the scientific notation.', $value));
return;
}
// must be more than zero:
if($this->lessOrEqualToZero($value)) {
$fail('validation.more_than_zero')->translate();
Log::info(sprintf('IsValidPositiveAmount: "%s" must be more than zero.', $value));
return;
}
// must be less than 100 million and 1709:

View File

@ -91,7 +91,6 @@ class SummaryBalanceGrouped
default => 'something'
};
$return[] = [
'key' => sprintf('%s-in-native', $title),
'value' => $this->amounts[$key]['native'] ?? '0',

View File

@ -108,7 +108,7 @@ class PiggyBankTransformer extends AbstractTransformer
$this->groups[$piggyBankId] = [
'object_group_id' => (string) $id,
'object_group_title' => $entry->title,
'object_group_order' => (int) $order,
'object_group_order' => $order,
];
}

View File

@ -55,7 +55,7 @@ trait ValidatesAutoBudgetRequest
$amount = '';
}
// basic float check:
if (!is_numeric($amount) || '' === (string) $amount) {
if (!is_numeric($amount)) {
$validator->errors()->add('auto_budget_amount', (string) trans('validation.amount_required_for_auto_budget'));
return;

View File

@ -3,6 +3,43 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## 6.1.2 - 2024-01-03
### Added
- Initial release.
### Changed
- [Issue 8304](https://github.com/firefly-iii/firefly-iii/issues/8304) Several issues with searching for and displaying of tag-related transactions
### Deprecated
- Initial release.
### Removed
- Double reference to webhooks in the menu
### Fixed
- [Issue 8297](https://github.com/firefly-iii/firefly-iii/issues/8297) Division by zero
- [Issue 8320](https://github.com/firefly-iii/firefly-iii/issues/8320) nullpointer in new layout
- [Issue 8321](https://github.com/firefly-iii/firefly-iii/issues/8321) Networth checkbox for expense and revenue accounts removed
- Long date ranges will throw an error
-
- Max sizes and reasonable limits for most numbers and strings
- Links in readme to documentation.
### Security
- Webhooks now properly disabled in the UI.
- [Issue 8322](https://github.com/firefly-iii/firefly-iii/issues/8322) Duplicate detection did not distinguish between users
### API
- Initial release.
## 6.1.1 - 2023-12-27
### Changed

View File

@ -114,7 +114,7 @@ return [
'handle_debts' => true,
// see cer.php for exchange rates feature flag.
],
'version' => '6.1.1',
'version' => '6.1.2',
'api_version' => '2.0.12',
'db_version' => 22,

View File

@ -69,7 +69,7 @@ return [
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL', 'stack'),
'level' => 'notice',
'level' => 'info',
],
'null' => [
'transport' => 'log',

6
package-lock.json generated
View File

@ -16,6 +16,7 @@
"chartjs-chart-sankey": "^0.12.0",
"date-fns": "^3.0.6",
"i18n-js": "^4.3.2",
"leaflet": "^1.9.4",
"store": "^2.0.12"
},
"devDependencies": {
@ -777,6 +778,11 @@
"vite": "^3.0.0 || ^4.0.0"
}
},
"node_modules/leaflet": {
"version": "1.9.4",
"resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz",
"integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA=="
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",

View File

@ -24,6 +24,7 @@
"chartjs-chart-sankey": "^0.12.0",
"date-fns": "^3.0.6",
"i18n-js": "^4.3.2",
"leaflet": "^1.9.4",
"store": "^2.0.12"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,14 +1,22 @@
{
"_get-81296add.js": {
"file": "assets/get-81296add.js",
"_get-10f2a251.js": {
"file": "assets/get-10f2a251.js",
"imports": [
"_vendor-a1812e4c.js"
"_vendor-5ec3da0f.js"
],
"integrity": "sha384-M+BAywPbHrOwlgtpdSO5UBNfYxe17K8369Ahh4qYQCxX5oZC2W1trl8zHRV9r2t4"
"integrity": "sha384-MAAJQjXJHsrlavEslgFwonZh+vjugzEJlPMmXXbM2rqqqkYujuSdVcp9tE3aZ1Ro"
},
"_vendor-a1812e4c.js": {
"file": "assets/vendor-a1812e4c.js",
"integrity": "sha384-2dMX4JO7IblsxMPq8LWcAad57Ek9CjK147pQCo6WlNUHOu2+xfXTOhFKceSCNkDU"
"_vendor-5ec3da0f.js": {
"assets": [
"assets/layers-1dbbe9d0.png",
"assets/layers-2x-066daca8.png",
"assets/marker-icon-574c3a5c.png"
],
"css": [
"assets/vendor-49001d3f.css"
],
"file": "assets/vendor-5ec3da0f.js",
"integrity": "sha384-ZVKGWd0fOujjIvJKxFA8SzgFIJQPEt1zpM+hgtL6o6S6gBRDTNEz2FlssKfAjVJ/"
},
"node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf": {
"file": "assets/fa-brands-400-5656d596.ttf",
@ -40,30 +48,50 @@
"src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2",
"integrity": "sha384-YxWlWCDksuL6Ljn1HkJNPH8l+jSRIWPpMpPw3pFa0QnmLXjwV/uPwpDm/b9vn/o1"
},
"node_modules/leaflet/dist/images/layers-2x.png": {
"file": "assets/layers-2x-066daca8.png",
"src": "node_modules/leaflet/dist/images/layers-2x.png",
"integrity": "sha384-+F2ZWK/HTpkV9kN2HnMGCQOTM/cnQJLs770FLOeHznwVWRfDESI8z4JwcGYmy2Au"
},
"node_modules/leaflet/dist/images/layers.png": {
"file": "assets/layers-1dbbe9d0.png",
"src": "node_modules/leaflet/dist/images/layers.png",
"integrity": "sha384-80x85ZS+G189o0xL8E8D7BnfhuNss6EwUPHzG7e+qByRD2xnpxikZ6UQU4Re5nNy"
},
"node_modules/leaflet/dist/images/marker-icon.png": {
"file": "assets/marker-icon-574c3a5c.png",
"src": "node_modules/leaflet/dist/images/marker-icon.png",
"integrity": "sha384-wg83fCOXjBtqzFAWhTL9Sd9vmLUNhfEEzfmNUX9zwv2igKlz/YQbdapF4ObdxF+R"
},
"resources/assets/v2/pages/dashboard/dashboard.js": {
"file": "assets/dashboard-ada6c7cd.js",
"file": "assets/dashboard-f6763ad9.js",
"imports": [
"_get-81296add.js",
"_vendor-a1812e4c.js"
"_get-10f2a251.js",
"_vendor-5ec3da0f.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/dashboard/dashboard.js",
"integrity": "sha384-OnpPqpRCVbvhxqcX6plPs/9kJW5KcvuxSwl/NlYRA4DvIyVdZmZIMEcv/sUlygZS"
"integrity": "sha384-PVEKYVS77Q0irHN7cZ9dMZ64ef7eFhIiUwoDHwwsDfNfP9bORXYxrEO2Z2ldVCQN"
},
"resources/assets/v2/pages/transactions/create.js": {
"file": "assets/create-f052c3bb.js",
"file": "assets/create-5a2ad8a8.js",
"imports": [
"_get-81296add.js",
"_vendor-a1812e4c.js"
"_get-10f2a251.js",
"_vendor-5ec3da0f.js"
],
"isEntry": true,
"src": "resources/assets/v2/pages/transactions/create.js",
"integrity": "sha384-XdxhJ+VVga9b+RXvInTL51SXgzLh5aVvFOciuoP6M+LbyE7Ckhi7Vsc5hamU9yfS"
"integrity": "sha384-rdu17Qy38YXrooK3NkVmEaFRuqzmsz4c2znLVKvAD0Yzpd2dXTBd4oXEYnA629b5"
},
"resources/assets/v2/sass/app.scss": {
"file": "assets/app-fb7b26ec.css",
"isEntry": true,
"src": "resources/assets/v2/sass/app.scss",
"integrity": "sha384-asG3EmbviAZntc1AzgJpoF+jBChn+oq/7eQfYWrCdJ1Ku/c7rJ82sstr6Eptxqgd"
},
"vendor.css": {
"file": "assets/vendor-49001d3f.css",
"src": "vendor.css",
"integrity": "sha384-Yk9AzgHMx1CdU5cG92Ea9xrFJkfurM23La5Vv4t2vQNVQ326PG7FFVA6hs4vcXdx"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -148,10 +148,10 @@
"list": {
"active": "\u00c4r aktiv?",
"trigger": "Trigger",
"response": "Response",
"delivery": "Delivery",
"response": "Svar",
"delivery": "Leverans",
"url": "URL",
"secret": "Secret"
"secret": "Hemlighet"
},
"config": {
"html_language": "sv",

View File

@ -36,6 +36,11 @@ import {I18n} from "i18n-js";
import {loadTranslations} from "../../support/load-translations.js";
import Tags from "bootstrap5-tags";
import L from "leaflet";
import 'leaflet/dist/leaflet.css';
let i18n;
const urls = {
@ -181,6 +186,7 @@ let transactions = function () {
budgets: [],
piggyBanks: {},
subscriptions: [],
dateFields: ['interest_date','book_date','process_date','due_date','payment_date','invoice_date'],
foreignAmountEnabled: true,
filters: {
@ -207,6 +213,12 @@ let transactions = function () {
newGroupTitle: '',
newGroupId: 0,
// map things:
hasLocation: false,
latitude: 51.959659235274,
longitude: 5.756805887265858,
zoomLevel: 13,
detectTransactionType() {
const sourceType = this.entries[0].source_account.type ?? 'unknown';
@ -792,6 +804,7 @@ let transactions = function () {
addSplit() {
this.entries.push(createEmptySplit());
setTimeout(() => {
// render tags:
Tags.init('select.ac-tags', {
allowClear: true,
server: urls.tag,
@ -805,6 +818,16 @@ let transactions = function () {
}
}
});
const count = this.entries.length - 1;
this.entries[count].map = L.map('mappie').setView([this.latitude, this.longitude], this.zoomLevel);
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(this.entries[count].map);
this.entries[count].map.on('click', this.addPointToMap);
this.entries[count].map.on('zoomend', this.saveZoomOfMap);
}, 250);
},
@ -816,6 +839,52 @@ let transactions = function () {
},
formattedTotalAmount() {
return formatMoney(this.totalAmount, 'EUR');
},
clearLocation(e) {
e.preventDefault();
const target = e.currentTarget;
const index = parseInt(target.attributes['data-index'].value);
this.entries[index].hasLocation = false;
this.entries[index].marker.remove();
return false;
},
saveZoomOfMap(e) {
let index = parseInt(e.sourceTarget._container.attributes['data-index'].value);
let map = document.querySelector('#form')._x_dataStack[0].$data.entries[index].map;
document.querySelector('#form')._x_dataStack[0].$data.entries[index].zoomLevel = map.getZoom();
console.log('New zoom level: ' + map.getZoom());
},
addPointToMap(e) {
let index = parseInt(e.originalEvent.currentTarget.attributes['data-index'].value);
let map = document.querySelector('#form')._x_dataStack[0].$data.entries[index].map;
let hasLocation = document.querySelector('#form')._x_dataStack[0].$data.entries[index].hasLocation;
console.log('Has location: ' + hasLocation);
if (false === hasLocation) {
console.log('False!');
const marker = new L.marker(e.latlng, {draggable: true});
marker.on('dragend', function (event) {
var marker = event.target;
var position = marker.getLatLng();
marker.setLatLng(new L.LatLng(position.lat, position.lng), {draggable: 'true'});
document.querySelector('#form')._x_dataStack[0].$data.entries[index].latitude = position.lat;
document.querySelector('#form')._x_dataStack[0].$data.entries[index].longitude = position.lng;
});
marker.addTo(map);
document.querySelector('#form')._x_dataStack[0].$data.entries[index].hasLocation = true;
document.querySelector('#form')._x_dataStack[0].$data.entries[index].marker = marker;
document.querySelector('#form')._x_dataStack[0].$data.entries[index].latitude = e.latlng.lat;
document.querySelector('#form')._x_dataStack[0].$data.entries[index].longitude = e.latlng.lng;
document.querySelector('#form')._x_dataStack[0].$data.entries[index].zoomLevel = map.getZoom();
}
//this.entries[index].hasLocation = true;
// map.on('click', function (e) {
// if (false === this.hasLocation) {
// let marker = new L.marker(e.latlng).addTo(map);
// this.hasLocation = true;
// }
// });
}
}
}

View File

@ -49,9 +49,31 @@ export function createEmptySplit() {
budget_id: null,
category_name: '',
piggy_bank_id: null,
bill_id: null,
tags: [],
notes: '',
// other meta fields:
internal_reference: '',
external_url: '',
// map
hasLocation: false,
map: null,
latitude: null,
longitude: null,
zoomLevel: null,
marker: null,
// date and time
date: formatted,
interest_date: '',
book_date: '',
process_date: '',
due_date: '',
payment_date: '',
invoice_date: '',
errors: {
'amount': [],

View File

@ -43,19 +43,32 @@ export function parseFromEntries(entries, transactionType) {
// dates
current.date = entry.date;
current.interest_date = entry.interest_date;
current.book_date = entry.book_date;
current.process_date = entry.process_date;
current.due_date = entry.due_date;
current.payment_date = entry.payment_date;
current.invoice_date = entry.invoice_date;
// meta
current.budget_id = entry.budget_id;
current.category_name = entry.category_name;
current.piggy_bank_id = entry.piggy_bank_id;
// location
if (entry.hasLocation) {
current.longitude = entry.longitude.toString();
current.latitude = entry.latitude.toString();
current.zoom_level = entry.zoomLevel;
}
// if foreign amount currency code is set:
if (typeof entry.foreign_currency_code !== 'undefined' && '' !== entry.foreign_currency_code.toString()) {
current.foreign_currency_code = entry.foreign_currency_code;
if(typeof entry.foreign_amount !== 'undefined' && '' !== entry.foreign_amount.toString()) {
if (typeof entry.foreign_amount !== 'undefined' && '' !== entry.foreign_amount.toString()) {
current.foreign_amount = entry.foreign_amount;
}
if(typeof entry.foreign_amount === 'undefined' || '' === entry.foreign_amount.toString()) {
if (typeof entry.foreign_amount === 'undefined' || '' === entry.foreign_amount.toString()) {
delete current.foreign_amount;
delete current.foreign_currency_code;
}

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Това е невалиден IBAN.',
'zero_or_more' => 'Стойността не може да бъде отрицателна.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Стойността трябва да е валидна дата и време (ISO 8601).',
'source_equals_destination' => 'Разходната сметка е еднаква на приходната сметка.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute трябва да има поне :min елемента.',
'not_in' => 'Избраният :attribute е невалиден.',
'numeric' => ':attribute трябва да бъде число.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Сумата в основна валута трябва да бъде число.',
'numeric_destination' => 'Сумата в приходната сметка трябва да е число.',
'numeric_source' => 'Сумата в разходната сметка трябва да е число.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'deshabilitat',
'no_webhook_messages' => 'No hi ha missatges webhook',
'webhook_trigger_STORE_TRANSACTION' => 'Després de crear la transacció',
'webhook_trigger_UPDATE_TRANSACTION' => 'Després d\'actualitzar la transacció',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'La consulta conté comptes amb diferents preferències de moneda, cosa que no és permesa.',
'iban' => 'Aquest IBAN no és vàlid.',
'zero_or_more' => 'El valor no pot ser negatiu.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Aquest no és un compte d\'actius.',
'date_or_time' => 'El valor ha de ser una data o hora vàlida (ISO 8601).',
'source_equals_destination' => 'El compte d\'origen és el mateix que el compte de destí.',
@ -142,6 +143,7 @@ return [
'min.array' => 'El camp :attribute ha de tenir com a mínim :min elements.',
'not_in' => 'El camp :attribute seleccionat no és vàlid.',
'numeric' => 'El camp :attribute ha de ser un número.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'La quantitat nativa ha de ser un número.',
'numeric_destination' => 'La quantitat de destí ha de ser un número.',
'numeric_source' => 'La quantitat d\'origen ha de ser un número.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Váš dotaz obsahuje účty, které mají různá nastavení měny, což není povoleno.',
'iban' => 'Toto není platný IBAN.',
'zero_or_more' => 'Hodnota nemůže být záporná.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Je třeba, aby hodnota byla platné datum nebo čas (ve formátu dle normy ISO 8601).',
'source_equals_destination' => 'Zdrojový účet je zároveň i cílový.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute musí obsahovat alespoň :min položek.',
'not_in' => 'Vybraný :attribute není platný.',
'numeric' => 'Je třeba, aby :attribute byl číslo.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Je třeba, aby částka v hlavní měně bylo číslo.',
'numeric_destination' => 'Je třeba, aby cílová částka bylo číslo.',
'numeric_source' => 'Je třeba, aby zdrojová částka bylo číslo.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Din forespørgsel indeholder konti, der har forskellige valutaindstillinger, hvilket ikke er tilladt.',
'iban' => 'Dette er ikke et gyldig IBAN.',
'zero_or_more' => 'Denne værdi kan ikke være negativ.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Værdien skal være en gyldig dato eller tids værdi (ISO 8601).',
'source_equals_destination' => 'Kildekontoen er den samme som modtagerkontoen.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute skal have mindst :min elementer.',
'not_in' => 'Den valgte :attribute er ikke gyldig.',
'numeric' => ':attribute skal være et tal.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Det oprindelige beløb skal være et tal.',
'numeric_destination' => 'Bestemmelsesbeløbet skal være et tal.',
'numeric_source' => 'Kildebeløbet skal være et tal.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'deaktiviert',
'no_webhook_messages' => 'Es gibt keine Webhook Nachrichten',
'webhook_trigger_STORE_TRANSACTION' => 'Nach Erstellen einer Buchung',
'webhook_trigger_UPDATE_TRANSACTION' => 'Nach Aktualisierung einer Buchung',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Ihre Abfrage enthält unzulässigerweise Konten mit unterschiedlicher Währungseinstellung.',
'iban' => 'Dies ist keine gültige IBAN.',
'zero_or_more' => 'Der Wert darf nicht negativ sein.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Dies ist kein Bestandskonto.',
'date_or_time' => 'Der Wert muss ein gültiges Datum oder Zeitangabe sein (ISO 8601).',
'source_equals_destination' => 'Das Quellkonto entspricht dem Zielkonto.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute muss mindestens :min Elemente enthalten.',
'not_in' => ':attribute ist ungültig.',
'numeric' => ':attribute muss eine Zahl sein.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Die native Betrag muss eine Zahl sein.',
'numeric_destination' => 'Der Zielbeitrag muss eine Zahl sein.',
'numeric_source' => 'Der Quellbetrag muss eine Zahl sein.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Το ερώτημά σας περιέχει λογαριασμούς που έχουν διαφορετικές ρυθμίσεις νομίσματος, το οποίο δεν επιτρέπεται.',
'iban' => 'Αυτό δεν είναι έγκυρο IBAN.',
'zero_or_more' => 'Αυτή η τιμή δεν μπορεί να είναι αρνητική.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Αυτή η τιμή πρέπει να είναι έγκυρη ημερομηνία ή τιμή ώρας (ISO 8601).',
'source_equals_destination' => 'Ο λογαριασμός προέλευσης ισούται με το λογαριασμό προορισμού.',
@ -142,6 +143,7 @@ return [
'min.array' => 'Το :attribute πρέπει να είναι τουλάχιστον :min αντικείμενα.',
'not_in' => 'Το επιλεγμένο :attribute δεν είναι έγκυρο.',
'numeric' => 'Το :attribute πρέπει να είναι αριθμός.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Το εγχώριο ποσό πρέπει να είναι αριθμός.',
'numeric_destination' => 'Το ποσό προορισμού πρέπει να είναι αριθμός.',
'numeric_source' => 'Το ποσό προέλευσης πρέπει να είναι αριθμός.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'This is not a valid IBAN.',
'zero_or_more' => 'The value cannot be negative.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
'source_equals_destination' => 'The source account equals the destination account.',
@ -142,6 +143,7 @@ return [
'min.array' => 'The :attribute must have at least :min items.',
'not_in' => 'The selected :attribute is invalid.',
'numeric' => 'The :attribute must be a number.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'The native amount must be a number.',
'numeric_destination' => 'The destination amount must be a number.',
'numeric_source' => 'The source amount must be a number.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Su consulta contiene cuentas que tienen diferentes ajustes de divisa, lo que no está permitido.',
'iban' => 'Este no es un IBAN válido.',
'zero_or_more' => 'El valor no puede ser negativo.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Esta no es una cuenta de activos.',
'date_or_time' => 'El valor debe ser una fecha u hora válido (ISO 8601).',
'source_equals_destination' => 'La cuenta origen es igual que la cuenta destino.',
@ -142,6 +143,7 @@ return [
'min.array' => 'El campo :attribute debe tener al menos :min elementos.',
'not_in' => 'El campo :attribute seleccionado es incorrecto.',
'numeric' => 'El campo :attribute debe ser un número.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'La cantidad nativa debe ser un número.',
'numeric_destination' => 'La cantidad destino debe ser un número.',
'numeric_source' => 'La cantidad origen debe ser un número.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Kyselysi sisältää tilejä, joilla on erilaiset valuutta-asetukset, joka ei ole sallittua.',
'iban' => 'IBAN ei ole oikeassa muodossa.',
'zero_or_more' => 'Arvo ei voi olla negatiivinen.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Arvon täytyy olla päivämäärä tai aika-arvo (ISO 8601).',
'source_equals_destination' => 'Lähdetili on sama kuin kohdetili - ja sehän ei käy.',
@ -142,6 +143,7 @@ return [
'min.array' => 'Kentän :attribute tulee sisältää vähintään :min arvoa.',
'not_in' => 'Valittu :attribute on virheellinen.',
'numeric' => 'Kentän :attribute arvon tulee olla numero.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Alkuperäisen summan täytyy olla numeerinen.',
'numeric_destination' => 'Kohdesumman täytyy olla numeerinen.',
'numeric_source' => 'Lähdesumman täytyy olla numeerinen.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'désactivé',
'no_webhook_messages' => 'Il n\'y a pas de messages webhook',
'webhook_trigger_STORE_TRANSACTION' => 'Après la création de l\'opération',
'webhook_trigger_UPDATE_TRANSACTION' => 'Après la mise à jour de l\'opération',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Votre requête contient des comptes qui ont des paramètres de devise différents, ce qui n\'est pas autorisé.',
'iban' => 'Il ne s\'agit pas d\'un IBAN valide.',
'zero_or_more' => 'Le montant ne peut pas être négatif.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Ce n\'est pas un compte d\'actif.',
'date_or_time' => 'La valeur doit être une date ou une heure valide (ISO 8601).',
'source_equals_destination' => 'Le compte source est identique au compte de destination.',
@ -142,6 +143,7 @@ return [
'min.array' => 'Le tableau :attribute doit avoir au moins :min éléments.',
'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.',
'numeric' => 'Le champ :attribute doit contenir un nombre.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Le montant natif doit être un nombre.',
'numeric_destination' => 'Le montant de destination doit être un nombre.',
'numeric_source' => 'Le montant source doit être un nombre.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhook-ok',
'webhooks_breadcrumb' => 'Webhook-ok',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'letiltva',
'no_webhook_messages' => 'Nincsenek webhook üzenetek',
'webhook_trigger_STORE_TRANSACTION' => 'Tranzakció létrehozása után',
'webhook_trigger_UPDATE_TRANSACTION' => 'Tranzakció frissítése után',
@ -432,8 +432,8 @@ return [
'search_modifier_source_account_nr_contains' => 'Forrásszámla számlaszáma (IBAN) tartalmazza ":value"',
'search_modifier_not_source_account_nr_contains' => 'Forrásszámla számlaszáma (IBAN) nem tartalmazza ":value"',
'search_modifier_source_account_nr_starts' => 'Forrásszámla számlaszáma (IBAN) kezdete ":value"',
'search_modifier_not_source_account_nr_starts' => 'Source account number (IBAN) does not start with ":value"',
'search_modifier_source_account_nr_ends' => 'Source account number (IBAN) ends on ":value"',
'search_modifier_not_source_account_nr_starts' => 'Forrásszámla számlaszám (IBAN) kezdete nem ":value"',
'search_modifier_source_account_nr_ends' => 'Forrásszámla számlaszáma (IBAN) vége ":value"',
'search_modifier_not_source_account_nr_ends' => 'Source account number (IBAN) does not end on ":value"',
'search_modifier_destination_account_is' => 'Célszámla neve pontosan ":value"',
'search_modifier_not_destination_account_is' => 'Destination account name is not ":value"',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Ez nem egy érvényes IBAN számlaszám.',
'zero_or_more' => 'Az érték nem lehet negatív.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Ez nem egy eszközszámla.',
'date_or_time' => 'Az értéknek érvényes dátum vagy időformátumúnak kell lennie (ISO 8601).',
'source_equals_destination' => 'A forrásszámla egyenlő a célszámlával.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute legalább :min elem kell legyen.',
'not_in' => 'A kiválasztott :attribute étvénytelen.',
'numeric' => ':attribute szám kell legyen.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'A natív értéknek számnak kell lennie.',
'numeric_destination' => 'A cél mennyiségnek számnak kell lennie.',
'numeric_source' => 'A forrás mennyiségnek számnak kell lennie.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Ini bukan IBAN yang valid.',
'zero_or_more' => 'Nilai tidak bisa negatif.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Nilainya harus berupa nilai tanggal atau waktu yang valid (ISO 8601).',
'source_equals_destination' => 'Akun sumber sama dengan akun tujuan.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute harus minimal item :min.',
'not_in' => ':attribute yang dipilih tidak valid.',
'numeric' => ':attribute harus angka.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Nilai asli haruslah berupa angka.',
'numeric_destination' => 'Nilai tujuan haruslah berupa angka.',
'numeric_source' => 'Nilai asal haruslah berupa angka.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhook',
'webhooks_breadcrumb' => 'Webhook',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'disabilitato',
'no_webhook_messages' => 'Non ci sono messaggi webhook',
'webhook_trigger_STORE_TRANSACTION' => 'Dopo aver creato la transazione',
'webhook_trigger_UPDATE_TRANSACTION' => 'Dopo aver aggiornato la transazione',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'La tua interrogazione contiene conti con valute diverse, che non è consentito.',
'iban' => 'Questo non è un IBAN valido.',
'zero_or_more' => 'Il valore non può essere negativo.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Il valore deve essere un valore valido per una data o per un orario (ISO 8601).',
'source_equals_destination' => 'Il conto di origine è uguale al conto di destinazione.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute deve avere almeno :min voci.',
'not_in' => ':attribute selezionato è invalido.',
'numeric' => ':attribute deve essere un numero.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'L\'importo nativo deve essere un numero.',
'numeric_destination' => 'L\'importo di destinazione deve essere un numero.',
'numeric_source' => 'L\'importo di origine deve essere un numero.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'クエリには異なる通貨設定の口座を含めることはできません。',
'iban' => '無効なIBANです。',
'zero_or_more' => '数値はマイナスにできません。',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'これは資産口座ではありません。',
'date_or_time' => '数値はISO 8601 準拠の有効な日付や時刻である必要があります。',
'source_equals_destination' => '引き出し口座と預け入れ口座が同じです。',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute は :min 個以上にして下さい。',
'not_in' => '選択された:attributeは有効ではありません。',
'numeric' => ':attributeには、数字を指定してください。',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => '国内通貨',
'numeric_destination' => '送金先の金額は数値である必要があります。',
'numeric_source' => '送金元の金額は数値である必要があります。',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => '쿼리에 허용되지 않는 다른 통화 설정이 있는 계정이 포함되어 있습니다.',
'iban' => '유효한 IBAN이 아닙니다.',
'zero_or_more' => '값은 음수가 될 수 없습니다.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => '유효한 날짜 또는 시간 값(ISO 8601) 이어야 합니다.',
'source_equals_destination' => '소스 계정이 대상 계정과 같습니다.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute은(는) :min 개 이상이어야 합니다.',
'not_in' => '선택한 :attribute이(가) 올바르지 않습니다.',
'numeric' => ':attribute은(는) 숫자여야 합니다.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => '기본 금액은 숫자여야 합니다.',
'numeric_destination' => '대상 금액은 숫자여야 합니다.',
'numeric_source' => '소스 금액은 숫자여야 합니다.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Søket inneholder kontoer som har ulike valuta-innstillinger, som ikke er tillatt.',
'iban' => 'Dette er ikke en gyldig IBAN.',
'zero_or_more' => 'Verdien kan ikke være negativ.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Verdien må være et gyldig dato- eller klokkeslettformat (ISO 8601).',
'source_equals_destination' => 'Kildekontoen er lik destinasjonskonto.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute må inneholde minst :min elementer.',
'not_in' => 'Den valgte :attribute er ikke gyldig.',
'numeric' => ':attribute må være et tall.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Den normale beløpet må være et nummer.',
'numeric_destination' => 'Destinasjons beløpet må være et nummer.',
'numeric_source' => 'Kilde beløpet må være et nummer.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Je query bevat account met verschillende valuta-instellingen, wat niet is toegestaan.',
'iban' => 'Dit is niet een geldige IBAN.',
'zero_or_more' => 'De waarde mag niet negatief zijn.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Dit is geen betaalrekening.',
'date_or_time' => 'De waarde moet een geldige datum of tijdwaarde zijn (ISO 8601).',
'source_equals_destination' => 'De bronrekening is gelijk aan de doelrekening.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute moet minimaal :min items bevatten.',
'not_in' => 'Het formaat van :attribute is ongeldig.',
'numeric' => ':attribute moet een nummer zijn.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Het originele bedrag moet een getal zijn.',
'numeric_destination' => 'Het doelbedrag moet een getal zijn.',
'numeric_source' => 'Het bronbedrag moet een getal zijn.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'deaktivert',
'no_webhook_messages' => 'Ingen Webhook meldingar',
'webhook_trigger_STORE_TRANSACTION' => 'Etter transaksjons opprettelse',
'webhook_trigger_UPDATE_TRANSACTION' => 'Etter transaksjons oppdatering',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Søket inneheld kontoar som har ulike valuta-innstillingar, det er ikkje tillatt.',
'iban' => 'Dette er ikkje ein gyldig IBAN.',
'zero_or_more' => 'Verdien kan ikkje vera negativ.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Verdien må vera eit gyldig dato- eller klokkeslettformat (ISO 8601).',
'source_equals_destination' => 'Kjeldekontoen er lik destinasjonskonto.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute må innehalde minst :min element.',
'not_in' => 'Den valde :attribute er ikkje gyldig.',
'numeric' => ':attribute må vera eit tal.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Den normale beløpet må vera eit nummer.',
'numeric_destination' => 'Destinasjons beløpet må vera eit nummer.',
'numeric_source' => 'Kjelde beløpet må vera eit nummer.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Twoje zapytanie zawiera konta, które mają różne ustawienia walutowe, co jest niedozwolone.',
'iban' => 'To nie jest prawidłowy IBAN.',
'zero_or_more' => 'Wartość nie może być ujemna.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'To nie jest konto aktywów.',
'date_or_time' => 'Wartość musi być prawidłową datą lub czasem (ISO 8601).',
'source_equals_destination' => 'Konto źródłowe jest równe kontu docelowemu.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute musi zawierać przynajmniej :min elementów.',
'not_in' => 'Wybrany :attribute jest nieprawidłowy.',
'numeric' => ':attribute musi byc liczbą.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Kwota źródłowa musi być liczbą.',
'numeric_destination' => 'Kwota docelowa musi być liczbą.',
'numeric_source' => 'Kwota źródłowa musi być liczbą.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'desabilitado',
'no_webhook_messages' => 'Não há mensagens de webhook',
'webhook_trigger_STORE_TRANSACTION' => 'Após criação da transação',
'webhook_trigger_UPDATE_TRANSACTION' => 'Após atualização da transação',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Sua consulta contém contas que têm diferentes configurações de moeda, o que não é permitido.',
'iban' => 'Este não é um válido IBAN.',
'zero_or_more' => 'O valor não pode ser negativo.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Esta não é uma conta de ativo.',
'date_or_time' => 'O valor deve ser uma data válida (ISO 8601).',
'source_equals_destination' => 'A conta de origem é igual à conta de destino.',
@ -142,6 +143,7 @@ return [
'min.array' => 'O campo :attribute deve ter no mínimo :min itens.',
'not_in' => 'O campo :attribute contém um valor inválido.',
'numeric' => 'O campo :attribute deverá conter um valor numérico.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'O montante nativo deve ser um número.',
'numeric_destination' => 'O montante de destino deve ser um número.',
'numeric_source' => 'O montante original deve ser um número.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'O seu inquérito contém contas com configurações de moeda diferentes, o que não é permitido.',
'iban' => 'Este IBAN não é valido.',
'zero_or_more' => 'O valor não pode ser negativo.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'O valor deve ser uma data ou hora válida (ISO 8601).',
'source_equals_destination' => 'A conta de origem é igual à conta de destino.',
@ -142,6 +143,7 @@ return [
'min.array' => 'O :attribute tem de ter, pelo menos, :min itens.',
'not_in' => 'O :attribute selecionado é inválido.',
'numeric' => 'O :attribute tem de ser um número.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'O montante nativo tem de ser um número.',
'numeric_destination' => 'O montante de destino tem de ser um número.',
'numeric_source' => 'O montante de origem tem de ser um número.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Acesta nu este un IBAN valabil.',
'zero_or_more' => 'Valoarea nu poate fi negativă.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Valoarea trebuie să fie o dată validă sau o valoare în timp (ISO 8601).',
'source_equals_destination' => 'Contul sursă este egal cu contul de destinație.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute trebuie să aibă măcar :min articole.',
'not_in' => 'Câmpul selectat :attribute este invalid.',
'numeric' => 'Câmpul :attribute trebuie să fie un număr.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Suma nativă trebuie să fie un număr.',
'numeric_destination' => 'Suma destinației trebuie să fie un număr.',
'numeric_source' => 'Suma sursei trebuie să fie un număr.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Веб-хуки',
'webhooks_breadcrumb' => 'Вебхуки',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'отключено',
'no_webhook_messages' => 'Нет сообщений от вебхуков',
'webhook_trigger_STORE_TRANSACTION' => 'После создания транзакции',
'webhook_trigger_UPDATE_TRANSACTION' => 'После обновления транзакции',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Ваш запрос содержит счета с разными валютами, что недопустимо.',
'iban' => 'Это некорректный IBAN.',
'zero_or_more' => 'Это значение не может быть отрицательным.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'Это не счет активов.',
'date_or_time' => 'Значение должно быть корректной датой или временем (ISO 8601).',
'source_equals_destination' => 'Счёт источник и счёт назначения совпадают.',
@ -142,6 +143,7 @@ return [
'min.array' => 'Значение :attribute должно содержать не меньше :min элементов.',
'not_in' => 'Выбранный :attribute не верный.',
'numeric' => ':attribute должен быть числом.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Сумма должна быть числом.',
'numeric_destination' => 'Сумма назначения должна быть числом.',
'numeric_source' => 'Исходная сумма должна быть числом.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Toto nie je platný IBAN.',
'zero_or_more' => 'Hodnota nemôže byť záporná.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Je třeba, aby hodnota byla platné datum nebo čas (ve formátu dle normy ISO 8601).',
'source_equals_destination' => 'Zdrojový účet je zároveň cieľový.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute musí obsahovať minimálne :min položiek.',
'not_in' => 'Vybraný :attribute je neplatný.',
'numeric' => ':attribute musí byť číslo.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Suma v hlavnej mene musí byť číslo.',
'numeric_destination' => 'Cieľová suma musí byť číslo.',
'numeric_source' => 'Zdrojová suma musí byť číslo.',

View File

@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'onemogočeno',
'no_webhook_messages' => 'Tukaj ni webhook sporočil',
'webhook_trigger_STORE_TRANSACTION' => 'Po ustvarjanju transakcije',
'webhook_trigger_UPDATE_TRANSACTION' => 'Po posodabljanju transakcije',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Vaša poizvedba vsebuje račune, ki imajo različne nastavitve valute, kar ni dovoljeno.',
'iban' => 'To ni veljaven IBAN.',
'zero_or_more' => 'Vrednost ne more biti negativna.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'To ni račun sredstev.',
'date_or_time' => 'Vrednost mora biti veljavna vrednost datuma ali časa (ISO 8601).',
'source_equals_destination' => 'Izvorni račun je enak ciljnemu računu.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute mora imeti najmanj :min elementov.',
'not_in' => 'Izbran :attribute ni veljaven.',
'numeric' => ':attribute mora biti število.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Domači znesek mora biti število.',
'numeric_destination' => 'Ciljni znesek mora biti številka.',
'numeric_source' => 'Izvorni znesek mora biti številka.',

View File

@ -42,13 +42,13 @@ return [
'split' => 'Dela',
'single_split' => 'Dela',
'clone' => 'Klona',
'clone_and_edit' => 'Clone and edit',
'clone_and_edit' => 'Klona och redigera',
'confirm_action' => 'Bekräfta åtgärd',
'last_seven_days' => 'Senaste 7 dagarna',
'last_thirty_days' => 'Senaste 30 dagarna',
'last_180_days' => 'Senaste 180 dagarna',
'month_to_date' => 'Month to date',
'year_to_date' => 'Year to date',
'month_to_date' => 'Månad hittills',
'year_to_date' => 'År hittills',
'YTD' => 'ÅTD',
'welcome_back' => 'Vad spelas?',
'everything' => 'Allt',
@ -243,7 +243,7 @@ return [
// Webhooks
'webhooks' => 'Webhookar',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'webhooks_menu_disabled' => 'inaktiverad',
'no_webhook_messages' => 'There are no webhook messages',
'webhook_trigger_STORE_TRANSACTION' => 'Efter skapande av transaktion',
'webhook_trigger_UPDATE_TRANSACTION' => 'After transaction update',

View File

@ -54,10 +54,10 @@ return [
'lastActivity' => 'Senaste aktivitet',
'balanceDiff' => 'Saldodifferens',
'other_meta_data' => 'Övrigt metadata',
'invited_at' => 'Invited at',
'expires' => 'Invitation expires',
'invited_by' => 'Invited by',
'invite_link' => 'Invite link',
'invited_at' => 'Inbjuden den',
'expires' => 'Inbjudning utgår',
'invited_by' => 'Inbjuden av',
'invite_link' => 'Inbjudningslänk',
'account_type' => 'Kontotyp',
'created_at' => 'Skapad den',
'account' => 'Konto',
@ -178,10 +178,10 @@ return [
'expected_info' => 'Nästa förväntade transaktion',
'start_date' => 'Startdatum',
'trigger' => 'Trigger',
'response' => 'Response',
'delivery' => 'Delivery',
'response' => 'Svar',
'delivery' => 'Leverans',
'url' => 'URL',
'secret' => 'Secret',
'secret' => 'Hemlighet',
];
/*
* PLEASE DO NOT EDIT THIS FILE DIRECTLY.

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Din fråga innehåller konton som har olika valutainställningar, vilket inte är tillåtet.',
'iban' => 'Detta är inte ett giltigt IBAN.',
'zero_or_more' => 'Värdet får inte vara negativt.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Värdet måste vara ett giltigt datum eller tid (ISO 8601).',
'source_equals_destination' => 'Källkontot motsvarar mottagarkontot.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute måste innehålla minst :min artiklar.',
'not_in' => 'Det valda :attribute är ogiltigt.',
'numeric' => ':attribute måste vara ett nummer.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Ursprungsvärdet måste vara ett nummer.',
'numeric_destination' => 'Mottagarkontot måste vara ett nummer.',
'numeric_source' => 'Källvärdet måste vara ett nummer.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'This is not a valid IBAN.',
'zero_or_more' => 'The value cannot be negative.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'The value must be a valid date or time value (ISO 8601).',
'source_equals_destination' => 'The source account equals the destination account.',
@ -142,6 +143,7 @@ return [
'min.array' => 'The :attribute must have at least :min items.',
'not_in' => 'The selected :attribute is invalid.',
'numeric' => 'The :attribute must be a number.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'The native amount must be a number.',
'numeric_destination' => 'The destination amount must be a number.',
'numeric_source' => 'The source amount must be a number.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Bu geçerli bir IBAN değil.',
'zero_or_more' => 'Değer negatif olamaz.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Değer geçerli tarih veya zaman formatı olmalıdır (ISO 8601).',
'source_equals_destination' => 'Kaynak hesabın hedef hesap eşittir.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute en az :min öğe içermelidir.',
'not_in' => 'Seçili :attribute geçersiz.',
'numeric' => ':attribute sayı olmalıdır.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Yerli tutar bir sayı olması gerekir.',
'numeric_destination' => 'Hedef tutar bir sayı olması gerekir.',
'numeric_source' => 'Kaynak tutarın bir sayı olması gerekir.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => 'Це не коректний IBAN.',
'zero_or_more' => 'Це значення не може бути від’ємним.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Значення має бути правильним датою або часом (ISO 8601).',
'source_equals_destination' => 'Початковий рахунок дорівнює рахунку призначення.',
@ -142,6 +143,7 @@ return [
'min.array' => 'Поле :attribute має містити принаймні :min елементів.',
'not_in' => 'Обраний :attribute недійсний.',
'numeric' => ':attribute має бути числом.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Сума повинна бути числом.',
'numeric_destination' => 'Сума призначення повинна бути числом.',
'numeric_source' => 'Вихідна сума повинна бути числом.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Truy vấn của bạn chứa các tài khoản có cài đặt tiền tệ khác nhau, điều này không được phép.',
'iban' => 'Đây không phải là một IBAN hợp lệ.',
'zero_or_more' => 'Giá trị không thể âm.',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => 'Giá trị phải là giá trị ngày hoặc thời gian hợp lệ (ISO 8601).',
'source_equals_destination' => 'Tài khoản nguồn bằng với tài khoản đích.',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute phải có ít nhất :min mục.',
'not_in' => ':attribute được chọn không hợp lệ.',
'numeric' => ':attribute phải là một số.',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => 'Số tiền gốc phải là một số.',
'numeric_destination' => 'Số lượng đích phải là một số.',
'numeric_source' => 'Số lượng nguồn phải là một số.',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => '查询包含不同货币的账户,这是不不允许的。',
'iban' => '此 IBAN 无效',
'zero_or_more' => '此值不能为负',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => '此值必须是有效的日期或时间 (ISO 8601)',
'source_equals_destination' => '来源账户与目标账户相同',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute 至少需要有 :min 个项目',
'not_in' => '所选的 :attribute 无效',
'numeric' => ':attribute 必须是数字',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => '原始金额必须是数字',
'numeric_destination' => '目标金额必须是数字',
'numeric_source' => '来源金额必须是数字',

View File

@ -43,6 +43,7 @@ return [
'invalid_query_currency' => 'Your query contains accounts that have different currency settings, which is not allowed.',
'iban' => '這不是有效的 IBAN。',
'zero_or_more' => '此數值不能為負數。',
'more_than_zero' => 'The value must be more than zero.',
'no_asset_account' => 'This is not an asset account.',
'date_or_time' => '此數值須為有效的日期或時間值 (ISO 8601)。',
'source_equals_destination' => '來源帳戶與目標帳戶相同。',
@ -142,6 +143,7 @@ return [
'min.array' => ':attribute 至少需要有 :min 個項目。',
'not_in' => '所選的 :attribute 無效。',
'numeric' => ':attribute 必須是數字。',
'scientific_notation' => 'The :attribute cannot use the scientific notation.',
'numeric_native' => '本地金額必須是數字。',
'numeric_destination' => '目標金額必須是數字。',
'numeric_source' => '來源金額必須是數字。',

View File

@ -22,7 +22,7 @@
</template>
<template x-if="showWaitMessage">
<div class="alert alert-info alert-dismissible fade show" role="alert">
<em class="fa-solid fa-spinner fa-spin"></em> Please wait for the attachments to upload.
<em class="fa-solid fa-spinner fa-spin"></em> Please wait for the attachments to upload.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
</template>
@ -205,14 +205,16 @@
any</label>
</template>
<template x-if="transactionType == 'transfer'">
<label class="small form-label">Amount in currency of destination
<label class="small form-label">Amount in currency of
destination
account</label>
</template>
<input type="number" step="any" min="0"
:id="'amount_' + index"
:data-index="index"
:class="{'is-invalid': transaction.errors.foreign_amount.length > 0, 'input-mask' : true, 'form-control': true}"
x-model="transaction.foreign_amount" data-inputmask="currency"
x-model="transaction.foreign_amount"
data-inputmask="currency"
@change="changedAmount"
placeholder="0.00">
<template x-if="transaction.errors.foreign_amount.length > 0">
@ -272,7 +274,8 @@
placeholder="{{ __('firefly.category') }}">
</div>
</div>
<template x-if="transactionType != 'deposit' && transactionType != 'withdrawal'">
<template
x-if="transactionType != 'deposit' && transactionType != 'withdrawal'">
<div class="row mb-3">
<label :for="'piggy_bank_id_' + index"
class="col-sm-1 col-form-label d-none d-sm-block">
@ -318,7 +321,8 @@
x-model="transaction.bill_id">
<template x-for="group in subscriptions">
<optgroup :label="group.name">
<template x-for="subscription in group.subscriptions">
<template
x-for="subscription in group.subscriptions">
<option :label="subscription.name"
:value="subscription.id"
x-text="subscription.name"></option>
@ -336,13 +340,13 @@
<i class="fa-solid fa-tag"></i>
</label>
<div class="col-sm-10">
<select
class="form-select ac-tags"
:id="'tags_' + index"
:name="'tags['+index+'][]'"
multiple>
<option value="">Type a tag...</option>
</select>
<select
class="form-select ac-tags"
:id="'tags_' + index"
:name="'tags['+index+'][]'"
multiple>
<option value="">Type a tag...</option>
</select>
</div>
</div>
<div class="row mb-3">
@ -382,21 +386,69 @@
placeholder="{{ __('firefly.category') }}">
</div>
</div>
<div class="row mb-3">
<label :for="'internal_reference_' + index"
class="col-sm-1 col-form-label d-none d-sm-block">
<i class="fa-solid fa-anchor"></i>
</label>
<div class="col-sm-10">
<input type="search"
class="form-control"
:id="'internal_reference_' + index"
x-model="transaction.internal_reference"
:data-index="index"
placeholder="{{ __('firefly.internal_reference') }}">
</div>
</div>
<div class="row mb-3">
<label :for="'external_url_' + index"
class="col-sm-1 col-form-label d-none d-sm-block">
<i class="fa-solid fa-link"></i>
</label>
<div class="col-sm-10">
<input type="search"
class="form-control"
:id="'external_url_' + index"
x-model="transaction.external_url"
:data-index="index"
placeholder="{{ __('firefly.external_url') }}">
</div>
</div>
<div class="row mb-3">
<label :for="'map_' + index"
class="col-sm-1 col-form-label d-none d-sm-block">
<i class="fa-solid fa-earth-europe"></i>
</label>
<div class="col-sm-10">
<div id="mappie" style="height:300px;" :data-index="index"></div>
<span class="muted small">
<template x-if="!transaction.hasLocation">
<span>Tap the map to add a location</span>
</template>
<template x-if="transaction.hasLocation">
<a :data-index="index" href="#" @click="clearLocation">Clear point</a>
</template>
</span>
</div>
Attachments<br>
Internal ref<br>
External URL<br>
Location<br>
Links?<br>
Date 1<br>
Date 2<br>
Date 3<br>
Date 4<br>
Date 5<br>
Date 6<br>
</div>
<div class="card-footer">
Less important meta
</div>
<!-- -->
<template x-for="dateField in dateFields">
<div class="row mb-1">
<label :for="dateField + '_date_' + index"
class="col-sm-1 col-form-label d-none d-sm-block">
<i class="fa-solid fa-calendar-alt" :title="dateField"></i>
</label>
<div class="col-sm-10">
<input type="date"
class="form-control"
:id="dateField + '_date_' + index"
x-model="transaction[dateField]"
:data-index="index"
placeholder="">
</div>
</div>
</template>
</div>
</div>