Merge branch 'master' of https://github.com/brkcvn/akaunting into code-clean

This commit is contained in:
Burak Civan 2022-08-05 14:48:35 +03:00
commit d452dc097a
56 changed files with 1184 additions and 210 deletions

View File

@ -40,11 +40,32 @@ abstract class Report
{ {
$now = Date::now(); $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 = []; $years = [];
$y = $now->addYears(2); $y = $now->addYears(2);
for ($i = 0; $i < 10; $i++) { 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(); $y->subYear();
} }

View File

@ -281,9 +281,10 @@ abstract class Index extends Component
foreach ($totals as $key => $total) { foreach ($totals as $key => $total) {
$items[] = [ $items[] = [
'title' => ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key), 'title' => ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key),
'href' => route($route, ['search' => 'status:' . $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(),
]; ];
} }

View File

@ -392,12 +392,14 @@ abstract class Index extends Component
foreach ($totals as $key => $total) { foreach ($totals as $key => $total) {
$title = ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key); $title = ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key);
$href = route($route, ['search' => 'status:' . $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[] = [ $items[] = [
'title' => $title, 'title' => $title,
'href' => $href, 'href' => $href,
'amount' => $amount, 'amount' => $amount,
'tooltip' => $tooltip,
]; ];
} }

View File

@ -24,7 +24,17 @@ class Reconciliations extends Controller
{ {
$reconciliations = Reconciliation::with('account')->collect(); $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'));
} }
/** /**

View File

@ -56,12 +56,25 @@ class Transactions extends Controller
$totals['profit'] = $totals['income'] - $totals['expense']; $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'); $translations = $this->getTranslationsForConnect('income');
return $this->response('banking.transactions.index', compact( return $this->response('banking.transactions.index', compact(
'transactions', 'transactions',
'translations', 'translations',
'totals' 'summary_amounts'
)); ));
} }

View File

@ -45,5 +45,9 @@ class UpdateTransaction extends Job implements ShouldUpdate
throw new \Exception($message); throw new \Exception($message);
} }
if ($this->model->isTransferTransaction()) {
throw new \Exception('Unauthorized');
}
} }
} }

View File

@ -189,6 +189,13 @@ trait DateTime
return $date_picker_shortcuts; return $date_picker_shortcuts;
} }
public function getDailyDateFormat($year = null)
{
$format = 'd M Y';
return $format;
}
public function getMonthlyDateFormat($year = null) public function getMonthlyDateFormat($year = null)
{ {
$format = 'M Y'; $format = 'M Y';

View File

@ -12,7 +12,7 @@ class Content extends Component
{ {
public $counts; public $counts;
public $totals; public $summary_amounts;
public $transactions; public $transactions;
@ -72,7 +72,20 @@ class Content extends Component
$totals['paid'] += $item->getAmountConvertedToDefault(); $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->transactions = $this->paginate($this->transactions->sortByDesc('paid_at'));
$this->documents = $this->paginate($this->documents->sortByDesc('issued_at')); $this->documents = $this->paginate($this->documents->sortByDesc('issued_at'));

View File

@ -28,6 +28,18 @@ class Account extends Form
$this->accounts = $this->getAccounts(); $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'))) { if (empty($this->selected) && empty($this->getParentData('model'))) {
$this->selected = setting('default.account'); $this->selected = setting('default.account');
} }

View File

@ -33,6 +33,18 @@ class Category extends Form
$model = $this->getParentData('model'); $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)) { if (! empty($model) && ! empty($model->category_id)) {
$this->selected = $model->category_id; $this->selected = $model->category_id;

View File

@ -39,6 +39,18 @@ class Contact extends Form
$model = $this->getParentData('model'); $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)) { if (! empty($model) && ! empty($model->contact_id)) {
$this->selected = $model->contact_id; $this->selected = $model->contact_id;

View File

@ -35,6 +35,18 @@ class Currency extends Form
$this->currencies = Model::enabled()->orderBy('name')->pluck('name', 'code'); $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'))) { if (empty($this->selected) && empty($this->getParentData('model'))) {
$this->selected = setting('default.currency'); $this->selected = setting('default.currency');
} }

View File

@ -3,7 +3,7 @@
namespace App\View\Components\Form\Group; namespace App\View\Components\Form\Group;
use App\Abstracts\View\Components\Form; use App\Abstracts\View\Components\Form;
use App\Models\Setting\Currency as Model; use App\Models\Setting\Tax as Model;
class Tax extends Form class Tax extends Form
{ {
@ -13,7 +13,7 @@ class Tax extends Form
public $field; public $field;
public $currencies; public $taxes;
/** /**
* Get the view / contents that represent the component. * Get the view / contents that represent the component.
@ -23,20 +23,32 @@ class Tax extends Form
public function render() public function render()
{ {
if (empty($this->name)) { 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 = [ $this->field = [
'key' => 'code', 'key' => 'id',
'value' => 'name' '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)) { if (empty($this->selected)) {
$this->selected = setting('default.currency'); $this->selected = setting('default.tax');
} }
return view('components.form.group.tax'); return view('components.form.group.tax');

43
composer.lock generated
View File

@ -907,16 +907,16 @@
}, },
{ {
"name": "aws/aws-sdk-php", "name": "aws/aws-sdk-php",
"version": "3.231.18", "version": "3.232.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/aws/aws-sdk-php.git", "url": "https://github.com/aws/aws-sdk-php.git",
"reference": "76db7b327e023c7bbce77a0bfc9fb4d559e765b3" "reference": "7e79325815640d21f3bcab9889f7002a8268d674"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/76db7b327e023c7bbce77a0bfc9fb4d559e765b3", "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7e79325815640d21f3bcab9889f7002a8268d674",
"reference": "76db7b327e023c7bbce77a0bfc9fb4d559e765b3", "reference": "7e79325815640d21f3bcab9889f7002a8268d674",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -993,9 +993,9 @@
"support": { "support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues", "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", "name": "balping/json-raw-encoder",
@ -4472,16 +4472,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v9.22.1", "version": "v9.23.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46" "reference": "c4eea9060d847b5c93957b203caa8f57544a76ab"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/b3b3dd43b9899f23df6d1d3e5390bd4662947a46", "url": "https://api.github.com/repos/laravel/framework/zipball/c4eea9060d847b5c93957b203caa8f57544a76ab",
"reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46", "reference": "c4eea9060d847b5c93957b203caa8f57544a76ab",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4502,7 +4502,7 @@
"psr/log": "^1.0|^2.0|^3.0", "psr/log": "^1.0|^2.0|^3.0",
"psr/simple-cache": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0",
"ramsey/uuid": "^4.2.2", "ramsey/uuid": "^4.2.2",
"symfony/console": "^6.0", "symfony/console": "^6.0.3",
"symfony/error-handler": "^6.0", "symfony/error-handler": "^6.0",
"symfony/finder": "^6.0", "symfony/finder": "^6.0",
"symfony/http-foundation": "^6.0", "symfony/http-foundation": "^6.0",
@ -4648,7 +4648,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "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", "name": "laravel/sanctum",
@ -6462,16 +6462,16 @@
}, },
{ {
"name": "myclabs/php-enum", "name": "myclabs/php-enum",
"version": "1.8.3", "version": "1.8.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/php-enum.git", "url": "https://github.com/myclabs/php-enum.git",
"reference": "b942d263c641ddb5190929ff840c68f78713e937" "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483",
"reference": "b942d263c641ddb5190929ff840c68f78713e937", "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6487,7 +6487,10 @@
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"MyCLabs\\Enum\\": "src/" "MyCLabs\\Enum\\": "src/"
} },
"classmap": [
"stubs/Stringable.php"
]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@ -6506,7 +6509,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/myclabs/php-enum/issues", "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": [ "funding": [
{ {
@ -6518,7 +6521,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-07-05T08:18:36+00:00" "time": "2022-08-04T09:53:51+00:00"
}, },
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
@ -14286,5 +14289,5 @@
"ext-zip": "*" "ext-zip": "*"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.2.0" "plugin-api-version": "2.3.0"
} }

View File

@ -12,6 +12,15 @@ return [
// 'ip' => '\App\Models\YourIpModel', // 'ip' => '\App\Models\YourIpModel',
], ],
'log' => [
'max_request_size' => 2048,
],
'cron' => [
'enabled' => env('FIREWALL_CRON_ENABLED', true),
'expression' => env('FIREWALL_CRON_EXPRESSION', '* * * * *'),
],
'responses' => [ 'responses' => [
'block' => [ 'block' => [
@ -61,6 +70,8 @@ return [
'middleware' => [ 'middleware' => [
'ip' => [ 'ip' => [
'enabled' => env('FIREWALL_MIDDLEWARE_IP_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'routes' => [ 'routes' => [
@ -70,6 +81,8 @@ return [
], ],
'agent' => [ 'agent' => [
'enabled' => env('FIREWALL_MIDDLEWARE_AGENT_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'routes' => [ 'routes' => [
@ -99,13 +112,15 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 5, 'attempts' => env('FIREWALL_MIDDLEWARE_AGENT_AUTO_BLOCK_ATTEMPTS', 5),
'frequency' => 1 * 60, // 1 minute 'frequency' => 1 * 60, // 1 minute
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'bot' => [ 'bot' => [
'enabled' => env('FIREWALL_MIDDLEWARE_BOT_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'routes' => [ 'routes' => [
@ -120,13 +135,15 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 5, 'attempts' => env('FIREWALL_MIDDLEWARE_BOT_AUTO_BLOCK_ATTEMPTS', 5),
'frequency' => 1 * 60, // 1 minute 'frequency' => 1 * 60, // 1 minute
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'geo' => [ 'geo' => [
'enabled' => env('FIREWALL_MIDDLEWARE_GEO_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'routes' => [ 'routes' => [
@ -158,13 +175,15 @@ return [
'service' => 'ipapi', 'service' => 'ipapi',
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_GEO_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'lfi' => [ 'lfi' => [
'enabled' => env('FIREWALL_MIDDLEWARE_LFI_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['get', 'delete'], 'methods' => ['get', 'delete'],
'routes' => [ 'routes' => [
@ -182,23 +201,25 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_LFI_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'login' => [ 'login' => [
'enabled' => true, 'enabled' => env('FIREWALL_MIDDLEWARE_LOGIN_ENABLED', env('FIREWALL_ENABLED', true)),
'auto_block' => [ 'auto_block' => [
'attempts' => 5, 'attempts' => env('FIREWALL_MIDDLEWARE_LOGIN_AUTO_BLOCK_ATTEMPTS', 10),
'frequency' => 1 * 60, // 1 minute 'frequency' => 1 * 60, // 1 minute
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'php' => [ 'php' => [
'enabled' => env('FIREWALL_MIDDLEWARE_PHP_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['get', 'post', 'delete'], 'methods' => ['get', 'post', 'delete'],
'routes' => [ 'routes' => [
@ -225,13 +246,15 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_PHP_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'referrer' => [ 'referrer' => [
'enabled' => env('FIREWALL_MIDDLEWARE_REFERRER_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'routes' => [ 'routes' => [
@ -242,13 +265,15 @@ return [
'blocked' => [], 'blocked' => [],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_REFERRER_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'rfi' => [ 'rfi' => [
'enabled' => env('FIREWALL_MIDDLEWARE_RFI_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['get', 'post', 'delete'], 'methods' => ['get', 'post', 'delete'],
'routes' => [ 'routes' => [
@ -268,13 +293,15 @@ return [
'exceptions' => [], 'exceptions' => [],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_RFI_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'session' => [ 'session' => [
'enabled' => env('FIREWALL_MIDDLEWARE_SESSION_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['get', 'post', 'delete'], 'methods' => ['get', 'post', 'delete'],
'routes' => [ 'routes' => [
@ -293,13 +320,15 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_SESSION_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'sqli' => [ 'sqli' => [
'enabled' => env('FIREWALL_MIDDLEWARE_SQLI_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['get', 'delete'], 'methods' => ['get', 'delete'],
'routes' => [ 'routes' => [
@ -318,13 +347,15 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_SQLI_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'swear' => [ 'swear' => [
'enabled' => env('FIREWALL_MIDDLEWARE_SWEAR_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['post', 'put', 'patch'], 'methods' => ['post', 'put', 'patch'],
'routes' => [ 'routes' => [
@ -340,25 +371,29 @@ return [
'words' => [], 'words' => [],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_SWEAR_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'url' => [ 'url' => [
'enabled' => env('FIREWALL_MIDDLEWARE_URL_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'inspections' => [], // i.e. 'admin' 'inspections' => [], // i.e. 'admin'
'auto_block' => [ 'auto_block' => [
'attempts' => 5, 'attempts' => env('FIREWALL_MIDDLEWARE_URL_AUTO_BLOCK_ATTEMPTS', 5),
'frequency' => 1 * 60, // 1 minute 'frequency' => 1 * 60, // 1 minute
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],
], ],
'whitelist' => [ 'whitelist' => [
'enabled' => env('FIREWALL_MIDDLEWARE_WHITELIST_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['all'], 'methods' => ['all'],
'routes' => [ 'routes' => [
@ -368,6 +403,8 @@ return [
], ],
'xss' => [ 'xss' => [
'enabled' => env('FIREWALL_MIDDLEWARE_XSS_ENABLED', env('FIREWALL_ENABLED', true)),
'methods' => ['post', 'put', 'patch'], 'methods' => ['post', 'put', 'patch'],
'routes' => [ 'routes' => [
@ -393,7 +430,7 @@ return [
], ],
'auto_block' => [ 'auto_block' => [
'attempts' => 3, 'attempts' => env('FIREWALL_MIDDLEWARE_XSS_AUTO_BLOCK_ATTEMPTS', 3),
'frequency' => 5 * 60, // 5 minutes 'frequency' => 5 * 60, // 5 minutes
'period' => 30 * 60, // 30 minutes 'period' => 30 * 60, // 30 minutes
], ],

View File

@ -147,60 +147,65 @@ return [
| |
*/ */
'all' => [ 'all' => [
['short' => 'ar', 'long' => 'ar-SA', 'english' => 'Arabic', 'native' => 'العربية', 'direction' => 'rtl'], ['short' => 'ar', 'long' => 'ar-SA', 'direction' => 'rtl', 'english' => 'Arabic', 'native' => 'العربية'],
['short' => 'bg', 'long' => 'bg-BG', 'english' => 'Bulgarian', 'native' => 'български', 'direction' => 'ltr'], ['short' => 'az', 'long' => 'az-AZ', 'direction' => 'ltr', 'english' => 'Azerbaijani', 'native' => 'Azərbaycan'],
['short' => 'bn', 'long' => 'bn-BD', 'english' => 'Bengali', 'native' => 'বাংলা', 'direction' => 'ltr'], ['short' => 'bg', 'long' => 'bg-BG', 'direction' => 'ltr', 'english' => 'Bulgarian', 'native' => 'български'],
['short' => 'cn', 'long' => 'zh-CN', 'english' => 'Chinese (S)', 'native' => '简体中文', 'direction' => 'ltr'], ['short' => 'bn', 'long' => 'bn-BD', 'direction' => 'ltr', 'english' => 'Bengali', 'native' => 'বাংলা'],
['short' => 'cs', 'long' => 'cs-CZ', 'english' => 'Czech', 'native' => 'Čeština', 'direction' => 'ltr'], ['short' => 'bs', 'long' => 'bs-BA', 'direction' => 'ltr', 'english' => 'Bosnian', 'native' => 'Bosanski'],
['short' => 'da', 'long' => 'da-DK', 'english' => 'Danish', 'native' => 'Dansk', 'direction' => 'ltr'], ['short' => 'ca', 'long' => 'ca-ES', 'direction' => 'ltr', 'english' => 'Catalan', 'native' => 'Català'],
['short' => 'de', 'long' => 'de-DE', 'english' => 'German', 'native' => 'Deutsch', 'direction' => 'ltr'], ['short' => 'cn', 'long' => 'zh-CN', 'direction' => 'ltr', 'english' => 'Chinese (S)', 'native' => '简体中文'],
['short' => 'de', 'long' => 'de-AT', 'english' => 'Austrian', 'native' => 'Österreichisches Deutsch', 'direction' => 'ltr'], ['short' => 'cs', 'long' => 'cs-CZ', 'direction' => 'ltr', 'english' => 'Czech', 'native' => 'Čeština'],
['short' => 'fi', 'long' => 'fi-FI', 'english' => 'Finnish', 'native' => 'Suomi', 'direction' => 'ltr'], ['short' => 'da', 'long' => 'da-DK', 'direction' => 'ltr', 'english' => 'Danish', 'native' => 'Dansk'],
['short' => 'fr', 'long' => 'fr-FR', 'english' => 'French', 'native' => 'Français', 'direction' => 'ltr'], ['short' => 'de', 'long' => 'de-DE', 'direction' => 'ltr', 'english' => 'German', 'native' => 'Deutsch'],
['short' => 'el', 'long' => 'el-GR', 'english' => 'Greek', 'native' => 'Ελληνικά', 'direction' => 'ltr'], ['short' => 'de', 'long' => 'de-AT', 'direction' => 'ltr', 'english' => 'Austrian', 'native' => 'Österreichisches Deutsch'],
['short' => 'en', 'long' => 'en-AU', 'english' => 'English (AU)', 'native' => 'English (AU)', 'direction' => 'ltr'], ['short' => 'fi', 'long' => 'fi-FI', 'direction' => 'ltr', 'english' => 'Finnish', 'native' => 'Suomi'],
['short' => 'en', 'long' => 'en-CA', 'english' => 'English (CA)', 'native' => 'English (CA)', 'direction' => 'ltr'], ['short' => 'fr', 'long' => 'fr-FR', 'direction' => 'ltr', 'english' => 'French', 'native' => 'Français'],
['short' => 'en', 'long' => 'en-GB', 'english' => 'English (GB)', 'native' => 'English (GB)', 'direction' => 'ltr'], ['short' => 'ea', 'long' => 'es-AR', 'direction' => 'ltr', 'english' => 'Spanish (Argentina)', 'native' => 'Español de Argentina'],
['short' => 'en', 'long' => 'en-US', 'english' => 'English (US)', 'native' => 'English (US)', 'direction' => 'ltr'], ['short' => 'el', 'long' => 'el-GR', 'direction' => 'ltr', 'english' => 'Greek', 'native' => 'Ελληνικά'],
['short' => 'es', 'long' => 'es-ES', 'english' => 'Spanish', 'native' => 'Español', 'direction' => 'ltr'], ['short' => 'en', 'long' => 'en-AU', 'direction' => 'ltr', 'english' => 'English (AU)', 'native' => 'English (AU)'],
['short' => 'et', 'long' => 'et-EE', 'english' => 'Estonian', 'native' => 'Eesti', 'direction' => 'ltr'], ['short' => 'en', 'long' => 'en-CA', 'direction' => 'ltr', 'english' => 'English (CA)', 'native' => 'English (CA)'],
['short' => 'he', 'long' => 'he-IL', 'english' => 'Hebrew', 'native' => 'עִבְרִית', 'direction' => 'rtl'], ['short' => 'en', 'long' => 'en-GB', 'direction' => 'ltr', 'english' => 'English (GB)', 'native' => 'English (GB)'],
['short' => 'hi', 'long' => 'hi-IN', 'english' => 'Hindi', 'native' => 'हिन्दी', 'direction' => 'ltr'], ['short' => 'en', 'long' => 'en-US', 'direction' => 'ltr', 'english' => 'English (US)', 'native' => 'English (US)'],
['short' => 'hr', 'long' => 'hr-HR', 'english' => 'Croatian', 'native' => 'Hrvatski', 'direction' => 'ltr'], ['short' => 'es', 'long' => 'es-ES', 'direction' => 'ltr', 'english' => 'Spanish', 'native' => 'Español'],
['short' => 'hu', 'long' => 'hu-HU', 'english' => 'Hungarian', 'native' => 'Magyar', 'direction' => 'ltr'], ['short' => 'et', 'long' => 'et-EE', 'direction' => 'ltr', 'english' => 'Estonian', 'native' => 'Eesti'],
['short' => 'hy', 'long' => 'hy-AM', 'english' => 'Armenian', 'native' => 'Հայերեն', 'direction' => 'ltr'], ['short' => 'he', 'long' => 'he-IL', 'direction' => 'rtl', 'english' => 'Hebrew', 'native' => 'עִבְרִית'],
['short' => 'id', 'long' => 'id-ID', 'english' => 'Indonesian', 'native' => 'Bahasa Indonesia', 'direction' => 'ltr'], ['short' => 'hi', 'long' => 'hi-IN', 'direction' => 'ltr', 'english' => 'Hindi', 'native' => 'हिन्दी'],
['short' => 'it', 'long' => 'it-IT', 'english' => 'Italian', 'native' => 'Italiano', 'direction' => 'ltr'], ['short' => 'hr', 'long' => 'hr-HR', 'direction' => 'ltr', 'english' => 'Croatian', 'native' => 'Hrvatski'],
['short' => 'ir', 'long' => 'fa-IR', 'english' => 'Persian', 'native' => 'فارسی', 'direction' => 'rtl'], ['short' => 'hu', 'long' => 'hu-HU', 'direction' => 'ltr', 'english' => 'Hungarian', 'native' => 'Magyar'],
['short' => 'jp', 'long' => 'ja-JP', 'english' => 'Japanese', 'native' => '日本語', 'direction' => 'ltr'], ['short' => 'hy', 'long' => 'hy-AM', 'direction' => 'ltr', 'english' => 'Armenian', 'native' => 'Հայերեն',],
['short' => 'ka', 'long' => 'ka-GE', 'english' => 'Georgian', 'native' => 'ქართული', 'direction' => 'ltr'], ['short' => 'id', 'long' => 'id-ID', 'direction' => 'ltr', 'english' => 'Indonesian', 'native' => 'Bahasa Indonesia'],
['short' => 'ko', 'long' => 'ko-KR', 'english' => 'Korean', 'native' => '한국어', 'direction' => 'ltr'], ['short' => 'is', 'long' => 'is-IS', 'direction' => 'ltr', 'english' => 'Icelandic', 'native' => 'Íslenska'],
['short' => 'lt', 'long' => 'lt-LT', 'english' => 'Lithuanian', 'native' => 'Lietuvių', 'direction' => 'ltr'], ['short' => 'it', 'long' => 'it-IT', 'direction' => 'ltr', 'english' => 'Italian', 'native' => 'Italiano'],
['short' => 'lv', 'long' => 'lv-LV', 'english' => 'Latvian', 'native' => 'Latviešu valoda', 'direction' => 'ltr'], ['short' => 'ir', 'long' => 'fa-IR', 'direction' => 'rtl', 'english' => 'Persian', 'native' => 'فارسی'],
['short' => 'mk', 'long' => 'mk-MK', 'english' => 'Macedonian', 'native' => 'Македонски јазик', 'direction' => 'ltr'], ['short' => 'jp', 'long' => 'ja-JP', 'direction' => 'ltr', 'english' => 'Japanese', 'native' => '日本語'],
['short' => 'ms', 'long' => 'ms-MY', 'english' => 'Malay', 'native' => 'Bahasa Melayu', 'direction' => 'ltr'], ['short' => 'ka', 'long' => 'ka-GE', 'direction' => 'ltr', 'english' => 'Georgian', 'native' => 'ქართული'],
['short' => 'mx', 'long' => 'es-MX', 'english' => 'Mexico', 'native' => 'Español de México', 'direction' => 'ltr'], ['short' => 'ko', 'long' => 'ko-KR', 'direction' => 'ltr', 'english' => 'Korean', 'native' => '한국어'],
['short' => 'nb', 'long' => 'nb-NO', 'english' => 'Norwegian', 'native' => 'Norsk Bokmål', 'direction' => 'ltr'], ['short' => 'lt', 'long' => 'lt-LT', 'direction' => 'ltr', 'english' => 'Lithuanian', 'native' => 'Lietuvių'],
['short' => 'ne', 'long' => 'ne-NP', 'english' => 'Nepali', 'native' => 'नेपाली', 'direction' => 'ltr'], ['short' => 'lv', 'long' => 'lv-LV', 'direction' => 'ltr', 'english' => 'Latvian', 'native' => 'Latviešu valoda'],
['short' => 'nl', 'long' => 'nl-NL', 'english' => 'Dutch', 'native' => 'Nederlands', 'direction' => 'ltr'], ['short' => 'mk', 'long' => 'mk-MK', 'direction' => 'ltr', 'english' => 'Macedonian', 'native' => 'Македонски јазик'],
['short' => 'pl', 'long' => 'pl-PL', 'english' => 'Polish', 'native' => 'Polski', 'direction' => 'ltr'], ['short' => 'ms', 'long' => 'ms-MY', 'direction' => 'ltr', 'english' => 'Malay', 'native' => 'Bahasa Melayu'],
['short' => 'pt-BR', 'long' => 'pt-BR', 'english' => 'Brazilian', 'native' => 'Português do Brasil', 'direction' => 'ltr'], ['short' => 'mx', 'long' => 'es-MX', 'direction' => 'ltr', 'english' => 'Mexico', 'native' => 'Español de México'],
['short' => 'pt', 'long' => 'pt-PT', 'english' => 'Portuguese', 'native' => 'Português', 'direction' => 'ltr'], ['short' => 'nb', 'long' => 'nb-NO', 'direction' => 'ltr', 'english' => 'Norwegian', 'native' => 'Norsk Bokmål'],
['short' => 'ro', 'long' => 'ro-RO', 'english' => 'Romanian', 'native' => 'Română', 'direction' => 'ltr'], ['short' => 'ne', 'long' => 'ne-NP', 'direction' => 'ltr', 'english' => 'Nepali', 'native' => 'नेपाली'],
['short' => 'ru', 'long' => 'ru-RU', 'english' => 'Russian', 'native' => 'Русский', 'direction' => 'ltr'], ['short' => 'nl', 'long' => 'nl-NL', 'direction' => 'ltr', 'english' => 'Dutch', 'native' => 'Nederlands'],
['short' => 'sr', 'long' => 'sr-RS', 'english' => 'Serbian (Cyrillic)', 'native' => 'Српски језик', 'direction' => 'ltr'], ['short' => 'pl', 'long' => 'pl-PL', 'direction' => 'ltr', 'english' => 'Polish', 'native' => 'Polski'],
['short' => 'sr', 'long' => 'sr-CS', 'english' => 'Serbian (Latin)', 'native' => 'Српски језик', 'direction' => 'ltr'], ['short' => 'pt-BR', 'long' => 'pt-BR', 'direction' => 'ltr', 'english' => 'Brazilian', 'native' => 'Português do Brasil'],
['short' => 'sq', 'long' => 'sq-AL', 'english' => 'Albanian', 'native' => 'Shqip', 'direction' => 'ltr'], ['short' => 'pt', 'long' => 'pt-PT', 'direction' => 'ltr', 'english' => 'Portuguese', 'native' => 'Português'],
['short' => 'sk', 'long' => 'sk-SK', 'english' => 'Slovak', 'native' => 'Slovenčina', 'direction' => 'ltr'], ['short' => 'ro', 'long' => 'ro-RO', 'direction' => 'ltr', 'english' => 'Romanian', 'native' => 'Română'],
['short' => 'sl', 'long' => 'sl-SI', 'english' => 'Slovenian', 'native' => 'Slovenščina', 'direction' => 'ltr'], ['short' => 'ru', 'long' => 'ru-RU', 'direction' => 'ltr', 'english' => 'Russian', 'native' => 'Русский'],
['short' => 'sv', 'long' => 'sv-SE', 'english' => 'Swedish', 'native' => 'Svenska', 'direction' => 'ltr'], ['short' => 'sr', 'long' => 'sr-RS', 'direction' => 'ltr', 'english' => 'Serbian (Cyrillic)', 'native' => 'Српски језик'],
['short' => 'th', 'long' => 'th-TH', 'english' => 'Thai', 'native' => 'ไทย', 'direction' => 'ltr'], ['short' => 'sr', 'long' => 'sr-CS', 'direction' => 'ltr', 'english' => 'Serbian (Latin)', 'native' => 'Српски језик'],
['short' => 'tr', 'long' => 'tr-TR', 'english' => 'Turkish', 'native' => 'Türkçe', 'direction' => 'ltr'], ['short' => 'sq', 'long' => 'sq-AL', 'direction' => 'ltr', 'english' => 'Albanian', 'native' => 'Shqip'],
['short' => 'tw', 'long' => 'zh-TW', 'english' => 'Chinese (T)', 'native' => '繁體中文', 'direction' => 'ltr'], ['short' => 'sk', 'long' => 'sk-SK', 'direction' => 'ltr', 'english' => 'Slovak', 'native' => 'Slovenčina'],
['short' => 'uk', 'long' => 'uk-UA', 'english' => 'Ukrainian', 'native' => 'Українська', 'direction' => 'ltr'], ['short' => 'sl', 'long' => 'sl-SI', 'direction' => 'ltr', 'english' => 'Slovenian', 'native' => 'Slovenščina'],
['short' => 'ur', 'long' => 'ur-PK', 'english' => 'Urdu (Pakistan)', 'native' => 'اردو', 'direction' => 'rtl'], ['short' => 'sv', 'long' => 'sv-SE', 'direction' => 'ltr', 'english' => 'Swedish', 'native' => 'Svenska'],
['short' => 'uz', 'long' => 'uz-UZ', 'english' => 'Uzbek', 'native' => 'O\'zbek', 'direction' => 'ltr'], ['short' => 'th', 'long' => 'th-TH', 'direction' => 'ltr', 'english' => 'Thai', 'native' => 'ไทย'],
['short' => 'vi', 'long' => 'vi-VN', 'english' => 'Vietnamese', 'native' => 'Tiếng Việt', 'direction' => 'ltr'], ['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'],
], ],
]; ];

