Merge branch 'master' of github.com:akaunting/akaunting

This commit is contained in:
Burak Çakırel 2020-10-01 16:42:41 +03:00
commit b7acb13e1f
No known key found for this signature in database
GPG Key ID: 48FFBB7771B99C7C
73 changed files with 332 additions and 295 deletions

View File

@ -11,8 +11,8 @@ use App\Events\Sale\InvoiceRecurring;
use App\Models\Banking\Transaction; use App\Models\Banking\Transaction;
use App\Models\Common\Company; use App\Models\Common\Company;
use App\Models\Sale\Invoice; use App\Models\Sale\Invoice;
use App\Utilities\Date;
use App\Utilities\Overrider; use App\Utilities\Overrider;
use Date;
use Illuminate\Console\Command; use Illuminate\Console\Command;
class RecurringCheck extends Command class RecurringCheck extends Command
@ -31,13 +31,6 @@ class RecurringCheck extends Command
*/ */
protected $description = 'Check for recurring'; protected $description = 'Check for recurring';
/**
* The current day.
*
* @var \Carbon\Carbon
*/
protected $today;
/** /**
* Execute the console command. * Execute the console command.
* *
@ -61,19 +54,35 @@ class RecurringCheck extends Command
Overrider::load('settings'); Overrider::load('settings');
Overrider::load('currencies'); Overrider::load('currencies');
$this->today = Date::today(); $today = Date::today();
foreach ($company->recurring as $recurring) { foreach ($company->recurring as $recurring) {
if (!$model = $recurring->recurable) { if (!$model = $recurring->recurable) {
continue; continue;
} }
foreach ($recurring->getRecurringSchedule() as $schedule) { $schedules = $recurring->getRecurringSchedule();
$children_count = $this->getChildrenCount($model);
$schedule_count = $schedules->count();
// All recurring created, including today
if ($children_count > ($schedule_count - 1)) {
continue;
}
// Recur only today
if ($children_count == ($schedule_count - 1)) {
$this->recur($model, $recurring->recurable_type, $today);
continue;
}
// Recur all schedules, previously failed
foreach ($schedules as $schedule) {
$schedule_date = Date::parse($schedule->getStart()->format('Y-m-d')); $schedule_date = Date::parse($schedule->getStart()->format('Y-m-d'));
\DB::transaction(function () use ($model, $recurring, $schedule_date) { $this->recur($model, $recurring->recurable_type, $schedule_date);
$this->recur($model, $recurring->recurable_type, $schedule_date);
});
} }
} }
} }
@ -85,35 +94,32 @@ class RecurringCheck extends Command
protected function recur($model, $type, $schedule_date) protected function recur($model, $type, $schedule_date)
{ {
// Don't recur the future \DB::transaction(function () use ($model, $type, $schedule_date) {
if ($schedule_date->greaterThan($this->today)) { if (!$clone = $this->getClone($model, $schedule_date)) {
return; return;
} }
if (!$clone = $this->getClone($model, $schedule_date)) { switch ($type) {
return; case 'App\Models\Purchase\Bill':
} event(new BillCreated($clone));
switch ($type) { event(new BillRecurring($clone));
case 'App\Models\Purchase\Bill':
event(new BillCreated($clone));
event(new BillRecurring($clone)); break;
case 'App\Models\Sale\Invoice':
event(new InvoiceCreated($clone));
break; event(new InvoiceRecurring($clone));
case 'App\Models\Sale\Invoice':
event(new InvoiceCreated($clone));
event(new InvoiceRecurring($clone)); break;
case 'App\Models\Banking\Transaction':
event(new TransactionCreated($clone));
break; event(new TransactionRecurring($clone));
case 'App\Models\Banking\Transaction':
event(new TransactionCreated($clone));
event(new TransactionRecurring($clone)); break;
}
break; });
}
} }
/** /**
@ -215,6 +221,15 @@ class RecurringCheck extends Command
return false; return false;
} }
protected function getChildrenCount($model)
{
$table = $this->getTable($model);
return \DB::table($table)
->where('parent_id', $model->id)
->count();
}
protected function getDateField($model) protected function getDateField($model)
{ {
if ($model instanceof Transaction) { if ($model instanceof Transaction) {
@ -240,4 +255,4 @@ class RecurringCheck extends Command
return 'bills'; return 'bills';
} }
} }

View File

@ -19,4 +19,4 @@ class TransactionRecurring
{ {
$this->transaction = $transaction; $this->transaction = $transaction;
} }
} }

View File

@ -54,9 +54,7 @@ class Items extends Controller
$taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id'); $taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id');
$currency = Currency::where('code', setting('default.currency'))->first(); return view('common.items.create', compact('categories', 'taxes'));
return view('common.items.create', compact('categories', 'taxes', 'currency'));
} }
/** /**

View File

@ -2,6 +2,7 @@
namespace App\Traits; namespace App\Traits;
use App\Utilities\Date;
use Recurr\Rule; use Recurr\Rule;
use Recurr\Transformer\ArrayTransformer; use Recurr\Transformer\ArrayTransformer;
use Recurr\Transformer\ArrayTransformerConfig; use Recurr\Transformer\ArrayTransformerConfig;
@ -59,18 +60,19 @@ trait Recurring
]); ]);
} }
public function getRecurringSchedule() public function getRecurringSchedule($set_until_date = true)
{ {
$config = new ArrayTransformerConfig(); $config = new ArrayTransformerConfig();
$config->enableLastDayOfMonthFix(); $config->enableLastDayOfMonthFix();
$config->setVirtualLimit($this->getRecurringVirtualLimit());
$transformer = new ArrayTransformer(); $transformer = new ArrayTransformer();
$transformer->setConfig($config); $transformer->setConfig($config);
return $transformer->transform($this->getRecurringRule()); return $transformer->transform($this->getRecurringRule($set_until_date));
} }
public function getRecurringRule() public function getRecurringRule($set_until_date = true)
{ {
$rule = (new Rule()) $rule = (new Rule())
->setStartDate($this->getRecurringRuleStartDate()) ->setStartDate($this->getRecurringRuleStartDate())
@ -78,6 +80,10 @@ trait Recurring
->setFreq($this->getRecurringRuleFrequency()) ->setFreq($this->getRecurringRuleFrequency())
->setInterval($this->getRecurringRuleInterval()); ->setInterval($this->getRecurringRuleInterval());
if ($set_until_date) {
$rule->setUntil($this->getRecurringRuleUntilDate());
}
// 0 means infinite // 0 means infinite
if ($this->count != 0) { if ($this->count != 0) {
$rule->setCount($this->getRecurringRuleCount()); $rule->setCount($this->getRecurringRuleCount());
@ -91,6 +97,11 @@ trait Recurring
return new \DateTime($this->started_at, new \DateTimeZone($this->getRecurringRuleTimeZone())); return new \DateTime($this->started_at, new \DateTimeZone($this->getRecurringRuleTimeZone()));
} }
public function getRecurringRuleUntilDate()
{
return new \DateTime(Date::today()->toDateTimeString(), new \DateTimeZone($this->getRecurringRuleTimeZone()));
}
public function getRecurringRuleTimeZone() public function getRecurringRuleTimeZone()
{ {
return setting('localisation.timezone'); return setting('localisation.timezone');
@ -112,6 +123,27 @@ trait Recurring
return $this->interval; return $this->interval;
} }
public function getRecurringVirtualLimit()
{
switch ($this->frequency) {
case 'yearly':
$limit = '2';
break;
case 'monthly':
$limit = '24';
break;
case 'weekly':
$limit = '104';
break;
case 'daily':
default;
$limit = '732';
break;
}
return $limit;
}
public function getCurrentRecurring() public function getCurrentRecurring()
{ {
if (!$schedule = $this->getRecurringSchedule()) { if (!$schedule = $this->getRecurringSchedule()) {
@ -151,4 +183,4 @@ trait Recurring
return $schedule->last()->getStart(); return $schedule->last()->getStart();
} }
} }

View File

@ -16,7 +16,7 @@ class Recurring
continue; continue;
} }
foreach ($item->recurring->getRecurringSchedule() as $schedule) { foreach ($item->recurring->getRecurringSchedule(false) as $schedule) {
$issued = Date::parse($item->$issued_date_field); $issued = Date::parse($item->$issued_date_field);
$start = $schedule->getStart(); $start = $schedule->getStart();

2
composer.lock generated
View File

@ -12355,4 +12355,4 @@
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "1.1.0" "plugin-api-version": "1.1.0"
} }

View File

@ -137,10 +137,10 @@ export default {
}; };
}, },
created: function () { created: function () {
let documentClasses = document.body.classList; let documentClasses = document.body.classList;
documentClasses.add("modal-open"); documentClasses.add("modal-open");
}, },
mounted() { mounted() {

View File

@ -1,9 +1,9 @@
<template> <template>
<div class="row col-md-6 pr-0"> <div class="row col-md-6 pr-0">
<base-input :label="title" <base-input :label="title"
name="recurring_frequency" name="recurring_frequency"
:class="frequencyClasses" :class="frequencyClasses"
:error="frequencyError"> :error="frequencyError">
<el-select v-model="recurring_frequency" @input="change" filterable <el-select v-model="recurring_frequency" @input="change" filterable
:placeholder="placeholder"> :placeholder="placeholder">
<template slot="prefix"> <template slot="prefix">
@ -28,16 +28,14 @@
:class="invertalClasses" :class="invertalClasses"
:error="intervalError" :error="intervalError"
v-model="recurring_interval" v-model="recurring_interval"
@input="change" >
>
</base-input> </base-input>
<base-input :label="''" <base-input :label="''"
name="recurring_custom_frequency" name="recurring_custom_frequency"
class="recurring-single" class="recurring-single"
:class="customFrequencyClasses" :class="customFrequencyClasses"
:error="customFrequencyError" :error="customFrequencyError">
>
<el-select v-model="recurring_custom_frequency" @input="change" filterable <el-select v-model="recurring_custom_frequency" @input="change" filterable
:placeholder="placeholder"> :placeholder="placeholder">
<el-option v-for="(label, value) in customFrequencyOptions" <el-option v-for="(label, value) in customFrequencyOptions"
@ -51,12 +49,11 @@
<base-input :label="''" <base-input :label="''"
name="recurring_count" name="recurring_count"
type="number" type="number"
:value="0"
class="recurring-single" class="recurring-single"
:class="countClasses" :class="countClasses"
:error="countError" :error="countError"
v-model="recurring_count" v-model="recurring_count">
@input="change"
>
</base-input> </base-input>
</div> </div>
</template> </template>
@ -91,9 +88,9 @@ export default {
frequencyError: null, frequencyError: null,
intervalValue: { intervalValue: {
type: [Number, String], type: [Number, String],
default: 0, default: 0,
description: "Default interval value" description: "Default interval value"
}, },
intervalError: null, intervalError: null,
@ -102,9 +99,9 @@ export default {
customFrequencyError: null, customFrequencyError: null,
countValue: { countValue: {
type: [Number, String], type: [Number, String],
default: 0, default: 0,
description: "Default count value" description: "Default count value"
}, },
countError: null, countError: null,
@ -127,11 +124,11 @@ export default {
} }
}, },
created() { created() {
this.recurring_frequency = this.frequencyValue; this.recurring_frequency = this.frequencyValue;
this.recurring_interval = this.intervalValue; this.recurring_interval = this.intervalValue;
this.recurring_custom_frequency = this.customFrequencyValue; this.recurring_custom_frequency = this.customFrequencyValue;
this.recurring_count = this.countValue; this.recurring_count = this.countValue;
}, },
mounted() { mounted() {

View File

@ -1,39 +1,39 @@
<template> <template>
<akaunting-modal <akaunting-modal
:title="title" :title="title"
:show="display" :show="display"
@cancel="onCancel" @cancel="onCancel"
v-if="display"> v-if="display">
<template #modal-body> <template #modal-body>
<div class="modal-body text-left"> <div class="modal-body text-left">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<base-input <base-input
v-model="form.name" v-model="form.name"
:label="text.name" :label="text.name"
prepend-icon="fas fa-font" prepend-icon="fas fa-font"
:placeholder="placeholder.name" :placeholder="placeholder.name"
inputGroupClasses="input-group-merge"> inputGroupClasses="input-group-merge">
</base-input> </base-input>
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<base-input <base-input
:label="text.type"> :label="text.type">
<span class="el-input__prefix"> <span class="el-input__prefix">
<span class="el-input__suffix-inner el-select-icon"> <span class="el-input__suffix-inner el-select-icon">
<i class="select-icon-position el-input__icon fa fa-bars"></i> <i class="select-icon-position el-input__icon fa fa-bars"></i>
</span> </span>
</span> </span>
<el-select <el-select
class="select-primary" class="select-primary"
v-model="form.class" filterable v-model="form.class" filterable
:placeholder="placeholder.type"> :placeholder="placeholder.type">
<el-option v-for="(name, value) in types" <el-option v-for="(name, value) in types"
class="select-primary" class="select-primary"
:key="name" :key="name"
:label="name" :label="name"
:value="value"> :value="value">
</el-option> </el-option>
</el-select> </el-select>
</base-input> </base-input>
@ -41,21 +41,21 @@
<div class="col-md-6"> <div class="col-md-6">
<base-input <base-input
:label="text.width"> :label="text.width">
<span class="el-input__prefix"> <span class="el-input__prefix">
<span class="el-input__suffix-inner el-select-icon"> <span class="el-input__suffix-inner el-select-icon">
<i class="select-icon-position el-input__icon fas fa-ruler-horizontal"></i> <i class="select-icon-position el-input__icon fas fa-ruler-horizontal"></i>
</span> </span>
</span> </span>
<el-select <el-select
class="select-primary" class="select-primary"
v-model="form.width" filterable v-model="form.width" filterable
:placeholder="placeholder.width"> :placeholder="placeholder.width">
<el-option v-for="option in widthOptions" <el-option v-for="option in widthOptions"
class="select-primary" class="select-primary"
:key="option.label" :key="option.label"
:label="option.label" :label="option.label"
:value="option.value"> :value="option.value">
</el-option> </el-option>
</el-select> </el-select>
</base-input> </base-input>
@ -63,11 +63,11 @@
<div class="col-md-6"> <div class="col-md-6">
<base-input <base-input
v-model="form.sort" v-model="form.sort"
:label="text.sort" :label="text.sort"
prepend-icon="fas fa-sort" prepend-icon="fas fa-sort"
:placeholder="placeholder.sort" :placeholder="placeholder.sort"
inputGroupClasses="input-group-merge"></base-input> inputGroupClasses="input-group-merge"></base-input>
</div> </div>
</div> </div>
</div> </div>
@ -78,12 +78,12 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="float-right"> <div class="float-right">
<button type="button" class="btn btn-icon btn-outline-secondary" @click="onCancel"> <button type="button" class="btn btn-icon btn-outline-secondary" @click="onCancel">
<span class="btn-inner--text">{{ text.cancel }}</span> {{ text.cancel }}
</button> </button>
<button :disabled="form.loading" type="button" class="btn btn-icon btn-success button-submit" @click="onSave"> <button :disabled="form.loading" type="button" class="btn btn-icon btn-success button-submit" @click="onSave">
<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span>
<span v-if="!form.loading" class="btn-inner--text">{{ text.save }}</span> <span :class="[{'ml-0': form.loading}]" class="btn-inner--text">{{ text.save }}</span>
</button> </button>
</div> </div>
</div> </div>
@ -255,7 +255,7 @@ export default {
}, },
onCancel() { onCancel() {
let documentClasses = document.body.classList; let documentClasses = document.body.classList;
documentClasses.remove("modal-open"); documentClasses.remove("modal-open");

View File

@ -113,7 +113,6 @@
</div> </div>
<button class="btn btn-icon btn-success" v-on:click="invaildCard"> <button class="btn btn-icon btn-success" v-on:click="invaildCard">
<span class="btn-inner--icon"><i class="fas fa-check"></i></span>
<span class="btn-inner--text">{{ textButton }}</span> <span class="btn-inner--text">{{ textButton }}</span>
</button> </button>
</div> </div>
@ -263,9 +262,6 @@
<div v-if="loading" class="aka-loader-frame"> <div v-if="loading" class="aka-loader-frame">
<div class="aka-loader"></div> <div class="aka-loader"></div>
</div> </div>
<span v-if="!loading" class="btn-inner--icon">
<i class="fas fa-check"></i>
</span>
<span v-if="!loading" class="btn-inner--text">{{ textButton }}</span> <span v-if="!loading" class="btn-inner--text">{{ textButton }}</span>
</button> </button>
</div> </div>
@ -508,12 +504,12 @@ export default {
invaildCard() { invaildCard() {
this.loading = true; this.loading = true;
this.unMaskCardNumber();
let number = this.formData.cardNumber; let number = this.formData.cardNumber;
let sum = 0; let sum = 0;
let isOdd = true; let isOdd = true;
this.unMaskCardNumber();
/*for (let i = number.length - 1; i >= 0; i--) { /*for (let i = number.length - 1; i >= 0; i--) {
let num = number.charAt(i); let num = number.charAt(i);

View File

@ -84,9 +84,6 @@
<span v-if="!form.loading" class="btn-inner--text"> <span v-if="!form.loading" class="btn-inner--text">
Next &nbsp; Next &nbsp;
</span> </span>
<span v-if="!form.loading" class="btn-inner--icon">
<i class="fas fa-arrow-right"></i>
</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -32,9 +32,6 @@
<span v-if="!form.loading" class="btn-inner--text"> <span v-if="!form.loading" class="btn-inner--text">
Next &nbsp; Next &nbsp;
</span> </span>
<span v-if="!form.loading" class="btn-inner--icon">
<i class="fas fa-arrow-right"></i>
</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -26,9 +26,6 @@
<span class="btn-inner--text"> <span class="btn-inner--text">
Refresh &nbsp; Refresh &nbsp;
</span> </span>
<span class="btn-inner--icon">
<i class="fas fa-sync"></i>
</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -82,9 +82,6 @@
<span v-if="!form.loading" class="btn-inner--text"> <span v-if="!form.loading" class="btn-inner--text">
Next &nbsp; Next &nbsp;
</span> </span>
<span v-if="!form.loading" class="btn-inner--icon">
<i class="fas fa-arrow-right"></i>
</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -107,8 +107,8 @@ const app = new Vue({
}); });
}, },
onSubmit() { onSubmit() {
this.form.oldSubmit(); this.form.oldSubmit();
}, },
} }
}); });

View File

@ -79,8 +79,8 @@ const app = new Vue({
this.show = true; this.show = true;
}, },
onSubmit() { onSubmit() {
this.form.oldSubmit(); this.form.oldSubmit();
}, },
} }
}); });

View File

@ -4,7 +4,7 @@
@permission('create-auth-permissions') @permission('create-auth-permissions')
@section('new_button') @section('new_button')
<a href="{{ route('permissions.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('permissions.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -4,7 +4,7 @@
@permission('create-auth-roles') @permission('create-auth-roles')
@section('new_button') @section('new_button')
<a href="{{ route('roles.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('roles.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -4,7 +4,7 @@
@permission('create-auth-users') @permission('create-auth-users')
@section('new_button') @section('new_button')
<a href="{{ route('users.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('users.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -4,7 +4,7 @@
@section('new_button') @section('new_button')
@permission('create-banking-accounts') @permission('create-banking-accounts')
<a href="{{ route('accounts.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('accounts.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endpermission @endpermission
@endsection @endsection

View File

@ -25,7 +25,7 @@
{{ Form::selectAddNewGroup('account_id', trans_choice('general.accounts', 1), 'university', $accounts, request('account_id', setting('default.account')), ['required' => 'required', 'path' => route('modals.accounts.create'), 'change' => 'onChangeAccount'], 'col-xl-2') }} {{ Form::selectAddNewGroup('account_id', trans_choice('general.accounts', 1), 'university', $accounts, request('account_id', setting('default.account')), ['required' => 'required', 'path' => route('modals.accounts.create'), 'change' => 'onChangeAccount'], 'col-xl-2') }}
<div class="col-xl-2"> <div class="col-xl-2">
{!! Form::button('<span class="fa fa-list"></span> &nbsp;' . trans('reconciliations.transactions'), ['type' => 'button', '@click' => 'onReconcilition', 'class' => 'btn btn-success header-button-top']) !!} {!! Form::button(trans('reconciliations.transactions'), ['type' => 'button', '@click' => 'onReconcilition', 'class' => 'btn btn-success header-button-top']) !!}
</div> </div>
</div> </div>
</div> </div>
@ -140,15 +140,15 @@
<div class="col-md-12"> <div class="col-md-12">
@if ($transactions->count()) @if ($transactions->count())
<div class="float-right"> <div class="float-right">
<a href="{{ route('reconciliations.index') }}" class="btn btn-outline-secondary header-button-top"><span class="fa fa-times"></span> &nbsp;{{ trans('general.cancel') }}</a> <a href="{{ route('reconciliations.index') }}" class="btn btn-outline-secondary header-button-top">{{ trans('general.cancel') }}</a>
{!! Form::button( {!! Form::button(
'<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span :class="[{\'opacity-10\': reconcile}]" v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-check"></i></span>' . '<span :class="[{\'opacity-10\': reconcile}]" class="btn-inner--text"> ' . trans('reconciliations.reconcile') . '</span>', '<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'opacity-10\': reconcile}]" class="btn-inner--text">' . trans('reconciliations.reconcile') . '</span>',
[':disabled' => 'reconcile || form.loading', '@click' => 'onReconcileSubmit', 'type' => 'button', 'class' => 'btn btn-icon btn-info header-button-top', 'data-loading-text' => trans('general.loading')]) !!} [':disabled' => 'reconcile || form.loading', '@click' => 'onReconcileSubmit', 'type' => 'button', 'class' => 'btn btn-icon btn-info header-button-top']) !!}
{!! Form::button( {!! Form::button(
'<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-save"></i></span>' . '<span v-if="!form.loading" class="btn-inner--text"> ' . trans('general.save') . '</span>', '<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'ml-0\': form.loading}]" class="btn-inner--text">' . trans('general.save') . '</span>',
[':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success header-button-top', 'data-loading-text' => trans('general.loading')]) !!} [':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success header-button-top']) !!}
</div> </div>
@else @else
<div class="text-sm text-muted" id="datatable-basic_info" role="status" aria-live="polite"> <div class="text-sm text-muted" id="datatable-basic_info" role="status" aria-live="polite">

View File

@ -113,15 +113,15 @@
<div class="col-md-12"> <div class="col-md-12">
@if ($transactions->count()) @if ($transactions->count())
<div class="float-right"> <div class="float-right">
<a href="{{ route('reconciliations.index') }}" class="btn btn-outline-secondary header-button-top"><span class="fa fa-times"></span> &nbsp;{{ trans('general.cancel') }}</a> <a href="{{ route('reconciliations.index') }}" class="btn btn-outline-secondary header-button-top">{{ trans('general.cancel') }}</a>
{!! Form::button( {!! Form::button(
'<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span :class="[{\'opacity-10\': reconcile}]" v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-check"></i></span>' . '<span :class="[{\'opacity-10\': reconcile}]" class="btn-inner--text"> ' . trans('reconciliations.reconcile') . '</span>', '<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'opacity-10\': reconcile}]" class="btn-inner--text">' . trans('reconciliations.reconcile') . '</span>',
[':disabled' => 'reconcile || form.loading', '@click' => 'onReconcileSubmit', 'type' => 'button', 'class' => 'btn btn-icon btn-info header-button-top', 'data-loading-text' => trans('general.loading')]) !!} [':disabled' => 'reconcile || form.loading', '@click' => 'onReconcileSubmit', 'type' => 'button', 'class' => 'btn btn-icon btn-info header-button-top', 'data-loading-text' => trans('general.loading')]) !!}
{!! Form::button( {!! Form::button(
'<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-save"></i></span>' . '<span v-if="!form.loading" class="btn-inner--text"> ' . trans('general.save') . '</span>', '<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'ml-0\': form.loading}]" class="btn-inner--text">' . trans('general.save') . '</span>',
[':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success header-button-top', 'data-loading-text' => trans('general.loading')]) !!} [':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success header-button-top']) !!}
</div> </div>
@else @else
<div class="text-sm text-muted" id="datatable-basic_info" role="status" aria-live="polite"> <div class="text-sm text-muted" id="datatable-basic_info" role="status" aria-live="polite">

View File

@ -4,7 +4,7 @@
@section('new_button') @section('new_button')
@permission('create-banking-reconciliations') @permission('create-banking-reconciliations')
<a href="{{ route('reconciliations.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('reconciliations.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endpermission @endpermission
@endsection @endsection

View File

@ -4,13 +4,13 @@
@section('new_button') @section('new_button')
@permission('create-sales-revenues') @permission('create-sales-revenues')
<span><a href="{{ route('revenues.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_income') }}</a></span> <a href="{{ route('revenues.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_income') }}</a>
@endpermission @endpermission
@permission('create-purchases-payments') @permission('create-purchases-payments')
<span><a href="{{ route('payments.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_expense') }}</a></span> <a href="{{ route('payments.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_expense') }}</a>
@endpermission @endpermission
<span><a href="{{ route('import.create', ['banking', 'transactions']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload "></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['banking', 'transactions']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
<span><a href="{{ route('transactions.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('transactions.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -4,7 +4,7 @@
@permission('create-banking-transfers') @permission('create-banking-transfers')
@section('new_button') @section('new_button')
<a href="{{ route('transfers.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('transfers.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -4,7 +4,7 @@
@permission('create-common-companies') @permission('create-common-companies')
@section('new_button') @section('new_button')
<a href="{{ route('companies.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('companies.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -4,7 +4,7 @@
@permission('create-common-dashboards') @permission('create-common-dashboards')
@section('new_button') @section('new_button')
<a href="{{ route('dashboards.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('dashboards.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -41,8 +41,8 @@
<div class="card-footer"> <div class="card-footer">
<div class="row save-buttons"> <div class="row save-buttons">
<div class="col-xs-12 col-sm-12"> <div class="col-xs-12 col-sm-12">
<a href="{{ url($path) }}" class="btn btn-outline-secondary header-button-top"><span class="fa fa-times"></span> &nbsp;{{ trans('general.cancel') }}</a> <a href="{{ url($path) }}" class="btn btn-outline-secondary">{{ trans('general.cancel') }}</a>
{!! Form::button('<span class="fa fa-download"></span> &nbsp;' . trans('import.import'), ['type' => 'submit', 'class' => 'btn btn-success header-button-top']) !!} {!! Form::button(trans('import.import'), ['type' => 'submit', 'class' => 'btn btn-success']) !!}
</div> </div>
</div> </div>
</div> </div>

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-common-items') @permission('create-common-items')
<span><a href="{{ route('items.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('items.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['common', 'items']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload "></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['common', 'items']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('items.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('items.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -4,9 +4,9 @@
@section('new_button') @section('new_button')
@permission('create-common-reports') @permission('create-common-reports')
<a href="{{ route('reports.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a> <a href="{{ route('reports.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endpermission @endpermission
<a href="{{ route('reports.clear') }}" class="btn btn-warning btn-sm header-button-top"><span class="fa fa-history"></span> &nbsp;{{ trans('general.clear_cache') }}</a> <a href="{{ route('reports.clear') }}" class="btn btn-warning btn-sm">{{ trans('general.clear_cache') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -5,14 +5,17 @@
@section('content') @section('content')
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h2 class="mb-0 text-danger"><i class="fa fa-exclamation-triangle text-danger"></i>&nbsp;&nbsp;{{ trans('errors.header.403') }}</h2> <h2 class="mb-0 text-danger">
<i class="fa fa-exclamation-triangle text-danger"></i> &nbsp;{{ trans('errors.header.403') }}
</h2>
</div> </div>
<div class="card-body"> <div class="card-body">
<p>{{ trans('errors.message.403') }}</p> <p>{{ trans('errors.message.403') }}</p>
@php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp @php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp
<a href="{{ $landing_page }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> &nbsp;{{ trans('general.go_to_dashboard') }}</a> <a href="{{ $landing_page }}" class="btn btn-success">{{ trans('general.go_to_dashboard') }}</a>
</div> </div>
</div> </div>
@endsection @endsection

View File

@ -5,14 +5,17 @@
@section('content') @section('content')
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h2 class="mb-0 text-warning"><i class="fa fa-exclamation-triangle text-warning"></i>&nbsp;&nbsp;{{ trans('errors.header.404') }}</h2> <h2 class="mb-0 text-warning">
<i class="fa fa-exclamation-triangle text-warning"></i> &nbsp;{{ trans('errors.header.404') }}
</h2>
</div> </div>
<div class="card-body"> <div class="card-body">
<p>{{ trans('errors.message.404') }}</p> <p>{{ trans('errors.message.404') }}</p>
@php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp @php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp
<a href="{{ $landing_page }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> &nbsp;{{ trans('general.go_to_dashboard') }}</a> <a href="{{ $landing_page }}" class="btn btn-success">{{ trans('general.go_to_dashboard') }}</a>
</div> </div>
</div> </div>
@endsection @endsection

View File

@ -5,14 +5,17 @@
@section('content') @section('content')
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h2 class="mb-0 text-danger"><i class="fa fa-exclamation-triangle text-danger"></i>&nbsp;&nbsp;{{ trans('errors.header.500') }}</h2> <h2 class="mb-0 text-danger">
<i class="fa fa-exclamation-triangle text-danger"></i> &nbsp;{{ trans('errors.header.500') }}
</h2>
</div> </div>
<div class="card-body"> <div class="card-body">
<p>{{ trans('errors.message.500') }}</p> <p>{{ trans('errors.message.500') }}</p>
@php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp @php $landing_page = user() ? route(user()->landing_page) : route('login'); @endphp
<a href="{{ $landing_page }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> &nbsp;{{ trans('general.go_to_dashboard') }}</a> <a href="{{ $landing_page }}" class="btn btn-success">{{ trans('general.go_to_dashboard') }}</a>
</div> </div>
</div> </div>
@endsection @endsection

View File

@ -3,7 +3,7 @@
@section('title', trans_choice('general.updates', 2)) @section('title', trans_choice('general.updates', 2))
@section('new_button') @section('new_button')
<a href="{{ route('updates.check') }}" class="btn btn-warning btn-sm header-button-top"><span class="fa fa-history"></span> &nbsp;{{ trans('updates.check') }}</a> <a href="{{ route('updates.check') }}" class="btn btn-warning btn-sm">{{ trans('updates.check') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -3,7 +3,7 @@
@section('title', trans_choice('general.updates', 2)) @section('title', trans_choice('general.updates', 2))
@section('new_button') @section('new_button')
<a href="{{ route('updates.check') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-history"></span> &nbsp;{{ trans('updates.check') }}</a> <a href="{{ route('updates.check') }}" class="btn btn-white btn-sm header-button-top">{{ trans('updates.check') }}</a>
@endsection @endsection
@section('content') @section('content')
@ -22,13 +22,14 @@
<div class="col-sm-2 col-md-6 long-texts"> <div class="col-sm-2 col-md-6 long-texts">
{{ trans('updates.new_core') }} {{ trans('updates.new_core') }}
</div> </div>
<div class="col-sm-10 col-md-6 text-right"> <div class="col-sm-10 col-md-6 text-right">
<a href="{{ route('updates.run', ['alias' => 'core', 'version' => $core]) }}" <a href="{{ route('updates.run', ['alias' => 'core', 'version' => $core]) }}" class="btn btn-info btn-sm header-button-top long-texts">
class="btn btn-info btn-sm header-button-top long-texts"> {{ trans('updates.update', ['version' => $core]) }}
<i class="fa fa-refresh"></i> &nbsp;{{ trans('updates.update', ['version' => $core]) }}
</a> </a>
<button type="button" @click="onChangelog" class="btn btn-white btn-sm header-button-bottom"> <button type="button" @click="onChangelog" class="btn btn-white btn-sm header-button-bottom">
<i class="fa fa-exchange-alt"></i> &nbsp;{{ trans('updates.changelog') }} {{ trans('updates.changelog') }}
</button> </button>
</div> </div>
@endif @endif
@ -51,6 +52,7 @@
<th class="col-xs-4 col-sm-2 col-md-2 text-center">{{ trans('general.actions') }}</th> <th class="col-xs-4 col-sm-2 col-md-2 text-center">{{ trans('general.actions') }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@if ($modules) @if ($modules)
@foreach($modules as $module) @foreach($modules as $module)
@ -60,7 +62,7 @@
<td class="col-xs-4 col-sm-3 col-md-3">{{ $module->latest }}</td> <td class="col-xs-4 col-sm-3 col-md-3">{{ $module->latest }}</td>
<td class="col-xs-4 col-sm-2 col-md-2 text-center"> <td class="col-xs-4 col-sm-2 col-md-2 text-center">
<a href="{{ route('updates.run', ['alias' => $module->alias, 'version' => $module->latest]) }}" class="btn btn-warning btn-sm"> <a href="{{ route('updates.run', ['alias' => $module->alias, 'version' => $module->latest]) }}" class="btn btn-warning btn-sm">
<i class="fa fa-refresh" aria-hidden="true"></i> {{ trans_choice('general.updates', 1) }} {{ trans_choice('general.updates', 1) }}
</a> </a>
</td> </td>
</tr> </tr>

View File

@ -3,10 +3,11 @@
@include('partials.admin.head') @include('partials.admin.head')
@mobile @mobile
<body id="leftMenu" class="g-sidenav-hidden"> <body id="leftMenu" class="g-sidenav-hidden">
@elsemobile @elsemobile
<body id="leftMenu" class="g-sidenav-show"> <body id="leftMenu" class="g-sidenav-show">
@endmobile @endmobile
@stack('body_start') @stack('body_start')
@include('partials.admin.menu') @include('partials.admin.menu')

View File

@ -40,18 +40,16 @@
<div class="card-footer"> <div class="card-footer">
<div class="float-right"> <div class="float-right">
@if (Request::is('install/requirements')) @if (Request::is('install/requirements'))
<a href="{{ route('install.requirements') }}" class="btn btn-success"> {{ trans('install.refresh') }} &nbsp;<i class="fa fa-refresh"></i></a> <a href="{{ route('install.requirements') }}" class="btn btn-success"> {{ trans('install.refresh') }}</a>
@else @else
{!! Form::button( {!! Form::button(
'<i v-if="loading" :class="(loading) ? \'show \' : \'\'" class="fas fa-spinner fa-spin d-none"></i> ' . '<i v-if="loading" :class="(loading) ? \'show \' : \'\'" class="fas fa-spinner fa-spin d-none"></i> ' .
trans('install.next') . trans('install.next'),
' &nbsp;<i class="fa fa-arrow-right"></i>',
[ [
':disabled' => 'loading', ':disabled' => 'loading',
'type' => 'submit', 'type' => 'submit',
'id' => 'next-button', 'id' => 'next-button',
'class' => 'btn btn-success', 'class' => 'btn btn-success'
'data-loading-text' => trans('general.loading')
] ]
) !!} ) !!}
@endif @endif

View File

@ -3,8 +3,8 @@
@section('title', trans_choice('general.modules', 2)) @section('title', trans_choice('general.modules', 2))
@section('new_button') @section('new_button')
<span><a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_key') }}</a></span> <a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm">{{ trans('modules.api_key') }}</a>
<span><a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-user"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span> <a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm">{{ trans('modules.my_apps') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -3,8 +3,8 @@
@section('title', trans_choice('general.modules', 2)) @section('title', trans_choice('general.modules', 2))
@section('new_button') @section('new_button')
<span><a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_key') }}</a></span> <a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm">{{ trans('modules.api_key') }}</a>
<span><a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-user"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span> <a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm">{{ trans('modules.my_apps') }}</a>
@endsection @endsection
@section('content') @section('content')
@ -22,7 +22,7 @@
<div class="card-footer"> <div class="card-footer">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<a href="{{ url($back) }}" class="btn btn-white header-button-top"><span class="fas fa-arrow-left"></span> &nbsp;{{ trans('modules.back') }}</a> <a href="{{ url($back) }}" class="btn btn-white">{{ trans('modules.back') }}</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -3,8 +3,8 @@
@section('title', trans_choice('general.modules', 2)) @section('title', trans_choice('general.modules', 2))
@section('new_button') @section('new_button')
<span><a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_key') }}</a></span> <a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm">{{ trans('modules.api_key') }}</a>
<span><a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-user"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span> <a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm">{{ trans('modules.my_apps') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -3,8 +3,8 @@
@section('title', trans_choice('general.modules', 2)) @section('title', trans_choice('general.modules', 2))
@section('new_button') @section('new_button')
<span><a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_key') }}</a></span> <a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm">{{ trans('modules.api_key') }}</a>
<span><a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-user"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span> <a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm">{{ trans('modules.my_apps') }}</a>
@endsection @endsection
@section('content') @section('content')
@ -24,6 +24,7 @@
@for($i = 1; $i <= $module->vote; $i++) @for($i = 1; $i <= $module->vote; $i++)
<i class="fa fa-star fa-sm text-yellow"></i> <i class="fa fa-star fa-sm text-yellow"></i>
@endfor @endfor
@for($i = $module->vote; $i < 5; $i++) @for($i = $module->vote; $i < 5; $i++)
<i class="fa fa-star-o fa-sm"></i> <i class="fa fa-star-o fa-sm"></i>
@endfor @endfor
@ -73,9 +74,9 @@
<div class="tab-pane fade show active" id="description"> <div class="tab-pane fade show active" id="description">
{!! $module->description !!} {!! $module->description !!}
@if ($module->screenshots || $module->video) @if($module->screenshots || $module->video)
<akaunting-carousel :name="'{{ $module->name }}'" :height="'430px'" arrow="always" <akaunting-carousel :name="'{{ $module->name }}'" :height="'430px'" arrow="always"
@if ($module->video) @if($module->video)
@php @php
if (strpos($module->video->link, '=') !== false) { if (strpos($module->video->link, '=') !== false) {
$code = explode('=', $module->video->link); $code = explode('=', $module->video->link);
@ -108,7 +109,7 @@
@endif @endif
<div class="tab-pane fade" id="review"> <div class="tab-pane fade" id="review">
@php @php
$reviews = $module->app_reviews; $reviews = $module->app_reviews;
@endphp @endphp
@ -280,14 +281,10 @@
<td class="col-7 text-right">{{ Date::parse($module->updated_at)->diffForHumans() }}</td> <td class="col-7 text-right">{{ Date::parse($module->updated_at)->diffForHumans() }}</td>
</tr> </tr>
@endif @endif
@if ($module->categories) @if ($module->category)
<tr class="row"> <tr class="row">
<th class="col-5">{{ trans_choice('general.categories', (count($module->categories) > 1) ? 2 : 1) }}</th> <th class="col-5">{{ trans_choice('general.categories', 1) }}</th>
<td class="col-7 text-right"> <td class="col-7 text-right"><a href="{{ route('apps.categories.show', $module->category->slug) }}">{{ $module->category->name }}</a></td>
@foreach ($module->categories as $module_category)
<a href="{{ route('apps.categories.show', $module_category->slug) }}">{{ $module_category->name }}</a> </br>
@endforeach
</td>
</tr> </tr>
@endif @endif
<tr class="row"> <tr class="row">

View File

@ -3,8 +3,8 @@
@section('title', trans_choice('general.modules', 2)) @section('title', trans_choice('general.modules', 2))
@section('new_button') @section('new_button')
<span><a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm button-header-top"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_key') }}</a></span> <a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm">{{ trans('modules.api_key') }}</a>
<span><a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm button-header-top"><span class="fa fa-user"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span> <a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm">{{ trans('modules.my_apps') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -3,8 +3,8 @@
@section('title', trans_choice('general.modules', 2)) @section('title', trans_choice('general.modules', 2))
@section('new_button') @section('new_button')
<span><a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm button-header-top"><span class="fa fa-key"></span> &nbsp;{{ trans('modules.api_key') }}</a></span> <a href="{{ route('apps.api-key.create') }}" class="btn btn-white btn-sm">{{ trans('modules.api_key') }}</a>
<span><a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm button-header-top"><span class="fa fa-user"></span> &nbsp;{{ trans('modules.my_apps') }}</a></span> <a href="{{ route('apps.my.index') }}" class="btn btn-white btn-sm">{{ trans('modules.my_apps') }}</a>
@endsection @endsection
@section('content') @section('content')
@ -24,13 +24,13 @@
<div class="col-md-6 text-left"> <div class="col-md-6 text-left">
@if ($modules->current_page > 1) @if ($modules->current_page > 1)
<a href="{{ url(request()->path()) }}?page={{ $modules->current_page - 1 }}" class="btn btn-white btn-sm button-header-top"><span class="fas fa-arrow-left"></span> &nbsp;{!! trans('pagination.previous') !!}</a> <a href="{{ url(request()->path()) }}?page={{ $modules->current_page - 1 }}" class="btn btn-white btn-sm">{!! trans('pagination.previous') !!}</a>
@endif @endif
</div> </div>
<div class="col-md-6 text-right"> <div class="col-md-6 text-right">
@if ($modules->current_page < $modules->last_page) @if ($modules->current_page < $modules->last_page)
<a href="{{ url(request()->path()) }}?page={{ $modules->current_page + 1 }}" class="btn btn-white btn-sm button-header-top">{!! trans('pagination.next') !!}&nbsp; <span class="fas fa-arrow-right"></span> </a> <a href="{{ url(request()->path()) }}?page={{ $modules->current_page + 1 }}" class="btn btn-white btn-sm">{!! trans('pagination.next') !!}</a>
@endif @endif
</div> </div>
@else @else

View File

@ -5,9 +5,11 @@
</div> </div>
<div class="col-xs-12 col-sm-6 text-center p-5"> <div class="col-xs-12 col-sm-6 text-center p-5">
<p class="text-justify description">{!! trans('general.empty.' . $page) !!} {!! trans('general.empty.documentation', ['url' => 'https://akaunting.com/docs/user-manual/' . $docs_path]) !!}</p> <p class="text-justify description">
{!! trans('general.empty.' . $page) !!} {!! trans('general.empty.documentation', ['url' => 'https://akaunting.com/docs/user-manual/' . $docs_path]) !!}
</p>
<a href="{{ route($page . '.create') }}" class="btn btn-success header-button-top float-right mt-4"> <a href="{{ route($page . '.create') }}" class="btn btn-success header-button-top float-right mt-4">
<span class="btn-inner--icon"><i class="fas fa-plus"></i></span>
<span class="btn-inner--text">{{ trans('general.title.create', ['type' => trans_choice('general.' . $page, 1)]) }}</span> <span class="btn-inner--text">{{ trans('general.title.create', ['type' => trans_choice('general.' . $page, 1)]) }}</span>
</a> </a>
</div> </div>

View File

@ -1,6 +1,6 @@
@foreach($modules as $module) @foreach($modules as $module)
<span> <span>
<a href="{{ url($module->action_url) . '?' . http_build_query((array) $module->action_parameters) }}" class="btn btn-white btn-sm header-button-bottom" target="{{ $module->action_target }}"><span class="fa fa-rocket"></span> &nbsp;{{ $module->name }}</a> <a href="{{ url($module->action_url) . '?' . http_build_query((array) $module->action_parameters) }}" class="btn btn-white btn-sm" target="{{ $module->action_target }}">{{ $module->name }}</a>
</span> </span>
@endforeach @endforeach

View File

@ -23,7 +23,7 @@
$message = trans('general.delete_confirm', ['name' => '<strong>' . $name . '</strong>', 'type' => $type]); $message = trans('general.delete_confirm', ['name' => '<strong>' . $name . '</strong>', 'type' => $type]);
@endphp @endphp
{!! Form::button('<i class="fa fa-trash-o" aria-hidden="true"></i> ' . trans('general.delete'), array( {!! Form::button(trans('general.delete'), array(
'type' => 'button', 'type' => 'button',
'class' => 'btn btn-danger btn-xs', 'class' => 'btn btn-danger btn-xs',
'title' => trans('general.delete'), 'title' => trans('general.delete'),

View File

@ -8,14 +8,11 @@
@endphp @endphp
<div class="{{ $col }}"> <div class="{{ $col }}">
<a href="{{ $url }}" class="btn btn-icon btn-outline-secondary header-button-top"> <a href="{{ $url }}" class="btn btn-outline-secondary">{{ trans('general.cancel') }}</a>
<span class="btn-inner--icon"><i class="fas fa-times"></i></span>
<span class="btn-inner--text">{{ trans('general.cancel') }}</span>
</a>
{!! Form::button( {!! Form::button(
'<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-save"></i></span>' . '<span v-if="!form.loading" class="btn-inner--text">' . trans('general.save') . '</span>', '<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'ml-0\': form.loading}]" class="btn-inner--text">' . trans('general.save') . '</span>',
[':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success button-submit header-button-top', 'data-loading-text' => trans('general.loading')]) !!} [':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success']) !!}
</div> </div>
@stack('save_buttons_end') @stack('save_buttons_end')

View File

@ -4,12 +4,14 @@
<h4 class="ml--3 mb-0 float-left"> <h4 class="ml--3 mb-0 float-left">
<a href="{{ route('apps.app.show', $module->slug) }}">{{ $module->name }}</a> <a href="{{ route('apps.app.show', $module->slug) }}">{{ $module->name }}</a>
</h4> </h4>
@if (isset($installed[$module->slug])) @if (isset($installed[$module->slug]))
@php $color = 'bg-green'; @endphp @php $color = 'bg-green'; @endphp
@if (!$installed[$module->slug]) @if (!$installed[$module->slug])
@php $color = 'bg-warning'; @endphp @php $color = 'bg-warning'; @endphp
@endif @endif
<span class="mr--3 float-right"> <span class="mr--3 float-right">
<span class="badge {{ $color }} text-white">{{ trans('modules.badge.installed') }}</span> <span class="badge {{ $color }} text-white">{{ trans('modules.badge.installed') }}</span>
</span> </span>
@ -29,9 +31,11 @@
@for($i = 1; $i <= $module->vote; $i++) @for($i = 1; $i <= $module->vote; $i++)
<i class="fa fa-star text-xs text-yellow"></i> <i class="fa fa-star text-xs text-yellow"></i>
@endfor @endfor
@for($i = $module->vote; $i < 5; $i++) @for($i = $module->vote; $i < 5; $i++)
<i class="far fa-star text-xs"></i> <i class="far fa-star text-xs"></i>
@endfor @endfor
<small class="text-xs"> <small class="text-xs">
@if ($module->total_review) @if ($module->total_review)
({{ $module->total_review }}) ({{ $module->total_review }})

View File

@ -13,7 +13,7 @@
@foreach($class->filters as $name => $values) @foreach($class->filters as $name => $values)
{!! Form::select($name . '[]', $values, request($name), ['id' => 'filter-' . $name, 'class' => 'form-control form-control-sm d-inline-block w-auto']) !!} {!! Form::select($name . '[]', $values, request($name), ['id' => 'filter-' . $name, 'class' => 'form-control form-control-sm d-inline-block w-auto']) !!}
@endforeach @endforeach
{!! Form::button('<span class="fa fa-filter"></span> &nbsp;' . trans('general.filter'), ['type' => 'submit', 'class' => 'btn btn-sm btn-secondary']) !!} {!! Form::button(trans('general.filter'), ['type' => 'submit', 'class' => 'btn btn-sm btn-secondary']) !!}
</div> </div>
{!! Form::close() !!} {!! Form::close() !!}

View File

@ -1,14 +1,10 @@
@section('title', $class->model->name) @section('title', $class->model->name)
@section('new_button') @section('new_button')
<span> <a href="{{ url($class->getUrl('print')) }}" target="_blank" class="btn btn-white btn-sm">
<a href="{{ url($class->getUrl('print')) }}" target="_blank" class="btn btn-white btn-sm header-button-top"> {{ trans('general.print') }}
<span class="fa fa-print"></span> &nbsp;{{ trans('general.print') }} </a>
</a> <a href="{{ url($class->getUrl('export')) }}" class="btn btn-white btn-sm header-button-top">
</span> {{ trans('general.export') }}
<span> </a>
<a href="{{ url($class->getUrl('export')) }}" class="btn btn-white btn-sm header-button-top">
<span class="fa fa-upload"></span> &nbsp;{{ trans('general.export') }}
</a>
</span>
@endsection @endsection

View File

@ -291,16 +291,17 @@
<div class="col-xs-12 col-sm-6 text-right"> <div class="col-xs-12 col-sm-6 text-right">
@stack('button_print_start') @stack('button_print_start')
<a href="{{ route('portal.invoices.print', $invoice->id) }}" target="_blank" class="btn btn-success header-button-top"> <a href="{{ route('portal.invoices.print', $invoice->id) }}" target="_blank" class="btn btn-success header-button-top">
<i class="fa fa-print"></i>&nbsp; {{ trans('general.print') }} {{ trans('general.print') }}
</a> </a>
@stack('button_print_end') @stack('button_print_end')
@stack('button_pdf_start') @stack('button_pdf_start')
<a href="{{ route('portal.invoices.pdf', $invoice->id) }}" class="btn btn-white header-button-top"> <a href="{{ route('portal.invoices.pdf', $invoice->id) }}" class="btn btn-white header-button-top">
<i class="fa fa-file-pdf"></i>&nbsp; {{ trans('general.download') }} {{ trans('general.download') }}
</a> </a>
@stack('button_pdf_end') @stack('button_pdf_end')
</div> </div>
<div id="confirm" class="col-sm-12"> <div id="confirm" class="col-sm-12">
<component v-bind:is="method_show_html" @interface="onRedirectConfirm"></component> <component v-bind:is="method_show_html" @interface="onRedirectConfirm"></component>
</div> </div>

View File

@ -3,7 +3,7 @@
@section('title', trans_choice('general.invoices', 1) . ': ' . $invoice->invoice_number) @section('title', trans_choice('general.invoices', 1) . ': ' . $invoice->invoice_number)
@section('new_button') @section('new_button')
<a href="{{ route('portal.dashboard') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-user"></span> &nbsp;{{ trans('invoices.all_invoices') }}</a> <a href="{{ route('portal.dashboard') }}" class="btn btn-success btn-sm">{{ trans('invoices.all_invoices') }}</a>
@endsection @endsection
@section('content') @section('content')
@ -234,11 +234,12 @@
</div> </div>
<div class="col-md-8 text-right"> <div class="col-md-8 text-right">
<a href="{{ $print_action }}" target="_blank" class="btn btn-success header-button-top"> <a href="{{ $print_action }}" target="_blank" class="btn btn-success">
<i class="fa fa-print"></i>&nbsp; {{ trans('general.print') }} {{ trans('general.print') }}
</a> </a>
<a href="{{ $pdf_action }}" class="btn btn-white header-button-top" data-toggle="tooltip" title="{{ trans('invoices.download_pdf') }}">
<i class="fa fa-file-pdf"></i>&nbsp; {{ trans('general.download') }} <a href="{{ $pdf_action }}" class="btn btn-white" data-toggle="tooltip" title="{{ trans('invoices.download_pdf') }}">
{{ trans('general.download') }}
</a> </a>
</div> </div>
@ -252,6 +253,7 @@
@push('footer_start') @push('footer_start')
<script src="{{ asset('public/js/portal/invoices.js?v=' . version('short')) }}"></script> <script src="{{ asset('public/js/portal/invoices.js?v=' . version('short')) }}"></script>
<script type="text/javascript"> <script type="text/javascript">
var payment_action_path = {!! json_encode($payment_actions) !!}; var payment_action_path = {!! json_encode($payment_actions) !!};
</script> </script>

View File

@ -127,7 +127,8 @@
<i class="fa fa-percent"></i> <i class="fa fa-percent"></i>
</span> </span>
</div> </div>
{!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control', 'v-model' => 'form.discount']) !!} </div> {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control', 'v-model' => 'form.discount']) !!}
</div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="discount-description"> <div class="discount-description">

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-purchases-bills') @permission('create-purchases-bills')
<span><a href="{{ route('bills.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('bills.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['group' => 'purchases', 'type' => 'bills']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload"></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['group' => 'purchases', 'type' => 'bills']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('bills.export', request()->input()) }}" class="btn btn-white btn-sm header-button-bottom"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('bills.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')
@ -64,6 +64,7 @@
<a class="btn btn-neutral btn-sm text-light items-align-center py-2" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="btn btn-neutral btn-sm text-light items-align-center py-2" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-h text-muted"></i> <i class="fa fa-ellipsis-h text-muted"></i>
</a> </a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow"> <div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<a class="dropdown-item" href="{{ route('bills.show', $item->id) }}">{{ trans('general.show') }}</a> <a class="dropdown-item" href="{{ route('bills.show', $item->id) }}">{{ trans('general.show') }}</a>
@if (!$item->reconciled) @if (!$item->reconciled)

View File

@ -105,10 +105,11 @@
@stack('discount_input_start') @stack('discount_input_start')
<div class="input-group input-group-merge"> <div class="input-group input-group-merge">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text" id="input-discount"> <span class="input-group-text" id="input-discount">
<i class="fa fa-percent"></i> <i class="fa fa-percent"></i>
</span> </span>
</div> </div>
<input type="number" <input type="number"
max="100" max="100"
min="0" min="0"

View File

@ -58,6 +58,7 @@
<span class="timeline-step badge-primary"> <span class="timeline-step badge-primary">
<i class="fas fa-plus"></i> <i class="fas fa-plus"></i>
</span> </span>
<div class="timeline-content"> <div class="timeline-content">
@stack('timeline_body_create_bill_head_start') @stack('timeline_body_create_bill_head_start')
<h2 class="font-weight-500">{{ trans('bills.create_bill') }}</h2> <h2 class="font-weight-500">{{ trans('bills.create_bill') }}</h2>
@ -86,6 +87,7 @@
<span class="timeline-step badge-danger"> <span class="timeline-step badge-danger">
<i class="far fa-envelope"></i> <i class="far fa-envelope"></i>
</span> </span>
<div class="timeline-content"> <div class="timeline-content">
@stack('timeline_body_receive_bill_head_start') @stack('timeline_body_receive_bill_head_start')
<h2 class="font-weight-500">{{ trans('bills.receive_bill') }}</h2> <h2 class="font-weight-500">{{ trans('bills.receive_bill') }}</h2>
@ -446,20 +448,21 @@
@stack('button_edit_start') @stack('button_edit_start')
@if(!$bill->reconciled) @if(!$bill->reconciled)
<a href="{{ route('bills.edit', $bill->id) }}" class="btn btn-info header-button-top"> <a href="{{ route('bills.edit', $bill->id) }}" class="btn btn-info header-button-top">
<i class="fas fa-edit"></i>&nbsp; {{ trans('general.edit') }} {{ trans('general.edit') }}
</a> </a>
@endif @endif
@stack('button_edit_end') @stack('button_edit_end')
@stack('button_print_start') @stack('button_print_start')
<a href="{{ route('bills.print', $bill->id) }}" target="_blank" class="btn btn-success header-button-top"> <a href="{{ route('bills.print', $bill->id) }}" target="_blank" class="btn btn-success header-button-top">
<i class="fa fa-print"></i>&nbsp; {{ trans('general.print') }} {{ trans('general.print') }}
</a> </a>
@stack('button_print_end') @stack('button_print_end')
@stack('button_group_start') @stack('button_group_start')
<div class="dropup header-drop-top"> <div class="dropup header-drop-top">
<button type="button" class="btn btn-primary header-button-top" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-chevron-up"></i>&nbsp; {{ trans('general.more_actions') }}</button> <button type="button" class="btn btn-primary header-button-top" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-chevron-up"></i>&nbsp; {{ trans('general.more_actions') }}</button>
<div class="dropdown-menu" role="menu"> <div class="dropdown-menu" role="menu">
@stack('button_dropdown_start') @stack('button_dropdown_start')
@if ($bill->status != 'cancelled') @if ($bill->status != 'cancelled')
@ -608,7 +611,7 @@
]); ]);
@endphp @endphp
{!! Form::button('<i class="fa fa-trash-o" aria-hidden="true"></i> ' . trans('general.delete'), array( {!! Form::button(trans('general.delete'), array(
'type' => 'button', 'type' => 'button',
'class' => 'btn btn-danger btn-sm', 'class' => 'btn btn-danger btn-sm',
'title' => trans('general.delete'), 'title' => trans('general.delete'),

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-purchases-payments') @permission('create-purchases-payments')
<span><a href="{{ route('payments.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('payments.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['group' => 'purchases', 'type' => 'payments']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload"></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['group' => 'purchases', 'type' => 'payments']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('payments.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('payments.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-purchases-vendors') @permission('create-purchases-vendors')
<span><a href="{{ route('vendors.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('vendors.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['group' => 'purchases', 'type' => 'vendors']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload"></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['group' => 'purchases', 'type' => 'vendors']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('vendors.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('vendors.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -68,7 +68,7 @@
</ul> </ul>
@stack('vendor_edit_button_start') @stack('vendor_edit_button_start')
<a href="{{ route('vendors.edit', $vendor->id) }}" class="btn btn-info btn-block"><i class="fas fa-edit"></i><b>{{ trans('general.edit') }}</b></a> <a href="{{ route('vendors.edit', $vendor->id) }}" class="btn btn-info btn-block"><b>{{ trans('general.edit') }}</b></a>
@stack('vendor_edit_button_end') @stack('vendor_edit_button_end')
</div> </div>
@ -129,13 +129,13 @@
<ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-icons-text" role="tablist"> <ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-icons-text" role="tablist">
@stack('vendor_transactions_tab_start') @stack('vendor_transactions_tab_start')
<li class="nav-item"> <li class="nav-item">
<a class="nav-link mb-sm-3 mb-md-0 active" id="transactions-tab" data-toggle="tab" href="#transactions-content" role="tab" aria-controls="transactions-content" aria-selected="true"><i class="fas fa-hand-holding-usd mr-2"></i>{{ trans_choice('general.transactions', 2) }}</a> <a class="nav-link mb-sm-3 mb-md-0 active" id="transactions-tab" data-toggle="tab" href="#transactions-content" role="tab" aria-controls="transactions-content" aria-selected="true">{{ trans_choice('general.transactions', 2) }}</a>
</li> </li>
@stack('vendor_transactions_tab_end') @stack('vendor_transactions_tab_end')
@stack('vendor_bills_tab_start') @stack('vendor_bills_tab_start')
<li class="nav-item"> <li class="nav-item">
<a class="nav-link mb-sm-3 mb-md-0" id="bills-tab" data-toggle="tab" href="#bills-content" role="tab" aria-controls="bills-content" aria-selected="false"><i class="fa fa-money-bill mr-2"></i>{{ trans_choice('general.bills', 2) }}</a> <a class="nav-link mb-sm-3 mb-md-0" id="bills-tab" data-toggle="tab" href="#bills-content" role="tab" aria-controls="bills-content" aria-selected="false">{{ trans_choice('general.bills', 2) }}</a>
</li> </li>
@stack('vendor_bills_tab_end') @stack('vendor_bills_tab_end')
</ul> </ul>

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-sales-customers') @permission('create-sales-customers')
<span><a href="{{ route('customers.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('customers.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['group' => 'sales', 'type' => 'customers']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload"></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['group' => 'sales', 'type' => 'customers']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('customers.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('customers.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -68,7 +68,7 @@
</ul> </ul>
@stack('customer_edit_button_start') @stack('customer_edit_button_start')
<a href="{{ route('customers.edit', $customer->id) }}" class="btn btn-info btn-block"><i class="fas fa-edit"></i><b>{{ trans('general.edit') }}</b></a> <a href="{{ route('customers.edit', $customer->id) }}" class="btn btn-info btn-block edit-sv"><b>{{ trans('general.edit') }}</b></a>
@stack('customer_edit_button_end') @stack('customer_edit_button_end')
</div> </div>
@ -129,13 +129,13 @@
<ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-icons-text" role="tablist"> <ul class="nav nav-pills nav-fill flex-column flex-md-row" id="tabs-icons-text" role="tablist">
@stack('customer_transactions_tab_start') @stack('customer_transactions_tab_start')
<li class="nav-item"> <li class="nav-item">
<a class="nav-link mb-sm-3 mb-md-0 active" id="transactions-tab" data-toggle="tab" href="#transactions-content" role="tab" aria-controls="transactions-content" aria-selected="true"><i class="fas fa-hand-holding-usd mr-2"></i>{{ trans_choice('general.transactions', 2) }}</a> <a class="nav-link mb-sm-3 mb-md-0 active" id="transactions-tab" data-toggle="tab" href="#transactions-content" role="tab" aria-controls="transactions-content" aria-selected="true">{{ trans_choice('general.transactions', 2) }}</a>
</li> </li>
@stack('customer_transactions_tab_end') @stack('customer_transactions_tab_end')
@stack('customer_invoices_tab_start') @stack('customer_invoices_tab_start')
<li class="nav-item"> <li class="nav-item">
<a class="nav-link mb-sm-3 mb-md-0" id="invoices-tab" data-toggle="tab" href="#invoices-content" role="tab" aria-controls="invoices-content" aria-selected="false"><i class="fa fa-money-bill mr-2"></i>{{ trans_choice('general.invoices', 2) }}</a> <a class="nav-link mb-sm-3 mb-md-0" id="invoices-tab" data-toggle="tab" href="#invoices-content" role="tab" aria-controls="invoices-content" aria-selected="false">{{ trans_choice('general.invoices', 2) }}</a>
</li> </li>
@stack('customer_invoices_tab_end') @stack('customer_invoices_tab_end')
</ul> </ul>

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-sales-invoices') @permission('create-sales-invoices')
<span><a href="{{ route('invoices.create') }}" class="btn btn-primary btn-sm btn-success header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('invoices.create') }}" class="btn btn-primary btn-sm btn-success header-button-top">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['group' => 'sales', 'type' => 'invoices']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload"></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['group' => 'sales', 'type' => 'invoices']) }}" class="btn btn-white btn-sm header-button-top">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('invoices.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('invoices.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -463,21 +463,21 @@
@stack('button_edit_start') @stack('button_edit_start')
@if(!$invoice->reconciled) @if(!$invoice->reconciled)
<a href="{{ route('invoices.edit', $invoice->id) }}" class="btn btn-info header-button-top"> <a href="{{ route('invoices.edit', $invoice->id) }}" class="btn btn-info header-button-top">
<i class="fas fa-edit"></i>&nbsp; {{ trans('general.edit') }} {{ trans('general.edit') }}
</a> </a>
@endif @endif
@stack('button_edit_end') @stack('button_edit_end')
@stack('button_print_start') @stack('button_print_start')
<a href="{{ route('invoices.print', $invoice->id) }}" target="_blank" class="btn btn-success header-button-top"> <a href="{{ route('invoices.print', $invoice->id) }}" target="_blank" class="btn btn-success header-button-top">
<i class="fa fa-print"></i>&nbsp; {{ trans('general.print') }} {{ trans('general.print') }}
</a> </a>
@stack('button_print_end') @stack('button_print_end')
@if ($invoice->status != 'cancelled') @if ($invoice->status != 'cancelled')
@stack('button_share_start') @stack('button_share_start')
<a href="{{ $signed_url }}" target="_blank" class="btn btn-white header-button-top"> <a href="{{ $signed_url }}" target="_blank" class="btn btn-white header-button-top">
<i class="fa fa-share"></i>&nbsp; {{ trans('general.share') }} {{ trans('general.share') }}
</a> </a>
@stack('button_share_end') @stack('button_share_end')
@endif @endif
@ -643,7 +643,7 @@
]); ]);
@endphp @endphp
{!! Form::button('<i class="fa fa-trash-o" aria-hidden="true"></i> ' . trans('general.delete'), array( {!! Form::button(trans('general.delete'), array(
'type' => 'button', 'type' => 'button',
'class' => 'btn btn-danger btn-sm', 'class' => 'btn btn-danger btn-sm',
'title' => trans('general.delete'), 'title' => trans('general.delete'),

View File

@ -4,10 +4,10 @@
@section('new_button') @section('new_button')
@permission('create-sales-revenues') @permission('create-sales-revenues')
<span><a href="{{ route('revenues.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('revenues.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
<span><a href="{{ route('import.create', ['group' => 'sales', 'type' => 'revenues']) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-upload"></span> &nbsp;{{ trans('import.import') }}</a></span> <a href="{{ route('import.create', ['group' => 'sales', 'type' => 'revenues']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endpermission @endpermission
<span><a href="{{ route('revenues.export', request()->input()) }}" class="btn btn-white btn-sm header-button-top"><span class="fa fa-download"></span> &nbsp;{{ trans('general.export') }}</a></span> <a href="{{ route('revenues.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection @endsection
@section('content') @section('content')

View File

@ -4,7 +4,7 @@
@permission('create-settings-categories') @permission('create-settings-categories')
@section('new_button') @section('new_button')
<span><a href="{{ route('categories.create') }}" class="btn btn-success btn-sm btn-alone"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('categories.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -4,7 +4,7 @@
@permission('create-settings-currencies') @permission('create-settings-currencies')
@section('new_button') @section('new_button')
<span><a href="{{ route('currencies.create') }}" class="btn btn-success btn-sm header-button-top"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('currencies.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -45,7 +45,7 @@
<div class="input-group"> <div class="input-group">
<a href="#" class="btn btn-block btn-outline-primary" @click="onTemplate"> <a href="#" class="btn btn-block btn-outline-primary" @click="onTemplate">
<i class="fas fa-palette"></i>&nbsp; {{ trans('settings.invoice.choose_template') }} {{ trans('settings.invoice.choose_template') }}
</a> </a>
</div> </div>
</div> </div>
@ -85,7 +85,8 @@
</button> </button>
<button :disabled="form.loading" type="button" class="btn btn-success button-submit" @click="addTemplate"> <button :disabled="form.loading" type="button" class="btn btn-success button-submit" @click="addTemplate">
<div class="aka-loader"></div><span>{{ trans('general.confirm') }}</span> <span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span>
<span :class="[{'ml-0': form.loading}]" class="btn-inner--text">{{ trans('general.confirm') }}</span>
</button> </button>
</div> </div>
</template> </template>

View File

@ -144,7 +144,8 @@
</button> </button>
</a> </a>
</div> </div>
@endpermission @endpermission
@permission('read-settings-currencies') @permission('read-settings-currencies')
<div class="col-md-4"> <div class="col-md-4">

View File

@ -4,7 +4,7 @@
@permission('create-settings-taxes') @permission('create-settings-taxes')
@section('new_button') @section('new_button')
<span><a href="{{ route('taxes.create') }}" class="btn btn-success btn-sm btn-alone"><span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }}</a></span> <a href="{{ route('taxes.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection @endsection
@endpermission @endpermission

View File

@ -33,6 +33,7 @@
<i class="fa fa-key"></i> <i class="fa fa-key"></i>
</span> </span>
</div> </div>
{!! Form::text('api_key', setting('apps.api_key', null), array_merge([ {!! Form::text('api_key', setting('apps.api_key', null), array_merge([
'class' => 'form-control', 'class' => 'form-control',
'data-name' => 'api_key', 'data-name' => 'api_key',
@ -44,9 +45,11 @@
<div class="invalid-feedback d-block" v-if="form.errors.has('api_key')" v-html="form.errors.get('api_key')"></div> <div class="invalid-feedback d-block" v-if="form.errors.has('api_key')" v-html="form.errors.get('api_key')"></div>
</div> </div>
<p class="mb-0 mt--3"> <p class="mb-0 mt--3">
<small>{!! trans('modules.get_api_key', ['url' => 'https://akaunting.com/dashboard']) !!}</small> <small>{!! trans('modules.get_api_key', ['url' => 'https://akaunting.com/dashboard']) !!}</small>
</p> </p>
<br> <br>
</div> </div>
@ -64,12 +67,11 @@
<div class="row"> <div class="row">
<div class="col-md-12 text-right"> <div class="col-md-12 text-right">
{!! Form::button( {!! Form::button(
'<div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div> <span v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-save"></i></span>' . '<span v-if="!form.loading" class="btn-inner--text"> ' . trans('general.save') . '</span>', '<span v-if="form.loading" class="btn-inner--icon"><i class="aka-loader"></i></span> <span :class="[{\'ml-0\': form.loading}]" class="btn-inner--text">' . trans('general.save') . '</span>',
[':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success button-submit header-button-top', 'data-loading-text' => trans('general.loading')]) !!} [':disabled' => 'form.loading', 'type' => 'submit', 'class' => 'btn btn-icon btn-success']) !!}
<a href="{{ route('wizard.currencies.index') }}" id="wizard-skip" class="btn btn-icon btn-white header-button-top"> <a href="{{ route('wizard.currencies.index') }}" id="wizard-skip" class="btn btn-white">
<span class="btn-inner--icon"><i class="fas fa-arrow-right"></i></span> {{ trans('general.skip') }}
<span class="btn-inner--text">{{ trans('general.skip') }}</span>
</a> </a>
</div> </div>
</div> </div>

View File

@ -9,11 +9,9 @@
<div class="card-body border-bottom-0"> <div class="card-body border-bottom-0">
<div class="row"> <div class="row">
<div class="col-md-12 text-right"> <div class="col-md-12 text-right">
<span> <button type="button" @click="onAddCurrency" class="btn btn-success btn-sm">
<button type="button" @click="onAddCurrency" class="btn btn-success header-button-top btn-sm"> {{ trans('general.add_new') }}
<span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }} </button>
</button>
</span>
</div> </div>
</div> </div>
</div> </div>
@ -65,6 +63,7 @@
<a class="btn btn-neutral btn-sm text-light items-align-center py-2" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="btn btn-neutral btn-sm text-light items-align-center py-2" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-h text-muted"></i> <i class="fa fa-ellipsis-h text-muted"></i>
</a> </a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow"> <div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<button type="button" class="dropdown-item" @click="onEditCurrency('{{ $item->id }}')"> <button type="button" class="dropdown-item" @click="onEditCurrency('{{ $item->id }}')">
{{ trans('general.edit') }} {{ trans('general.edit') }}
@ -94,11 +93,10 @@
</td> </td>
<td class="col-xs-4 col-sm-4 col-md-2 text-center"> <td class="col-xs-4 col-sm-4 col-md-2 text-center">
{!! Form::button( {!! Form::button(
'<span class="btn-inner--icon"><i class="fas fa-save"></i></span>', [ trans('general.save'), [
':disabled' => 'form.loading', ':disabled' => 'form.loading',
'type' => 'submit', 'type' => 'submit',
'class' => 'btn btn-success', 'class' => 'btn btn-success',
'data-loading-text' => trans('general.loading'),
]) !!} ]) !!}
<div class="d-none"> <div class="d-none">
@ -124,13 +122,12 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<a href="{{ route('wizard.companies.edit') }}" class="btn btn-icon btn-white header-button-top"> <a href="{{ route('wizard.companies.edit') }}" class="btn btn-icon btn-white header-button-top">
<span class="btn-inner--icon"><i class="fas fa-arrow-left"></i></span>
<span class="btn-inner--text">{{ trans('pagination.previous') }}</span> <span class="btn-inner--text">{{ trans('pagination.previous') }}</span>
</a> </a>
</div> </div>
<div class="col-sm-6 text-right"> <div class="col-sm-6 text-right">
<a href="{{ route('wizard.taxes.index') }}" id="wizard-skip" class="btn btn-icon btn-white header-button-top"> <a href="{{ route('wizard.taxes.index') }}" id="wizard-skip" class="btn btn-icon btn-white header-button-top">
<span class="btn-inner--icon"><i class="fas fa-arrow-right"></i></span>
<span class="btn-inner--text">{{ trans('pagination.next') }}</span> <span class="btn-inner--text">{{ trans('pagination.next') }}</span>
</a> </a>
</div> </div>

View File

@ -51,13 +51,12 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<a href="{{ route('wizard.taxes.index') }}" class="btn btn-icon btn-white header-button-top"> <a href="{{ route('wizard.taxes.index') }}" class="btn btn-icon btn-white header-button-top">
<span class="btn-inner--icon"><i class="fas fa-arrow-left"></i></span>
<span class="btn-inner--text">{{ trans('pagination.previous') }}</span> <span class="btn-inner--text">{{ trans('pagination.previous') }}</span>
</a> </a>
</div> </div>
<div class="col-sm-6 text-right"> <div class="col-sm-6 text-right">
<a href="{{ route('dashboard') }}" id="wizard-skip" class="btn btn-icon btn-success header-button-top"> <a href="{{ route('dashboard') }}" id="wizard-skip" class="btn btn-icon btn-success header-button-top">
<span class="btn-inner--icon"><i class="fa fa-tachometer-alt"></i></span>
<span class="btn-inner--text">{{ trans('general.go_to_dashboard') }}</span> <span class="btn-inner--text">{{ trans('general.go_to_dashboard') }}</span>
</a> </a>
</div> </div>

View File

@ -9,11 +9,9 @@
<div class="card-body border-bottom-0"> <div class="card-body border-bottom-0">
<div class="row"> <div class="row">
<div class="col-md-12 text-right"> <div class="col-md-12 text-right">
<span> <button type="button" @click="onAddTax" class="btn btn-success btn-sm">
<button type="button" @click="onAddTax" class="btn btn-success header-button-top btn-sm"> {{ trans('general.add_new') }}
<span class="fa fa-plus"></span> &nbsp;{{ trans('general.add_new') }} </button>
</button>
</span>
</div> </div>
</div> </div>
</div> </div>
@ -89,11 +87,10 @@
</td> </td>
<td class="col-xs-4 col-sm-4 col-md-3 text-center"> <td class="col-xs-4 col-sm-4 col-md-3 text-center">
{!! Form::button( {!! Form::button(
'<span class="btn-inner--icon"><i class="fas fa-save"></i></span>', [ trans('general.save'), [
':disabled' => 'form.loading', ':disabled' => 'form.loading',
'type' => 'submit', 'type' => 'submit',
'class' => 'btn btn-success', 'class' => 'btn btn-success',
'data-loading-text' => trans('general.loading'),
]) !!} ]) !!}
</td> </td>
</tr> </tr>
@ -107,13 +104,12 @@
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<a href="{{ route('wizard.currencies.index') }}" class="btn btn-icon btn-white header-button-top"> <a href="{{ route('wizard.currencies.index') }}" class="btn btn-icon btn-white header-button-top">
<span class="btn-inner--icon"><i class="fas fa-arrow-left"></i></span>
<span class="btn-inner--text">{{ trans('pagination.previous') }}</span> <span class="btn-inner--text">{{ trans('pagination.previous') }}</span>
</a> </a>
</div> </div>
<div class="col-sm-6 text-right"> <div class="col-sm-6 text-right">
<a href="{{ route('wizard.finish.index') }}" id="wizard-skip" class="btn btn-icon btn-white header-button-top"> <a href="{{ route('wizard.finish.index') }}" id="wizard-skip" class="btn btn-icon btn-white header-button-top">
<span class="btn-inner--icon"><i class="fas fa-arrow-right"></i></span>
<span class="btn-inner--text">{{ trans('pagination.next') }}</span> <span class="btn-inner--text">{{ trans('pagination.next') }}</span>
</a> </a>
</div> </div>