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 @@ @stack('summary_incoming_start') - + @stack('summary_incoming_end') @stack('summary_outgoing_start') - + @stack('summary_outgoing_end') @stack('summary_current_start') - + @stack('summary_current_end') diff --git a/resources/views/banking/reconciliations/index.blade.php b/resources/views/banking/reconciliations/index.blade.php index 6ab680571..59730707d 100644 --- a/resources/views/banking/reconciliations/index.blade.php +++ b/resources/views/banking/reconciliations/index.blade.php @@ -20,14 +20,16 @@ diff --git a/resources/views/banking/transactions/index.blade.php b/resources/views/banking/transactions/index.blade.php index 8e056dc20..5462b7a0c 100644 --- a/resources/views/banking/transactions/index.blade.php +++ b/resources/views/banking/transactions/index.blade.php @@ -44,21 +44,24 @@ diff --git a/resources/views/components/contacts/show/content.blade.php b/resources/views/components/contacts/show/content.blade.php index 57fbe33aa..1116e457b 100644 --- a/resources/views/components/contacts/show/content.blade.php +++ b/resources/views/components/contacts/show/content.blade.php @@ -30,19 +30,31 @@ @stack('summary_overdue_start') @if (! $hideOverdue) - + @endif @stack('summary_overdue_end') @stack('summary_open_start') @if (! $hideOpen) - + @endif @stack('summary_open_end') @stack('summary_paid_start') @if (! $hidePaid) - + @endif @stack('summary_paid_end') diff --git a/resources/views/components/documents/template/classic.blade.php b/resources/views/components/documents/template/classic.blade.php index 365cc461d..07453e509 100644 --- a/resources/views/components/documents/template/classic.blade.php +++ b/resources/views/components/documents/template/classic.blade.php @@ -86,7 +86,7 @@
@stack('invoice_number_input_start') @if (! $hideDocumentNumber) -
+
{{ trans($textDocumentNumber) }}: @@ -111,7 +111,7 @@
@if (! $hideContactInfo) -

+