623
public/css/app.css vendored
View File

@ -30676,6 +30676,7 @@ input[type="date"]::-webkit-inner-spin-button,
} }
.p-0{ .p-0{
padding: 0px; padding: 0px;
<<<<<<< HEAD
} }
.p-1{ .p-1{
padding: 0.25rem; padding: 0.25rem;
@ -31296,6 +31297,628 @@ input[type="date"]::-webkit-inner-spin-button,
.pr-1{ .pr-1{
padding-right: 0.25rem; padding-right: 0.25rem;
} }
=======
}
.p-1{
padding: 0.25rem;
}
.p-2{
padding: 0.5rem;
}
.p-3{
padding: 0.75rem;
}
.p-4{
padding: 1rem;
}
.p-5{
padding: 1.25rem;
}
.p-6{
padding: 1.5rem;
}
.p-7{
padding: 1.75rem;
}
.p-8{
padding: 2rem;
}
.p-9{
padding: 2.25rem;
}
.p-10{
padding: 2.5rem;
}
.p-11{
padding: 2.75rem;
}
.p-12{
padding: 3rem;
}
.p-14{
padding: 3.5rem;
}
.p-16{
padding: 4rem;
}
.p-20{
padding: 5rem;
}
.p-24{
padding: 6rem;
}
.p-28{
padding: 7rem;
}
.p-31{
padding: 30.938rem;
}
.p-32{
padding: 8rem;
}
.p-33{
padding: 8.5rem;
}
.p-36{
padding: 9rem;
}
.p-37{
padding: 9.25rem;
}
.p-40{
padding: 10rem;
}
.p-44{
padding: 11rem;
}
.p-46{
padding: 46.875rem;
}
.p-48{
padding: 12rem;
}
.p-52{
padding: 13rem;
}
.p-56{
padding: 14rem;
}
.p-60{
padding: 15rem;
}
.p-64{
padding: 16rem;
}
.p-72{
padding: 18rem;
}
.p-80{
padding: 20rem;
}
.p-96{
padding: 24rem;
}
.p-px{
padding: 1px;
}
.p-0\.5{
padding: 0.125rem;
}
.p-1\.5{
padding: 0.375rem;
}
.p-2\.5{
padding: 0.625rem;
}
.p-3\.5{
padding: 0.875rem;
}
.p-modal{
padding: 610px;
}
.p-5\.5{
padding: 1.30rem;
}
.p-9\.5{
padding: 2.45rem;
}
.p-12\.5{
padding: 3.2rem;
}
.p-32\.5{
padding: 8.5rem;
}
.px-0{
padding-left: 0px;
padding-right: 0px;
}
.px-1{
padding-left: 0.25rem;
padding-right: 0.25rem;
}
.px-2{
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.px-3{
padding-left: 0.75rem;
padding-right: 0.75rem;
}
.px-4{
padding-left: 1rem;
padding-right: 1rem;
}
.px-5{
padding-left: 1.25rem;
padding-right: 1.25rem;
}
.px-6{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.px-7{
padding-left: 1.75rem;
padding-right: 1.75rem;
}
.px-8{
padding-left: 2rem;
padding-right: 2rem;
}
.px-9{
padding-left: 2.25rem;
padding-right: 2.25rem;
}
.px-10{
padding-left: 2.5rem;
padding-right: 2.5rem;
}
.px-11{
padding-left: 2.75rem;
padding-right: 2.75rem;
}
.px-12{
padding-left: 3rem;
padding-right: 3rem;
}
.px-14{
padding-left: 3.5rem;
padding-right: 3.5rem;
}
.px-16{
padding-left: 4rem;
padding-right: 4rem;
}
.px-20{
padding-left: 5rem;
padding-right: 5rem;
}
.px-24{
padding-left: 6rem;
padding-right: 6rem;
}
.px-28{
padding-left: 7rem;
padding-right: 7rem;
}
.px-31{
padding-left: 30.938rem;
padding-right: 30.938rem;
}
.px-32{
padding-left: 8rem;
padding-right: 8rem;
}
.px-33{
padding-left: 8.5rem;
padding-right: 8.5rem;
}
.px-36{
padding-left: 9rem;
padding-right: 9rem;
}
.px-37{
padding-left: 9.25rem;
padding-right: 9.25rem;
}
.px-40{
padding-left: 10rem;
padding-right: 10rem;
}
.px-44{
padding-left: 11rem;
padding-right: 11rem;
}
.px-46{
padding-left: 46.875rem;
padding-right: 46.875rem;
}
.px-48{
padding-left: 12rem;
padding-right: 12rem;
}
.px-52{
padding-left: 13rem;
padding-right: 13rem;
}
.px-56{
padding-left: 14rem;
padding-right: 14rem;
}
.px-60{
padding-left: 15rem;
padding-right: 15rem;
}
.px-64{
padding-left: 16rem;
padding-right: 16rem;
}
.px-72{
padding-left: 18rem;
padding-right: 18rem;
}
.px-80{
padding-left: 20rem;
padding-right: 20rem;
}
.px-96{
padding-left: 24rem;
padding-right: 24rem;
}
.px-px{
padding-left: 1px;
padding-right: 1px;
}
.px-0\.5{
padding-left: 0.125rem;
padding-right: 0.125rem;
}
.px-1\.5{
padding-left: 0.375rem;
padding-right: 0.375rem;
}
.px-2\.5{
padding-left: 0.625rem;
padding-right: 0.625rem;
}
.px-3\.5{
padding-left: 0.875rem;
padding-right: 0.875rem;
}
.px-modal{
padding-left: 610px;
padding-right: 610px;
}
.px-5\.5{
padding-left: 1.30rem;
padding-right: 1.30rem;
}
.px-9\.5{
padding-left: 2.45rem;
padding-right: 2.45rem;
}
.px-12\.5{
padding-left: 3.2rem;
padding-right: 3.2rem;
}
.px-32\.5{
padding-left: 8.5rem;
padding-right: 8.5rem;
}
.py-0{
padding-top: 0px;
padding-bottom: 0px;
}
.py-1{
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
.py-2{
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.py-3{
padding-top: 0.75rem;
padding-bottom: 0.75rem;
}
.py-4{
padding-top: 1rem;
padding-bottom: 1rem;
}
.py-5{
padding-top: 1.25rem;
padding-bottom: 1.25rem;
}
.py-6{
padding-top: 1.5rem;
padding-bottom: 1.5rem;
}
.py-7{
padding-top: 1.75rem;
padding-bottom: 1.75rem;
}
.py-8{
padding-top: 2rem;
padding-bottom: 2rem;
}
.py-9{
padding-top: 2.25rem;
padding-bottom: 2.25rem;
}
.py-10{
padding-top: 2.5rem;
padding-bottom: 2.5rem;
}
.py-11{
padding-top: 2.75rem;
padding-bottom: 2.75rem;
}
.py-12{
padding-top: 3rem;
padding-bottom: 3rem;
}
.py-14{
padding-top: 3.5rem;
padding-bottom: 3.5rem;
}
.py-16{
padding-top: 4rem;
padding-bottom: 4rem;
}
.py-20{
padding-top: 5rem;
padding-bottom: 5rem;
}
.py-24{
padding-top: 6rem;
padding-bottom: 6rem;
}
.py-28{
padding-top: 7rem;
padding-bottom: 7rem;
}
.py-31{
padding-top: 30.938rem;
padding-bottom: 30.938rem;
}
.py-32{
padding-top: 8rem;
padding-bottom: 8rem;
}
.py-33{
padding-top: 8.5rem;
padding-bottom: 8.5rem;
}
.py-36{
padding-top: 9rem;
padding-bottom: 9rem;
}
.py-37{
padding-top: 9.25rem;
padding-bottom: 9.25rem;
}
.py-40{
padding-top: 10rem;
padding-bottom: 10rem;
}
.py-44{
padding-top: 11rem;
padding-bottom: 11rem;
}
.py-46{
padding-top: 46.875rem;
padding-bottom: 46.875rem;
}
.py-48{
padding-top: 12rem;
padding-bottom: 12rem;
}
.py-52{
padding-top: 13rem;
padding-bottom: 13rem;
}
.py-56{
padding-top: 14rem;
padding-bottom: 14rem;
}
.py-60{
padding-top: 15rem;
padding-bottom: 15rem;
}
.py-64{
padding-top: 16rem;
padding-bottom: 16rem;
}
.py-72{
padding-top: 18rem;
padding-bottom: 18rem;
}
.py-80{
padding-top: 20rem;
padding-bottom: 20rem;
}
.py-96{
padding-top: 24rem;
padding-bottom: 24rem;
}
.py-px{
padding-top: 1px;
padding-bottom: 1px;
}
.py-0\.5{
padding-top: 0.125rem;
padding-bottom: 0.125rem;
}
.py-1\.5{
padding-top: 0.375rem;
padding-bottom: 0.375rem;
}
.py-2\.5{
padding-top: 0.625rem;
padding-bottom: 0.625rem;
}
.py-3\.5{
padding-top: 0.875rem;
padding-bottom: 0.875rem;
}
.py-modal{
padding-top: 610px;
padding-bottom: 610px;
}
.py-5\.5{
padding-top: 1.30rem;
padding-bottom: 1.30rem;
}
.py-9\.5{
padding-top: 2.45rem;
padding-bottom: 2.45rem;
}
.py-12\.5{
padding-top: 3.2rem;
padding-bottom: 3.2rem;
}
.py-32\.5{
padding-top: 8.5rem;
padding-bottom: 8.5rem;
}
.pt-0{
padding-top: 0px;
}
.pt-1{
padding-top: 0.25rem;
}
.pt-2{
padding-top: 0.5rem;
}
.pt-3{
padding-top: 0.75rem;
}
.pt-4{
padding-top: 1rem;
}
.pt-5{
padding-top: 1.25rem;
}
.pt-6{
padding-top: 1.5rem;
}
.pt-7{
padding-top: 1.75rem;
}
.pt-8{
padding-top: 2rem;
}
.pt-9{
padding-top: 2.25rem;
}
.pt-10{
padding-top: 2.5rem;
}
.pt-11{
padding-top: 2.75rem;
}
.pt-12{
padding-top: 3rem;
}
.pt-14{
padding-top: 3.5rem;
}
.pt-16{
padding-top: 4rem;
}
.pt-20{
padding-top: 5rem;
}
.pt-24{
padding-top: 6rem;
}
.pt-28{
padding-top: 7rem;
}
.pt-31{
padding-top: 30.938rem;
}
.pt-32{
padding-top: 8rem;
}
.pt-33{
padding-top: 8.5rem;
}
.pt-36{
padding-top: 9rem;
}
.pt-37{
padding-top: 9.25rem;
}
.pt-40{
padding-top: 10rem;
}
.pt-44{
padding-top: 11rem;
}
.pt-46{
padding-top: 46.875rem;
}
.pt-48{
padding-top: 12rem;
}
.pt-52{
padding-top: 13rem;
}
.pt-56{
padding-top: 14rem;
}
.pt-60{
padding-top: 15rem;
}
.pt-64{
padding-top: 16rem;
}
.pt-72{
padding-top: 18rem;
}
.pt-80{
padding-top: 20rem;
}
.pt-96{
padding-top: 24rem;
}
.pt-px{
padding-top: 1px;
}
.pt-0\.5{
padding-top: 0.125rem;
}
.pt-1\.5{
padding-top: 0.375rem;
}
.pt-2\.5{
padding-top: 0.625rem;
}
.pt-3\.5{
padding-top: 0.875rem;
}
.pt-modal{
padding-top: 610px;
}
.pt-5\.5{
padding-top: 1.30rem;
}
.pt-9\.5{
padding-top: 2.45rem;
}
.pt-12\.5{
padding-top: 3.2rem;
}
.pt-32\.5{
padding-top: 8.5rem;
}
.pr-0{
padding-right: 0px;
}
.pr-1{
padding-right: 0.25rem;
}
>>>>>>> 7a07a7512ab93e6739daadd733f54945390e6a14
.pr-2{ .pr-2{
padding-right: 0.5rem; padding-right: 0.5rem;
} }

17
public/css/print.css vendored
View File

@ -68,11 +68,26 @@ html[dir='rtl'] .right-column {
margin-top: 8px; margin-top: 8px;
} }
.print-template .ml-1 html[dir='ltr'] .print-template .ml-1
{ {
margin-left: 8px; 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 .pl-head
{ {
padding-left: 18px; padding-left: 18px;

Binary file not shown.

View File

@ -20,12 +20,12 @@ return [
'form_description' => [ '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.', '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' => [ 'no_records' => [
'transactions' => 'Es gibt noch keine Transaktionen 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. Erstellen Sie jetzt eine neue.', 'transfers' => 'Es gibt noch keine Überweisung nach/von diesem Konto. Erfassen Sie jetzt eine neue.',
], ],
]; ];

View File

@ -19,11 +19,13 @@ return [
'total' => 'Gesamt', 'total' => 'Gesamt',
'item_name' => 'Artikel-Name|Artikel-Namen', 'item_name' => 'Artikel-Name|Artikel-Namen',
'recurring_bills' => 'Wiederkehrende Rechnung|Wiederkehrende Rechnungen',
'show_discount' => ':discount% Rabatt', 'show_discount' => ':discount% Rabatt',
'add_discount' => 'füge Rabatt hinzu', 'add_discount' => 'füge Rabatt hinzu',
'discount_desc' => 'der Zwischensumme', 'discount_desc' => 'der Zwischensumme',
'payment_made' => 'Zahlung erfolgt',
'payment_due' => 'Fälligkeit der Zahlung', 'payment_due' => 'Fälligkeit der Zahlung',
'amount_due' => 'Fälliger Betrag', 'amount_due' => 'Fälliger Betrag',
'paid' => 'Bezahlt', 'paid' => 'Bezahlt',
@ -39,6 +41,11 @@ return [
'receive_bill' => 'Rechnung erhalten', 'receive_bill' => 'Rechnung erhalten',
'make_payment' => 'Zahlung vornehmen', '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' => [ 'messages' => [
'draft' => 'Dies ist eine Rechnungs-<b>Vorschau</b>. Die Rechnung erscheint in den Diagrammen nachdem sie als erhalten markiert wurde.', 'draft' => 'Dies ist eine Rechnungs-<b>Vorschau</b>. Die Rechnung erscheint in den Diagrammen nachdem sie als erhalten markiert wurde.',

View File

@ -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?', '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.',
],
]; ];

View 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.',
],
];

View File

@ -1,6 +1,7 @@
<?php <?php
return [ return [
'AF' => 'Afghanistan', 'AF' => 'Afghanistan',
'AX' => 'Ålandinseln', 'AX' => 'Ålandinseln',
'AL' => 'Albanien', 'AL' => 'Albanien',
@ -10,7 +11,7 @@ return [
'AO' => 'Angola', 'AO' => 'Angola',
'AI' => 'Anguilla', 'AI' => 'Anguilla',
'AQ' => 'Antarktis', 'AQ' => 'Antarktis',
'AG' => 'Antigua und Barbuda', 'AG' => 'Antigua & Barbuda',
'AR' => 'Argentinien', 'AR' => 'Argentinien',
'AM' => 'Armenien', 'AM' => 'Armenien',
'AW' => 'Aruba', 'AW' => 'Aruba',
@ -119,6 +120,7 @@ return [
'KZ' => 'Kasachstan', 'KZ' => 'Kasachstan',
'KE' => 'Kenia', 'KE' => 'Kenia',
'KI' => 'Kiribati', 'KI' => 'Kiribati',
'XK' => 'Kosovo',
'KW' => 'Kuwait', 'KW' => 'Kuwait',
'KG' => 'Kirgisistan', 'KG' => 'Kirgisistan',
'LA' => 'Laos', 'LA' => 'Laos',
@ -250,4 +252,5 @@ return [
'YE' => 'Jemen', 'YE' => 'Jemen',
'ZM' => 'Sambia', 'ZM' => 'Sambia',
'ZW' => 'Simbabwe', 'ZW' => 'Simbabwe',
]; ];

View File

@ -3,7 +3,7 @@
return [ return [
'error' => [ '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!', '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!', 'disable_last' => 'Fehler: Das letzte Dashboard kann nicht deaktiviert werden. Bitte erstellen Sie zuerst ein neues Dashboard!',
], ],

View File

@ -5,7 +5,7 @@ return [
'edit_columns' => 'Spalten bearbeiten', 'edit_columns' => 'Spalten bearbeiten',
'empty_items' => 'Sie haben keine Artikel hinzugefügt.', 'empty_items' => 'Sie haben keine Artikel hinzugefügt.',
'grand_total' => 'Gesamtbetrag', 'grand_total' => 'Gesamtbetrag',
'accept_payment_online' => 'Online Zahlungen akzeptieren', 'accept_payment_online' => 'Onlinezahlungen akzeptieren',
'transaction' => 'Eine Zahlung über :amount wurde mit :account getätigt.', 'transaction' => 'Eine Zahlung über :amount wurde mit :account getätigt.',
'billing' => 'Abrechnung', 'billing' => 'Abrechnung',
'advanced' => 'Erweitert', 'advanced' => 'Erweitert',

View File

@ -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}', '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' => [ 'invoice_payment_customer' => [
'subject' => 'Zahlung für Rechnung {invoice_number} erhalten', '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}', '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}', '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' => [ 'payment_received_customer' => [
'subject' => '{revenue_date} Zahlung erstellt', 'subject' => 'Deine Quittung von {company_name}',
'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}', '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' => [ 'payment_made_vendor' => [
'subject' => '{revenue_date} Zahlung erstellt', 'subject' => 'Zahlung erfolgt durch {company_name}',
'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}', '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}',
], ],
]; ];

View File

@ -17,7 +17,9 @@ return [
'message' => [ 'message' => [
'403' => 'Sie können auf diese Seite nicht zugreifen.', '403' => 'Sie können auf diese Seite nicht zugreifen.',
'404' => 'Wir konnten die gesuchte Seite nicht finden.', '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.', '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.',
], ],
]; ];

View File

@ -7,7 +7,7 @@ return [
'link' => 'https://akaunting.com', 'link' => 'https://akaunting.com',
'software' => 'Kostenlose Buchhaltungssoftware', 'software' => 'Kostenlose Buchhaltungssoftware',
'powered_by' => 'Zur Verfügung gestellt von', 'powered_by' => 'Zur Verfügung gestellt von',
'tag_line' => 'Senden Sie Rechnungen, verfolgen Sie Ausgaben und automatisieren Sie Abrechnung mit Akaunting. :get_started_url', 'tag_line' => 'Senden Sie Rechnungen, verfolgen Sie Ausgaben und automatisieren Sie die Abrechnung mit Akaunting. :get_started_url',
'get_started' => 'Los geht\'s', 'get_started' => 'Erste Schritte',
]; ];

View File

@ -43,4 +43,8 @@ return [
'connection' => 'Fehler: Es konnte keine Verbindung zur Datenbank hergestellt werden! Stellen Sie sicher, dass die Angaben korrekt sind.', '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.',
],
]; ];

View File

@ -6,28 +6,28 @@ return [
'invoices' => 'Rechnungen', 'invoices' => 'Rechnungen',
'payments' => 'Zahlungen', 'payments' => 'Zahlungen',
'payment_received' => 'Zahlung eingegangen, vielen Dank.', 'payment_received' => 'Zahlung eingegangen, vielen Dank.',
'create_your_invoice' => 'Erstellen Sie jetzt Ihre eigene Rechnung kostenlos', 'create_your_invoice' => 'Erstellen Sie jetzt Ihre eigene Rechnung — es ist kostenlos',
'get_started' => 'Kostenlos starten', 'get_started' => 'Kostenlos loslegen',
'billing_address' => 'Rechnungensadresse', 'billing_address' => 'Rechnungsadresse',
'see_all_details' => 'Alle Kontodetails anzeigen', 'see_all_details' => 'Alle Kontodetails anzeigen',
'all_payments' => 'Anmelden, um alle Zahlungen anzuzeigen', 'all_payments' => 'Anmelden, um alle Zahlungen anzuzeigen',
'received_date' => 'Empfangsdatum', 'received_date' => 'Eingangsdatum',
'last_payment' => [ 'last_payment' => [
'title' => 'Letzte Zahlung', 'title' => 'Letzte Zahlung',
'description' => 'Sie haben diese Zahlung am :date gemacht', 'description' => 'Sie haben diese Zahlung am :date geleistet',
'not_payment' => 'Sie haben noch keine Zahlung getätigt.', 'not_payment' => 'Sie haben noch keine Zahlung geleistet.',
], ],
'outstanding_balance' => [ 'outstanding_balance' => [
'title' => 'Ausstehender Saldo', 'title' => 'Ausstehender Saldo',
'description' => 'Ihr ausstehender Kontostand ist:', 'description' => 'Ihr ausstehender Saldo ist:',
'not_payment' => 'Sie haben noch kein ausstehendes Guthaben.', 'not_payment' => 'Sie haben noch kein ausstehendes Guthaben.',
], ],
'latest_invoices' => [ 'latest_invoices' => [
'title' => 'Neueste Rechnungen', '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.', 'no_data' => 'Keine Rechnungen vorhanden.',
], ],
@ -39,7 +39,7 @@ return [
'payment_history' => [ 'payment_history' => [
'title' => 'Zahlungsverlauf', '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.', 'invoice_description'=> ':date - Sie haben :amount für die Rechnungsnummer :invoice_number bezahlt.',
'no_data' => 'Sie haben noch keinen Zahlungsverlauf.', 'no_data' => 'Sie haben noch keinen Zahlungsverlauf.',

View File

@ -14,5 +14,9 @@ return [
'cleared_amount' => 'Ausgeglichener Betrag', 'cleared_amount' => 'Ausgeglichener Betrag',
'deposit' => 'Einzahlung', 'deposit' => 'Einzahlung',
'withdrawal' => 'Auszahlung', 'withdrawal' => 'Auszahlung',
'reconciled_amount' => 'Abgeglichen',
'in_progress' => 'In Bearbeitung',
'save_draft' => 'Als Entwurf speichern',
'irreconcilable' => 'Nicht abgleichbar',
]; ];

View File

@ -9,8 +9,8 @@ return [
], ],
'no_records' => [ 'no_records' => [
'bills' => 'Sie haben noch keine Rechnung von diesem Kreditor erhalten. Erstellen Sie jetzt eine neue Rechnung.', '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. Erstellen Sie jetzt eine neue.', 'transactions' => 'Es gibt noch keine Transaktionen zu diesem Kreditor. Erfassen Sie jetzt eine neue.',
], ],
]; ];

View File

@ -17,18 +17,18 @@ return [
'description' => [ 'description' => [
'receivables' => 'Betrag, den Sie noch von Ihren Kunden erhalten müssen', 'receivables' => 'Betrag, den Sie noch von Ihren Kunden erhalten müssen',
'payables' => 'Betrag, den Sie noch an Ihren Kreditoren bezahlen müssen', 'payables' => 'Betrag, den Sie noch an Ihre Kreditoren bezahlen müssen',
'cash_flow' => 'Geld, das in Ihr Unternehmen ein- und ausgeht', 'cash_flow' => 'Bargeld, das in Ihr Unternehmen ein- und ausgeht',
'profit_loss' => 'Einnahmen und Ausgaben einschließlich unbezahlter Rechnungen', 'profit_loss' => 'Einnahmen und Ausgaben einschließlich unbezahlter Rechnungen',
'expenses_by_category' => 'Top-Ausgaben in verschiedenen Kategorien', 'expenses_by_category' => 'Top-Ausgaben in verschiedenen Kategorien',
'account_balance' => 'Aktueller Kontostand Ihrer Bankkonten', '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' => [ 'periods' => [
'overdue_1_30' => '1-30 Tage verspätet', 'overdue_1_30' => '1-30 Tage überfällig',
'overdue_30_60' => '30-60 Tage verspätet', 'overdue_30_60' => '30-60 Tage überfällig',
'overdue_60_90' => '60-90 Tage verspätet', 'overdue_60_90' => '60-90 Tage überfällig',
'overdue_90_un' => '> 90 Tage verspätet', 'overdue_90_un' => '> 90 Tage überfällig',
], ],
]; ];

View File

@ -75,7 +75,7 @@ return [
'export_failed' => [ 'export_failed' => [
'title' => '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' => [ 'new_apps' => [
'title' => 'New App', 'title' => 'New App',

View File

@ -75,7 +75,7 @@ return [
'export_failed' => [ 'export_failed' => [
'title' => 'L\'exportation a échoué', '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' => [ 'new_apps' => [
'title' => 'Nouvelle application', 'title' => 'Nouvelle application',

View File

@ -116,15 +116,27 @@
<x-show.summary.right> <x-show.summary.right>
@stack('summary_incoming_start') @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_incoming_end')
@stack('summary_outgoing_start') @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_outgoing_end')
@stack('summary_current_start') @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') @stack('summary_current_end')
</x-show.summary.right> </x-show.summary.right>
</x-show.summary> </x-show.summary>

View File

@ -20,14 +20,16 @@
<x-index.summary> <x-index.summary>
<x-slot name="first" <x-slot name="first"
href="{{ route('reconciliations.index', ['search' => 'reconciled:1']) }}" 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') }}" title="{{ trans('reconciliations.reconciled_amount') }}"
tooltip="{{ $summary_amounts['amount_exact'] }}"
></x-slot> ></x-slot>
<x-slot name="second" <x-slot name="second"
href="{{ route('reconciliations.index', ['search' => 'reconciled:0']) }}" 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') }}" title="{{ trans('reconciliations.in_progress') }}"
tooltip="{{ $summary_amounts['in_progress_exact'] }}"
></x-slot> ></x-slot>
</x-index.summary> </x-index.summary>

View File

@ -44,21 +44,24 @@
<x-index.summary> <x-index.summary>
<x-slot name="first" <x-slot name="first"
href="{{ route('transactions.index', ['search' => 'type:income']) }}" 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) }}" title="{{ trans_choice('general.incomes', 1) }}"
tooltip="{{ $summary_amounts['incoming_exact'] }}"
divider="remove" divider="remove"
></x-slot> ></x-slot>
<x-slot name="second" <x-slot name="second"
href="{{ route('transactions.index', ['search' => 'type:expense']) }}" 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) }}" title="{{ trans_choice('general.expenses', 2) }}"
tooltip="{{ $summary_amounts['expense_exact'] }}"
divider="drag_handle" divider="drag_handle"
></x-slot> ></x-slot>
<x-slot name="third" <x-slot name="third"
amount="{{ money($totals['profit'], setting('default.currency'), true) }}" amount="{{ $summary_amounts['profit_for_humans'] }}"
title="{{ trans_choice('general.profits', 1) }}" title="{{ trans_choice('general.profits', 1) }}"
tooltip="{{ $summary_amounts['profit_exact'] }}"
class="cursor-default" class="cursor-default"
></x-slot> ></x-slot>
</x-index.summary> </x-index.summary>

View File

@ -30,19 +30,31 @@
<x-show.summary.right> <x-show.summary.right>
@stack('summary_overdue_start') @stack('summary_overdue_start')
@if (! $hideOverdue) @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 @endif
@stack('summary_overdue_end') @stack('summary_overdue_end')
@stack('summary_open_start') @stack('summary_open_start')
@if (! $hideOpen) @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 @endif
@stack('summary_open_end') @stack('summary_open_end')
@stack('summary_paid_start') @stack('summary_paid_start')
@if (! $hidePaid) @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 @endif
@stack('summary_paid_end') @stack('summary_paid_end')
</x-show.summary.right> </x-show.summary.right>

View File

@ -86,7 +86,7 @@
<div class="invoice-classic-inline-frame text-center" style="border: 1px solid {{ $backgroundColor }}"> <div class="invoice-classic-inline-frame text-center" style="border: 1px solid {{ $backgroundColor }}">
@stack('invoice_number_input_start') @stack('invoice_number_input_start')
@if (! $hideDocumentNumber) @if (! $hideDocumentNumber)
<div class="text small-text text-semibold mt-classic"> <div class="text small-text font-semibold mt-classic">
<span> <span>
{{ trans($textDocumentNumber) }}: {{ trans($textDocumentNumber) }}:
</span> </span>
@ -111,7 +111,7 @@
<div class="col-60"> <div class="col-60">
<div class="text p-index-left"> <div class="text p-index-left">
@if (! $hideContactInfo) @if (! $hideContactInfo)
<p class="text-semibold mb-0"> <p class="font-semibold mb-0">
{{ trans($textContactInfo) }} {{ trans($textContactInfo) }}
</p> </p>
@endif @endif
@ -173,7 +173,7 @@
@if (! $hideOrderNumber) @if (! $hideOrderNumber)
@if ($document->order_number) @if ($document->order_number)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textOrderNumber) }}: {{ trans($textOrderNumber) }}:
</span> </span>
@ -188,7 +188,7 @@
@stack('issued_at_input_start') @stack('issued_at_input_start')
@if (! $hideIssuedAt) @if (! $hideIssuedAt)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textIssuedAt) }}: {{ trans($textIssuedAt) }}:
</span> </span>
@ -202,7 +202,7 @@
@stack('due_at_input_start') @stack('due_at_input_start')
@if (! $hideDueAt) @if (! $hideDueAt)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textDueAt) }}: {{ trans($textDueAt) }}:
</span> </span>
@ -216,7 +216,7 @@
@foreach ($document->totals_sorted as $total) @foreach ($document->totals_sorted as $total)
@if ($total->code == 'total') @if ($total->code == 'total')
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($total->name) }}: {{ trans($total->name) }}:
</span> </span>
@ -239,7 +239,7 @@
<tr> <tr>
@stack('name_th_start') @stack('name_th_start')
@if (! $hideItems || (! $hideName && ! $hideDescription)) @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) }} {{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
</th> </th>
@endif @endif
@ -247,7 +247,7 @@
@stack('quantity_th_start') @stack('quantity_th_start')
@if (! $hideQuantity) @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) }} {{ trans($textQuantity) }}
</th> </th>
@endif @endif
@ -255,7 +255,7 @@
@stack('price_th_start') @stack('price_th_start')
@if (! $hidePrice) @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) }} {{ trans($textPrice) }}
</th> </th>
@endif @endif
@ -264,7 +264,7 @@
@if (! $hideDiscount) @if (! $hideDiscount)
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both'])) @if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
@stack('discount_td_start') @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') }} {{ trans('invoices.discount') }}
</th> </th>
@stack('discount_td_end') @stack('discount_td_end')
@ -273,7 +273,7 @@
@stack('total_th_start') @stack('total_th_start')
@if (! $hideAmount) @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) }} {{ trans($textAmount) }}
</th> </th>
@endif @endif
@ -333,7 +333,7 @@
@if ($total->code != 'total') @if ($total->code != 'total')
@stack($total->code . '_total_tr_start') @stack($total->code . '_total_tr_start')
<div class="text border-bottom-dashed py-1"> <div class="text border-bottom-dashed py-1">
<strong class="float-left text-semibold"> <strong class="float-left font-semibold">
{{ trans($total->title) }}: {{ trans($total->title) }}:
</strong> </strong>
@ -346,7 +346,7 @@
@if ($document->paid) @if ($document->paid)
@stack('paid_total_tr_start') @stack('paid_total_tr_start')
<div class="text border-bottom-dashed py-1"> <div class="text border-bottom-dashed py-1">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans('invoices.paid') }}: {{ trans('invoices.paid') }}:
</span> </span>
@ -359,7 +359,7 @@
@stack('grand_total_tr_start') @stack('grand_total_tr_start')
<div class="text border-bottom-dashed py-1"> <div class="text border-bottom-dashed py-1">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans($total->name) }}: {{ trans($total->name) }}:
</span> </span>

