Merge branch 'master' into invoice_template

This commit is contained in:
Cüneyt Şentürk
2022-07-27 14:32:30 +03:00
committed by GitHub
35 changed files with 12855 additions and 906 deletions

View File

@ -51,7 +51,10 @@
:currency="$currency"
/>
<x-form.group.account form-group-class="col-span-10 lg:col-span-5 xl:col-span-2 account-input" />
<x-form.group.account
form-group-class="col-span-10 lg:col-span-5 xl:col-span-2 account-input"
selected="{{ request('account_id', setting('default.account')) }}"
/>
<div class="flex items-end lg:justify-end xl:justify-start col-span-10 xl:col-span-2">
<x-button
@ -167,11 +170,11 @@
<table class="min-w-full divide-y divide-gray-200">
<tbody class="float-right">
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
{{ trans('reconciliations.opening_balance') }}:
</th>
<td id="closing-balance" class="w-1/12 ltr:text-right rtl:text-left">
<td id="closing-balance" class="w-3/12 ltr:text-right rtl:text-left">
<span class="w-auto pl-6 text-sm">
<x-money :amount="$opening_balance" :currency="$account->currency_code" convert />
</span>
@ -179,11 +182,11 @@
</tr>
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
{{ trans('reconciliations.closing_balance') }}:
</th>
<td id="closing-balance" class="w-1/12 text-right">
<td id="closing-balance" class="w-3/12 text-right">
<x-form.input.money
name="closing_balance_total"
value="0"
@ -192,18 +195,18 @@
v-model="totals.closing_balance"
:currency="$currency"
dynamicCurrency="currency"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm js-conversion-input"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm"
form-group-class="text-right disabled-money"
/>
</td>
</tr>
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
{{ trans('reconciliations.cleared_amount') }}:
</th>
<td id="cleared-amount" class="w-1/12 text-right">
<td id="cleared-amount" class="w-3/12 text-right">
<x-form.input.money
name="cleared_amount_total"
value="0"
@ -212,20 +215,20 @@
v-model="totals.cleared_amount"
:currency="$currency"
dynamicCurrency="currency"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm js-conversion-input"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm"
form-group-class="text-right disabled-money"
/>
</td>
</tr>
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black cursor-pointer">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black cursor-pointer">
<span class="px-2 py-1 rounded-xl" :class="difference">
{{ trans('general.difference') }}
</span>
</th>
<td id="difference" class="w-1/12 ltr:pl-6 rtl:pr-0 text-right">
<td id="difference" class="w-3/12 ltr:pl-6 rtl:pr-0 text-right">
<div class="difference-money">
<x-form.input.money
name="difference_total"
@ -235,7 +238,7 @@
v-model="totals.difference"
:currency="$currency"
dynamicCurrency="currency"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm js-conversion-input"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm"
form-group-class="text-right disabled-money"
/>
</div>
@ -264,37 +267,38 @@
class="flex items-center justify-center bg-transparent hover:bg-gray-200 px-3 py-1.5 text-base rounded-lg disabled:opacity-50"
override="class"
>
<x-button.loading>
<x-button.loading action="! reconcile && form.loading">
{{ trans('reconciliations.save_draft') }}
</x-button.loading>
</x-button>
<div v-if="reconcile">
<div v-if="! reconcile">
<x-tooltip id="tooltip-reconcile" placement="top" message="{{ trans('reconciliations.irreconcilable') }}">
<x-button
type="button"
::disabled="reconcile || form.loading"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue-300 hover:bg-blue-500 disabled:bg-blue-100"
::disabled="! reconcile"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue hover:bg-blue-700 disabled:bg-blue-100"
override="class"
@click="onReconcileSubmit"
data-loading-text="{{ trans('general.loading') }}"
>
<x-button.loading action="! reconcile">
<x-button.loading action="reconcile && form.loading">
{{ trans('reconciliations.reconcile') }}
</x-button.loading>
</x-button>
</x-tooltip>
</div>
<div v-else>
<x-button
type="button"
::disabled="reconcile || form.loading"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue-300 hover:bg-blue-500 disabled:bg-blue-100"
::disabled="! reconcile"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue hover:bg-blue-700 disabled:bg-blue-100"
override="class"
@click="onReconcileSubmit"
data-loading-text="{{ trans('general.loading') }}"
>
<x-button.loading action="! reconcile">
<x-button.loading action="reconcile && form.loading">
{{ trans('reconciliations.reconcile') }}
</x-button.loading>
</x-button>

View File

