Merge branch 'master' of https://github.com/brkcvn/akaunting into form-elements

This commit is contained in:
Burak Civan 2022-06-30 11:29:25 +03:00
commit 1d3c53b8ba
34 changed files with 1003 additions and 12230 deletions

View File

@ -285,6 +285,9 @@ abstract class Show extends Component
/** @var bool */ /** @var bool */
public $hideChildren; public $hideChildren;
/** @var bool */
public $hideTransfer;
/** @var bool */ /** @var bool */
public $hideAttachment; public $hideAttachment;
@ -329,7 +332,7 @@ abstract class Show extends Component
string $textRelatedTransansaction = '', string $textRelatedDocumentNumber = '', string $textRelatedContact = '', string $textRelatedDocumentDate = '', string $textRelatedDocumentAmount = '', string $textRelatedAmount = '', string $textRelatedTransansaction = '', string $textRelatedDocumentNumber = '', string $textRelatedContact = '', string $textRelatedDocumentDate = '', string $textRelatedDocumentAmount = '', string $textRelatedAmount = '',
string $routeDocumentShow = '', string $routeTransactionShow = '', string $textButtonAddNew = '', string $routeDocumentShow = '', string $routeTransactionShow = '', string $textButtonAddNew = '',
bool $hideSchedule = false, bool $hideChildren = false, bool $hideAttachment = false, $attachment = [], bool $hideSchedule = false, bool $hideChildren = false, bool $hideTransfer = false, bool $hideAttachment = false, $attachment = [],
array $connectTranslations = [], string $textRecurringType = '', bool $hideRecurringMessage = false, bool $hideCreated = false array $connectTranslations = [], string $textRecurringType = '', bool $hideRecurringMessage = false, bool $hideCreated = false
) { ) {
$this->type = $type; $this->type = $type;
@ -386,6 +389,9 @@ abstract class Show extends Component
// Hide Children // Hide Children
$this->hideChildren = $hideChildren; $this->hideChildren = $hideChildren;
// Hide Transfer
$this->hideTransfer = $hideTransfer;
// Hide Attachment // Hide Attachment
$this->hideAttachment = $hideAttachment; $this->hideAttachment = $hideAttachment;

View File

@ -43,13 +43,13 @@ class CreateContact extends Job implements HasOwner, HasSource, ShouldCreate
throw new \Exception($message); throw new \Exception($message);
} }
$customer_role = Role::all()->filter(function ($role) { $customer_role_id = Role::all()->filter(function ($role) {
return $role->hasPermission('read-client-portal'); return $role->hasPermission('read-client-portal');
})->pluck('id')->toArray(); })->pluck('id')->first();
$this->request->merge([ $this->request->merge([
'locale' => setting('default.locale', 'en-GB'), 'locale' => setting('default.locale', 'en-GB'),
'roles' => $customer_role, 'roles' => $customer_role_id,
'companies' => [$this->request->get('company_id')], 'companies' => [$this->request->get('company_id')],
]); ]);

View File

@ -57,13 +57,13 @@ class UpdateContact extends Job implements ShouldUpdate
throw new \Exception($message); throw new \Exception($message);
} }
$customer_role = Role::all()->filter(function ($role) { $customer_role_id = Role::all()->filter(function ($role) {
return $role->hasPermission('read-client-portal'); return $role->hasPermission('read-client-portal');
})->pluck('id')->toArray(); })->pluck('id')->first();
$this->request->merge([ $this->request->merge([
'locale' => setting('default.locale', 'en-GB'), 'locale' => setting('default.locale', 'en-GB'),
'roles' => $customer_role, 'roles' => $customer_role_id,
'companies' => [$this->request->get('company_id')], 'companies' => [$this->request->get('company_id')],
]); ]);

View File