View File

@ -76,7 +76,7 @@
<div class="col-60"> <div class="col-60">
<div class="text p-index-left"> <div class="text p-index-left">
@if (! $hideContactInfo) @if (! $hideContactInfo)
<p class="text-semibold mb-0">{{ trans($textContactInfo) }}</p> <p class="font-semibold mb-0">{{ trans($textContactInfo) }}</p>
@endif @endif
@stack('name_input_start') @stack('name_input_start')
@ -200,7 +200,7 @@
<tr> <tr>
@stack('name_th_start') @stack('name_th_start')
@if (! $hideItems || (! $hideName && ! $hideDescription)) @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) }} {{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
</th> </th>
@endif @endif
@ -208,7 +208,7 @@
@stack('quantity_th_start') @stack('quantity_th_start')
@if (! $hideQuantity) @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) }} {{ trans($textQuantity) }}
</th> </th>
@endif @endif
@ -216,7 +216,7 @@
@stack('price_th_start') @stack('price_th_start')
@if (! $hidePrice) @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) }} {{ trans($textPrice) }}
</th> </th>
@endif @endif
@ -225,7 +225,7 @@
@if (! $hideDiscount) @if (! $hideDiscount)
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both'])) @if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
@stack('discount_td_start') @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') }} {{ trans('invoices.discount') }}
</th> </th>
@stack('discount_td_end') @stack('discount_td_end')
@ -234,7 +234,7 @@
@stack('total_th_start') @stack('total_th_start')
@if (! $hideAmount) @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) }} {{ trans($textAmount) }}
</th> </th>
@endif @endif
@ -277,7 +277,7 @@
<div class="text p-index-left"> <div class="text p-index-left">
@stack('notes_input_start') @stack('notes_input_start')
@if ($document->notes) @if ($document->notes)
<p class="text-semibold"> <p class="font-semibold">
{{ trans_choice('general.notes', 2) }} {{ trans_choice('general.notes', 2) }}
</p> </p>
@ -292,7 +292,7 @@
@if ($total->code != 'total') @if ($total->code != 'total')
@stack($total->code . '_total_tr_start') @stack($total->code . '_total_tr_start')
<div class="text border-bottom-1 py-1"> <div class="text border-bottom-1 py-1">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans($total->title) }}: {{ trans($total->title) }}:
</span> </span>
@ -305,7 +305,7 @@
@if ($document->paid) @if ($document->paid)
@stack('paid_total_tr_start') @stack('paid_total_tr_start')
<div class="text border-bottom-1 py-1"> <div class="text border-bottom-1 py-1">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans('invoices.paid') }}: {{ trans('invoices.paid') }}:
</span> </span>
@ -318,7 +318,7 @@
@stack('grand_total_tr_start') @stack('grand_total_tr_start')
<div class="text border-bottom-1 py-1"> <div class="text border-bottom-1 py-1">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans($total->name) }}: {{ trans($total->name) }}:
</span> </span>