{{ 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 @@ @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')

- + {{ trans($total->title) }}: @@ -346,7 +346,7 @@ @if ($document->paid) @stack('paid_total_tr_start')
- + {{ trans('invoices.paid') }}: @@ -359,7 +359,7 @@ @stack('grand_total_tr_start')
- + {{ trans($total->name) }}: diff --git a/resources/views/components/documents/template/default.blade.php b/resources/views/components/documents/template/default.blade.php index ebdd281eb..dd8b7cc8b 100644 --- a/resources/views/components/documents/template/default.blade.php +++ b/resources/views/components/documents/template/default.blade.php @@ -76,7 +76,7 @@
@if (! $hideContactInfo) -

{{ trans($textContactInfo) }}

+

{{ trans($textContactInfo) }}

@endif @stack('name_input_start') @@ -200,7 +200,7 @@ @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('notes_input_start') @if ($document->notes) -

+

{{ trans_choice('general.notes', 2) }}

@@ -292,7 +292,7 @@ @if ($total->code != 'total') @stack($total->code . '_total_tr_start')
- + {{ trans($total->title) }}: @@ -305,7 +305,7 @@ @if ($document->paid) @stack('paid_total_tr_start')
- + {{ trans('invoices.paid') }}: @@ -318,7 +318,7 @@ @stack('grand_total_tr_start')
- + {{ trans($total->name) }}: diff --git a/resources/views/components/documents/template/line-item.blade.php b/resources/views/components/documents/template/line-item.blade.php index bd8e48f7b..6be2ac84a 100644 --- a/resources/views/components/documents/template/line-item.blade.php +++ b/resources/views/components/documents/template/line-item.blade.php @@ -9,7 +9,7 @@ @if (! $hideDescription) @if (! empty($item->description)) - {!! \Illuminate\Support\Str::limit($item->description, 500) !!} + {!! \Illuminate\Support\Str::limit(nl2br($item->description), 500) !!} @endif @endif diff --git a/resources/views/components/documents/template/modern.blade.php b/resources/views/components/documents/template/modern.blade.php index d4b2da7a6..15f3498cb 100644 --- a/resources/views/components/documents/template/modern.blade.php +++ b/resources/views/components/documents/template/modern.blade.php @@ -82,7 +82,7 @@
@if (! $hideContactInfo) -

+

{{ trans($textContactInfo) }}

@endif @@ -145,7 +145,7 @@ @if (! $hideOrderNumber) @if ($document->order_number)

- + {{ 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 @@ @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('notes_input_start') @if ($document->notes) -

+

{{ trans_choice('general.notes', 2) }}

@@ -303,7 +303,7 @@ @if ($total->code != 'total') @stack($total->code . '_total_tr_start')
- + {{ trans($total->title) }}: @@ -316,7 +316,7 @@ @if ($document->paid) @stack('paid_total_tr_start')
- + {{ trans('invoices.paid') }}: @@ -329,7 +329,7 @@ @stack('grand_total_tr_start')
- + {{ trans($total->name) }}: diff --git a/resources/views/components/form/accordion/head.blade.php b/resources/views/components/form/accordion/head.blade.php index 9dc7e41c5..bb4d36897 100644 --- a/resources/views/components/form/accordion/head.blade.php +++ b/resources/views/components/form/accordion/head.blade.php @@ -4,7 +4,7 @@ @if (! empty($description)) - + {!! $description !!} @endif diff --git a/resources/views/components/form/group/tax.blade.php b/resources/views/components/form/group/tax.blade.php new file mode 100644 index 000000000..b6346ff9b --- /dev/null +++ b/resources/views/components/form/group/tax.blade.php @@ -0,0 +1,81 @@ +@if ((! $attributes->has('withoutRemote') && ! $attributes->has('without-remote')) && (! $attributes->has('withoutAddNew') && ! $attributes->has('without-add-new'))) + +@elseif (($attributes->has('withoutRemote') && $attributes->has('without-remote')) && (! $attributes->has('withoutAddNew') && ! $attributes->has('without-add-new'))) + +@elseif ((! $attributes->has('withoutRemote') && ! $attributes->has('without-remote')) && ($attributes->has('withoutAddNew') && $attributes->has('without-add-new'))) + +@else + +@endif diff --git a/resources/views/components/form/section/head.blade.php b/resources/views/components/form/section/head.blade.php index 22387faf0..3b25475cc 100644 --- a/resources/views/components/form/section/head.blade.php +++ b/resources/views/components/form/section/head.blade.php @@ -4,7 +4,7 @@ @if (!empty($description)) - + {!! $description !!} @endif diff --git a/resources/views/components/index/summary.blade.php b/resources/views/components/index/summary.blade.php index 7c88c71da..fd8d1bf3b 100644 --- a/resources/views/components/index/summary.blade.php +++ b/resources/views/components/index/summary.blade.php @@ -5,7 +5,7 @@ @foreach ($items as $item)
@if (! empty($item['tooltip'])) - + @php $text_color = (! empty($item['text_color'])) ? $item['text_color'] : 'text-purple group-hover:text-purple-700'; @endphp
diff --git a/resources/views/components/show/accordion/head.blade.php b/resources/views/components/show/accordion/head.blade.php index e8f02a425..69af6ca93 100644 --- a/resources/views/components/show/accordion/head.blade.php +++ b/resources/views/components/show/accordion/head.blade.php @@ -6,7 +6,7 @@ @if (! empty($description)) - + {!! $description !!} @endif diff --git a/resources/views/components/show/summary/right.blade.php b/resources/views/components/show/summary/right.blade.php index b6c6a8c96..45d4ee4e0 100644 --- a/resources/views/components/show/summary/right.blade.php +++ b/resources/views/components/show/summary/right.blade.php @@ -5,7 +5,7 @@ @foreach ($items as $item)
@if (! empty($item['tooltip'])) - + @php $text_color = (! empty($item['text_color'])) ? $item['text_color'] : 'text-purple group-hover:text-purple-700'; @endphp
diff --git a/resources/views/components/transactions/show/attachment.blade.php b/resources/views/components/transactions/show/attachment.blade.php index a3933dc3f..c65ba98c0 100644 --- a/resources/views/components/transactions/show/attachment.blade.php +++ b/resources/views/components/transactions/show/attachment.blade.php @@ -11,7 +11,7 @@ -
+
{{ trans('transactions.slider.attachments') }}
diff --git a/resources/views/components/transactions/show/children.blade.php b/resources/views/components/transactions/show/children.blade.php index 270b1e837..61593abdf 100644 --- a/resources/views/components/transactions/show/children.blade.php +++ b/resources/views/components/transactions/show/children.blade.php @@ -8,7 +8,7 @@ -
+
{!! trans('transactions.slider.children', ['count' => $transaction->children()->count()]) !!}
diff --git a/resources/views/components/transactions/show/create.blade.php b/resources/views/components/transactions/show/create.blade.php index 41c002239..bfdaa558f 100644 --- a/resources/views/components/transactions/show/create.blade.php +++ b/resources/views/components/transactions/show/create.blade.php @@ -10,7 +10,7 @@ -
+
@if ($transaction->isRecurringTransaction()) {!! trans('transactions.slider.create_recurring', ['user' => $transaction->owner->name, 'date' => $created_date]) !!} @else diff --git a/resources/views/components/transactions/show/schedule.blade.php b/resources/views/components/transactions/show/schedule.blade.php index af69d6a88..c5f8587a2 100644 --- a/resources/views/components/transactions/show/schedule.blade.php +++ b/resources/views/components/transactions/show/schedule.blade.php @@ -13,7 +13,7 @@ -
+
{!! trans('transactions.slider.schedule', ['frequency' => $frequency, 'interval' => $transaction->recurring->interval, 'date' => $started_date]) !!}
diff --git a/resources/views/components/transactions/show/transfer.blade.php b/resources/views/components/transactions/show/transfer.blade.php index 2bb3833e0..0baa7c669 100644 --- a/resources/views/components/transactions/show/transfer.blade.php +++ b/resources/views/components/transactions/show/transfer.blade.php @@ -18,7 +18,7 @@ @if ($transfer) -
+
{!! trans('transactions.slider.transfer_headline', ['from_account' => $from_account, 'to_account' => $to_account]) !!}
@endif diff --git a/resources/views/components/transactions/template/default.blade.php b/resources/views/components/transactions/template/default.blade.php index f5137ada9..ea3f0ed69 100644 --- a/resources/views/components/transactions/template/default.blade.php +++ b/resources/views/components/transactions/template/default.blade.php @@ -19,9 +19,9 @@ @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)