@ -141,6 +141,19 @@ class Transaction extends Model
return $this->morphOne('App\Models\Common\Recurring', 'recurable'); return $this->morphOne('App\Models\Common\Recurring', 'recurable');
} }
public function transfer()
{
if ($this->type == self::INCOME_TYPE) {
return $this->belongsTo('App\Models\Banking\Transfer', 'id', 'income_transaction_id');
}
if ($this->type == self::EXPENSE_TYPE) {
return $this->belongsTo('App\Models\Banking\Transfer', 'id', 'expense_transaction_id');
}
return null;
}
public function splits() public function splits()
{ {
return $this->hasMany('App\Models\Banking\Transaction', 'split_id'); return $this->hasMany('App\Models\Banking\Transaction', 'split_id');

View File

@ -27,6 +27,7 @@ class Country extends Component
*/ */
public function __construct($code) { public function __construct($code) {
$this->code = $code; $this->code = $code;
$this->country = trans('general.na');
} }
/** /**
@ -36,7 +37,9 @@ class Country extends Component
*/ */
public function render() public function render()
{ {
$this->country = trans('countries.' . $this->code); if (! empty($this->code)) {
$this->country = trans('countries.' . $this->code);
}
return view('components.index.country'); return view('components.index.country');
} }

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transactions\Show;
use App\Abstracts\View\Components\Transactions\Show as Component;
class Transfer extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transactions.show.transfer');
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\View\Components\Transfers\Show;
use App\Abstracts\View\Components\Transfers\Show as Component;
class Transactions extends Component
{
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.transfers.show.transactions');
}
}

12835
public/css/app.css vendored

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 165 KiB

View File

@ -33,7 +33,7 @@
</div> </div>
<div class="col text-gray-500 ml-3"> <div class="col text-gray-500 ml-3">
<h4 class="text-sm mb-1" data-dz-name>...</h4> <h4 class="w-56 lg:w-96 text-sm mb-1 truncate" data-dz-name>...</h4>
<p class="text-xs text-muted mb-0" data-dz-size>...</p> <p class="text-xs text-muted mb-0" data-dz-size>...</p>
</div> </div>

View File

@ -72,17 +72,18 @@
<div class="flex items-center justify-center mt-5 gap-x-10"> <div class="flex items-center justify-center mt-5 gap-x-10">
<base-button class="w-1/2 flex items-center justify-center px-6 py-1.5 text-base rounded-lg bg-transparent hover:bg-gray-100" @click="next()">{{ translations.company.skip }}</base-button> <base-button class="w-1/2 flex items-center justify-center px-6 py-1.5 text-base rounded-lg bg-transparent hover:bg-gray-100" @click="next()">{{ translations.company.skip }}</base-button>
<base-button <button
type="submit"
id="button" id="button"
:disabled="button_loading" :disabled="button_loading"
class="w-1/2 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" class="w-1/2 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"
@click="onEditSave()" @click="onEditSave($event)"
> >
<i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i> <i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
<span :class="[{'opacity-0': button_loading}]"> <span :class="[{'opacity-0': button_loading}]">
{{ translations.company.save }} {{ translations.company.save }}
</span> </span>
</base-button> </button>
</div> </div>
</div> </div>
</div> </div>
@ -254,7 +255,9 @@ export default {
} }
}, },
onEditSave() { onEditSave(event) {
event.preventDefault();
FormData.prototype.appendRecursive = function (data, wrapper = null) { FormData.prototype.appendRecursive = function (data, wrapper = null) {
for (var name in data) { for (var name in data) {
if (name == "previewElement" || name == "previewTemplate") { if (name == "previewElement" || name == "previewTemplate") {

View File

@ -89,16 +89,17 @@
{{ translations.currencies.cancel }} {{ translations.currencies.cancel }}
</base-button> </base-button>
<base-button <button
type="submit"
:disabled="button_loading" :disabled="button_loading"
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" 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"
@click="onEditForm(item)" @click="onEditForm(item, $event)"
> >
<i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i> <i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
<span :class="[{'opacity-0': button_loading}]"> <span :class="[{'opacity-0': button_loading}]">
{{ translations.currencies.save }} {{ translations.currencies.save }}
</span> </span>
</base-button> </button>
</div> </div>
</div> </div>
</td> </td>
@ -157,12 +158,12 @@
{{ translations.currencies.cancel }} {{ translations.currencies.cancel }}
</base-button> </base-button>
<base-button :disabled="button_loading" 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" @click="onSubmitForm()"> <button type="submit" :disabled="button_loading" 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" @click="onSubmitForm($event)">
<i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i> <i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
<span :class="[{'opacity-0': button_loading}]"> <span :class="[{'opacity-0': button_loading}]">
{{ translations.currencies.save }} {{ translations.currencies.save }}
</span> </span>
</base-button> </button>
</div> </div>
</div> </div>
</div> </div>
@ -291,7 +292,9 @@ export default {
}, this); }, this);
}, },
onEditForm(item) { onEditForm(item, event) {
event.preventDefault();
this.onSubmitEvent( this.onSubmitEvent(
"PATCH", "PATCH",
url + "/wizard/currencies/" + item.id, url + "/wizard/currencies/" + item.id,
@ -301,7 +304,9 @@ export default {
); );
}, },
onSubmitForm() { onSubmitForm(event) {
event.preventDefault();
this.onSubmitEvent( this.onSubmitEvent(
"POST", "POST",
url + "/wizard/currencies", url + "/wizard/currencies",

View File

@ -71,16 +71,17 @@
{{ translations.taxes.cancel }} {{ translations.taxes.cancel }}
</base-button> </base-button>
<base-button <button
type="submit"
:disabled="button_loading" :disabled="button_loading"
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" 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"
@click="onEditForm(item)" @click="onEditForm(item, $event)"
> >
<i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i> <i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
<span :class="[{'opacity-0': button_loading}]"> <span :class="[{'opacity-0': button_loading}]">
{{ translations.taxes.save }} {{ translations.taxes.save }}
</span> </span>
</base-button> </button>
</div> </div>
</div> </div>
</td> </td>
@ -129,12 +130,12 @@
{{ translations.taxes.cancel }} {{ translations.taxes.cancel }}
</base-button> </base-button>
<base-button :disabled="button_loading" 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" @click="onSubmitForm()"> <button type="submit" :disabled="button_loading" 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" @click="onSubmitForm($event)">
<i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i> <i v-if="button_loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
<span :class="[{'opacity-0': button_loading}]"> <span :class="[{'opacity-0': button_loading}]">
{{ translations.taxes.save }} {{ translations.taxes.save }}
</span> </span>
</base-button> </button>
</div> </div>
</div> </div>
</form> </form>
@ -225,7 +226,9 @@ export default {
this.onEjetItem(event, this.taxes, event.tax_id); this.onEjetItem(event, this.taxes, event.tax_id);
}, },
onEditForm(item) { onEditForm(item, event) {
event.preventDefault();
this.onSubmitEvent( this.onSubmitEvent(
"PATCH", "PATCH",
url + "/wizard/taxes/" + item.id, url + "/wizard/taxes/" + item.id,
@ -245,7 +248,9 @@ export default {
this.add_taxes = true; this.add_taxes = true;
}, },
onSubmitForm() { onSubmitForm(event) {
event.preventDefault();
this.onSubmitEvent("POST", url + "/wizard/taxes", "type", this.taxes); this.onSubmitEvent("POST", url + "/wizard/taxes", "type", this.taxes);
}, },

View File

@ -24,6 +24,8 @@ return [
'create_recurring' => ':user created this recurring template on :date', 'create_recurring' => ':user created this recurring template on :date',
'schedule' => 'Repeat every :interval :frequency since :date', 'schedule' => 'Repeat every :interval :frequency since :date',
'children' => ':count transactions were created automatically', 'children' => ':count transactions were created automatically',
'transfer_headline' => 'From :from_account to :to_account',
'transfer_desc' => 'Transfer created on :date.',
], ],
'share' => [ 'share' => [

View File

@ -25,6 +25,9 @@ return [
'slider' => [ 'slider' => [
'create' => ':user created this transfer on :date', 'create' => ':user created this transfer on :date',
'transactions' => 'In list here are the transactions that were created automatically.',
'from_desc' => ':number transaction from :account',
'to_desc' => ':number transaction to :account',
], ],
]; ];

View File

@ -20,7 +20,7 @@
<x-index.container> <x-index.container>
<x-index.search <x-index.search
search-string="App\Models\Auth\User" search-string="App\Models\Auth\User"
bulk-action="App\BulkActions\Auth\User" bulk-action="App\BulkActions\Auth\Users"
/> />
<x-table> <x-table>

View File

@ -247,7 +247,7 @@
</div> </div>
</div> </div>
<div class="relative__footer mt-6"> <div class="mt-6">
@if ($transactions->count()) @if ($transactions->count())
<div class="sm:col-span-6 flex items-center justify-end"> <div class="sm:col-span-6 flex items-center justify-end">
<x-link <x-link

View File

@ -186,7 +186,7 @@
</div> </div>
@can('update-banking-reconciliations') @can('update-banking-reconciliations')
<div class="relative__footer mt-6"> <div class="mt-6">
@if ($transactions->count()) @if ($transactions->count())
<div class="sm:col-span-6 flex items-center justify-end"> <div class="sm:col-span-6 flex items-center justify-end">
<x-link <x-link

View File

@ -4,6 +4,6 @@
</x-slot> </x-slot>
<x-slot name="content"> <x-slot name="content">
<x-transfers.template.default :model="$transfer" /> <x-transfers.template.ddefault :model="$transfer" />
</x-slot> </x-slot>
</x-layouts.print> </x-layouts.print>

View File

@ -29,7 +29,7 @@
<x-form.group.file name="import" dropzone-class="form-file" singleWidthClasses :options="['acceptedFiles' => '.xls,.xlsx']" form-group-class="mt-8" /> <x-form.group.file name="import" dropzone-class="form-file" singleWidthClasses :options="['acceptedFiles' => '.xls,.xlsx']" form-group-class="mt-8" />
</div> </div>
<div class="relative__footer mt-8"> <div class="mt-8">
<div class="sm:col-span-6 flex items-center justify-end"> <div class="sm:col-span-6 flex items-center justify-end">
@if (! empty($route)) @if (! empty($route))
<a href="{{ route(\Str::replaceFirst('.import', '.index', $route)) }}" class="px-6 py-1.5 mr-2 hover:bg-gray-200 rounded-lg"> <a href="{{ route(\Str::replaceFirst('.import', '.index', $route)) }}" class="px-6 py-1.5 mr-2 hover:bg-gray-200 rounded-lg">

View File

@ -21,8 +21,6 @@
@endif @endif
@if (! empty($foot) && $foot->isNotEmpty()) @if (! empty($foot) && $foot->isNotEmpty())
<div class="relative__footer">
{!! $foot !!} {!! $foot !!}
</div>
@endif @endif
</div> </div>

View File

@ -10,8 +10,6 @@
@endif @endif
@if (! empty($foot) && $foot->isNotEmpty()) @if (! empty($foot) && $foot->isNotEmpty())
<div class="relative__footer">
{!! $foot !!} {!! $foot !!}
</div>
@endif @endif
</div> </div>

View File

@ -2,10 +2,6 @@
<div class="flex"> <div class="flex">
<div class="w-full text-center"> <div class="w-full text-center">
<div class="my-10">
<img src="https://assets.akaunting.com/software/portal/finish.gif" alt="Get Started" />
</div>
<div class="my-10"> <div class="my-10">
{{ trans('portal.create_your_invoice') }} {{ trans('portal.create_your_invoice') }}
</div> </div>
@ -15,5 +11,9 @@
{{ trans('portal.get_started') }} {{ trans('portal.get_started') }}
</a> </a>
</div> </div>
<div class="my-10">
<img src="https://assets.akaunting.com/software/portal/finish.gif" class="inline" alt="Get Started" />
</div>
</div> </div>
</div> </div>

View File

@ -10,7 +10,7 @@
<span class="text-xs mb-0">{{ $file->readableSize() }}</span> <span class="text-xs mb-0">{{ $file->readableSize() }}</span>
</div> </div>
</div> </div>
<div class="gap-x-1"> <div class="flex flex-row lg:flex-col gap-x-1">
@can('delete-common-uploads') @can('delete-common-uploads')
<a href="javascript:void();" id="remove-{{ $column_name }}" @click="onDeleteFile('{{ $file->id }}', '{{ route('uploads.destroy', $file->id) }}', '{{ trans('general.title.delete', ['type' => $column_name]) }}', '{{ trans('general.delete_confirm', ['name' => $file->basename, 'type' => $column_name]) }} ', '{{ trans('general.cancel') }}', '{{ trans('general.delete') }}')" type="button" class="group"> <a href="javascript:void();" id="remove-{{ $column_name }}" @click="onDeleteFile('{{ $file->id }}', '{{ route('uploads.destroy', $file->id) }}', '{{ trans('general.title.delete', ['type' => $column_name]) }}', '{{ trans('general.delete_confirm', ['name' => $file->basename, 'type' => $column_name]) }} ', '{{ trans('general.cancel') }}', '{{ trans('general.delete') }}')" type="button" class="group">
<span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span> <span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>

View File

@ -21,8 +21,6 @@
@endif @endif
@if (! empty($foot) && $foot->isNotEmpty()) @if (! empty($foot) && $foot->isNotEmpty())
<div class="relative__footer"> !! $foot !!}
{!! $foot !!}
</div>
@endif @endif
</div> </div>

View File

@ -55,6 +55,15 @@
@endif @endif
@stack('children_end') @stack('children_end')
@stack('transfer_start')
@if (! $hideTransfer)
<x-transactions.show.transfer
type="{{ $type }}"
:transaction="$transaction"
/>
@endif
@stack('transfer_end')
@stack('attachment_start') @stack('attachment_start')
@if (! $hideAttachment) @if (! $hideAttachment)
<x-transactions.show.attachment <x-transactions.show.attachment

View File

@ -0,0 +1,37 @@
@if ($transaction->hasTransferRelation)
@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
<div class="border-b pb-4" x-data="{ transfer : null }">
<button class="relative w-full text-left cursor-pointer group"
x-on:click="transfer !== 1 ? transfer = 1 : transfer = null"
>
<span class="font-medium border-b border-transparent transition-all group-hover:border-black">
{{ 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>
<span class="material-icons absolute right-0 top-0 transition-all transform"
x-bind:class="transfer === 1 ? 'rotate-180' : ''"
>expand_more</span>
</button>
<div class="overflow-hidden transition-transform origin-top-left ease-linear duration-100"
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>
</div>
</div>
@endif

View File

@ -2,6 +2,8 @@
<div class="w-full lg:w-5/12 space-y-12"> <div class="w-full lg:w-5/12 space-y-12">
<x-transfers.show.create :model="$transfer" /> <x-transfers.show.create :model="$transfer" />
<x-transfers.show.transactions :model="$transfer" />
<x-transfers.show.attachment :model="$transfer" /> <x-transfers.show.attachment :model="$transfer" />
</div> </div>

View File

@ -0,0 +1,33 @@
<div class="border-b pb-4" x-data="{ transactions : null }">
<button class="relative w-full text-left group" x-on:click="transactions !== 1 ? transactions = 1 : transactions = null">
<span class="font-medium border-b border-transparent transition-all group-hover:border-black">
{{ trans_choice('general.transactions', 2) }}
</span>
<div class="text-black-400 text-sm">
{!! trans('transfers.slider.transactions', ['user' => $transfer->owner->name]) !!}
</div>
<span class="material-icons absolute right-0 top-0 transition-all transform" x-bind:class="transactions === 1 ? 'rotate-180' : ''">expand_more</span>
</button>
<div
class="overflow-hidden transition-transform origin-top-left ease-linear duration-100"
x-ref="container1"
x-bind:class="transactions === 1 ? 'h-auto' : 'scale-y-0 h-0'"
>
<div class="my-2">
@php
$number = '<a href="' . route('transactions.show', $transfer->expense_transaction->id) . '" class="text-purple">' . $transfer->expense_transaction->number . '</a>';
@endphp
{!! trans('transfers.slider.from_desc', ['number' => $number, 'account' => $transfer->expense_account->title]) !!}
</div>
<div class="my-2">
@php
$number = '<a href="' . route('transactions.show', $transfer->income_transaction->id) . '" class="text-purple">' . $transfer->income_transaction->number . '</a>';
@endphp
{!! trans('transfers.slider.from_desc', ['number' => $number, 'account' => $transfer->income_account->title]) !!}
</div>
</div>
</div>

View File

@ -14,7 +14,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->name }} {{ $transfer->expense_account->name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -26,7 +26,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->number }} {{ $transfer->expense_account->number }}
</td> </td>
</tr> </tr>
</table> </table>
@ -38,7 +38,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_name }} {{ $transfer->expense_account->bank_name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -50,7 +50,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_phone }} {{ $transfer->expense_account->bank_phone }}
</td> </td>
</tr> </tr>
</table> </table>
@ -62,7 +62,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_address }} {{ $transfer->expense_account->bank_address }}
</td> </td>
</tr> </tr>
</table> </table>
@ -86,7 +86,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->name }} {{ $transfer->income_account->name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -98,7 +98,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->number }} {{ $transfer->income_account->number }}
</td> </td>
</tr> </tr>
</table> </table>
@ -110,7 +110,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_name }} {{ $transfer->income_account->bank_name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -122,7 +122,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_phone }} {{ $transfer->income_account->bank_phone }}
</td> </td>
</tr> </tr>
</table> </table>
@ -134,7 +134,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_address }} {{ $transfer->income_account->bank_address }}
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -70,7 +70,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->name }} {{ $transfer->expense_account->name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -82,7 +82,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->number}} {{ $transfer->expense_account->number}}
</td> </td>
</tr> </tr>
</table> </table>
@ -94,7 +94,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_name }} {{ $transfer->expense_account->bank_name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -106,7 +106,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_phone }} {{ $transfer->expense_account->bank_phone }}
</td> </td>
</tr> </tr>
</table> </table>
@ -118,7 +118,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_address }} {{ $transfer->expense_account->bank_address }}
</td> </td>
</tr> </tr>
</table> </table>
@ -142,7 +142,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->name }} {{ $transfer->income_account->name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -154,7 +154,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->number }} {{ $transfer->income_account->number }}
</td> </td>
</tr> </tr>
</table> </table>
@ -166,7 +166,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_name }} {{ $transfer->income_account->bank_name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -178,7 +178,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_phone }} {{ $transfer->income_account->bank_phone }}
</td> </td>
</tr> </tr>
</table> </table>
@ -190,7 +190,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_address }} {{ $transfer->income_account->bank_address }}
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -18,7 +18,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->name }} {{ $transfer->expense_account->name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -30,7 +30,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->number}} {{ $transfer->expense_account->number}}
</td> </td>
</tr> </tr>
</table> </table>
@ -42,7 +42,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_name }} {{ $transfer->expense_account->bank_name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -54,7 +54,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_phone }} {{ $transfer->expense_account->bank_phone }}
</td> </td>
</tr> </tr>
</table> </table>
@ -66,7 +66,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->expense_transaction->account->bank_address }} {{ $transfer->expense_account->bank_address }}
</td> </td>
</tr> </tr>
</table> </table>
@ -92,7 +92,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->name }} {{ $transfer->income_account->name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -104,7 +104,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->number }} {{ $transfer->income_account->number }}
</td> </td>
</tr> </tr>
</table> </table>
@ -116,7 +116,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_name }} {{ $transfer->income_account->bank_name }}
</td> </td>
</tr> </tr>
</table> </table>
@ -128,7 +128,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_phone }} {{ $transfer->income_account->bank_phone }}
</td> </td>
</tr> </tr>
</table> </table>
@ -140,7 +140,7 @@
</td> </td>
<td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;"> <td style="width:70%; margin: 0px; padding: 0 0 8px 0; font-size: 12px;">
{{ $transfer->income_transaction->account->bank_address }} {{ $transfer->income_account->bank_address }}
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -151,27 +151,31 @@
<x-pagination :items="$invoices" /> <x-pagination :items="$invoices" />
</x-index.container> </x-index.container>
@else @else
<x-empty-page <div class="flex">
group="sales" <div class="w-full text-center">
page="invoices" <div class="my-10">
hide-button-import {{ trans('portal.create_your_invoice') }}
:buttons="[ </div>
[
'url' => route('transactions.create', ['type' => 'income']), <div class="my-10">
'permission' => 'create-sales-invoices', <a href="https://akaunting.com/lp/accounting-software?utm_source=invoice_index&utm_medium=software&utm_campaign=plg" class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700">
'text' => trans('general.title.new', ['type' => trans_choice('general.incomes', 1)]), {{ trans('portal.get_started') }}
'description' => trans('general.empty.actions.new', ['type' => trans_choice('general.incomes', 1)]), </a>
'active_badge' => false </div>
],
[ <div class="my-10">
'url' => 'https://akaunting.com/premium-cloud', <img src="https://assets.akaunting.com/software/portal/invoice.gif" class="inline" alt="Get Started" />
'permission' => 'create-sales-invoices', </div>
'text' => trans('import.title', ['type' => trans_choice('general.bank_transactions', 2)]), </div>
'description' => '', </div>
'active_badge' => false
] @push('css')
]" <style>
/> .hide-empty-page {
display: none;
}
</style>
@endpush
@endif @endif
</x-slot> </x-slot>