View File

@ -9,7 +9,7 @@
@if (! $hideDescription) @if (! $hideDescription)
@if (! empty($item->description)) @if (! empty($item->description))
<span class="small-text"> <span class="small-text">
{!! \Illuminate\Support\Str::limit($item->description, 500) !!} {!! \Illuminate\Support\Str::limit(nl2br($item->description), 500) !!}
</span> </span>
@endif @endif
@endif @endif

View File

@ -82,7 +82,7 @@
<div class="col-50"> <div class="col-50">
<div class="text p-modern"> <div class="text p-modern">
@if (! $hideContactInfo) @if (! $hideContactInfo)
<p class="text-semibold mb-0"> <p class="font-semibold mb-0">
{{ trans($textContactInfo) }} {{ trans($textContactInfo) }}
</p> </p>
@endif @endif
@ -145,7 +145,7 @@
@if (! $hideOrderNumber) @if (! $hideOrderNumber)
@if ($document->order_number) @if ($document->order_number)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textOrderNumber) }}: {{ trans($textOrderNumber) }}:
</span> </span>
@ -160,7 +160,7 @@
@stack('invoice_number_input_start') @stack('invoice_number_input_start')
@if (! $hideDocumentNumber) @if (! $hideDocumentNumber)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textDocumentNumber) }}: {{ trans($textDocumentNumber) }}:
</span> </span>
@ -174,7 +174,7 @@
@stack('issued_at_input_start') @stack('issued_at_input_start')
@if (! $hideIssuedAt) @if (! $hideIssuedAt)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textIssuedAt) }}: {{ trans($textIssuedAt) }}:
</span> </span>
@ -188,7 +188,7 @@
@stack('due_at_input_start') @stack('due_at_input_start')
@if (! $hideDueAt) @if (! $hideDueAt)
<p class="mb-0"> <p class="mb-0">
<span class="text-semibold spacing"> <span class="font-semibold spacing">
{{ trans($textDueAt) }}: {{ trans($textDueAt) }}:
</span> </span>
@ -211,7 +211,7 @@
<tr> <tr>
@stack('name_th_start') @stack('name_th_start')
@if (! $hideItems || (! $hideName && ! $hideDescription)) @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) }} {{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
</th> </th>
@endif @endif
@ -219,7 +219,7 @@
@stack('quantity_th_start') @stack('quantity_th_start')
@if (! $hideQuantity) @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) }} {{ trans($textQuantity) }}
</th> </th>
@endif @endif
@ -227,7 +227,7 @@
@stack('price_th_start') @stack('price_th_start')
@if (! $hidePrice) @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) }} {{ trans($textPrice) }}
</th> </th>
@endif @endif
@ -236,7 +236,7 @@
@if (! $hideDiscount) @if (! $hideDiscount)
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both'])) @if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
@stack('discount_td_start') @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') }} {{ trans('invoices.discount') }}
</th> </th>
@stack('discount_td_end') @stack('discount_td_end')
@ -245,7 +245,7 @@
@stack('total_th_start') @stack('total_th_start')
@if (! $hideAmount) @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) }} {{ trans($textAmount) }}
</th> </th>
@endif @endif
@ -288,7 +288,7 @@
<div class="text p-index-right p-modern"> <div class="text p-index-right p-modern">
@stack('notes_input_start') @stack('notes_input_start')
@if ($document->notes) @if ($document->notes)
<p class="text-semibold"> <p class="font-semibold">
{{ trans_choice('general.notes', 2) }} {{ trans_choice('general.notes', 2) }}
</p> </p>
@ -303,7 +303,7 @@
@if ($total->code != 'total') @if ($total->code != 'total')
@stack($total->code . '_total_tr_start') @stack($total->code . '_total_tr_start')
<div class="text"> <div class="text">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans($total->title) }}: {{ trans($total->title) }}:
</span> </span>
@ -316,7 +316,7 @@
@if ($document->paid) @if ($document->paid)
@stack('paid_total_tr_start') @stack('paid_total_tr_start')
<div class="text"> <div class="text">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans('invoices.paid') }}: {{ trans('invoices.paid') }}:
</span> </span>
@ -329,7 +329,7 @@
@stack('grand_total_tr_start') @stack('grand_total_tr_start')
<div class="text"> <div class="text">
<span class="float-left text-semibold"> <span class="float-left font-semibold">
{{ trans($total->name) }}: {{ trans($total->name) }}:
</span> </span>