@ -105,11 +105,11 @@
<table class="min-w-full divide-y divide-gray-200">
<tbody class="float-right">
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
{{ trans('reconciliations.opening_balance') }}:
</th>
<td id="closing-balance" class="w-1/12 text-right">
<td id="closing-balance" class="w-3/12 text-right">
<span class="w-auto pl-6 text-sm">
<x-money :amount="$opening_balance" :currency="$account->currency_code" convert />
</span>
@ -117,11 +117,11 @@
</tr>
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
{{ trans('reconciliations.closing_balance') }}:
</th>
<td id="closing-balance" class="w-1/12 text-right">
<td id="closing-balance" class="w-3/12 text-right">
<x-form.input.money
name="closing_balance_total"
value="0"
@ -130,18 +130,18 @@
v-model="totals.closing_balance"
:currency="$currency"
dynamicCurrency="currency"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm js-conversion-input"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm"
form-group-class="text-right disabled-money"
/>
</td>
</tr>
<tr class="border-b">
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black">
{{ trans('reconciliations.cleared_amount') }}:
</th>
<td id="cleared-amount" class="w-1/12 text-right">
<td id="cleared-amount" class="w-3/12 text-right">
<x-form.input.money
name="cleared_amount_total"
value="0"
@ -150,20 +150,20 @@
v-model="totals.cleared_amount"
:currency="$currency"
dynamicCurrency="currency"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm js-conversion-input"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm"
form-group-class="text-right disabled-money"
/>
</td>
</tr>
<tr>
<th class="w-11/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black cursor-pointer">
<th class="w-9/12 ltr:pr-6 rtl:pl-6 py-4 ltr:text-left rtl:text-right whitespace-nowrap text-sm font-bold text-black cursor-pointer">
<span class="px-2 py-1 rounded-xl" :class="difference">
{{ trans('general.difference') }}
</span>
</th>
<td id="difference" class="w-1/12 ltr:pl-6 rtl:pr-0 text-right">
<td id="difference" class="w-3/12 ltr:pl-6 rtl:pr-0 text-right">
<div class="difference-money">
<x-form.input.money
name="difference_total"
@ -173,7 +173,7 @@
v-model="totals.difference"
:currency="$currency"
dynamicCurrency="currency"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm js-conversion-input"
money-class="text-right disabled-money banking-price-text w-auto position-absolute right-4 ltr:pr-0 rtl:pl-0 text-sm"
form-group-class="text-right disabled-money"
/>
</div>
@ -203,22 +203,22 @@
class="relative flex items-center justify-center bg-transparent hover:bg-gray-200 px-3 py-1.5 text-base rounded-lg disabled:opacity-50"
override="class"
>
<x-button.loading>
<x-button.loading action="! reconcile && form.loading">
{{ trans('general.save') }}
</x-button.loading>
</x-button>
<div v-if="reconcile">
<div v-if="! reconcile">
<x-tooltip id="tooltip-reconcile" placement="top" message="{{ trans('reconciliations.irreconcilable') }}">
<x-button
type="button"
::disabled="reconcile || form.loading"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue-300 hover:bg-blue-500 disabled:bg-blue-100"
::disabled="! reconcile"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue hover:bg-blue-700 disabled:bg-blue-100"
override="class"
@click="onReconcileSubmit"
data-loading-text="{{ trans('general.loading') }}"
>
<x-button.loading action="! reconcile">
<x-button.loading action="reconcile && form.loading">
{{ trans('reconciliations.reconcile') }}
</x-button.loading>
</x-button>
@ -228,13 +228,13 @@
<div v-else>
<x-button
type="button"
::disabled="reconcile || form.loading"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue-300 hover:bg-blue-500 disabled:bg-blue-100"
::disabled="! reconcile"
class="relative flex items-center justify-center px-3 py-1.5 ltr:ml-2 rtl:mr-2 text-white text-base rounded-lg bg-blue hover:bg-blue-700 disabled:bg-blue-100"
override="class"
@click="onReconcileSubmit"
data-loading-text="{{ trans('general.loading') }}"
>
<x-button.loading action="! reconcile">
<x-button.loading action="reconcile && form.loading">
{{ trans('reconciliations.reconcile') }}
</x-button.loading>
</x-button>

View File

@ -6,7 +6,6 @@
add-new
path="{{ $path }}"
add-new
name="{{ $name }}"
label="{!! $label !!}"
:options="$contacts"
@ -26,7 +25,6 @@
add-new
path="{{ $path }}"
add-new
name="{{ $name }}"
label="{!! $label !!}"
:options="$contacts"

View File

