Merge branch 'master' into user-works

This commit is contained in:
Sevan Nerse 2022-06-29 22:40:55 +03:00
commit a63b9938da
16 changed files with 99 additions and 88 deletions

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

@ -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');
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 165 KiB

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

@ -91,16 +91,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>
@ -159,12 +160,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>
@ -293,7 +294,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,
@ -303,7 +306,9 @@ export default {
); );
}, },
onSubmitForm() { onSubmitForm(event) {
event.preventDefault();
this.onSubmitEvent( this.onSubmitEvent(
"POST", "POST",
url + "/wizard/currencies", url + "/wizard/currencies",

View File

@ -73,16 +73,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>
@ -131,12 +132,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>
@ -227,7 +228,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,
@ -247,7 +250,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

@ -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

@ -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

@ -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

@ -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>