View File

@ -4,7 +4,7 @@
</h2> </h2>
@if (! empty($description)) @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 !!} {!! $description !!}
</span> </span>
@endif @endif

View 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

View File

@ -4,7 +4,7 @@
</h2> </h2>
@if (!empty($description)) @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 !!} {!! $description !!}
</span> </span>
@endif @endif

View File

@ -5,7 +5,7 @@
@foreach ($items as $item) @foreach ($items as $item)
<div @class(['w-1/2 sm:w-1/3 text-center'])> <div @class(['w-1/2 sm:w-1/3 text-center'])>
@if (! empty($item['tooltip'])) @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'] !!}">
<x-link href="{{ $item['href'] }}" class="group" override="class"> <x-link href="{{ $item['href'] }}" class="group" override="class">
@php $text_color = (! empty($item['text_color'])) ? $item['text_color'] : 'text-purple group-hover:text-purple-700'; @endphp @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'])> <div @class(['relative text-xl sm:text-6xl', $text_color, 'mb-2'])>

View File

@ -6,7 +6,7 @@
</h2> </h2>
@if (! empty($description)) @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 !!} {!! $description !!}
</span> </span>
@endif @endif

View File

@ -5,7 +5,7 @@
@foreach ($items as $item) @foreach ($items as $item)
<div @class(['w-1/2 sm:w-1/3 text-center'])> <div @class(['w-1/2 sm:w-1/3 text-center'])>
@if (! empty($item['tooltip'])) @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'] !!}">
<x-link href="{{ $item['href'] }}" class="group" override="class"> <x-link href="{{ $item['href'] }}" class="group" override="class">
@php $text_color = (! empty($item['text_color'])) ? $item['text_color'] : 'text-purple group-hover:text-purple-700'; @endphp @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'])> <div @class(['relative text-xl sm:text-6xl', $text_color, 'mb-2'])>