@ -47,6 +47,24 @@
:dynamic-options="{{ $attributes['dynamicOptions'] }}"
@endif
@if (! empty($attributes['searchable']))
searchable
@elseif (! empty($searchable))
searchable
@endif
@if (isset($attributes['fullOptions']) || isset($attributes['full-options']))
:full-options="{{ json_encode(! empty($attributes['fullOptions']) ? $attributes['fullOptions'] : $attributes['full-options']) }}"
@else
:full-options="{{ json_encode($fullOptions) }}"
@endif
@if (isset($attributes['searchText']) || isset($attributes['search-text']))
search-text="{{ ! empty($attributes['searchText']) ? $attributes['searchText'] : $attributes['search-text'] }}"
@else
search-text="{{ $searchText }}"
@endif
@if (empty($multiple))
@if (isset($selected) || old($name))
value="{{ old($name, $selected) }}"
@ -107,6 +125,10 @@
@change="{{ $attributes['change'] }}($event)"
@endif
@if (! empty($attributes['focus']))
@focus="{{ $attributes['focus'] }}"
@endif
@if (! empty($attributes['visible-change']))
@visible-change="{{ $attributes['visible-change'] }}"
@endif

View File

@ -47,6 +47,24 @@
:dynamic-options="{{ $attributes['dynamicOptions'] }}"
@endif
@if (! empty($attributes['searchable']))
searchable
@elseif (! empty($searchable))
searchable
@endif
@if (isset($attributes['fullOptions']) || isset($attributes['full-options']))
:full-options="{{ json_encode(! empty($attributes['fullOptions']) ? $attributes['fullOptions'] : $attributes['full-options']) }}"
@else
:full-options="{{ json_encode($fullOptions) }}"
@endif
@if (isset($attributes['searchText']) || isset($attributes['search-text']))
search-text="{{ ! empty($attributes['searchText']) ? $attributes['searchText'] : $attributes['search-text'] }}"
@else
search-text="{{ $searchText }}"
@endif
@if (empty($multiple))
@if (isset($selected) || old($name))
value="{{ old($name, $selected) }}"

View File

@ -1,10 +1,15 @@
@if ($transaction->isTransferTransaction())
@php
$from_account = '<span class="font-medium">' . $transaction->transfer->expense_account->title . '</span>';
$to_account = '<span class="font-medium">' . $transaction->transfer->income_account->title . '</span>';
@endphp
@php $transfer = $transaction->transfer; @endphp
<div class="border-b pb-4" x-data="{ transfer : null }">
@if ($transfer)
@php
$from_account = '<span class="font-medium">' . $transfer->expense_account->title . '</span>';
$to_account = '<span class="font-medium">' . $transfer->income_account->title . '</span>';
$date = '<a href="' . route('transfers.show', $transfer->id) . '" class="text-purple">' . company_date($transaction->paid_at) . '</a>';
@endphp
@endif
<div class="border-b pb-4" x-data="{ transfer : 1 }">
<button class="relative w-full text-left cursor-pointer group"
x-on:click="transfer !== 1 ? transfer = 1 : transfer = null"
>
@ -12,9 +17,11 @@
{{ trans_choice('general.transfers', 1) }}
</span>
<div class="text-black-400 text-sm">
{!! trans('transactions.slider.transfer_headline', ['from_account' => $from_account, 'to_account' => $to_account]) !!}
</div>
@if ($transfer)
<div class="text-black-400 text-sm">
{!! trans('transactions.slider.transfer_headline', ['from_account' => $from_account, 'to_account' => $to_account]) !!}
</div>
@endif
<span class="material-icons absolute right-0 top-0 transition-all transform"
x-bind:class="transfer === 1 ? 'rotate-180' : ''"
@ -25,13 +32,19 @@
x-ref="container1"
x-bind:class="transfer === 1 ? 'h-auto' : 'scale-y-0 h-0'"
>
@php
$date = '<a href="' . route('transfers.show', $transaction->transfer->id) . '" class="text-purple">' . company_date($transaction->paid_at) . '</a>';
@endphp
<div class="my-2">
{!! trans('transactions.slider.transfer_desc', ['date' => $date]) !!}
</div>
@if ($transfer)
<div class="my-2">
{!! trans('transactions.slider.transfer_desc', ['date' => $date]) !!}
</div>
@else
<div class="mt-2">
<div class="alert alert-notify p-4 text-black font-bold rounded-lg bg-orange-100 text-orange-600">
<span class="alert-text">
<span>{{ trans('messages.warning.missing_transfer') }}</span>
</span>
</div>
</div>
@endif
</div>
</div>
@endif

View File

@ -14,6 +14,12 @@
{{ trans('errors.title.403') }}
</span>
@if (! empty($message))
<span class="text-lg">
{{ $message }}
</span>
@endif
@php $landing_page = user() ? user()->getLandingPageOfUser() : route('login'); @endphp
<a href="{{ $landing_page }}" class="relative flex items-center justify-center bg-green hover:bg-green-700 text-white px-6 py-1.5 text-base rounded-lg disabled:bg-green-100 mt-3">
{{ trans('general.go_to_dashboard') }}

