Merge branch 'master' of https://github.com/brkcvn/akaunting into page-title
This commit is contained in:
commit
6f9976b3f2
@ -44,6 +44,26 @@ abstract class SettingController extends Controller
|
||||
|
||||
$total_companies = Company::count();
|
||||
|
||||
// Clear setting media
|
||||
foreach ($this->file_keys as $file_key) {
|
||||
$keys = explode('.', $file_key);
|
||||
|
||||
if ($prefix != $keys[0]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (! setting($file_key, false)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$file_old_key = 'uploaded_' . $keys[1];
|
||||
if (array_key_exists($file_old_key, $fields)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
setting()->forget($file_key);
|
||||
}
|
||||
|
||||
foreach ($fields as $key => $value) {
|
||||
$real_key = $prefix . '.' . $key;
|
||||
|
||||
|
@ -40,11 +40,32 @@ abstract class Report
|
||||
{
|
||||
$now = Date::now();
|
||||
|
||||
$financial_start = setting('localisation.financial_start');
|
||||
$setting = explode('-', $financial_start);
|
||||
$financial_start_day = ! empty($setting[0]) ? $setting[0] : '01';
|
||||
|
||||
$format = ($financial_start == '01-01')
|
||||
? $this->getYearlyDateFormat()
|
||||
: (($financial_start_day != '01') ? $this->getDailyDateFormat() : $this->getMonthlyDateFormat());
|
||||
|
||||
$years = [];
|
||||
|
||||
$y = $now->addYears(2);
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$years[$y->year] = $y->year;
|
||||
$financial_year = $this->getFinancialYear($y->year);
|
||||
|
||||
if ($financial_start == '01-01') {
|
||||
$title = $financial_year->getStartDate()->copy()->format($format);
|
||||
} else {
|
||||
$start = $financial_year->getStartDate()->copy()->format($format);
|
||||
$end = $financial_year->getEndDate()->copy()->format($format);
|
||||
|
||||
$title = $start . ' - ' . $end;
|
||||
}
|
||||
|
||||
$years[$y->year] = $title;
|
||||
|
||||
$y->subYear();
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ abstract class Index extends Component
|
||||
public $classBulkAction;
|
||||
|
||||
/** @var bool */
|
||||
public $showPicture;
|
||||
public $showLogo;
|
||||
|
||||
/** @var bool */
|
||||
public $hideName;
|
||||
@ -179,7 +179,7 @@ abstract class Index extends Component
|
||||
bool $hideEmptyPage = false, bool $hideSummary = false, $summaryItems = [], bool $hideSearchString = false, bool $hideBulkAction = false,
|
||||
string $searchStringModel = '', string $bulkActionClass = '', array $bulkActions = [], array $bulkActionRouteParameters = [], string $searchRoute = '',
|
||||
string $classBulkAction = '',
|
||||
bool $showPicture = false, bool $hideName = false, bool $hideTaxNumber = false, string $classNameAndTaxNumber = '', string $textName = '', string $textTaxNumber = '',
|
||||
bool $showLogo = false, bool $hideName = false, bool $hideTaxNumber = false, string $classNameAndTaxNumber = '', string $textName = '', string $textTaxNumber = '',
|
||||
bool $hideEmail = false, bool $hidePhone = false, string $classEmailAndPhone = '', string $textEmail = '', string $textPhone = '',
|
||||
bool $hideCountry = false, bool $hideCurrencyCode = false, string $classCountryAndCurrencyCode = '', string $textCountry = '', string $textCurrencyCode = '',
|
||||
bool $hideOpen = false, bool $hideOverdue = false, string $classOpenAndOverdue = '', string $textOpen = '', string $textOverdue = '',
|
||||
@ -229,7 +229,7 @@ abstract class Index extends Component
|
||||
|
||||
$this->classBulkAction = $this->getClassBulkAction($type, $classBulkAction);
|
||||
|
||||
$this->showPicture = $showPicture;
|
||||
$this->showLogo = $showLogo;
|
||||
$this->hideName = $hideName;
|
||||
$this->hideTaxNumber = $hideTaxNumber;
|
||||
$this->classNameAndTaxNumber = $this->getClassNameAndTaxNumber($type, $classNameAndTaxNumber);
|
||||
@ -281,9 +281,10 @@ abstract class Index extends Component
|
||||
|
||||
foreach ($totals as $key => $total) {
|
||||
$items[] = [
|
||||
'title' => ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key),
|
||||
'href' => route($route, ['search' => 'status:' . $key]),
|
||||
'amount' => money($total, setting('default.currency'), true),
|
||||
'title' => ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key),
|
||||
'href' => route($route, ['search' => 'status:' . $key]),
|
||||
'amount' => money($total, setting('default.currency'), true)->formatForHumans(),
|
||||
'tooltip' => money($total, setting('default.currency'), true)->format(),
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -392,12 +392,14 @@ abstract class Index extends Component
|
||||
foreach ($totals as $key => $total) {
|
||||
$title = ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key);
|
||||
$href = route($route, ['search' => 'status:' . $key]);
|
||||
$amount = money($total, setting('default.currency'), true);
|
||||
$amount = money($total, setting('default.currency'), true)->formatForHumans();
|
||||
$tooltip = money($total, setting('default.currency'), true)->format();
|
||||
|
||||
$items[] = [
|
||||
'title' => $title,
|
||||
'href' => $href,
|
||||
'amount' => $amount,
|
||||
'title' => $title,
|
||||
'href' => $href,
|
||||
'amount' => $amount,
|
||||
'tooltip' => $tooltip,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,17 @@ class Reconciliations extends Controller
|
||||
{
|
||||
$reconciliations = Reconciliation::with('account')->collect();
|
||||
|
||||
return $this->response('banking.reconciliations.index', compact('reconciliations'));
|
||||
$reconciled_amount = money($reconciliations->where('reconciled', 1)->sum('closing_balance'), setting('default.currency'), true);
|
||||
$in_progress_amount = money($reconciliations->where('reconciled', 0)->sum('closing_balance'), setting('default.currency'), true);
|
||||
|
||||
$summary_amounts = [
|
||||
'amount_exact' => $reconciled_amount->format(),
|
||||
'amount_for_humans' => $reconciled_amount->formatForHumans(),
|
||||
'in_progress_exact' => $in_progress_amount->format(),
|
||||
'in_progress_for_humans' => $in_progress_amount->formatForHumans(),
|
||||
];
|
||||
|
||||
return $this->response('banking.reconciliations.index', compact('reconciliations', 'summary_amounts'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -56,12 +56,25 @@ class Transactions extends Controller
|
||||
|
||||
$totals['profit'] = $totals['income'] - $totals['expense'];
|
||||
|
||||
$incoming_amount = money($totals['income'], setting('default.currency'), true);
|
||||
$expense_amount = money($totals['expense'], setting('default.currency'), true);
|
||||
$profit_amount = money($totals['profit'], setting('default.currency'), true);
|
||||
|
||||
$summary_amounts = [
|
||||
'incoming_exact' => $incoming_amount->format(),
|
||||
'incoming_for_humans' => $incoming_amount->formatForHumans(),
|
||||
'expense_exact' => $expense_amount->format(),
|
||||
'expense_for_humans' => $expense_amount->formatForHumans(),
|
||||
'profit_exact' => $profit_amount->format(),
|
||||
'profit_for_humans' => $profit_amount->formatForHumans(),
|
||||
];
|
||||
|
||||
$translations = $this->getTranslationsForConnect('income');
|
||||
|
||||
return $this->response('banking.transactions.index', compact(
|
||||
'transactions',
|
||||
'translations',
|
||||
'totals'
|
||||
'summary_amounts'
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,22 @@ class Companies extends Controller
|
||||
$file_keys = ['company.logo'];
|
||||
$uploaded_file_keys = ['company.uploaded_logo'];
|
||||
|
||||
// Clear setting media
|
||||
foreach ($file_keys as $file_key) {
|
||||
$keys = explode('.', $file_key);
|
||||
|
||||
if (! setting($file_key, false)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$file_old_key = 'uploaded_' . $keys[1];
|
||||
if (array_key_exists($file_old_key, $fields)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
setting()->forget($file_key);
|
||||
}
|
||||
|
||||
foreach ($fields as $key => $value) {
|
||||
// Don't process unwanted keys
|
||||
if (in_array($key, $skip_keys)) {
|
||||
|
@ -24,7 +24,7 @@ class UpdateTransaction extends Job implements ShouldUpdate
|
||||
|
||||
$this->model->attachMedia($media, 'attachment');
|
||||
}
|
||||
} elseif (!$this->request->file('attachment') && $this->model->attachment) {
|
||||
} elseif (! $this->request->file('attachment') && $this->model->attachment) {
|
||||
$this->deleteMediaModel($this->model, 'attachment', $this->request);
|
||||
}
|
||||
|
||||
@ -45,5 +45,9 @@ class UpdateTransaction extends Job implements ShouldUpdate
|
||||
|
||||
throw new \Exception($message);
|
||||
}
|
||||
|
||||
if ($this->model->isTransferTransaction()) {
|
||||
throw new \Exception('Unauthorized');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ class UpdateContact extends Job implements ShouldUpdate
|
||||
$media = $this->getMedia($this->request->file('logo'), Str::plural($this->model->type));
|
||||
|
||||
$this->model->attachMedia($media, 'logo');
|
||||
} elseif (! $this->request->file('logo') && $this->model->logo) {
|
||||
$this->deleteMediaModel($this->model, 'logo', $this->request);
|
||||
}
|
||||
|
||||
$this->model->update($this->request->all());
|
||||
|
@ -189,6 +189,13 @@ trait DateTime
|
||||
return $date_picker_shortcuts;
|
||||
}
|
||||
|
||||
public function getDailyDateFormat($year = null)
|
||||
{
|
||||
$format = 'd M Y';
|
||||
|
||||
return $format;
|
||||
}
|
||||
|
||||
public function getMonthlyDateFormat($year = null)
|
||||
{
|
||||
$format = 'M Y';
|
||||
|
@ -57,7 +57,7 @@ trait Uploads
|
||||
{
|
||||
$medias = $model->$parameter;
|
||||
|
||||
if (!$medias) {
|
||||
if (! $medias) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ trait Uploads
|
||||
}
|
||||
}
|
||||
|
||||
foreach ((array)$medias as $media) {
|
||||
foreach ((array) $medias as $media) {
|
||||
if (in_array($media->id, $already_uploaded)) {
|
||||
continue;
|
||||
}
|
||||
@ -86,7 +86,7 @@ trait Uploads
|
||||
|
||||
public function getMediaFolder($folder, $company_id = null)
|
||||
{
|
||||
if (!$company_id) {
|
||||
if (! $company_id) {
|
||||
$company_id = company_id();
|
||||
}
|
||||
|
||||
@ -98,7 +98,7 @@ trait Uploads
|
||||
|
||||
public function getMediaPathOnStorage($media)
|
||||
{
|
||||
if (!is_object($media)) {
|
||||
if (! is_object($media)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ class Content extends Component
|
||||
{
|
||||
public $counts;
|
||||
|
||||
public $totals;
|
||||
public $summary_amounts;
|
||||
|
||||
public $transactions;
|
||||
|
||||
@ -72,7 +72,20 @@ class Content extends Component
|
||||
$totals['paid'] += $item->getAmountConvertedToDefault();
|
||||
});
|
||||
|
||||
$this->totals = $totals;
|
||||
$open_amount = money($totals['open'], setting('default.currency'), true);
|
||||
$overdue_amount = money($totals['overdue'], setting('default.currency'), true);
|
||||
$paid_amount = money($totals['paid'], setting('default.currency'), true);
|
||||
|
||||
$summary_amounts = [
|
||||
'open_exact' => $open_amount->format(),
|
||||
'open_for_humans' => $open_amount->formatForHumans(),
|
||||
'overdue_exact' => $overdue_amount->format(),
|
||||
'overdue_for_humans' => $overdue_amount->formatForHumans(),
|
||||
'paid_exact' => $paid_amount->format(),
|
||||
'paid_for_humans' => $paid_amount->formatForHumans(),
|
||||
];
|
||||
|
||||
$this->summary_amounts = $summary_amounts;
|
||||
|
||||
$this->transactions = $this->paginate($this->transactions->sortByDesc('paid_at'));
|
||||
$this->documents = $this->paginate($this->documents->sortByDesc('issued_at'));
|
||||
|
@ -28,6 +28,18 @@ class Account extends Form
|
||||
|
||||
$this->accounts = $this->getAccounts();
|
||||
|
||||
$account_id = old('account.id', old('account_id', null));
|
||||
|
||||
if (! empty($account_id)) {
|
||||
$this->selected = $account_id;
|
||||
|
||||
if (! $this->accounts->has($account_id)) {
|
||||
$account = Model::find($account_id);
|
||||
|
||||
$this->accounts->put($account->id, $account->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->selected) && empty($this->getParentData('model'))) {
|
||||
$this->selected = setting('default.account');
|
||||
}
|
||||
|
@ -33,6 +33,18 @@ class Category extends Form
|
||||
|
||||
$model = $this->getParentData('model');
|
||||
|
||||
$category_id = old('category.id', old('category_id', null));
|
||||
|
||||
if (! empty($category_id)) {
|
||||
$this->selected = $category_id;
|
||||
|
||||
if (! $this->categories->has($category_id)) {
|
||||
$category = Model::find($category_id);
|
||||
|
||||
$this->categories->put($category->id, $category->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($model) && ! empty($model->category_id)) {
|
||||
$this->selected = $model->category_id;
|
||||
|
||||
|
@ -39,6 +39,18 @@ class Contact extends Form
|
||||
|
||||
$model = $this->getParentData('model');
|
||||
|
||||
$contact_id = old('contact.id', old('contact_id', null));
|
||||
|
||||
if (! empty($contact_id)) {
|
||||
$this->selected = $contact_id;
|
||||
|
||||
if (! $this->contacts->has($contact_id)) {
|
||||
$contact = Model::find($contact_id);
|
||||
|
||||
$this->contacts->put($contact->id, $contact->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($model) && ! empty($model->contact_id)) {
|
||||
$this->selected = $model->contact_id;
|
||||
|
||||
|
@ -35,6 +35,18 @@ class Currency extends Form
|
||||
|
||||
$this->currencies = Model::enabled()->orderBy('name')->pluck('name', 'code');
|
||||
|
||||
$currency_id = old('currency.id', old('currency_id', null));
|
||||
|
||||
if (! empty($currency_id)) {
|
||||
$this->selected = $currency_id;
|
||||
|
||||
if (! $this->currencies->has($currency_id)) {
|
||||
$currency = Model::find($currency_id);
|
||||
|
||||
$this->currencies->put($currency->id, $currency->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->selected) && empty($this->getParentData('model'))) {
|
||||
$this->selected = setting('default.currency');
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
namespace App\View\Components\Form\Group;
|
||||
|
||||
use App\Abstracts\View\Components\Form;
|
||||
use App\Models\Setting\Currency as Model;
|
||||
use App\Models\Setting\Tax as Model;
|
||||
|
||||
class Tax extends Form
|
||||
{
|
||||
@ -13,7 +13,7 @@ class Tax extends Form
|
||||
|
||||
public $field;
|
||||
|
||||
public $currencies;
|
||||
public $taxes;
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
@ -23,20 +23,32 @@ class Tax extends Form
|
||||
public function render()
|
||||
{
|
||||
if (empty($this->name)) {
|
||||
$this->name = 'currency_code';
|
||||
$this->name = 'tax_id';
|
||||
}
|
||||
|
||||
$this->path = route('modals.currencies.create');
|
||||
$this->path = route('modals.taxes.create');
|
||||
|
||||
$this->field = [
|
||||
'key' => 'code',
|
||||
'key' => 'id',
|
||||
'value' => 'name'
|
||||
];
|
||||
|
||||
$this->currencies = Model::enabled()->orderBy('name')->pluck('name', 'code');
|
||||
$this->taxes = Model::enabled()->orderBy('name')->pluck('name', 'id');
|
||||
|
||||
$tax_id = old('tax.id', old('tax_id', null));
|
||||
|
||||
if (! empty($tax_id)) {
|
||||
$this->selected = $tax_id;
|
||||
|
||||
if (! $this->taxes->has($tax_id)) {
|
||||
$tax = Model::find($tax_id);
|
||||
|
||||
$this->taxes->put($tax->id, $tax->name);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($this->selected)) {
|
||||
$this->selected = setting('default.currency');
|
||||
$this->selected = setting('default.tax');
|
||||
}
|
||||
|
||||
return view('components.form.group.tax');
|
||||
|
43
composer.lock
generated
43
composer.lock
generated
@ -907,16 +907,16 @@
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.231.18",
|
||||
"version": "3.232.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||
"reference": "76db7b327e023c7bbce77a0bfc9fb4d559e765b3"
|
||||
"reference": "7e79325815640d21f3bcab9889f7002a8268d674"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/76db7b327e023c7bbce77a0bfc9fb4d559e765b3",
|
||||
"reference": "76db7b327e023c7bbce77a0bfc9fb4d559e765b3",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7e79325815640d21f3bcab9889f7002a8268d674",
|
||||
"reference": "7e79325815640d21f3bcab9889f7002a8268d674",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -993,9 +993,9 @@
|
||||
"support": {
|
||||
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.231.18"
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.232.1"
|
||||
},
|
||||
"time": "2022-08-01T18:18:21+00:00"
|
||||
"time": "2022-08-03T18:16:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "balping/json-raw-encoder",
|
||||
@ -4472,16 +4472,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v9.22.1",
|
||||
"version": "v9.23.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46"
|
||||
"reference": "c4eea9060d847b5c93957b203caa8f57544a76ab"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/b3b3dd43b9899f23df6d1d3e5390bd4662947a46",
|
||||
"reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/c4eea9060d847b5c93957b203caa8f57544a76ab",
|
||||
"reference": "c4eea9060d847b5c93957b203caa8f57544a76ab",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4502,7 +4502,7 @@
|
||||
"psr/log": "^1.0|^2.0|^3.0",
|
||||
"psr/simple-cache": "^1.0|^2.0|^3.0",
|
||||
"ramsey/uuid": "^4.2.2",
|
||||
"symfony/console": "^6.0",
|
||||
"symfony/console": "^6.0.3",
|
||||
"symfony/error-handler": "^6.0",
|
||||
"symfony/finder": "^6.0",
|
||||
"symfony/http-foundation": "^6.0",
|
||||
@ -4648,7 +4648,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2022-07-26T16:16:33+00:00"
|
||||
"time": "2022-08-02T14:24:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/sanctum",
|
||||
@ -6462,16 +6462,16 @@
|
||||
},
|
||||
{
|
||||
"name": "myclabs/php-enum",
|
||||
"version": "1.8.3",
|
||||
"version": "1.8.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/myclabs/php-enum.git",
|
||||
"reference": "b942d263c641ddb5190929ff840c68f78713e937"
|
||||
"reference": "a867478eae49c9f59ece437ae7f9506bfaa27483"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937",
|
||||
"reference": "b942d263c641ddb5190929ff840c68f78713e937",
|
||||
"url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483",
|
||||
"reference": "a867478eae49c9f59ece437ae7f9506bfaa27483",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6487,7 +6487,10 @@
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"MyCLabs\\Enum\\": "src/"
|
||||
}
|
||||
},
|
||||
"classmap": [
|
||||
"stubs/Stringable.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
@ -6506,7 +6509,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/myclabs/php-enum/issues",
|
||||
"source": "https://github.com/myclabs/php-enum/tree/1.8.3"
|
||||
"source": "https://github.com/myclabs/php-enum/tree/1.8.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6518,7 +6521,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-07-05T08:18:36+00:00"
|
||||
"time": "2022-08-04T09:53:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
@ -14286,5 +14289,5 @@
|
||||
"ext-zip": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.2.0"
|
||||
"plugin-api-version": "2.3.0"
|
||||
}
|
||||
|
@ -12,6 +12,15 @@ return [
|
||||
// 'ip' => '\App\Models\YourIpModel',
|
||||
],
|
||||
|
||||
'log' => [
|
||||
'max_request_size' => 2048,
|
||||
],
|
||||
|
||||
'cron' => [
|
||||
'enabled' => env('FIREWALL_CRON_ENABLED', true),
|
||||
'expression' => env('FIREWALL_CRON_EXPRESSION', '* * * * *'),
|
||||
],
|
||||
|
||||
'responses' => [
|
||||
|
||||
'block' => [
|
||||
@ -61,6 +70,8 @@ return [
|
||||
'middleware' => [
|
||||
|
||||
'ip' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_IP_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'routes' => [
|
||||
@ -70,6 +81,8 @@ return [
|
||||
],
|
||||
|
||||
'agent' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_AGENT_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'routes' => [
|
||||
@ -99,13 +112,15 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 5,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_AGENT_AUTO_BLOCK_ATTEMPTS', 5),
|
||||
'frequency' => 1 * 60, // 1 minute
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'bot' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_BOT_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'routes' => [
|
||||
@ -120,13 +135,15 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 5,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_BOT_AUTO_BLOCK_ATTEMPTS', 5),
|
||||
'frequency' => 1 * 60, // 1 minute
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'geo' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_GEO_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'routes' => [
|
||||
@ -158,13 +175,15 @@ return [
|
||||
'service' => 'ipapi',
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_GEO_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'lfi' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_LFI_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['get', 'delete'],
|
||||
|
||||
'routes' => [
|
||||
@ -182,23 +201,25 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_LFI_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'login' => [
|
||||
'enabled' => true,
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_LOGIN_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 5,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_LOGIN_AUTO_BLOCK_ATTEMPTS', 10),
|
||||
'frequency' => 1 * 60, // 1 minute
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'php' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_PHP_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['get', 'post', 'delete'],
|
||||
|
||||
'routes' => [
|
||||
@ -225,13 +246,15 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_PHP_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'referrer' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_REFERRER_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'routes' => [
|
||||
@ -242,13 +265,15 @@ return [
|
||||
'blocked' => [],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_REFERRER_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'rfi' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_RFI_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['get', 'post', 'delete'],
|
||||
|
||||
'routes' => [
|
||||
@ -268,13 +293,15 @@ return [
|
||||
'exceptions' => [],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_RFI_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'session' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_SESSION_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['get', 'post', 'delete'],
|
||||
|
||||
'routes' => [
|
||||
@ -293,13 +320,15 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_SESSION_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'sqli' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_SQLI_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['get', 'delete'],
|
||||
|
||||
'routes' => [
|
||||
@ -318,13 +347,15 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_SQLI_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'swear' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_SWEAR_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['post', 'put', 'patch'],
|
||||
|
||||
'routes' => [
|
||||
@ -340,25 +371,29 @@ return [
|
||||
'words' => [],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_SWEAR_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'url' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_URL_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'inspections' => [], // i.e. 'admin'
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 5,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_URL_AUTO_BLOCK_ATTEMPTS', 5),
|
||||
'frequency' => 1 * 60, // 1 minute
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
],
|
||||
|
||||
'whitelist' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_WHITELIST_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['all'],
|
||||
|
||||
'routes' => [
|
||||
@ -368,6 +403,8 @@ return [
|
||||
],
|
||||
|
||||
'xss' => [
|
||||
'enabled' => env('FIREWALL_MIDDLEWARE_XSS_ENABLED', env('FIREWALL_ENABLED', true)),
|
||||
|
||||
'methods' => ['post', 'put', 'patch'],
|
||||
|
||||
'routes' => [
|
||||
@ -393,7 +430,7 @@ return [
|
||||
],
|
||||
|
||||
'auto_block' => [
|
||||
'attempts' => 3,
|
||||
'attempts' => env('FIREWALL_MIDDLEWARE_XSS_AUTO_BLOCK_ATTEMPTS', 3),
|
||||
'frequency' => 5 * 60, // 5 minutes
|
||||
'period' => 30 * 60, // 30 minutes
|
||||
],
|
||||
|
@ -147,60 +147,65 @@ return [
|
||||
|
|
||||
*/
|
||||
'all' => [
|
||||
['short' => 'ar', 'long' => 'ar-SA', 'english' => 'Arabic', 'native' => 'العربية', 'direction' => 'rtl'],
|
||||
['short' => 'bg', 'long' => 'bg-BG', 'english' => 'Bulgarian', 'native' => 'български', 'direction' => 'ltr'],
|
||||
['short' => 'bn', 'long' => 'bn-BD', 'english' => 'Bengali', 'native' => 'বাংলা', 'direction' => 'ltr'],
|
||||
['short' => 'cn', 'long' => 'zh-CN', 'english' => 'Chinese (S)', 'native' => '简体中文', 'direction' => 'ltr'],
|
||||
['short' => 'cs', 'long' => 'cs-CZ', 'english' => 'Czech', 'native' => 'Čeština', 'direction' => 'ltr'],
|
||||
['short' => 'da', 'long' => 'da-DK', 'english' => 'Danish', 'native' => 'Dansk', 'direction' => 'ltr'],
|
||||
['short' => 'de', 'long' => 'de-DE', 'english' => 'German', 'native' => 'Deutsch', 'direction' => 'ltr'],
|
||||
['short' => 'de', 'long' => 'de-AT', 'english' => 'Austrian', 'native' => 'Österreichisches Deutsch', 'direction' => 'ltr'],
|
||||
['short' => 'fi', 'long' => 'fi-FI', 'english' => 'Finnish', 'native' => 'Suomi', 'direction' => 'ltr'],
|
||||
['short' => 'fr', 'long' => 'fr-FR', 'english' => 'French', 'native' => 'Français', 'direction' => 'ltr'],
|
||||
['short' => 'el', 'long' => 'el-GR', 'english' => 'Greek', 'native' => 'Ελληνικά', 'direction' => 'ltr'],
|
||||
['short' => 'en', 'long' => 'en-AU', 'english' => 'English (AU)', 'native' => 'English (AU)', 'direction' => 'ltr'],
|
||||
['short' => 'en', 'long' => 'en-CA', 'english' => 'English (CA)', 'native' => 'English (CA)', 'direction' => 'ltr'],
|
||||
['short' => 'en', 'long' => 'en-GB', 'english' => 'English (GB)', 'native' => 'English (GB)', 'direction' => 'ltr'],
|
||||
['short' => 'en', 'long' => 'en-US', 'english' => 'English (US)', 'native' => 'English (US)', 'direction' => 'ltr'],
|
||||
['short' => 'es', 'long' => 'es-ES', 'english' => 'Spanish', 'native' => 'Español', 'direction' => 'ltr'],
|
||||
['short' => 'et', 'long' => 'et-EE', 'english' => 'Estonian', 'native' => 'Eesti', 'direction' => 'ltr'],
|
||||
['short' => 'he', 'long' => 'he-IL', 'english' => 'Hebrew', 'native' => 'עִבְרִית', 'direction' => 'rtl'],
|
||||
['short' => 'hi', 'long' => 'hi-IN', 'english' => 'Hindi', 'native' => 'हिन्दी', 'direction' => 'ltr'],
|
||||
['short' => 'hr', 'long' => 'hr-HR', 'english' => 'Croatian', 'native' => 'Hrvatski', 'direction' => 'ltr'],
|
||||
['short' => 'hu', 'long' => 'hu-HU', 'english' => 'Hungarian', 'native' => 'Magyar', 'direction' => 'ltr'],
|
||||
['short' => 'hy', 'long' => 'hy-AM', 'english' => 'Armenian', 'native' => 'Հայերեն', 'direction' => 'ltr'],
|
||||
['short' => 'id', 'long' => 'id-ID', 'english' => 'Indonesian', 'native' => 'Bahasa Indonesia', 'direction' => 'ltr'],
|
||||
['short' => 'it', 'long' => 'it-IT', 'english' => 'Italian', 'native' => 'Italiano', 'direction' => 'ltr'],
|
||||
['short' => 'ir', 'long' => 'fa-IR', 'english' => 'Persian', 'native' => 'فارسی', 'direction' => 'rtl'],
|
||||
['short' => 'jp', 'long' => 'ja-JP', 'english' => 'Japanese', 'native' => '日本語', 'direction' => 'ltr'],
|
||||
['short' => 'ka', 'long' => 'ka-GE', 'english' => 'Georgian', 'native' => 'ქართული', 'direction' => 'ltr'],
|
||||
['short' => 'ko', 'long' => 'ko-KR', 'english' => 'Korean', 'native' => '한국어', 'direction' => 'ltr'],
|
||||
['short' => 'lt', 'long' => 'lt-LT', 'english' => 'Lithuanian', 'native' => 'Lietuvių', 'direction' => 'ltr'],
|
||||
['short' => 'lv', 'long' => 'lv-LV', 'english' => 'Latvian', 'native' => 'Latviešu valoda', 'direction' => 'ltr'],
|
||||
['short' => 'mk', 'long' => 'mk-MK', 'english' => 'Macedonian', 'native' => 'Македонски јазик', 'direction' => 'ltr'],
|
||||
['short' => 'ms', 'long' => 'ms-MY', 'english' => 'Malay', 'native' => 'Bahasa Melayu', 'direction' => 'ltr'],
|
||||
['short' => 'mx', 'long' => 'es-MX', 'english' => 'Mexico', 'native' => 'Español de México', 'direction' => 'ltr'],
|
||||
['short' => 'nb', 'long' => 'nb-NO', 'english' => 'Norwegian', 'native' => 'Norsk Bokmål', 'direction' => 'ltr'],
|
||||
['short' => 'ne', 'long' => 'ne-NP', 'english' => 'Nepali', 'native' => 'नेपाली', 'direction' => 'ltr'],
|
||||
['short' => 'nl', 'long' => 'nl-NL', 'english' => 'Dutch', 'native' => 'Nederlands', 'direction' => 'ltr'],
|
||||
['short' => 'pl', 'long' => 'pl-PL', 'english' => 'Polish', 'native' => 'Polski', 'direction' => 'ltr'],
|
||||
['short' => 'pt-BR', 'long' => 'pt-BR', 'english' => 'Brazilian', 'native' => 'Português do Brasil', 'direction' => 'ltr'],
|
||||
['short' => 'pt', 'long' => 'pt-PT', 'english' => 'Portuguese', 'native' => 'Português', 'direction' => 'ltr'],
|
||||
['short' => 'ro', 'long' => 'ro-RO', 'english' => 'Romanian', 'native' => 'Română', 'direction' => 'ltr'],
|
||||
['short' => 'ru', 'long' => 'ru-RU', 'english' => 'Russian', 'native' => 'Русский', 'direction' => 'ltr'],
|
||||
['short' => 'sr', 'long' => 'sr-RS', 'english' => 'Serbian (Cyrillic)', 'native' => 'Српски језик', 'direction' => 'ltr'],
|
||||
['short' => 'sr', 'long' => 'sr-CS', 'english' => 'Serbian (Latin)', 'native' => 'Српски језик', 'direction' => 'ltr'],
|
||||
['short' => 'sq', 'long' => 'sq-AL', 'english' => 'Albanian', 'native' => 'Shqip', 'direction' => 'ltr'],
|
||||
['short' => 'sk', 'long' => 'sk-SK', 'english' => 'Slovak', 'native' => 'Slovenčina', 'direction' => 'ltr'],
|
||||
['short' => 'sl', 'long' => 'sl-SI', 'english' => 'Slovenian', 'native' => 'Slovenščina', 'direction' => 'ltr'],
|
||||
['short' => 'sv', 'long' => 'sv-SE', 'english' => 'Swedish', 'native' => 'Svenska', 'direction' => 'ltr'],
|
||||
['short' => 'th', 'long' => 'th-TH', 'english' => 'Thai', 'native' => 'ไทย', 'direction' => 'ltr'],
|
||||
['short' => 'tr', 'long' => 'tr-TR', 'english' => 'Turkish', 'native' => 'Türkçe', 'direction' => 'ltr'],
|
||||
['short' => 'tw', 'long' => 'zh-TW', 'english' => 'Chinese (T)', 'native' => '繁體中文', 'direction' => 'ltr'],
|
||||
['short' => 'uk', 'long' => 'uk-UA', 'english' => 'Ukrainian', 'native' => 'Українська', 'direction' => 'ltr'],
|
||||
['short' => 'ur', 'long' => 'ur-PK', 'english' => 'Urdu (Pakistan)', 'native' => 'اردو', 'direction' => 'rtl'],
|
||||
['short' => 'uz', 'long' => 'uz-UZ', 'english' => 'Uzbek', 'native' => 'O\'zbek', 'direction' => 'ltr'],
|
||||
['short' => 'vi', 'long' => 'vi-VN', 'english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'direction' => 'ltr'],
|
||||
['short' => 'ar', 'long' => 'ar-SA', 'direction' => 'rtl', 'english' => 'Arabic', 'native' => 'العربية'],
|
||||
['short' => 'az', 'long' => 'az-AZ', 'direction' => 'ltr', 'english' => 'Azerbaijani', 'native' => 'Azərbaycan'],
|
||||
['short' => 'bg', 'long' => 'bg-BG', 'direction' => 'ltr', 'english' => 'Bulgarian', 'native' => 'български'],
|
||||
['short' => 'bn', 'long' => 'bn-BD', 'direction' => 'ltr', 'english' => 'Bengali', 'native' => 'বাংলা'],
|
||||
['short' => 'bs', 'long' => 'bs-BA', 'direction' => 'ltr', 'english' => 'Bosnian', 'native' => 'Bosanski'],
|
||||
['short' => 'ca', 'long' => 'ca-ES', 'direction' => 'ltr', 'english' => 'Catalan', 'native' => 'Català'],
|
||||
['short' => 'cn', 'long' => 'zh-CN', 'direction' => 'ltr', 'english' => 'Chinese (S)', 'native' => '简体中文'],
|
||||
['short' => 'cs', 'long' => 'cs-CZ', 'direction' => 'ltr', 'english' => 'Czech', 'native' => 'Čeština'],
|
||||
['short' => 'da', 'long' => 'da-DK', 'direction' => 'ltr', 'english' => 'Danish', 'native' => 'Dansk'],
|
||||
['short' => 'de', 'long' => 'de-DE', 'direction' => 'ltr', 'english' => 'German', 'native' => 'Deutsch'],
|
||||
['short' => 'de', 'long' => 'de-AT', 'direction' => 'ltr', 'english' => 'Austrian', 'native' => 'Österreichisches Deutsch'],
|
||||
['short' => 'fi', 'long' => 'fi-FI', 'direction' => 'ltr', 'english' => 'Finnish', 'native' => 'Suomi'],
|
||||
['short' => 'fr', 'long' => 'fr-FR', 'direction' => 'ltr', 'english' => 'French', 'native' => 'Français'],
|
||||
['short' => 'ea', 'long' => 'es-AR', 'direction' => 'ltr', 'english' => 'Spanish (Argentina)', 'native' => 'Español de Argentina'],
|
||||
['short' => 'el', 'long' => 'el-GR', 'direction' => 'ltr', 'english' => 'Greek', 'native' => 'Ελληνικά'],
|
||||
['short' => 'en', 'long' => 'en-AU', 'direction' => 'ltr', 'english' => 'English (AU)', 'native' => 'English (AU)'],
|
||||
['short' => 'en', 'long' => 'en-CA', 'direction' => 'ltr', 'english' => 'English (CA)', 'native' => 'English (CA)'],
|
||||
['short' => 'en', 'long' => 'en-GB', 'direction' => 'ltr', 'english' => 'English (GB)', 'native' => 'English (GB)'],
|
||||
['short' => 'en', 'long' => 'en-US', 'direction' => 'ltr', 'english' => 'English (US)', 'native' => 'English (US)'],
|
||||
['short' => 'es', 'long' => 'es-ES', 'direction' => 'ltr', 'english' => 'Spanish', 'native' => 'Español'],
|
||||
['short' => 'et', 'long' => 'et-EE', 'direction' => 'ltr', 'english' => 'Estonian', 'native' => 'Eesti'],
|
||||
['short' => 'he', 'long' => 'he-IL', 'direction' => 'rtl', 'english' => 'Hebrew', 'native' => 'עִבְרִית'],
|
||||
['short' => 'hi', 'long' => 'hi-IN', 'direction' => 'ltr', 'english' => 'Hindi', 'native' => 'हिन्दी'],
|
||||
['short' => 'hr', 'long' => 'hr-HR', 'direction' => 'ltr', 'english' => 'Croatian', 'native' => 'Hrvatski'],
|
||||
['short' => 'hu', 'long' => 'hu-HU', 'direction' => 'ltr', 'english' => 'Hungarian', 'native' => 'Magyar'],
|
||||
['short' => 'hy', 'long' => 'hy-AM', 'direction' => 'ltr', 'english' => 'Armenian', 'native' => 'Հայերեն',],
|
||||
['short' => 'id', 'long' => 'id-ID', 'direction' => 'ltr', 'english' => 'Indonesian', 'native' => 'Bahasa Indonesia'],
|
||||
['short' => 'is', 'long' => 'is-IS', 'direction' => 'ltr', 'english' => 'Icelandic', 'native' => 'Íslenska'],
|
||||
['short' => 'it', 'long' => 'it-IT', 'direction' => 'ltr', 'english' => 'Italian', 'native' => 'Italiano'],
|
||||
['short' => 'ir', 'long' => 'fa-IR', 'direction' => 'rtl', 'english' => 'Persian', 'native' => 'فارسی'],
|
||||
['short' => 'jp', 'long' => 'ja-JP', 'direction' => 'ltr', 'english' => 'Japanese', 'native' => '日本語'],
|
||||
['short' => 'ka', 'long' => 'ka-GE', 'direction' => 'ltr', 'english' => 'Georgian', 'native' => 'ქართული'],
|
||||
['short' => 'ko', 'long' => 'ko-KR', 'direction' => 'ltr', 'english' => 'Korean', 'native' => '한국어'],
|
||||
['short' => 'lt', 'long' => 'lt-LT', 'direction' => 'ltr', 'english' => 'Lithuanian', 'native' => 'Lietuvių'],
|
||||
['short' => 'lv', 'long' => 'lv-LV', 'direction' => 'ltr', 'english' => 'Latvian', 'native' => 'Latviešu valoda'],
|
||||
['short' => 'mk', 'long' => 'mk-MK', 'direction' => 'ltr', 'english' => 'Macedonian', 'native' => 'Македонски јазик'],
|
||||
['short' => 'ms', 'long' => 'ms-MY', 'direction' => 'ltr', 'english' => 'Malay', 'native' => 'Bahasa Melayu'],
|
||||
['short' => 'mx', 'long' => 'es-MX', 'direction' => 'ltr', 'english' => 'Mexico', 'native' => 'Español de México'],
|
||||
['short' => 'nb', 'long' => 'nb-NO', 'direction' => 'ltr', 'english' => 'Norwegian', 'native' => 'Norsk Bokmål'],
|
||||
['short' => 'ne', 'long' => 'ne-NP', 'direction' => 'ltr', 'english' => 'Nepali', 'native' => 'नेपाली'],
|
||||
['short' => 'nl', 'long' => 'nl-NL', 'direction' => 'ltr', 'english' => 'Dutch', 'native' => 'Nederlands'],
|
||||
['short' => 'pl', 'long' => 'pl-PL', 'direction' => 'ltr', 'english' => 'Polish', 'native' => 'Polski'],
|
||||
['short' => 'pt-BR', 'long' => 'pt-BR', 'direction' => 'ltr', 'english' => 'Brazilian', 'native' => 'Português do Brasil'],
|
||||
['short' => 'pt', 'long' => 'pt-PT', 'direction' => 'ltr', 'english' => 'Portuguese', 'native' => 'Português'],
|
||||
['short' => 'ro', 'long' => 'ro-RO', 'direction' => 'ltr', 'english' => 'Romanian', 'native' => 'Română'],
|
||||
['short' => 'ru', 'long' => 'ru-RU', 'direction' => 'ltr', 'english' => 'Russian', 'native' => 'Русский'],
|
||||
['short' => 'sr', 'long' => 'sr-RS', 'direction' => 'ltr', 'english' => 'Serbian (Cyrillic)', 'native' => 'Српски језик'],
|
||||
['short' => 'sr', 'long' => 'sr-CS', 'direction' => 'ltr', 'english' => 'Serbian (Latin)', 'native' => 'Српски језик'],
|
||||
['short' => 'sq', 'long' => 'sq-AL', 'direction' => 'ltr', 'english' => 'Albanian', 'native' => 'Shqip'],
|
||||
['short' => 'sk', 'long' => 'sk-SK', 'direction' => 'ltr', 'english' => 'Slovak', 'native' => 'Slovenčina'],
|
||||
['short' => 'sl', 'long' => 'sl-SI', 'direction' => 'ltr', 'english' => 'Slovenian', 'native' => 'Slovenščina'],
|
||||
['short' => 'sv', 'long' => 'sv-SE', 'direction' => 'ltr', 'english' => 'Swedish', 'native' => 'Svenska'],
|
||||
['short' => 'th', 'long' => 'th-TH', 'direction' => 'ltr', 'english' => 'Thai', 'native' => 'ไทย'],
|
||||
['short' => 'tr', 'long' => 'tr-TR', 'direction' => 'ltr', 'english' => 'Turkish', 'native' => 'Türkçe'],
|
||||
['short' => 'tw', 'long' => 'zh-TW', 'direction' => 'ltr', 'english' => 'Chinese (T)', 'native' => '繁體中文'],
|
||||
['short' => 'uk', 'long' => 'uk-UA', 'direction' => 'ltr', 'english' => 'Ukrainian', 'native' => 'Українська'],
|
||||
['short' => 'ur', 'long' => 'ur-PK', 'direction' => 'rtl', 'english' => 'Urdu (Pakistan)', 'native' => 'اردو'],
|
||||
['short' => 'uz', 'long' => 'uz-UZ', 'direction' => 'ltr', 'english' => 'Uzbek', 'native' => 'O\'zbek'],
|
||||
['short' => 'vi', 'long' => 'vi-VN', 'direction' => 'ltr', 'english' => 'Vietnamese', 'native' => 'Tiếng Việt'],
|
||||
],
|
||||
|
||||
];
|
||||
|
356081
public/css/app.css
vendored
356081
public/css/app.css
vendored
File diff suppressed because it is too large
Load Diff
17
public/css/print.css
vendored
17
public/css/print.css
vendored
@ -68,11 +68,26 @@ html[dir='rtl'] .right-column {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.print-template .ml-1
|
||||
html[dir='ltr'] .print-template .ml-1
|
||||
{
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
html[dir='rtl'] .print-template .ml-1
|
||||
{
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
html[dir='ltr'] .print-template .ml-2
|
||||
{
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
html[dir='rtl'] .print-template .ml-2
|
||||
{
|
||||
margin-left: 16px;
|
||||
}
|
||||
|
||||
.pl-head
|
||||
{
|
||||
padding-left: 18px;
|
||||
|
Binary file not shown.
@ -17,6 +17,12 @@
|
||||
<span class="material-icons-outlined avatar hidden" data-dz-thumbnail-word>content_paste</span>
|
||||
<span class="material-icons-outlined avatar hidden" data-dz-thumbnail-excel>table_chart</span>
|
||||
<span class="mb-1 text-sm ml-3 text-gray-500 hidden" data-dz-name>...</span>
|
||||
|
||||
<div class="gap-x-1 relative">
|
||||
<button data-dz-remove="true" class="absolute group right-0">
|
||||
<span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -40,11 +46,11 @@
|
||||
</div>
|
||||
|
||||
<div class="gap-x-1">
|
||||
<button data-dz-remove="true" class="btn btn-danger btn-sm">
|
||||
<span class="material-icons text-base text-red">delete</span>
|
||||
<button data-dz-remove="true" class="group">
|
||||
<span class="material-icons text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">delete</span>
|
||||
</button>
|
||||
<a href="#" type="button" class="btn btn-sm btn-info hidden" data-dz-download>
|
||||
<span class="material-icons-round text-base">download</span>
|
||||
<a href="#" type="button" class="group hidden" data-dz-download>
|
||||
<span class="material-icons-round text-base text-red px-1.5 py-1 rounded-lg group-hover:bg-gray-100">download</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -867,8 +867,7 @@ export default {
|
||||
}
|
||||
|
||||
html[dir='rtl'] .searh-field .el-tag-option {
|
||||
border-radius: 0.50rem;
|
||||
margin-right: 10px;
|
||||
border-radius: 0 0.5rem 0.5rem 0;
|
||||
}
|
||||
|
||||
.searh-field .el-tag-operator {
|
||||
@ -883,12 +882,12 @@ export default {
|
||||
}
|
||||
|
||||
html[dir='rtl'] .searh-field .el-tag-value {
|
||||
border-radius: 0.50rem;
|
||||
border-radius: 0.5rem 0 0 0.5rem;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
html[dir='rtl'] .searh-field .el-tag-operator {
|
||||
border-radius: 0.50rem;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.searh-field .el-select.input-new-tag {
|
||||
|
@ -20,12 +20,12 @@ return [
|
||||
|
||||
'form_description' => [
|
||||
'general' => 'Kreditkartentyp für negativen Eröffnungssaldo verwenden. Die Nummer ist wichtig, um Konten korrekt abzugleichen. Das Standardkonto zeichnet alle Transaktionen auf, wenn nicht anders ausgewählt.',
|
||||
'bank' => 'Sie können mehrere Bankkonten in mehr als einer Bank haben. Das Aufzeichnen von Informationen über Ihre Bank erleichtert die Übereinstimmung der Transaktionen innerhalb Ihrer Bank.',
|
||||
'bank' => 'Sie können mehrere Bankkonten bei mehr als einer Bank haben. Das Aufzeichnen von Informationen über Ihre Bank erleichtert die Übereinstimmung der Transaktionen innerhalb Ihrer Bank.',
|
||||
],
|
||||
|
||||
'no_records' => [
|
||||
'transactions' => 'Es gibt noch keine Transaktionen nach/von diesem Konto. Erstellen Sie jetzt eine neue.',
|
||||
'transfers' => 'Es gibt noch keine Überweisung nach/von diesem Konto. Erstellen Sie jetzt eine neue.',
|
||||
'transactions' => 'Es gibt noch keine Transaktionen auf diesem Konto. Erfassen Sie jetzt eine neue.',
|
||||
'transfers' => 'Es gibt noch keine Überweisung nach/von diesem Konto. Erfassen Sie jetzt eine neue.',
|
||||
],
|
||||
|
||||
];
|
||||
|
@ -19,11 +19,13 @@ return [
|
||||
'total' => 'Gesamt',
|
||||
|
||||
'item_name' => 'Artikel-Name|Artikel-Namen',
|
||||
'recurring_bills' => 'Wiederkehrende Rechnung|Wiederkehrende Rechnungen',
|
||||
|
||||
'show_discount' => ':discount% Rabatt',
|
||||
'add_discount' => 'füge Rabatt hinzu',
|
||||
'discount_desc' => 'der Zwischensumme',
|
||||
|
||||
'payment_made' => 'Zahlung erfolgt',
|
||||
'payment_due' => 'Fälligkeit der Zahlung',
|
||||
'amount_due' => 'Fälliger Betrag',
|
||||
'paid' => 'Bezahlt',
|
||||
@ -39,6 +41,11 @@ return [
|
||||
'receive_bill' => 'Rechnung erhalten',
|
||||
'make_payment' => 'Zahlung vornehmen',
|
||||
|
||||
'form_description' => [
|
||||
'billing' => 'Rechnungsdetails erscheinen in Ihrer Rechnung. Rechnungsdatum wird im Dashboard und in Berichten verwendet. Wählen Sie das voraussichtliche Zahlungsdatum als Fälligkeitsdatum aus.
|
||||
',
|
||||
],
|
||||
|
||||
'messages' => [
|
||||
'draft' => 'Dies ist eine Rechnungs-<b>Vorschau</b>. Die Rechnung erscheint in den Diagrammen nachdem sie als erhalten markiert wurde.',
|
||||
|
||||
|
@ -20,4 +20,7 @@ return [
|
||||
'unreconcile' => 'Sind Sie sicher das Sie den ausgewählten Datensatz <b>nicht abgleichen</b> möchten?|Sind Sie sicher das Sie die ausgewählten Datensätze <b>nicht abgleichen</b> möchten?',
|
||||
],
|
||||
|
||||
'success' => [
|
||||
'general' => ':count Eintrag :type.',
|
||||
],
|
||||
];
|
||||
|
11
resources/lang/de-DE/categories.php
Normal file
11
resources/lang/de-DE/categories.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'collapse' => 'Einklappen',
|
||||
|
||||
'form_description' => [
|
||||
'general' => 'Die Kategorie hilft Ihnen, Ihre Artikel, Einnahmen, Ausgaben und andere Datensätze zu klassifizieren.',
|
||||
],
|
||||
|
||||
];
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'AF' => 'Afghanistan',
|
||||
'AX' => 'Ålandinseln',
|
||||
'AL' => 'Albanien',
|
||||
@ -10,7 +11,7 @@ return [
|
||||
'AO' => 'Angola',
|
||||
'AI' => 'Anguilla',
|
||||
'AQ' => 'Antarktis',
|
||||
'AG' => 'Antigua und Barbuda',
|
||||
'AG' => 'Antigua & Barbuda',
|
||||
'AR' => 'Argentinien',
|
||||
'AM' => 'Armenien',
|
||||
'AW' => 'Aruba',
|
||||
@ -119,6 +120,7 @@ return [
|
||||
'KZ' => 'Kasachstan',
|
||||
'KE' => 'Kenia',
|
||||
'KI' => 'Kiribati',
|
||||
'XK' => 'Kosovo',
|
||||
'KW' => 'Kuwait',
|
||||
'KG' => 'Kirgisistan',
|
||||
'LA' => 'Laos',
|
||||
@ -250,4 +252,5 @@ return [
|
||||
'YE' => 'Jemen',
|
||||
'ZM' => 'Sambia',
|
||||
'ZW' => 'Simbabwe',
|
||||
|
||||
];
|
||||
|
@ -3,7 +3,7 @@
|
||||
return [
|
||||
|
||||
'error' => [
|
||||
'not_user_dashboard' => 'Fehler: Sie haben keine Berechtigung, das Dashboard zu ändern!',
|
||||
'not_user_dashboard' => 'Fehler: Sie haben keine Berechtigung, dieses Dashboard zu ändern!',
|
||||
'delete_last' => 'Fehler: Das letzte Dashboard kann nicht gelöscht werden. Bitte erstellen Sie zuerst ein neues Dashboard!',
|
||||
'disable_last' => 'Fehler: Das letzte Dashboard kann nicht deaktiviert werden. Bitte erstellen Sie zuerst ein neues Dashboard!',
|
||||
],
|
||||
|
@ -5,7 +5,7 @@ return [
|
||||
'edit_columns' => 'Spalten bearbeiten',
|
||||
'empty_items' => 'Sie haben keine Artikel hinzugefügt.',
|
||||
'grand_total' => 'Gesamtbetrag',
|
||||
'accept_payment_online' => 'Online Zahlungen akzeptieren',
|
||||
'accept_payment_online' => 'Onlinezahlungen akzeptieren',
|
||||
'transaction' => 'Eine Zahlung über :amount wurde mit :account getätigt.',
|
||||
'billing' => 'Abrechnung',
|
||||
'advanced' => 'Erweitert',
|
||||
|
@ -27,6 +27,11 @@ return [
|
||||
'body' => 'Hallo,<br /><br /> Basierend auf {customer_name} wiederkehrenden Kreis, <strong>{invoice_number}</strong> Rechnung wurde automatisch erstellt.<br /><br />Sie können die Rechnungsdaten unter folgendem Link sehen: <a href="{invoice_admin_link}">{invoice_number}</a>.<br /><br />Beste Grüße,<br />{company_name}',
|
||||
],
|
||||
|
||||
'invoice_view_admin' => [
|
||||
'subject' => 'Rechnung {invoice_number} angesehen',
|
||||
'body' => 'Hallo,<br /><br />{customer_name} hat die Rechnung <strong>{invoice_number}</strong> angesehen.<br /><br />Sie können die Rechnungsdetails unter folgendem Link einsehen: <a href ="{invoice_admin_link}">{invoice_number}</a>.<br /><br />Mit freundlichen Grüßen<br />{company_name}',
|
||||
],
|
||||
|
||||
'invoice_payment_customer' => [
|
||||
'subject' => 'Zahlung für Rechnung {invoice_number} erhalten',
|
||||
'body' => 'Hallo {customer_name},<br /><br />Vielen Dank für die Zahlung. Sie finden die Zahlungsinformationen unten:<br /><br />-------------------------------------------------<br /><br />Betrag: <strong>{transaction_total}<br /></strong>Datum: <strong>{transaction_paid_date}</strong><br />Rechnungsnummer: <strong>{invoice_number}<br /><br /></strong>-------------------------------------------------<br /><br />Sie können die Rechnungsdetails immer unter folgendem Link sehen: <a href="{invoice_guest_link}">{invoice_number}</a>.<br /><br />Zögern Sie nicht, uns für jede Frage zu kontaktieren.<br /><br />Beste Grüße,<br />{company_name}',
|
||||
@ -47,13 +52,13 @@ return [
|
||||
'body' => 'Hallo,<br /><br /> Basierend auf {vendor_name} wiederkehrenden Kreis, <strong>{bill_number}</strong> Rechnung wurde automatisch erstellt.<br /><br />Sie können die Details der Rechnung unter folgendem Link sehen: <a href="{bill_admin_link}">{bill_number}</a>.<br /><br />Beste Grüße,<br />{company_name}',
|
||||
],
|
||||
|
||||
'revenue_new_customer' => [
|
||||
'subject' => '{revenue_date} Zahlung erstellt',
|
||||
'body' => 'Hallo {customer_name},<br /><br />Wir haben die folgende Zahlung vorbereitet. <br /><br />Die Zahlungsdetails können Sie dem folgenden Link entnehmen: <a href="{revenue_guest_link}">{revenue_date}</a>.<br /><br />Bei Fragen stehen wir Ihnen gerne zur Verfügung<br /><br />Mit freundlichen Grüßen<br />{company_name}',
|
||||
'payment_received_customer' => [
|
||||
'subject' => 'Deine Quittung von {company_name}',
|
||||
'body' => 'Hallo {contact_name},<br /><br />Vielen Dank für die Zahlung. <br /><br />Sie können die Zahlungsdetails unter folgendem Link einsehen: <a href="{payment_guest_link}">{payment_date}</a>.<br /><br />Sie können uns gerne kontaktieren bei Fragen.<br /><br />Mit freundlichen Grüßen<br />{company_name}',
|
||||
],
|
||||
|
||||
'payment_new_vendor' => [
|
||||
'subject' => '{revenue_date} Zahlung erstellt',
|
||||
'body' => 'Hallo {vendor_name},<br /><br />Wir haben die folgende Zahlung vorbereitet. <br /><br />Die Zahlungsdetails können Sie dem folgenden Link entnehmen: <a href="{payment_admin_link}">{payment_date}</a><br /><br />Bei Fragen stehen wir Ihnen gerne zur Verfügung<br /><br />Mit freundlichen Grüßen<br />{company_name}',
|
||||
'payment_made_vendor' => [
|
||||
'subject' => 'Zahlung erfolgt durch {company_name}',
|
||||
'body' => 'Hallo {contact_name},<br /><br />wir haben die folgende Zahlung geleistet. <br /><br />Sie können die Zahlungsdetails unter folgendem Link einsehen: <a href="{payment_guest_link}">{payment_date}</a>.<br /><br />Sie können uns gerne kontaktieren bei Fragen.<br /><br />Mit freundlichen Grüßen<br />{company_name}',
|
||||
],
|
||||
];
|
||||
|
@ -17,7 +17,9 @@ return [
|
||||
'message' => [
|
||||
'403' => 'Sie können auf diese Seite nicht zugreifen.',
|
||||
'404' => 'Wir konnten die gesuchte Seite nicht finden.',
|
||||
'500' => 'Wir werden uns sofort darum kümmern, dieses Problem zu lösen',
|
||||
'500' => 'Wir werden uns sofort darum kümmern, dieses Problem zu lösen.',
|
||||
'record' => 'Wir konnten den Datensatz nicht finden, nach dem Sie gesucht haben.',
|
||||
'amount' => 'Diese Seite enthält ungültige Beträge! Bitte kontaktieren Sie den Systemadministrator.',
|
||||
],
|
||||
|
||||
];
|
||||
|
@ -7,7 +7,7 @@ return [
|
||||
'link' => 'https://akaunting.com',
|
||||
'software' => 'Kostenlose Buchhaltungssoftware',
|
||||
'powered_by' => 'Zur Verfügung gestellt von',
|
||||
'tag_line' => 'Senden Sie Rechnungen, verfolgen Sie Ausgaben und automatisieren Sie Abrechnung mit Akaunting. :get_started_url',
|
||||
'get_started' => 'Los geht\'s',
|
||||
'tag_line' => 'Senden Sie Rechnungen, verfolgen Sie Ausgaben und automatisieren Sie die Abrechnung mit Akaunting. :get_started_url',
|
||||
'get_started' => 'Erste Schritte',
|
||||
|
||||
];
|
||||
|
@ -43,4 +43,8 @@ return [
|
||||
'connection' => 'Fehler: Es konnte keine Verbindung zur Datenbank hergestellt werden! Stellen Sie sicher, dass die Angaben korrekt sind.',
|
||||
],
|
||||
|
||||
'update' => [
|
||||
'core' => 'Akaunting neue Version ist verfügbar! Bitte aktualisieren Sie Ihre Installation.',
|
||||
'module' => ':module neue Version ist verfügbar! Bitte aktualisieren Sie Ihre Installation.',
|
||||
],
|
||||
];
|
||||
|
@ -6,28 +6,28 @@ return [
|
||||
'invoices' => 'Rechnungen',
|
||||
'payments' => 'Zahlungen',
|
||||
'payment_received' => 'Zahlung eingegangen, vielen Dank.',
|
||||
'create_your_invoice' => 'Erstellen Sie jetzt Ihre eigene Rechnung – kostenlos',
|
||||
'get_started' => 'Kostenlos starten',
|
||||
'billing_address' => 'Rechnungensadresse',
|
||||
'create_your_invoice' => 'Erstellen Sie jetzt Ihre eigene Rechnung — es ist kostenlos',
|
||||
'get_started' => 'Kostenlos loslegen',
|
||||
'billing_address' => 'Rechnungsadresse',
|
||||
'see_all_details' => 'Alle Kontodetails anzeigen',
|
||||
'all_payments' => 'Anmelden, um alle Zahlungen anzuzeigen',
|
||||
'received_date' => 'Empfangsdatum',
|
||||
'received_date' => 'Eingangsdatum',
|
||||
|
||||
'last_payment' => [
|
||||
'title' => 'Letzte Zahlung',
|
||||
'description' => 'Sie haben diese Zahlung am :date gemacht',
|
||||
'not_payment' => 'Sie haben noch keine Zahlung getätigt.',
|
||||
'description' => 'Sie haben diese Zahlung am :date geleistet',
|
||||
'not_payment' => 'Sie haben noch keine Zahlung geleistet.',
|
||||
],
|
||||
|
||||
'outstanding_balance' => [
|
||||
'title' => 'Ausstehender Saldo',
|
||||
'description' => 'Ihr ausstehender Kontostand ist:',
|
||||
'description' => 'Ihr ausstehender Saldo ist:',
|
||||
'not_payment' => 'Sie haben noch kein ausstehendes Guthaben.',
|
||||
],
|
||||
|
||||
'latest_invoices' => [
|
||||
'title' => 'Neueste Rechnungen',
|
||||
'description' => ':date - Sie wurden mit Rechnungsnummer :invoice_number abgerechnet.',
|
||||
'description' => ':date - Sie wurden mit Rechnungsnummer :invoice_number belastet.',
|
||||
'no_data' => 'Keine Rechnungen vorhanden.',
|
||||
],
|
||||
|
||||
@ -39,7 +39,7 @@ return [
|
||||
|
||||
'payment_history' => [
|
||||
'title' => 'Zahlungsverlauf',
|
||||
'description' => ':date - Sie haben eine Zahlung von :amount getätigt.',
|
||||
'description' => ':date - Sie haben eine Zahlung in Höhe von :amount getätigt.',
|
||||
'invoice_description'=> ':date - Sie haben :amount für die Rechnungsnummer :invoice_number bezahlt.',
|
||||
|
||||
'no_data' => 'Sie haben noch keinen Zahlungsverlauf.',
|
||||
|
@ -14,5 +14,9 @@ return [
|
||||
'cleared_amount' => 'Ausgeglichener Betrag',
|
||||
'deposit' => 'Einzahlung',
|
||||
'withdrawal' => 'Auszahlung',
|
||||
'reconciled_amount' => 'Abgeglichen',
|
||||
'in_progress' => 'In Bearbeitung',
|
||||
'save_draft' => 'Als Entwurf speichern',
|
||||
'irreconcilable' => 'Nicht abgleichbar',
|
||||
|
||||
];
|
||||
|
@ -9,8 +9,8 @@ return [
|
||||
],
|
||||
|
||||
'no_records' => [
|
||||
'bills' => 'Sie haben noch keine Rechnung von diesem Kreditor erhalten. Erstellen Sie jetzt eine neue Rechnung.',
|
||||
'transactions' => 'Es gibt noch keine Transaktionen zu diesem Kreditor. Erstellen Sie jetzt eine neue.',
|
||||
'bills' => 'Sie haben noch keine Rechnung von diesem Kreditor erhalten. Erfassen Sie jetzt eine neue Rechnung.',
|
||||
'transactions' => 'Es gibt noch keine Transaktionen zu diesem Kreditor. Erfassen Sie jetzt eine neue.',
|
||||
],
|
||||
|
||||
];
|
||||
|
@ -17,18 +17,18 @@ return [
|
||||
|
||||
'description' => [
|
||||
'receivables' => 'Betrag, den Sie noch von Ihren Kunden erhalten müssen',
|
||||
'payables' => 'Betrag, den Sie noch an Ihren Kreditoren bezahlen müssen',
|
||||
'cash_flow' => 'Geld, das in Ihr Unternehmen ein- und ausgeht',
|
||||
'payables' => 'Betrag, den Sie noch an Ihre Kreditoren bezahlen müssen',
|
||||
'cash_flow' => 'Bargeld, das in Ihr Unternehmen ein- und ausgeht',
|
||||
'profit_loss' => 'Einnahmen und Ausgaben einschließlich unbezahlter Rechnungen',
|
||||
'expenses_by_category' => 'Top-Ausgaben in verschiedenen Kategorien',
|
||||
'account_balance' => 'Aktueller Kontostand Ihrer Bankkonten',
|
||||
'bank_feeds' => 'Importieren Sie Ihre Transaktionen automatisch in Akaunting </br>, indem Sie Ihre Bankkonten verbinden',
|
||||
'bank_feeds' => 'Importieren Sie Ihre Transaktionen automatisch in Akaunting, </br>indem Sie Ihre Bankkonten verbinden',
|
||||
],
|
||||
|
||||
'periods' => [
|
||||
'overdue_1_30' => '1-30 Tage verspätet',
|
||||
'overdue_30_60' => '30-60 Tage verspätet',
|
||||
'overdue_60_90' => '60-90 Tage verspätet',
|
||||
'overdue_90_un' => '> 90 Tage verspätet',
|
||||
'overdue_1_30' => '1-30 Tage überfällig',
|
||||
'overdue_30_60' => '30-60 Tage überfällig',
|
||||
'overdue_60_90' => '60-90 Tage überfällig',
|
||||
'overdue_90_un' => '> 90 Tage überfällig',
|
||||
],
|
||||
];
|
||||
|
@ -75,7 +75,7 @@ return [
|
||||
'export_failed' => [
|
||||
|
||||
'title' => 'Export failed',
|
||||
'description' => 'Not able to create the export file due to the following issue: :issues',
|
||||
'description' => 'Not able to create the export file due to several issues. Check out your email for the details.',
|
||||
|
||||
],
|
||||
|
||||
@ -86,6 +86,13 @@ return [
|
||||
|
||||
],
|
||||
|
||||
'import_failed' => [
|
||||
|
||||
'subject' => 'Import failed',
|
||||
'description' => 'Not able to import the file due to several issues. Check out your email for the details.',
|
||||
|
||||
],
|
||||
|
||||
'new_apps' => [
|
||||
|
||||
'title' => 'New App',
|
||||
|
@ -75,7 +75,7 @@ return [
|
||||
'export_failed' => [
|
||||
|
||||
'title' => 'L\'exportation a échoué',
|
||||
'description' => 'Impossible de créer le fichier d\'export en raison du problème suivant : :issues',
|
||||
'description' => 'Impossible de créer le fichier d\'export en raison de plusieurs problèmes. Consultez votre e-mail pour plus de détails.',
|
||||
|
||||
],
|
||||
|
||||
@ -86,6 +86,13 @@ return [
|
||||
|
||||
],
|
||||
|
||||
'import_failed' => [
|
||||
|
||||
'subject' => 'Importation échouée',
|
||||
'description' => 'Impossible d\'importer le fichier en raison de plusieurs problèmes. Consultez votre e-mail pour plus de détails.',
|
||||
|
||||
],
|
||||
|
||||
'new_apps' => [
|
||||
|
||||
'title' => 'Nouvelle application',
|
||||
|
@ -116,15 +116,27 @@
|
||||
|
||||
<x-show.summary.right>
|
||||
@stack('summary_incoming_start')
|
||||
<x-slot name="first" amount="{{ $summary_amounts['incoming_for_humans'] }}" title="{{ trans('accounts.incoming') }}" tooltip="{{ $summary_amounts['incoming_exact'] }}"></x-slot>
|
||||
<x-slot name="first"
|
||||
amount="{{ $summary_amounts['incoming_for_humans'] }}"
|
||||
title="{{ trans('accounts.incoming') }}"
|
||||
tooltip="{{ $summary_amounts['incoming_exact'] }}"
|
||||
></x-slot>
|
||||
@stack('summary_incoming_end')
|
||||
|
||||
@stack('summary_outgoing_start')
|
||||
<x-slot name="second" amount="{{ $summary_amounts['outgoing_for_humans'] }}" title="{{ trans('accounts.outgoing') }}" tooltip="{{ $summary_amounts['outgoing_exact'] }}"></x-slot>
|
||||
<x-slot name="second"
|
||||
amount="{{ $summary_amounts['outgoing_for_humans'] }}"
|
||||
title="{{ trans('accounts.outgoing') }}"
|
||||
tooltip="{{ $summary_amounts['outgoing_exact'] }}"
|
||||
></x-slot>
|
||||
@stack('summary_outgoing_end')
|
||||
|
||||
@stack('summary_current_start')
|
||||
<x-slot name="third" amount="{{ $summary_amounts['current_for_humans'] }}" title="{{ trans('accounts.current_balance') }}" tooltip="{{ $summary_amounts['current_exact'] }}"></x-slot>
|
||||
<x-slot name="third"
|
||||
amount="{{ $summary_amounts['current_for_humans'] }}"
|
||||
title="{{ trans('accounts.current_balance') }}"
|
||||
tooltip="{{ $summary_amounts['current_exact'] }}"
|
||||
></x-slot>
|
||||
@stack('summary_current_end')
|
||||
</x-show.summary.right>
|
||||
</x-show.summary>
|
||||
|
@ -20,14 +20,16 @@
|
||||
<x-index.summary>
|
||||
<x-slot name="first"
|
||||
href="{{ route('reconciliations.index', ['search' => 'reconciled:1']) }}"
|
||||
amount="{{ money($reconciliations->where('reconciled', 1)->sum('closing_balance'), setting('default.currency'), true) }}"
|
||||
amount="{{ $summary_amounts['amount_for_humans'] }}"
|
||||
title="{{ trans('reconciliations.reconciled_amount') }}"
|
||||
tooltip="{{ $summary_amounts['amount_exact'] }}"
|
||||
></x-slot>
|
||||
|
||||
<x-slot name="second"
|
||||
href="{{ route('reconciliations.index', ['search' => 'reconciled:0']) }}"
|
||||
amount="{{ money($reconciliations->where('reconciled', 0)->sum('closing_balance'), setting('default.currency'), true) }}"
|
||||
amount="{{ $summary_amounts['in_progress_for_humans'] }}"
|
||||
title="{{ trans('reconciliations.in_progress') }}"
|
||||
tooltip="{{ $summary_amounts['in_progress_exact'] }}"
|
||||
></x-slot>
|
||||
</x-index.summary>
|
||||
|
||||
|
@ -44,21 +44,24 @@
|
||||
<x-index.summary>
|
||||
<x-slot name="first"
|
||||
href="{{ route('transactions.index', ['search' => 'type:income']) }}"
|
||||
amount="{{ money($totals['income'], setting('default.currency'), true) }}"
|
||||
amount="{{ $summary_amounts['incoming_for_humans'] }}"
|
||||
title="{{ trans_choice('general.incomes', 1) }}"
|
||||
tooltip="{{ $summary_amounts['incoming_exact'] }}"
|
||||
divider="remove"
|
||||
></x-slot>
|
||||
|
||||
<x-slot name="second"
|
||||
href="{{ route('transactions.index', ['search' => 'type:expense']) }}"
|
||||
amount="{{ money($totals['expense'], setting('default.currency'), true) }}"
|
||||
amount="{{ $summary_amounts['expense_for_humans'] }}"
|
||||
title="{{ trans_choice('general.expenses', 2) }}"
|
||||
tooltip="{{ $summary_amounts['expense_exact'] }}"
|
||||
divider="drag_handle"
|
||||
></x-slot>
|
||||
|
||||
<x-slot name="third"
|
||||
amount="{{ money($totals['profit'], setting('default.currency'), true) }}"
|
||||
amount="{{ $summary_amounts['profit_for_humans'] }}"
|
||||
title="{{ trans_choice('general.profits', 1) }}"
|
||||
tooltip="{{ $summary_amounts['profit_exact'] }}"
|
||||
class="cursor-default"
|
||||
></x-slot>
|
||||
</x-index.summary>
|
||||
|
@ -64,7 +64,7 @@
|
||||
@endif
|
||||
|
||||
@if (! $hideLogo)
|
||||
<x-form.group.file name="logo" label="{{ trans_choice('general.pictures', 1) }}" not-required />
|
||||
<x-form.group.file name="logo" label="{{ trans_choice('general.pictures', 1) }}" :value="! empty($contact) ? $contact->logo : false" not-required />
|
||||
@endif
|
||||
</div>
|
||||
</x-slot>
|
||||
|
@ -136,15 +136,15 @@
|
||||
@stack('name_td_start')
|
||||
@if (! $hideName)
|
||||
<x-slot name="first" class="flex items-center font-medium">
|
||||
@if ($showPicture)
|
||||
@if (is_object($item->picture))
|
||||
<img src="{{ Storage::url($item->picture->id) }}" class="absolute w-6 h-6 bottom-6 rounded-full mr-2 hidden lg:block" alt="{{ $item->name }}" title="{{ $item->name }}">
|
||||
@if ($showLogo)
|
||||
@if (is_object($item->logo))
|
||||
<img src="{{ Storage::url($item->logo->id) }}" class="absolute w-6 h-6 bottom-6 rounded-full mr-2 hidden lg:block" alt="{{ $item->name }}" title="{{ $item->name }}">
|
||||
@else
|
||||
<img src="{{ asset('public/img/user.svg') }}" class="absolute w-6 h-6 bottom-6 rounded-full mr-2 hidden lg:block" alt="{{ $item->name }}"/>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<div class="truncate {{ $showPicture ? ' ltr:pl-8 rtl:pr-8' : '' }}">
|
||||
<div class="truncate {{ $showLogo ? ' ltr:pl-8 rtl:pr-8' : '' }}">
|
||||
{{ $item->name }}
|
||||
</div>
|
||||
|
||||
@ -157,7 +157,7 @@
|
||||
|
||||
@stack('tax_number_td_start')
|
||||
@if (! $hideTaxNumber)
|
||||
<x-slot name="second" class="w-32 font-normal truncate {{ $showPicture ? ' ltr:pl-8 rtl:pr-8' : '' }}">
|
||||
<x-slot name="second" class="w-32 font-normal truncate {{ $showLogo ? ' ltr:pl-8 rtl:pr-8' : '' }}">
|
||||
{{ $item->tax_number }}
|
||||
</x-slot>
|
||||
@endif
|
||||
|
@ -30,19 +30,31 @@
|
||||
<x-show.summary.right>
|
||||
@stack('summary_overdue_start')
|
||||
@if (! $hideOverdue)
|
||||
<x-slot name="first" amount="{{ money($totals['overdue'], setting('default.currency'), true) }}" title="{{ trans('general.overdue') }}"></x-slot>
|
||||
<x-slot name="first"
|
||||
amount="{{ $summary_amounts['overdue_for_humans'] }}"
|
||||
title="{{ trans('general.overdue') }}"
|
||||
tooltip="{{ $summary_amounts['overdue_exact'] }}"
|
||||
></x-slot>
|
||||
@endif
|
||||
@stack('summary_overdue_end')
|
||||
|
||||
@stack('summary_open_start')
|
||||
@if (! $hideOpen)
|
||||
<x-slot name="second" amount="{{ money($totals['open'], setting('default.currency'), true) }}" title="{{ trans('general.open') }}"></x-slot>
|
||||
<x-slot name="second"
|
||||
amount="{{ $summary_amounts['open_for_humans'] }}"
|
||||
title="{{ trans('general.open') }}"
|
||||
tooltip="{{ $summary_amounts['open_exact'] }}"
|
||||
></x-slot>
|
||||
@endif
|
||||
@stack('summary_open_end')
|
||||
|
||||
@stack('summary_paid_start')
|
||||
@if (! $hidePaid)
|
||||
<x-slot name="third" amount="{{ money($totals['paid'], setting('default.currency'), true) }}" title="{{ trans('general.paid') }}"></x-slot>
|
||||
<x-slot name="third"
|
||||
amount="{{ $summary_amounts['paid_for_humans'] }}"
|
||||
title="{{ trans('general.paid') }}"
|
||||
tooltip="{{ $summary_amounts['paid_exact'] }}"
|
||||
></x-slot>
|
||||
@endif
|
||||
@stack('summary_paid_end')
|
||||
</x-show.summary.right>
|
||||
|
@ -86,7 +86,7 @@
|
||||
<div class="invoice-classic-inline-frame text-center" style="border: 1px solid {{ $backgroundColor }}">
|
||||
@stack('invoice_number_input_start')
|
||||
@if (! $hideDocumentNumber)
|
||||
<div class="text small-text text-semibold mt-classic">
|
||||
<div class="text small-text font-semibold mt-classic">
|
||||
<span>
|
||||
{{ trans($textDocumentNumber) }}:
|
||||
</span>
|
||||
@ -111,7 +111,7 @@
|
||||
<div class="col-60">
|
||||
<div class="text p-index-left">
|
||||
@if (! $hideContactInfo)
|
||||
<p class="text-semibold mb-0">
|
||||
<p class="font-semibold mb-0">
|
||||
{{ trans($textContactInfo) }}
|
||||
</p>
|
||||
@endif
|
||||
@ -173,7 +173,7 @@
|
||||
@if (! $hideOrderNumber)
|
||||
@if ($document->order_number)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textOrderNumber) }}:
|
||||
</span>
|
||||
|
||||
@ -188,7 +188,7 @@
|
||||
@stack('issued_at_input_start')
|
||||
@if (! $hideIssuedAt)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textIssuedAt) }}:
|
||||
</span>
|
||||
|
||||
@ -202,7 +202,7 @@
|
||||
@stack('due_at_input_start')
|
||||
@if (! $hideDueAt)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textDueAt) }}:
|
||||
</span>
|
||||
|
||||
@ -216,7 +216,7 @@
|
||||
@foreach ($document->totals_sorted as $total)
|
||||
@if ($total->code == 'total')
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($total->name) }}:
|
||||
</span>
|
||||
|
||||
@ -239,7 +239,7 @@
|
||||
<tr>
|
||||
@stack('name_th_start')
|
||||
@if (! $hideItems || (! $hideName && ! $hideDescription))
|
||||
<th class="item text text-semibold text-alignment-left text-left">
|
||||
<th class="item text font-semibold text-alignment-left text-left">
|
||||
{{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -247,7 +247,7 @@
|
||||
|
||||
@stack('quantity_th_start')
|
||||
@if (! $hideQuantity)
|
||||
<th class="quantity text text-semibold text-alignment-right text-right">
|
||||
<th class="quantity text font-semibold text-alignment-right text-right">
|
||||
{{ trans($textQuantity) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -255,7 +255,7 @@
|
||||
|
||||
@stack('price_th_start')
|
||||
@if (! $hidePrice)
|
||||
<th class="price text text-semibold text-alignment-right text-right">
|
||||
<th class="price text font-semibold text-alignment-right text-right">
|
||||
{{ trans($textPrice) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -264,7 +264,7 @@
|
||||
@if (! $hideDiscount)
|
||||
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
|
||||
@stack('discount_td_start')
|
||||
<th class="discount text text-semibold text-alignment-right text-right">
|
||||
<th class="discount text font-semibold text-alignment-right text-right">
|
||||
{{ trans('invoices.discount') }}
|
||||
</th>
|
||||
@stack('discount_td_end')
|
||||
@ -273,7 +273,7 @@
|
||||
|
||||
@stack('total_th_start')
|
||||
@if (! $hideAmount)
|
||||
<th class="total text text-semibold text-alignment-right text-right">
|
||||
<th class="total text font-semibold text-alignment-right text-right">
|
||||
{{ trans($textAmount) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -333,7 +333,7 @@
|
||||
@if ($total->code != 'total')
|
||||
@stack($total->code . '_total_tr_start')
|
||||
<div class="text border-bottom-dashed py-1">
|
||||
<strong class="float-left text-semibold">
|
||||
<strong class="float-left font-semibold">
|
||||
{{ trans($total->title) }}:
|
||||
</strong>
|
||||
|
||||
@ -346,7 +346,7 @@
|
||||
@if ($document->paid)
|
||||
@stack('paid_total_tr_start')
|
||||
<div class="text border-bottom-dashed py-1">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans('invoices.paid') }}:
|
||||
</span>
|
||||
|
||||
@ -359,7 +359,7 @@
|
||||
|
||||
@stack('grand_total_tr_start')
|
||||
<div class="text border-bottom-dashed py-1">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans($total->name) }}:
|
||||
</span>
|
||||
|
||||
|
@ -76,7 +76,7 @@
|
||||
<div class="col-60">
|
||||
<div class="text p-index-left">
|
||||
@if (! $hideContactInfo)
|
||||
<p class="text-semibold mb-0">{{ trans($textContactInfo) }}</p>
|
||||
<p class="font-semibold mb-0">{{ trans($textContactInfo) }}</p>
|
||||
@endif
|
||||
|
||||
@stack('name_input_start')
|
||||
@ -200,7 +200,7 @@
|
||||
<tr>
|
||||
@stack('name_th_start')
|
||||
@if (! $hideItems || (! $hideName && ! $hideDescription))
|
||||
<th class="item text text-semibold text-alignment-left text-left text-white border-radius-first">
|
||||
<th class="item text font-semibold text-alignment-left text-left text-white border-radius-first">
|
||||
{{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -208,7 +208,7 @@
|
||||
|
||||
@stack('quantity_th_start')
|
||||
@if (! $hideQuantity)
|
||||
<th class="quantity text text-semibold text-alignment-right text-right text-white">
|
||||
<th class="quantity text font-semibold text-alignment-right text-right text-white">
|
||||
{{ trans($textQuantity) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -216,7 +216,7 @@
|
||||
|
||||
@stack('price_th_start')
|
||||
@if (! $hidePrice)
|
||||
<th class="price text text-semibold text-alignment-right text-right text-white">
|
||||
<th class="price text font-semibold text-alignment-right text-right text-white">
|
||||
{{ trans($textPrice) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -225,7 +225,7 @@
|
||||
@if (! $hideDiscount)
|
||||
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
|
||||
@stack('discount_td_start')
|
||||
<th class="discount text text-semibold text-alignment-right text-right text-white">
|
||||
<th class="discount text font-semibold text-alignment-right text-right text-white">
|
||||
{{ trans('invoices.discount') }}
|
||||
</th>
|
||||
@stack('discount_td_end')
|
||||
@ -234,7 +234,7 @@
|
||||
|
||||
@stack('total_th_start')
|
||||
@if (! $hideAmount)
|
||||
<th class="total text text-semibold text-white text-alignment-right text-right border-radius-last">
|
||||
<th class="total text font-semibold text-white text-alignment-right text-right border-radius-last">
|
||||
{{ trans($textAmount) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -277,7 +277,7 @@
|
||||
<div class="text p-index-left">
|
||||
@stack('notes_input_start')
|
||||
@if ($document->notes)
|
||||
<p class="text-semibold">
|
||||
<p class="font-semibold">
|
||||
{{ trans_choice('general.notes', 2) }}
|
||||
</p>
|
||||
|
||||
@ -292,7 +292,7 @@
|
||||
@if ($total->code != 'total')
|
||||
@stack($total->code . '_total_tr_start')
|
||||
<div class="text border-bottom-1 py-1">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans($total->title) }}:
|
||||
</span>
|
||||
|
||||
@ -305,7 +305,7 @@
|
||||
@if ($document->paid)
|
||||
@stack('paid_total_tr_start')
|
||||
<div class="text border-bottom-1 py-1">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans('invoices.paid') }}:
|
||||
</span>
|
||||
|
||||
@ -318,7 +318,7 @@
|
||||
|
||||
@stack('grand_total_tr_start')
|
||||
<div class="text border-bottom-1 py-1">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans($total->name) }}:
|
||||
</span>
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
@if (! $hideDescription)
|
||||
@if (! empty($item->description))
|
||||
<span class="small-text">
|
||||
{!! \Illuminate\Support\Str::limit($item->description, 500) !!}
|
||||
{!! \Illuminate\Support\Str::limit(nl2br($item->description), 500) !!}
|
||||
</span>
|
||||
@endif
|
||||
@endif
|
||||
|
@ -82,7 +82,7 @@
|
||||
<div class="col-50">
|
||||
<div class="text p-modern">
|
||||
@if (! $hideContactInfo)
|
||||
<p class="text-semibold mb-0">
|
||||
<p class="font-semibold mb-0">
|
||||
{{ trans($textContactInfo) }}
|
||||
</p>
|
||||
@endif
|
||||
@ -145,7 +145,7 @@
|
||||
@if (! $hideOrderNumber)
|
||||
@if ($document->order_number)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textOrderNumber) }}:
|
||||
</span>
|
||||
|
||||
@ -160,7 +160,7 @@
|
||||
@stack('invoice_number_input_start')
|
||||
@if (! $hideDocumentNumber)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textDocumentNumber) }}:
|
||||
</span>
|
||||
|
||||
@ -174,7 +174,7 @@
|
||||
@stack('issued_at_input_start')
|
||||
@if (! $hideIssuedAt)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textIssuedAt) }}:
|
||||
</span>
|
||||
|
||||
@ -188,7 +188,7 @@
|
||||
@stack('due_at_input_start')
|
||||
@if (! $hideDueAt)
|
||||
<p class="mb-0">
|
||||
<span class="text-semibold spacing">
|
||||
<span class="font-semibold spacing">
|
||||
{{ trans($textDueAt) }}:
|
||||
</span>
|
||||
|
||||
@ -211,7 +211,7 @@
|
||||
<tr>
|
||||
@stack('name_th_start')
|
||||
@if (! $hideItems || (! $hideName && ! $hideDescription))
|
||||
<th class="item text text-semibold text-alignment-left text-left text-white border-radius-first">
|
||||
<th class="item text font-semibold text-alignment-left text-left text-white border-radius-first">
|
||||
{{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -219,7 +219,7 @@
|
||||
|
||||
@stack('quantity_th_start')
|
||||
@if (! $hideQuantity)
|
||||
<th class="quantity text text-semibold text-white text-alignment-right text-right">
|
||||
<th class="quantity text font-semibold text-white text-alignment-right text-right">
|
||||
{{ trans($textQuantity) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -227,7 +227,7 @@
|
||||
|
||||
@stack('price_th_start')
|
||||
@if (! $hidePrice)
|
||||
<th class="price text text-semibold text-white text-alignment-right text-right">
|
||||
<th class="price text font-semibold text-white text-alignment-right text-right">
|
||||
{{ trans($textPrice) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -236,7 +236,7 @@
|
||||
@if (! $hideDiscount)
|
||||
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
|
||||
@stack('discount_td_start')
|
||||
<th class="discount text text-semibold text-white text-alignment-right text-right">
|
||||
<th class="discount text font-semibold text-white text-alignment-right text-right">
|
||||
{{ trans('invoices.discount') }}
|
||||
</th>
|
||||
@stack('discount_td_end')
|
||||
@ -245,7 +245,7 @@
|
||||
|
||||
@stack('total_th_start')
|
||||
@if (! $hideAmount)
|
||||
<th class="total text text-semibold text-white text-alignment-right text-right border-radius-last">
|
||||
<th class="total text font-semibold text-white text-alignment-right text-right border-radius-last">
|
||||
{{ trans($textAmount) }}
|
||||
</th>
|
||||
@endif
|
||||
@ -288,7 +288,7 @@
|
||||
<div class="text p-index-right p-modern">
|
||||
@stack('notes_input_start')
|
||||
@if ($document->notes)
|
||||
<p class="text-semibold">
|
||||
<p class="font-semibold">
|
||||
{{ trans_choice('general.notes', 2) }}
|
||||
</p>
|
||||
|
||||
@ -303,7 +303,7 @@
|
||||
@if ($total->code != 'total')
|
||||
@stack($total->code . '_total_tr_start')
|
||||
<div class="text">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans($total->title) }}:
|
||||
</span>
|
||||
|
||||
@ -316,7 +316,7 @@
|
||||
@if ($document->paid)
|
||||
@stack('paid_total_tr_start')
|
||||
<div class="text">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans('invoices.paid') }}:
|
||||
</span>
|
||||
|
||||
@ -329,7 +329,7 @@
|
||||
|
||||
@stack('grand_total_tr_start')
|
||||
<div class="text">
|
||||
<span class="float-left text-semibold">
|
||||
<span class="float-left font-semibold">
|
||||
{{ trans($total->name) }}:
|
||||
</span>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
</h2>
|
||||
|
||||
@if (! empty($description))
|
||||
<span class="text-sm font-light text-black">
|
||||
<span class="text-sm font-light text-black flex gap-x-1 mt-1">
|
||||
{!! $description !!}
|
||||
</span>
|
||||
@endif
|
||||
|
81
resources/views/components/form/group/tax.blade.php
Normal file
81
resources/views/components/form/group/tax.blade.php
Normal file
@ -0,0 +1,81 @@
|
||||
@if ((! $attributes->has('withoutRemote') && ! $attributes->has('without-remote')) && (! $attributes->has('withoutAddNew') && ! $attributes->has('without-add-new')))
|
||||
<x-form.group.select
|
||||
remote
|
||||
remote_action="{{ $remoteAction }}"
|
||||
|
||||
add-new
|
||||
path="{{ $path }}"
|
||||
|
||||
name="{{ $name }}"
|
||||
label="{!! trans_choice('general.taxes', 1) !!}"
|
||||
:options="$taxes"
|
||||
:selected="$selected"
|
||||
sort-options="false"
|
||||
|
||||
:multiple="$multiple"
|
||||
:group="$group"
|
||||
form-group-class="{{ $formGroupClass }}"
|
||||
:required="$required"
|
||||
:readonly="$readonly"
|
||||
:disabled="$disabled"
|
||||
|
||||
{{ $attributes }}
|
||||
/>
|
||||
@elseif (($attributes->has('withoutRemote') && $attributes->has('without-remote')) && (! $attributes->has('withoutAddNew') && ! $attributes->has('without-add-new')))
|
||||
<x-form.group.select
|
||||
add-new
|
||||
path="{{ $path }}"
|
||||
|
||||
name="{{ $name }}"
|
||||
label="{!! trans_choice('general.taxes', 1) !!}"
|
||||
:options="$taxes"
|
||||
:selected="$selected"
|
||||
sort-options="false"
|
||||
|
||||
:multiple="$multiple"
|
||||
:group="$group"
|
||||
form-group-class="{{ $formGroupClass }}"
|
||||
:required="$required"
|
||||
:readonly="$readonly"
|
||||
:disabled="$disabled"
|
||||
|
||||
{{ $attributes }}
|
||||
/>
|
||||
@elseif ((! $attributes->has('withoutRemote') && ! $attributes->has('without-remote')) && ($attributes->has('withoutAddNew') && $attributes->has('without-add-new')))
|
||||
<x-form.group.select
|
||||
remote
|
||||
remote_action="{{ $remoteAction }}"
|
||||
|
||||
name="{{ $name }}"
|
||||
label="{!! trans_choice('general.taxes', 1) !!}"
|
||||
:options="$taxes"
|
||||
:selected="$selected"
|
||||
sort-options="false"
|
||||
|
||||
:multiple="$multiple"
|
||||
:group="$group"
|
||||
form-group-class="{{ $formGroupClass }}"
|
||||
:required="$required"
|
||||
:readonly="$readonly"
|
||||
:disabled="$disabled"
|
||||
|
||||
{{ $attributes }}
|
||||
/>
|
||||
@else
|
||||
<x-form.group.select
|
||||
name="{{ $name }}"
|
||||
label="{!! trans_choice('general.taxes', 1) !!}"
|
||||
:options="$taxes"
|
||||
:selected="$selected"
|
||||
sort-options="false"
|
||||
|
||||
:multiple="$multiple"
|
||||
:group="$group"
|
||||
form-group-class="{{ $formGroupClass }}"
|
||||
:required="$required"
|
||||
:readonly="$readonly"
|
||||
:disabled="$disabled"
|
||||
|
||||
{{ $attributes }}
|
||||
/>
|
||||
@endif
|
@ -4,7 +4,7 @@
|
||||
</h2>
|
||||
|
||||
@if (!empty($description))
|
||||
<span class="text-sm font-light text-black">
|
||||
<span class="text-sm font-light text-black flex gap-x-1 mt-1">
|
||||
{!! $description !!}
|
||||
</span>
|
||||
@endif
|
||||
|
@ -5,7 +5,7 @@
|
||||
@foreach ($items as $item)
|
||||
<div @class(['w-1/2 sm:w-1/3 text-center'])>
|
||||
@if (! empty($item['tooltip']))
|
||||
<x-tooltip id="tooltip-summary-first" placement="top" message="{!! $first->attributes->get('tooltip') !!}">
|
||||
<x-tooltip id="tooltip-summary-{{ $loop->index }}" placement="top" message="{!! $item['tooltip'] !!}">
|
||||
<a href="{{ $item['href'] }}" class="group">
|
||||
@php $text_color = (! empty($item['text_color'])) ? $item['text_color'] : 'text-purple group-hover:text-purple-700'; @endphp
|
||||
<div @class(['relative text-xl sm:text-6xl', $text_color, 'mb-2'])>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="w-full lg:w-6/12 lg:ltr:pl-24 lg:rtl:pr-24">
|
||||
<div class="relative mb-10" x-data="{ toggle: 'donut' }">
|
||||
<div class="flex border-b pb-2">
|
||||
<div class="w-full lg:w-11/12 text-xl text-left text-black-400">
|
||||
<div class="w-full lg:w-11/12 ltr:text-xl rtl:text-right text-left text-black-400">
|
||||
<h2 x-show="toggle === 'donut'">{{ trans('general.timeline') }}</h2>
|
||||
<h2 x-show="toggle === 'bar'">{{ trans('general.distribution') }}</h2>
|
||||
</div>
|
||||
|
@ -6,7 +6,7 @@
|
||||
</h2>
|
||||
|
||||
@if (! empty($description))
|
||||
<span class="text-sm font-light text-black">
|
||||
<span class="text-sm font-light text-black flex gap-x-1 mt-1">
|
||||
{!! $description !!}
|
||||
</span>
|
||||
@endif
|
||||
|
@ -5,7 +5,7 @@
|
||||
@foreach ($items as $item)
|
||||
<div @class(['w-1/2 sm:w-1/3 text-center'])>
|
||||
@if (! empty($item['tooltip']))
|
||||
<x-tooltip id="tooltip-summary-first" placement="top" message="{!! $first->attributes->get('tooltip') !!}">
|
||||
<x-tooltip id="tooltip-summary-{{ $loop->index }}" placement="top" message="{!! $item['tooltip'] !!}">
|
||||
<a href="{{ $item['href'] }}" class="group">
|
||||
@php $text_color = (! empty($item['text_color'])) ? $item['text_color'] : 'text-purple group-hover:text-purple-700'; @endphp
|
||||
<div @class(['relative text-xl sm:text-6xl', $text_color, 'mb-2'])>
|
||||
|
@ -11,7 +11,7 @@
|
||||
</x-button.hover>
|
||||
</span>
|
||||
|
||||
<div class="text-black-400 text-sm">
|
||||
<div class="text-black-400 text-sm flex gap-x-1 mt-1">
|
||||
{{ trans('transactions.slider.attachments') }}
|
||||
</div>
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
</x-button.hover>
|
||||
</span>
|
||||
|
||||
<div class="text-black-400 text-sm">
|
||||
<div class="text-black-400 text-sm flex gap-x-1 mt-1">
|
||||
{!! trans('transactions.slider.children', ['count' => $transaction->children()->count()]) !!}
|
||||
</div>
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
</x-button.hover>
|
||||
</span>
|
||||
|
||||
<div class="text-black-400 text-sm">
|
||||
<div class="text-black-400 text-sm flex gap-x-1 mt-1">
|
||||
@if ($transaction->isRecurringTransaction())
|
||||
{!! trans('transactions.slider.create_recurring', ['user' => $transaction->owner->name, 'date' => $created_date]) !!}
|
||||
@else
|
||||
|
@ -13,7 +13,7 @@
|
||||
</x-button.hover>
|
||||
</span>
|
||||
|
||||
<div class="text-black-400 text-sm">
|
||||
<div class="text-black-400 text-sm flex gap-x-1 mt-1">
|
||||
{!! trans('transactions.slider.schedule', ['frequency' => $frequency, 'interval' => $transaction->recurring->interval, 'date' => $started_date]) !!}
|
||||
</div>
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
</span>
|
||||
|
||||
@if ($transfer)
|
||||
<div class="text-black-400 text-sm">
|
||||
<div class="text-black-400 text-sm flex gap-x-1 mt-1">
|
||||
{!! trans('transactions.slider.transfer_headline', ['from_account' => $from_account, 'to_account' => $to_account]) !!}
|
||||
</div>
|
||||
@endif
|
||||
|
@ -19,9 +19,9 @@
|
||||
<td class="text" style="width: 80%; padding: 0 0 15px 0;">
|
||||
@stack('company_details_start')
|
||||
@if (! $hideCompanyName)
|
||||
<h2 class="text-semibold text">
|
||||
<span class="font-semibold text">
|
||||
{{ setting('company.name') }}
|
||||
</h2>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
@if (! $hideCompanyAddress)
|
||||
@ -368,11 +368,8 @@
|
||||
<td valign="center" style="width:80%; display:block; float:right; background-color: #55588B; -webkit-print-color-adjust: exact; color:#ffffff; border-radius: 5px;">
|
||||
<table>
|
||||
<tr>
|
||||
<td valign="center" style="width: 80%; padding:0; font-size: 14px; font-weight:600; color:#ffffff;">
|
||||
{{ trans($textAmount) }}
|
||||
</td>
|
||||
|
||||
<td valign="center" style="width: 20%; padding:0; font-size: 14px; color:#ffffff;">
|
||||
<td valign="center" style="font-size: 14px; color: #ffffff; padding: 0;">
|
||||
<span class="ml-2" style="font-weight: 600;">{{ trans($textAmount) }}</span>
|
||||
@money($transaction->amount, $transaction->currency_code, true)
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -16,7 +16,7 @@
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="content">
|
||||
<x-contacts.index.content type="vendor" :contacts="$vendors" show-picture />
|
||||
<x-contacts.index.content type="vendor" :contacts="$vendors" show-logo />
|
||||
</x-slot>
|
||||
|
||||
<x-contacts.script type="vendor" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user