View File

@ -11,7 +11,7 @@
</x-button.hover> </x-button.hover>
</span> </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') }} {{ trans('transactions.slider.attachments') }}
</div> </div>

View File

@ -8,7 +8,7 @@
</x-button.hover> </x-button.hover>
</span> </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()]) !!} {!! trans('transactions.slider.children', ['count' => $transaction->children()->count()]) !!}
</div> </div>

View File

@ -10,7 +10,7 @@
</x-button.hover> </x-button.hover>
</span> </span>
<div class="text-black-400 text-sm"> <div class="text-black-400 text-sm flex gap-x-1 mt-1">
@if ($transaction->isRecurringTransaction()) @if ($transaction->isRecurringTransaction())
{!! trans('transactions.slider.create_recurring', ['user' => $transaction->owner->name, 'date' => $created_date]) !!} {!! trans('transactions.slider.create_recurring', ['user' => $transaction->owner->name, 'date' => $created_date]) !!}
@else @else

View File

@ -13,7 +13,7 @@
</x-button.hover> </x-button.hover>
</span> </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]) !!} {!! trans('transactions.slider.schedule', ['frequency' => $frequency, 'interval' => $transaction->recurring->interval, 'date' => $started_date]) !!}
</div> </div>

View File

@ -18,7 +18,7 @@
</span> </span>
@if ($transfer) @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]) !!} {!! trans('transactions.slider.transfer_headline', ['from_account' => $from_account, 'to_account' => $to_account]) !!}
</div> </div>
@endif @endif