View File

@ -59,34 +59,31 @@
<x-pagination :items="$payments" /> <x-pagination :items="$payments" />
</x-index.container> </x-index.container>
@else @else
<x-empty-page <div class="flex">
group="banking" <div class="w-full text-center">
page="transactions" <div class="my-10">
hide-button-import {{ trans('portal.create_your_invoice') }}
:buttons="[ </div>
[
'url' => route('transactions.create', ['type' => 'income']), <div class="my-10">
'permission' => 'create-banking-transactions', <a href="https://akaunting.com/lp/accounting-software?utm_source=payment_index&utm_medium=software&utm_campaign=plg" class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700">
'text' => trans('general.title.new', ['type' => trans_choice('general.incomes', 1)]), {{ trans('portal.get_started') }}
'description' => trans('general.empty.actions.new', ['type' => trans_choice('general.incomes', 1)]), </a>
'active_badge' => false </div>
],
[ <div class="my-10">
'url' => route('transactions.create', ['type' => 'expense']), <img src="https://assets.akaunting.com/software/portal/payment.gif" class="inline" alt="Get Started" />
'permission' => 'create-banking-transactions', </div>
'text' => trans('general.title.new', ['type' => trans_choice('general.expenses', 1)]), </div>
'description' => trans('general.empty.actions.new', ['type' => trans_choice('general.expenses', 1)]), </div>
'active_badge' => false
], @push('css')
[ <style>
'url' => 'https://akaunting.com/premium-cloud', .hide-empty-page {
'permission' => 'create-banking-transactions', display: none;
'text' => trans('import.title', ['type' => trans_choice('general.bank_transactions', 2)]), }
'description' => '', </style>
'active_badge' => false @endpush
]
]"
/>
@endif @endif
</x-slot> </x-slot>