+ {{ setting('company.name') }} -
+ @endif @if (! $hideCompanyAddress) @@ -368,11 +368,8 @@- {{ trans($textAmount) }} - | - -+ | + {{ trans($textAmount) }} @money($transaction->amount, $transaction->currency_code, true) |
diff --git a/app/Abstracts/Listeners/Report.php b/app/Abstracts/Listeners/Report.php
index eee1f4715..e5a02b2cb 100644
--- a/app/Abstracts/Listeners/Report.php
+++ b/app/Abstracts/Listeners/Report.php
@@ -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();
}
diff --git a/app/Abstracts/View/Components/Contacts/Index.php b/app/Abstracts/View/Components/Contacts/Index.php
index a5e591a02..a29b02a00 100644
--- a/app/Abstracts/View/Components/Contacts/Index.php
+++ b/app/Abstracts/View/Components/Contacts/Index.php
@@ -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(),
];
}
diff --git a/app/Abstracts/View/Components/Documents/Index.php b/app/Abstracts/View/Components/Documents/Index.php
index 2fd3cda5d..0fc38f681 100644
--- a/app/Abstracts/View/Components/Documents/Index.php
+++ b/app/Abstracts/View/Components/Documents/Index.php
@@ -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,
];
}
diff --git a/app/Http/Controllers/Banking/Reconciliations.php b/app/Http/Controllers/Banking/Reconciliations.php
index 28fd8f03a..80467a7fc 100644
--- a/app/Http/Controllers/Banking/Reconciliations.php
+++ b/app/Http/Controllers/Banking/Reconciliations.php
@@ -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'));
}
/**
diff --git a/app/Http/Controllers/Banking/Transactions.php b/app/Http/Controllers/Banking/Transactions.php
index b8101a397..56c317bae 100644
--- a/app/Http/Controllers/Banking/Transactions.php
+++ b/app/Http/Controllers/Banking/Transactions.php
@@ -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'
));
}
diff --git a/app/Jobs/Banking/UpdateTransaction.php b/app/Jobs/Banking/UpdateTransaction.php
index 210c8e73e..c1fe79deb 100644
--- a/app/Jobs/Banking/UpdateTransaction.php
+++ b/app/Jobs/Banking/UpdateTransaction.php
@@ -45,5 +45,9 @@ class UpdateTransaction extends Job implements ShouldUpdate
throw new \Exception($message);
}
+
+ if ($this->model->isTransferTransaction()) {
+ throw new \Exception('Unauthorized');
+ }
}
}
diff --git a/app/Traits/DateTime.php b/app/Traits/DateTime.php
index 07a76487a..e6fe60e7c 100644
--- a/app/Traits/DateTime.php
+++ b/app/Traits/DateTime.php
@@ -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';
diff --git a/app/View/Components/Contacts/Show/Content.php b/app/View/Components/Contacts/Show/Content.php
index 03d278578..d5dca21f3 100644
--- a/app/View/Components/Contacts/Show/Content.php
+++ b/app/View/Components/Contacts/Show/Content.php
@@ -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'));
diff --git a/app/View/Components/Form/Group/Account.php b/app/View/Components/Form/Group/Account.php
index bc00fb809..744c98070 100644
--- a/app/View/Components/Form/Group/Account.php
+++ b/app/View/Components/Form/Group/Account.php
@@ -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');
}
diff --git a/app/View/Components/Form/Group/Category.php b/app/View/Components/Form/Group/Category.php
index 6e9e8b6c5..03e089655 100644
--- a/app/View/Components/Form/Group/Category.php
+++ b/app/View/Components/Form/Group/Category.php
@@ -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;
diff --git a/app/View/Components/Form/Group/Contact.php b/app/View/Components/Form/Group/Contact.php
index ef0909a78..58e0d882d 100644
--- a/app/View/Components/Form/Group/Contact.php
+++ b/app/View/Components/Form/Group/Contact.php
@@ -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;
diff --git a/app/View/Components/Form/Group/Currency.php b/app/View/Components/Form/Group/Currency.php
index bd3628826..2ffc0febd 100644
--- a/app/View/Components/Form/Group/Currency.php
+++ b/app/View/Components/Form/Group/Currency.php
@@ -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');
}
diff --git a/app/View/Components/Form/Group/Tax.php b/app/View/Components/Form/Group/Tax.php
index 5f6d5b8ee..7308d6252 100644
--- a/app/View/Components/Form/Group/Tax.php
+++ b/app/View/Components/Form/Group/Tax.php
@@ -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');
diff --git a/composer.lock b/composer.lock
index f77867af4..2d0e86b11 100644
--- a/composer.lock
+++ b/composer.lock
@@ -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"
}
diff --git a/config/firewall.php b/config/firewall.php
index 4bf767a6b..903d2653f 100644
--- a/config/firewall.php
+++ b/config/firewall.php
@@ -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
],
diff --git a/config/language.php b/config/language.php
index 049e2839c..098ba2693 100644
--- a/config/language.php
+++ b/config/language.php
@@ -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'],
],
];
diff --git a/public/css/app.css b/public/css/app.css
index 6d0fe34f9..6dd6cf4fd 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -30676,6 +30676,7 @@ input[type="date"]::-webkit-inner-spin-button,
}
.p-0{
padding: 0px;
+<<<<<<< HEAD
}
.p-1{
padding: 0.25rem;
@@ -31296,6 +31297,628 @@ input[type="date"]::-webkit-inner-spin-button,
.pr-1{
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{
padding-right: 0.5rem;
}
diff --git a/public/css/print.css b/public/css/print.css
index 32e5c5a80..738af5d3e 100644
--- a/public/css/print.css
+++ b/public/css/print.css
@@ -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;
diff --git a/public/files/import/categories.xlsx b/public/files/import/categories.xlsx
index 12e128091..034ed5694 100644
Binary files a/public/files/import/categories.xlsx and b/public/files/import/categories.xlsx differ
diff --git a/resources/lang/de-DE/accounts.php b/resources/lang/de-DE/accounts.php
index af554ae2f..94b061d97 100644
--- a/resources/lang/de-DE/accounts.php
+++ b/resources/lang/de-DE/accounts.php
@@ -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.',
],
];
diff --git a/resources/lang/de-DE/bills.php b/resources/lang/de-DE/bills.php
index d5265fe32..4aaee5ba5 100644
--- a/resources/lang/de-DE/bills.php
+++ b/resources/lang/de-DE/bills.php
@@ -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-Vorschau. Die Rechnung erscheint in den Diagrammen nachdem sie als erhalten markiert wurde.',
diff --git a/resources/lang/de-DE/bulk_actions.php b/resources/lang/de-DE/bulk_actions.php
index ee4491c71..59d829110 100644
--- a/resources/lang/de-DE/bulk_actions.php
+++ b/resources/lang/de-DE/bulk_actions.php
@@ -20,4 +20,7 @@ return [
'unreconcile' => 'Sind Sie sicher das Sie den ausgewählten Datensatz nicht abgleichen möchten?|Sind Sie sicher das Sie die ausgewählten Datensätze nicht abgleichen möchten?',
],
+ 'success' => [
+ 'general' => ':count Eintrag :type.',
+ ],
];
diff --git a/resources/lang/de-DE/categories.php b/resources/lang/de-DE/categories.php
new file mode 100644
index 000000000..d03919cfe
--- /dev/null
+++ b/resources/lang/de-DE/categories.php
@@ -0,0 +1,11 @@
+ 'Einklappen',
+
+ 'form_description' => [
+ 'general' => 'Die Kategorie hilft Ihnen, Ihre Artikel, Einnahmen, Ausgaben und andere Datensätze zu klassifizieren.',
+ ],
+
+];
diff --git a/resources/lang/de-DE/countries.php b/resources/lang/de-DE/countries.php
index f631e9dc2..f20cba3a4 100644
--- a/resources/lang/de-DE/countries.php
+++ b/resources/lang/de-DE/countries.php
@@ -1,6 +1,7 @@
'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',
+
];
diff --git a/resources/lang/de-DE/dashboards.php b/resources/lang/de-DE/dashboards.php
index 9a2800c97..5d8ef4cd3 100644
--- a/resources/lang/de-DE/dashboards.php
+++ b/resources/lang/de-DE/dashboards.php
@@ -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!',
],
diff --git a/resources/lang/de-DE/documents.php b/resources/lang/de-DE/documents.php
index ece968af2..25e2f29cc 100644
--- a/resources/lang/de-DE/documents.php
+++ b/resources/lang/de-DE/documents.php
@@ -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',
diff --git a/resources/lang/de-DE/email_templates.php b/resources/lang/de-DE/email_templates.php
index d67746fd7..fcf67680f 100644
--- a/resources/lang/de-DE/email_templates.php
+++ b/resources/lang/de-DE/email_templates.php
@@ -27,6 +27,11 @@ return [
'body' => 'Hallo,
Basierend auf {customer_name} wiederkehrenden Kreis, {invoice_number} Rechnung wurde automatisch erstellt.
Sie können die Rechnungsdaten unter folgendem Link sehen: {invoice_number}.
Beste Grüße,
{company_name}',
],
+ 'invoice_view_admin' => [
+ 'subject' => 'Rechnung {invoice_number} angesehen',
+ 'body' => 'Hallo,
{customer_name} hat die Rechnung {invoice_number} angesehen.
Sie können die Rechnungsdetails unter folgendem Link einsehen: {invoice_number}.
Mit freundlichen Grüßen
{company_name}',
+ ],
+
'invoice_payment_customer' => [
'subject' => 'Zahlung für Rechnung {invoice_number} erhalten',
'body' => 'Hallo {customer_name},
Vielen Dank für die Zahlung. Sie finden die Zahlungsinformationen unten:
-------------------------------------------------
Betrag: {transaction_total}
Datum: {transaction_paid_date}
Rechnungsnummer: {invoice_number}
-------------------------------------------------
Sie können die Rechnungsdetails immer unter folgendem Link sehen: {invoice_number}.
Zögern Sie nicht, uns für jede Frage zu kontaktieren.
Beste Grüße,
{company_name}',
@@ -47,13 +52,13 @@ return [
'body' => 'Hallo,
Basierend auf {vendor_name} wiederkehrenden Kreis, {bill_number} Rechnung wurde automatisch erstellt.
Sie können die Details der Rechnung unter folgendem Link sehen: {bill_number}.
Beste Grüße,
{company_name}',
],
- 'revenue_new_customer' => [
- 'subject' => '{revenue_date} Zahlung erstellt',
- 'body' => 'Hallo {customer_name},
Wir haben die folgende Zahlung vorbereitet.
Die Zahlungsdetails können Sie dem folgenden Link entnehmen: {revenue_date}.
Bei Fragen stehen wir Ihnen gerne zur Verfügung
Mit freundlichen Grüßen
{company_name}',
+ 'payment_received_customer' => [
+ 'subject' => 'Deine Quittung von {company_name}',
+ 'body' => 'Hallo {contact_name},
Vielen Dank für die Zahlung.
Sie können die Zahlungsdetails unter folgendem Link einsehen: {payment_date}.
Sie können uns gerne kontaktieren bei Fragen.
Mit freundlichen Grüßen
{company_name}',
],
- 'payment_new_vendor' => [
- 'subject' => '{revenue_date} Zahlung erstellt',
- 'body' => 'Hallo {vendor_name},
Wir haben die folgende Zahlung vorbereitet.
Die Zahlungsdetails können Sie dem folgenden Link entnehmen: {payment_date}
Bei Fragen stehen wir Ihnen gerne zur Verfügung
Mit freundlichen Grüßen
{company_name}',
+ 'payment_made_vendor' => [
+ 'subject' => 'Zahlung erfolgt durch {company_name}',
+ 'body' => 'Hallo {contact_name},
wir haben die folgende Zahlung geleistet.
Sie können die Zahlungsdetails unter folgendem Link einsehen: {payment_date}.
Sie können uns gerne kontaktieren bei Fragen.
Mit freundlichen Grüßen
{company_name}',
],
];
diff --git a/resources/lang/de-DE/errors.php b/resources/lang/de-DE/errors.php
index 7232e75be..ca6e9fb75 100644
--- a/resources/lang/de-DE/errors.php
+++ b/resources/lang/de-DE/errors.php
@@ -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.',
],
+
];
diff --git a/resources/lang/de-DE/footer.php b/resources/lang/de-DE/footer.php
index 0f3c21601..02f2e347a 100644
--- a/resources/lang/de-DE/footer.php
+++ b/resources/lang/de-DE/footer.php
@@ -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',
];
diff --git a/resources/lang/de-DE/install.php b/resources/lang/de-DE/install.php
index 59eaa01dc..b4ea20122 100644
--- a/resources/lang/de-DE/install.php
+++ b/resources/lang/de-DE/install.php
@@ -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.',
+ ],
];
diff --git a/resources/lang/de-DE/portal.php b/resources/lang/de-DE/portal.php
index e65d966ae..f8ee643de 100644
--- a/resources/lang/de-DE/portal.php
+++ b/resources/lang/de-DE/portal.php
@@ -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.',
diff --git a/resources/lang/de-DE/reconciliations.php b/resources/lang/de-DE/reconciliations.php
index 81b04e79e..37e35c34e 100644
--- a/resources/lang/de-DE/reconciliations.php
+++ b/resources/lang/de-DE/reconciliations.php
@@ -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',
];
diff --git a/resources/lang/de-DE/vendors.php b/resources/lang/de-DE/vendors.php
index f29aa4a42..68df61385 100644
--- a/resources/lang/de-DE/vendors.php
+++ b/resources/lang/de-DE/vendors.php
@@ -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.',
],
];
diff --git a/resources/lang/de-DE/widgets.php b/resources/lang/de-DE/widgets.php
index 3bfc75bfb..c11468633 100644
--- a/resources/lang/de-DE/widgets.php
+++ b/resources/lang/de-DE/widgets.php
@@ -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 , indem Sie Ihre Bankkonten verbinden',
+ 'bank_feeds' => 'Importieren Sie Ihre Transaktionen automatisch in Akaunting, 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',
],
];
diff --git a/resources/lang/en-AU/notifications.php b/resources/lang/en-AU/notifications.php
index d2dacfdd2..9c34b05fd 100644
--- a/resources/lang/en-AU/notifications.php
+++ b/resources/lang/en-AU/notifications.php
@@ -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',
diff --git a/resources/lang/fr-FR/notifications.php b/resources/lang/fr-FR/notifications.php
index 948068895..687a0dad3 100644
--- a/resources/lang/fr-FR/notifications.php
+++ b/resources/lang/fr-FR/notifications.php
@@ -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',
diff --git a/resources/views/banking/accounts/show.blade.php b/resources/views/banking/accounts/show.blade.php
index 2ac288c89..6bc6858de 100644
--- a/resources/views/banking/accounts/show.blade.php
+++ b/resources/views/banking/accounts/show.blade.php
@@ -116,15 +116,27 @@
+
{{ trans($textContactInfo) }}
@endif @@ -173,7 +173,7 @@ @if (! $hideOrderNumber) @if ($document->order_number)
-
+
{{ trans($textOrderNumber) }}:
@@ -188,7 +188,7 @@
@stack('issued_at_input_start')
@if (! $hideIssuedAt)
-
+
{{ trans($textIssuedAt) }}:
@@ -202,7 +202,7 @@
@stack('due_at_input_start')
@if (! $hideDueAt)
-
+
{{ trans($textDueAt) }}:
@@ -216,7 +216,7 @@
@foreach ($document->totals_sorted as $total)
@if ($total->code == 'total')
-
+
{{ trans($total->name) }}:
@@ -239,7 +239,7 @@
{{ trans($textContactInfo) }} {{ trans($textContactInfo) }}
+
{{ trans_choice('general.notes', 2) }}
+
{{ trans($textContactInfo) }}
-
+
{{ trans($textOrderNumber) }}:
@@ -160,7 +160,7 @@
@stack('invoice_number_input_start')
@if (! $hideDocumentNumber)
-
+
{{ trans($textDocumentNumber) }}:
@@ -174,7 +174,7 @@
@stack('issued_at_input_start')
@if (! $hideIssuedAt)
-
+
{{ trans($textIssuedAt) }}:
@@ -188,7 +188,7 @@
@stack('due_at_input_start')
@if (! $hideDueAt)
-
+
{{ trans($textDueAt) }}:
@@ -211,7 +211,7 @@
+
{{ trans_choice('general.notes', 2) }}
@stack('name_th_start')
@if (! $hideItems || (! $hideName && ! $hideDescription))
-
+
{{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
@endif
@@ -247,7 +247,7 @@
@stack('quantity_th_start')
@if (! $hideQuantity)
-
+
{{ trans($textQuantity) }}
@endif
@@ -255,7 +255,7 @@
@stack('price_th_start')
@if (! $hidePrice)
-
+
{{ trans($textPrice) }}
@endif
@@ -264,7 +264,7 @@
@if (! $hideDiscount)
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
@stack('discount_td_start')
-
+
{{ trans('invoices.discount') }}
@stack('discount_td_end')
@@ -273,7 +273,7 @@
@stack('total_th_start')
@if (! $hideAmount)
-
+
{{ trans($textAmount) }}
@endif
@@ -333,7 +333,7 @@
@if ($total->code != 'total')
@stack($total->code . '_total_tr_start')
@stack('name_th_start')
@if (! $hideItems || (! $hideName && ! $hideDescription))
-
+
{{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
@endif
@@ -208,7 +208,7 @@
@stack('quantity_th_start')
@if (! $hideQuantity)
-
+
{{ trans($textQuantity) }}
@endif
@@ -216,7 +216,7 @@
@stack('price_th_start')
@if (! $hidePrice)
-
+
{{ trans($textPrice) }}
@endif
@@ -225,7 +225,7 @@
@if (! $hideDiscount)
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
@stack('discount_td_start')
-
+
{{ trans('invoices.discount') }}
@stack('discount_td_end')
@@ -234,7 +234,7 @@
@stack('total_th_start')
@if (! $hideAmount)
-
+
{{ trans($textAmount) }}
@endif
@@ -277,7 +277,7 @@
@stack('name_th_start')
@if (! $hideItems || (! $hideName && ! $hideDescription))
-
+
{{ (trans_choice($textItems, 2) != $textItems) ? trans_choice($textItems, 2) : trans($textItems) }}
@endif
@@ -219,7 +219,7 @@
@stack('quantity_th_start')
@if (! $hideQuantity)
-
+
{{ trans($textQuantity) }}
@endif
@@ -227,7 +227,7 @@
@stack('price_th_start')
@if (! $hidePrice)
-
+
{{ trans($textPrice) }}
@endif
@@ -236,7 +236,7 @@
@if (! $hideDiscount)
@if (in_array(setting('localisation.discount_location', 'total'), ['item', 'both']))
@stack('discount_td_start')
-
+
{{ trans('invoices.discount') }}
@stack('discount_td_end')
@@ -245,7 +245,7 @@
@stack('total_th_start')
@if (! $hideAmount)
-
+
{{ trans($textAmount) }}
@endif
@@ -288,7 +288,7 @@
@stack('company_details_start')
@if (! $hideCompanyName)
-
+
{{ setting('company.name') }}
-
+
@endif
@if (! $hideCompanyAddress)
@@ -368,11 +368,8 @@
-
- {{ trans($textAmount) }}
-
-
-
+
+ {{ trans($textAmount) }}
@money($transaction->amount, $transaction->currency_code, true)