View File

@ -19,9 +19,9 @@
<td class="text" style="width: 80%; padding: 0 0 15px 0;"> <td class="text" style="width: 80%; padding: 0 0 15px 0;">
@stack('company_details_start') @stack('company_details_start')
@if (! $hideCompanyName) @if (! $hideCompanyName)
<h2 class="text-semibold text"> <span class="font-semibold text">
{{ setting('company.name') }} {{ setting('company.name') }}
</h2> </span>
@endif @endif
@if (! $hideCompanyAddress) @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;"> <td valign="center" style="width:80%; display:block; float:right; background-color: #55588B; -webkit-print-color-adjust: exact; color:#ffffff; border-radius: 5px;">
<table> <table>
<tr> <tr>
<td valign="center" style="width: 80%; padding:0; font-size: 14px; font-weight:600; color:#ffffff;"> <td valign="center" style="font-size: 14px; color: #ffffff; padding: 0;">
{{ trans($textAmount) }} <span class="ml-2" style="font-weight: 600;">{{ trans($textAmount) }}</span>
</td>
<td valign="center" style="width: 20%; padding:0; font-size: 14px; color:#ffffff;">
@money($transaction->amount, $transaction->currency_code, true) @money($transaction->amount, $transaction->currency_code, true)
</td> </td>
</tr> </tr>