View File

@ -14,6 +14,12 @@
{{ trans('errors.title.404') }}
</span>
@if (! empty($message))
<span class="text-lg">
{{ $message }}
</span>
@endif
@php $landing_page = user() ? user()->getLandingPageOfUser() : route('login'); @endphp
<a href="{{ $landing_page }}" class="relative flex items-center justify-center bg-green hover:bg-green-700 text-white px-6 py-1.5 text-base rounded-lg disabled:bg-green-100 mt-3">
{{ trans('general.go_to_dashboard') }}

View File

@ -14,6 +14,12 @@
{{ trans('errors.title.500') }}
</span>
@if (! empty($message))
<span class="text-lg">
{{ $message }}
</span>
@endif
@php $landing_page = user() ? user()->getLandingPageOfUser() : route('login'); @endphp
<a href="{{ $landing_page }}" class="relative flex items-center justify-center bg-green hover:bg-green-700 text-white px-6 py-1.5 text-base rounded-lg disabled:bg-green-100 mt-3">
{{ trans('general.go_to_dashboard') }}

View File

@ -4,7 +4,9 @@
<x-form.group.color name="color" label="{{ trans('general.color') }}" form-group-class="col-span-6" />
<x-form.input.hidden name="type" :value="$type" />
<x-form.group.select name="parent_id" label="{{ trans('general.parent') . ' ' . trans_choice('general.categories', 1) }}" :options="$categories" not-required sort-options="false" searchable form-group-class="col-span-6" />
<x-form.input.hidden name="type" :value="'{{ $type }}'" @change="updateParentCategories" />
<x-form.input.hidden name="enabled" value="1" />
</div>
</x-form>

View File

@ -14,9 +14,21 @@
</x-slot>
<x-slot name="content">
<x-modules.purchased />
@if (! empty($purchase) || ! empty($installed))
<x-modules.purchased />
<x-modules.installed />
<x-modules.installed />
@else
<div class="py-6 font-medium">
<div class="flex items-center justify-between mb-5 lg:mb-0">
<h4 class="py-3 font-medium lg:text-2xl">
{{ trans('modules.my_apps') }}
</h4>
</div>
<x-modules.no-apps />
</div>
@endif
</x-slot>
<x-script folder="modules" file="apps" />

View File

@ -24,7 +24,7 @@
<x-form.group.select name="type" label="{{ trans_choice('general.types', 1) }}" :options="$types" :selected="config('general.types')" change="updateParentCategories" />
<x-form.group.select name="parent_id" label="{{ trans('general.parent') . ' ' . trans_choice('general.categories', 1) }}" :options="[]" not-required dynamicOptions="categoriesBasedTypes" sort-options="false" disabled="isParentCategoryDisabled" />
<x-form.group.select name="parent_id" label="{{ trans('general.parent') . ' ' . trans_choice('general.categories', 1) }}" :options="[]" not-required dynamicOptions="categoriesBasedTypes" sort-options="false" v-disabled="isParentCategoryDisabled" />
<x-form.input.hidden name="categories" value="{{ json_encode($categories) }}" />
</x-slot>

View File

@ -24,7 +24,7 @@
<x-form.group.select name="type" label="{{ trans_choice('general.types', 1) }}" :options="$types" change="updateParentCategories" />
@endif
<x-form.group.select name="parent_id" label="{{ trans('general.parent') . ' ' . trans_choice('general.categories', 1) }}" :options="$categories[$category->type]" not-required dynamicOptions="categoriesBasedTypes" sort-options="false" />
<x-form.group.select name="parent_id" label="{{ trans('general.parent') . ' ' . trans_choice('general.categories', 1) }}" :options="$categories[$category->type]" not-required dynamicOptions="categoriesBasedTypes" sort-options="false" v-disabled="isParentCategoryDisabled" />
<x-form.input.hidden name="categories" value="{{ json_encode($categories) }}" />
<x-form.input.hidden name="parent_category_id" :value="$category->parent_id" />

View File

@ -20,7 +20,7 @@
<x-slot name="body">
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" change="onChangeCode" />
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" searchable change="onChangeCode" />
<x-form.group.text name="rate" label="{{ trans('currencies.rate') }}" @input="onChangeRate" />

View File

@ -14,7 +14,7 @@
<x-slot name="body">
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" change="onChangeCode" />
<x-form.group.select name="code" label="{{ trans('currencies.code') }}" :options="$codes" searchable change="onChangeCode" />
<x-form.group.text name="rate" label="{{ trans('currencies.rate') }}" @input="onChangeRate" />