akaunting 3.0 (the last dance)
This commit is contained in:
80
config/apexcharts.php
Normal file
80
config/apexcharts.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'options' => [
|
||||
'chart' => [
|
||||
'width' => '100%',
|
||||
'height' => 300,
|
||||
'toolbar' => [
|
||||
'show' => false,
|
||||
],
|
||||
'stacked' => false,
|
||||
'zoom' => [
|
||||
'enabled' => false,
|
||||
],
|
||||
'fontFamily' => '"Quicksand", sans-serif',
|
||||
'foreColor' => '#595959',
|
||||
],
|
||||
|
||||
'legend' => [
|
||||
'horizontalAlign' => 'left',
|
||||
],
|
||||
|
||||
'dataLabels' => [
|
||||
'enabled' => false,
|
||||
],
|
||||
|
||||
'grid' => [
|
||||
'show' => true,
|
||||
'borderColor' => '#E5E7EB',
|
||||
],
|
||||
|
||||
'markers' => [
|
||||
'size' => 5,
|
||||
/*'colors' => [
|
||||
'#ffffff',
|
||||
],
|
||||
'strokeColors' => '#444444',
|
||||
'strokeWidth' => 2,*/
|
||||
'hover' => [
|
||||
'size' => 8,
|
||||
],
|
||||
],
|
||||
|
||||
'states' => [
|
||||
'hover' => [
|
||||
'filter' => [
|
||||
'value' => 0.01,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'stroke' => [
|
||||
'show' => true,
|
||||
'curve' => 'straight',
|
||||
'width' => 2,
|
||||
],
|
||||
|
||||
'fill' => [
|
||||
'opacity' => 1,
|
||||
],
|
||||
|
||||
'tooltip' => [
|
||||
'shared' => false,
|
||||
'followCursor' => true,
|
||||
'onDatasetHover' => [
|
||||
'highlightDataSeries' => true,
|
||||
],
|
||||
],
|
||||
|
||||
'xaxis' => [
|
||||
'labels' => [
|
||||
'rotate' => 0,
|
||||
],
|
||||
'tickAmount' => 3,
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
];
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
|
||||
return [
|
||||
|
||||
@@ -8,7 +9,7 @@ return [
|
||||
| Standards Tree
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Versioning an API with Dingo revolves around content negotiation and
|
||||
| Versioning an API revolves around content negotiation and
|
||||
| custom MIME types. A custom type will belong to one of three
|
||||
| standards trees, the Vendor tree (vnd), the Personal tree
|
||||
| (prs), and the Unregistered tree (x).
|
||||
@@ -33,7 +34,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'subtype' => env('API_SUBTYPE', 'api'),
|
||||
'subtype' => env('API_SUBTYPE', 'akaunting'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -70,7 +71,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'domain' => env('API_DOMAIN', null),
|
||||
'domain' => env('API_DOMAIN'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -123,7 +124,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'debug' => env('API_DEBUG', true),
|
||||
'debug' => env('API_DEBUG', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -137,7 +138,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'errorFormat' => [
|
||||
'error_format' => [
|
||||
'message' => ':message',
|
||||
'errors' => ':errors',
|
||||
'code' => ':code',
|
||||
@@ -154,27 +155,11 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'middleware' => [
|
||||
|
||||
],
|
||||
'middleware' => explode(',', env('API_MIDDLEWARE', 'api')),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Providers
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The authentication providers that should be used when attempting to
|
||||
| authenticate an incoming API request.
|
||||
|
|
||||
*/
|
||||
|
||||
'auth' => [
|
||||
'basic' => 'Dingo\Api\Auth\Provider\Basic',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Throttling / Rate Limiting
|
||||
| Rate Limit (Throttle)
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Consumers of your API can be limited to the amount of requests they can
|
||||
@@ -183,51 +168,8 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'throttling' => [
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Response Transformer
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Responses can be transformed so that they are easier to format. By
|
||||
| default a Fractal transformer will be used to transform any
|
||||
| responses prior to formatting. You can easily replace
|
||||
| this with your own transformer.
|
||||
|
|
||||
*/
|
||||
|
||||
'transformer' => env('API_TRANSFORMER', Dingo\Api\Transformer\Adapter\Fractal::class),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Response Formats
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Responses can be returned in multiple formats by registering different
|
||||
| response formatters. You can also customize an existing response
|
||||
| formatter with a number of options to configure its output.
|
||||
|
|
||||
*/
|
||||
|
||||
'defaultFormat' => env('API_DEFAULT_FORMAT', 'json'),
|
||||
|
||||
'formats' => [
|
||||
|
||||
'json' => Dingo\Api\Http\Response\Format\Json::class,
|
||||
|
||||
],
|
||||
|
||||
'formatsOptions' => [
|
||||
|
||||
'json' => [
|
||||
'pretty_print' => env('API_JSON_FORMAT_PRETTY_PRINT_ENABLED', false),
|
||||
'indent_style' => env('API_JSON_FORMAT_INDENT_STYLE', 'space'),
|
||||
'indent_size' => env('API_JSON_FORMAT_INDENT_SIZE', 2),
|
||||
],
|
||||
|
||||
'rate_limit' => [
|
||||
Limit::perMinute(env('API_RATE_LIMIT', 60)),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
@@ -64,7 +66,7 @@ return [
|
||||
|
||||
'url' => env('APP_URL', ''),
|
||||
|
||||
'asset_url' => env('ASSET_URL', null),
|
||||
'asset_url' => env('ASSET_URL'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -184,7 +186,6 @@ return [
|
||||
App\Providers\Blade::class,
|
||||
// App\Providers\Broadcast::class,
|
||||
App\Providers\Event::class,
|
||||
App\Providers\Form::class,
|
||||
App\Providers\Macro::class,
|
||||
App\Providers\Observer::class,
|
||||
App\Providers\Queue::class,
|
||||
@@ -205,47 +206,8 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'aliases' => [
|
||||
|
||||
'App' => Illuminate\Support\Facades\App::class,
|
||||
'Arr' => Illuminate\Support\Arr::class,
|
||||
'Artisan' => Illuminate\Support\Facades\Artisan::class,
|
||||
'Auth' => Illuminate\Support\Facades\Auth::class,
|
||||
'Blade' => Illuminate\Support\Facades\Blade::class,
|
||||
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
|
||||
'Bus' => Illuminate\Support\Facades\Bus::class,
|
||||
'Cache' => Illuminate\Support\Facades\Cache::class,
|
||||
'Config' => Illuminate\Support\Facades\Config::class,
|
||||
'Cookie' => Illuminate\Support\Facades\Cookie::class,
|
||||
'Crypt' => Illuminate\Support\Facades\Crypt::class,
|
||||
'aliases' => Facade::defaultAliases()->merge([
|
||||
'Date' => App\Utilities\Date::class,
|
||||
'DB' => Illuminate\Support\Facades\DB::class,
|
||||
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
|
||||
'Event' => Illuminate\Support\Facades\Event::class,
|
||||
'File' => Illuminate\Support\Facades\File::class,
|
||||
'Gate' => Illuminate\Support\Facades\Gate::class,
|
||||
'Hash' => Illuminate\Support\Facades\Hash::class,
|
||||
'Http' => Illuminate\Support\Facades\Http::class,
|
||||
'Lang' => Illuminate\Support\Facades\Lang::class,
|
||||
'Log' => Illuminate\Support\Facades\Log::class,
|
||||
'Mail' => Illuminate\Support\Facades\Mail::class,
|
||||
'Notification' => Illuminate\Support\Facades\Notification::class,
|
||||
'Password' => Illuminate\Support\Facades\Password::class,
|
||||
'Queue' => Illuminate\Support\Facades\Queue::class,
|
||||
'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
|
||||
'Redirect' => Illuminate\Support\Facades\Redirect::class,
|
||||
'Redis' => Illuminate\Support\Facades\Redis::class,
|
||||
'Request' => Illuminate\Support\Facades\Request::class,
|
||||
'Response' => Illuminate\Support\Facades\Response::class,
|
||||
'Route' => Illuminate\Support\Facades\Route::class,
|
||||
'Schema' => Illuminate\Support\Facades\Schema::class,
|
||||
'Session' => Illuminate\Support\Facades\Session::class,
|
||||
'Storage' => Illuminate\Support\Facades\Storage::class,
|
||||
'Str' => Illuminate\Support\Str::class,
|
||||
'URL' => Illuminate\Support\Facades\URL::class,
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
|
||||
],
|
||||
])->toArray(),
|
||||
|
||||
];
|
||||
|
||||
@@ -86,7 +86,7 @@ return [
|
||||
| than one user table or model in the application and you want to have
|
||||
| separate password reset settings based on the specific user types.
|
||||
|
|
||||
| The expire time is the number of minutes that the reset token should be
|
||||
| The expire time is the number of minutes that each reset token will be
|
||||
| considered valid. This security feature keeps tokens short-lived so
|
||||
| they have less time to be guessed. You may change this as needed.
|
||||
|
|
||||
|
||||
@@ -39,6 +39,9 @@ return [
|
||||
'cluster' => env('PUSHER_APP_CLUSTER'),
|
||||
'useTLS' => true,
|
||||
],
|
||||
'client_options' => [
|
||||
// Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html
|
||||
],
|
||||
],
|
||||
|
||||
'ably' => [
|
||||
|
||||
@@ -105,6 +105,6 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache'),
|
||||
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache_'),
|
||||
|
||||
];
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
spec columns
|
||||
*/
|
||||
'columns' => [
|
||||
'alpha' => [
|
||||
'rows' => ['name', 'contact_name', 'customer_name', 'vendor_name', 'display_name', 'company_name', 'domain', 'email', 'description', 'code', 'type', 'status', 'vendor', 'account', 'category'],
|
||||
'class' => 'fas fa-sort-alpha',
|
||||
],
|
||||
'amount' => [
|
||||
'rows' => ['amount', 'price', 'sale_price', 'purchase_price', 'total_price', 'current_balance', 'total_price', 'opening_balance'],
|
||||
'class' => 'fas fa-sort-amount',
|
||||
],
|
||||
'numeric' => [
|
||||
'rows' => ['created_at', 'updated_at', 'paid_at', 'issued_at', 'due_at', 'id', 'quantity', 'rate', 'number', 'document_number'],
|
||||
'class' => 'fas fa-sort-numeric',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
whether icons should be enabled
|
||||
*/
|
||||
'enable_icons' => true,
|
||||
|
||||
/*
|
||||
defines icon set to use when sorted data is none above (alpha nor amount nor numeric)
|
||||
*/
|
||||
'default_icon_set' => 'fas fa-arrow-down sort-icon',
|
||||
|
||||
/*
|
||||
icon that shows when generating sortable link while column is not sorted
|
||||
*/
|
||||
'sortable_icon' => 'fas fa-arrow-down sort-icon',
|
||||
|
||||
/*
|
||||
generated icon is clickable non-clickable (default)
|
||||
*/
|
||||
'clickable_icon' => false,
|
||||
|
||||
/*
|
||||
icon and text separator (any string)
|
||||
in case of 'clickable_icon' => true; separator creates possibility to style icon and anchor-text properly
|
||||
*/
|
||||
'icon_text_separator' => ' ',
|
||||
|
||||
/*
|
||||
suffix class that is appended when ascending order is applied
|
||||
*/
|
||||
'asc_suffix' => '-down',
|
||||
|
||||
/*
|
||||
suffix class that is appended when descending order is applied
|
||||
*/
|
||||
'desc_suffix' => '-up',
|
||||
|
||||
/*
|
||||
default anchor class, if value is null none is added
|
||||
*/
|
||||
'anchor_class' => null,
|
||||
|
||||
/*
|
||||
relation - column separator ex: detail.phone_number means relation "detail" and column "phone_number"
|
||||
*/
|
||||
'uri_relation_column_separator' => '.',
|
||||
|
||||
/*
|
||||
formatting function applied to name of column, use null to turn formatting off
|
||||
*/
|
||||
'formatting_function' => 'ucfirst',
|
||||
|
||||
/*
|
||||
inject title parameter in query strings, use null to turn injection off
|
||||
example: 'inject_title' => 't' will result in ..user/?t="formatted title of sorted column"
|
||||
*/
|
||||
'inject_title_as' => null,
|
||||
|
||||
/*
|
||||
allow request modification, when default sorting is set but is not in URI (first load)
|
||||
*/
|
||||
'allow_request_modification' => true,
|
||||
|
||||
/*
|
||||
default order for: $user->sortable('id') usage
|
||||
*/
|
||||
'default_direction' => 'asc',
|
||||
|
||||
/*
|
||||
default order for non-sorted columns
|
||||
*/
|
||||
'default_direction_unsorted' => 'asc',
|
||||
|
||||
/*
|
||||
use the first defined sortable column (Model::$sortable) as default
|
||||
also applies if sorting parameters are invalid for example: 'sort' => 'name', 'direction' => ''
|
||||
*/
|
||||
'default_first_column' => false,
|
||||
|
||||
/*
|
||||
join type: join vs leftJoin (default leftJoin)
|
||||
for more information see https://github.com/Kyslik/column-sortable/issues/59
|
||||
*/
|
||||
'join_type' => 'leftJoin',
|
||||
];
|
||||
@@ -15,7 +15,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'paths' => [env('API_SUBTYPE', 'api') . '/*'],
|
||||
'paths' => [env('API_PREFIX', 'api') . '/*'],
|
||||
|
||||
'allowed_methods' => ['*'],
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ return [
|
||||
'charset' => 'utf8',
|
||||
'prefix' => env('DB_PREFIX', 'ak_'),
|
||||
'prefix_indexes' => true,
|
||||
'schema' => 'public',
|
||||
'search_path' => 'public',
|
||||
'sslmode' => 'prefer',
|
||||
],
|
||||
|
||||
@@ -147,7 +147,7 @@ return [
|
||||
'default' => [
|
||||
'url' => env('REDIS_URL'),
|
||||
'host' => env('REDIS_HOST', '127.0.0.1'),
|
||||
'password' => env('REDIS_PASSWORD', null),
|
||||
'password' => env('REDIS_PASSWORD'),
|
||||
'port' => env('REDIS_PORT', '6379'),
|
||||
'database' => env('REDIS_DB', '0'),
|
||||
],
|
||||
|
||||
@@ -147,7 +147,7 @@ return [
|
||||
'types' => ['SELECT'], // // workaround ['SELECT'] only. https://github.com/barryvdh/laravel-debugbar/issues/888 ['SELECT', 'INSERT', 'UPDATE', 'DELETE']; for MySQL 5.6.3+
|
||||
],
|
||||
'hints' => true, // Show hints for common mistakes
|
||||
'show_copy' => true, // Show copy button next to the query
|
||||
'show_copy' => true, // Show copy button next to the query
|
||||
],
|
||||
'mail' => [
|
||||
'full_log' => false
|
||||
|
||||
@@ -15,6 +15,11 @@ return [
|
||||
|
||||
'orientation' => 'portrait',
|
||||
|
||||
/*
|
||||
* Dejavu Sans font is missing glyphs for converted entities, turn it off if you need to show € and £.
|
||||
*/
|
||||
'convert_entities' => false,
|
||||
|
||||
'defines' => [
|
||||
/**
|
||||
* The location of the DOMPDF font directory
|
||||
@@ -40,7 +45,7 @@ return [
|
||||
* Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
|
||||
* Symbol, ZapfDingbats.
|
||||
*/
|
||||
"font_dir" => storage_path('fonts/'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
|
||||
"font_dir" => storage_path('fonts'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
|
||||
|
||||
/**
|
||||
* The location of the DOMPDF font cache directory
|
||||
@@ -50,7 +55,7 @@ return [
|
||||
*
|
||||
* Note: This directory must exist and be writable by the webserver process.
|
||||
*/
|
||||
"font_cache" => storage_path('fonts/'),
|
||||
"font_cache" => storage_path('fonts'),
|
||||
|
||||
/**
|
||||
* The location of a temporary directory.
|
||||
|
||||
@@ -13,7 +13,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'default' => env('FILESYSTEM_DRIVER', 'uploads'),
|
||||
'default' => env('FILESYSTEM_DISK', 'uploads'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -52,7 +52,7 @@ return [
|
||||
|
|
||||
| Here you may configure as many filesystem "disks" as you wish, and you
|
||||
| may even configure multiple disks of the same driver. Defaults have
|
||||
| been setup for each driver as an example of the required options.
|
||||
| been set up for each driver as an example of the required values.
|
||||
|
|
||||
| Supported Drivers: "local", "ftp", "sftp", "s3"
|
||||
|
|
||||
|
||||
@@ -44,9 +44,9 @@ return [
|
||||
*/
|
||||
|
||||
'argon' => [
|
||||
'memory' => 1024,
|
||||
'threads' => 2,
|
||||
'time' => 2,
|
||||
'memory' => 65536,
|
||||
'threads' => 1,
|
||||
'time' => 4,
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -33,6 +33,17 @@ return [
|
||||
*/
|
||||
'url' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Set strategy
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option will determine the strategy used to determine the back url.
|
||||
| It can be 'session' (default) or 'referer'
|
||||
|
|
||||
*/
|
||||
'back' => 'session',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Carbon Language
|
||||
@@ -109,7 +120,10 @@ return [
|
||||
| Language code mode
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option indicates the language code to be used, short or long
|
||||
| This option indicates the language code and name to be used, short/long
|
||||
| and english/native.
|
||||
| Short: language code (en)
|
||||
| Long: languagecode-COUNTRYCODE (en-GB)
|
||||
|
|
||||
*/
|
||||
'mode' => ['code' => 'long', 'name' => 'native'],
|
||||
@@ -119,79 +133,74 @@ return [
|
||||
| Allowed languages
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This options indicates the allowed languages.
|
||||
| This options indicates the language allowed languages.
|
||||
|
|
||||
*/
|
||||
'allowed' => ['ar-SA', 'az-AZ', 'bg-BG', 'bn-BD', 'bs-BA', 'ca-ES', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-US', 'es-AR', 'es-ES', 'es-MX', 'et-EE', 'fa-IR', 'fr-FR', 'he-IL', 'hi-IN', 'hr-HR', 'hu-HU', 'id-ID', 'is-IS', 'it-IT', 'ja-JP', 'ka-GE', 'ko-KR', 'lt-LT', 'lv-LV', 'mk-MK', 'ms-MY', 'nb-NO', 'ne-NP', 'nl-NL', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sk-SK', 'sl-SI', 'sr-RS', 'sq-AL', 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA', 'ur-PK', 'uz-UZ', 'vi-VN', 'zh-CN', 'zh-TW'],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| All languages
|
||||
| All Languages
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option indicates the language codes and names.
|
||||
|
|
||||
*/
|
||||
'all' => [
|
||||
['short' => 'ar', 'long' => 'ar-SA', 'english' => 'Arabic', 'native' => 'العربية'],
|
||||
['short' => 'az', 'long' => 'az-AZ', 'english' => 'Azerbaijani', 'native' => 'Azərbaycan'],
|
||||
['short' => 'bg', 'long' => 'bg-BG', 'english' => 'Bulgarian', 'native' => 'български'],
|
||||
['short' => 'bn', 'long' => 'bn-BD', 'english' => 'Bengali', 'native' => 'বাংলা'],
|
||||
['short' => 'bs', 'long' => 'bs-BA', 'english' => 'Bosnian', 'native' => 'Bosanski'],
|
||||
['short' => 'ca', 'long' => 'ca-ES', 'english' => 'Catalan', 'native' => 'Català'],
|
||||
['short' => 'cn', 'long' => 'zh-CN', 'english' => 'Chinese (S)', 'native' => '简体中文'],
|
||||
['short' => 'cs', 'long' => 'cs-CZ', 'english' => 'Czech', 'native' => 'Čeština'],
|
||||
['short' => 'da', 'long' => 'da-DK', 'english' => 'Danish', 'native' => 'Dansk'],
|
||||
['short' => 'de', 'long' => 'de-DE', 'english' => 'German', 'native' => 'Deutsch'],
|
||||
['short' => 'de', 'long' => 'de-AT', 'english' => 'Austrian', 'native' => 'Österreichisches Deutsch'],
|
||||
['short' => 'fi', 'long' => 'fi-FI', 'english' => 'Finnish', 'native' => 'Suomi'],
|
||||
['short' => 'fr', 'long' => 'fr-FR', 'english' => 'French', 'native' => 'Français'],
|
||||
['short' => 'ea', 'long' => 'es-AR', 'english' => 'Spanish (Argentina)', 'native' => 'Español de Argentina'],
|
||||
['short' => 'el', 'long' => 'el-GR', 'english' => 'Greek', 'native' => 'Ελληνικά'],
|
||||
['short' => 'en', 'long' => 'en-AU', 'english' => 'English (AU)', 'native' => 'English (AU)'],
|
||||
['short' => 'en', 'long' => 'en-CA', 'english' => 'English (CA)', 'native' => 'English (CA)'],
|
||||
['short' => 'en', 'long' => 'en-GB', 'english' => 'English (GB)', 'native' => 'English (GB)'],
|
||||
['short' => 'en', 'long' => 'en-US', 'english' => 'English (US)', 'native' => 'English (US)'],
|
||||
['short' => 'es', 'long' => 'es-ES', 'english' => 'Spanish', 'native' => 'Español'],
|
||||
['short' => 'et', 'long' => 'et-EE', 'english' => 'Estonian', 'native' => 'Eesti'],
|
||||
['short' => 'he', 'long' => 'he-IL', 'english' => 'Hebrew', 'native' => 'עִבְרִית'],
|
||||
['short' => 'hi', 'long' => 'hi-IN', 'english' => 'Hindi', 'native' => 'हिन्दी'],
|
||||
['short' => 'hr', 'long' => 'hr-HR', 'english' => 'Croatian', 'native' => 'Hrvatski'],
|
||||
['short' => 'hu', 'long' => 'hu-HU', 'english' => 'Hungarian', 'native' => 'Magyar'],
|
||||
['short' => 'hy', 'long' => 'hy-AM', 'english' => 'Armenian', 'native' => 'Հայերեն'],
|
||||
['short' => 'id', 'long' => 'id-ID', 'english' => 'Indonesian', 'native' => 'Bahasa Indonesia'],
|
||||
['short' => 'is', 'long' => 'is-IS', 'english' => 'Icelandic', 'native' => 'Íslenska'],
|
||||
['short' => 'it', 'long' => 'it-IT', 'english' => 'Italian', 'native' => 'Italiano'],
|
||||
['short' => 'ir', 'long' => 'fa-IR', 'english' => 'Persian', 'native' => 'فارسی'],
|
||||
['short' => 'jp', 'long' => 'ja-JP', 'english' => 'Japanese', 'native' => '日本語'],
|
||||
['short' => 'ka', 'long' => 'ka-GE', 'english' => 'Georgian', 'native' => 'ქართული'],
|
||||
['short' => 'ko', 'long' => 'ko-KR', 'english' => 'Korean', 'native' => '한국어'],
|
||||
['short' => 'lt', 'long' => 'lt-LT', 'english' => 'Lithuanian', 'native' => 'Lietuvių'],
|
||||
['short' => 'lv', 'long' => 'lv-LV', 'english' => 'Latvian', 'native' => 'Latviešu valoda'],
|
||||
['short' => 'mk', 'long' => 'mk-MK', 'english' => 'Macedonian', 'native' => 'Македонски јазик'],
|
||||
['short' => 'ms', 'long' => 'ms-MY', 'english' => 'Malay', 'native' => 'Bahasa Melayu'],
|
||||
['short' => 'mx', 'long' => 'es-MX', 'english' => 'Spanish (Mexico)', 'native' => 'Español de México'],
|
||||
['short' => 'nb', 'long' => 'nb-NO', 'english' => 'Norwegian', 'native' => 'Norsk Bokmål'],
|
||||
['short' => 'ne', 'long' => 'ne-NP', 'english' => 'Nepali', 'native' => 'नेपाली'],
|
||||
['short' => 'nl', 'long' => 'nl-NL', 'english' => 'Dutch', 'native' => 'Nederlands'],
|
||||
['short' => 'pl', 'long' => 'pl-PL', 'english' => 'Polish', 'native' => 'Polski'],
|
||||
['short' => 'pt-BR', 'long' => 'pt-BR', 'english' => 'Brazilian', 'native' => 'Português do Brasil'],
|
||||
['short' => 'pt', 'long' => 'pt-PT', 'english' => 'Portuguese', 'native' => 'Português'],
|
||||
['short' => 'ro', 'long' => 'ro-RO', 'english' => 'Romanian', 'native' => 'Română'],
|
||||
['short' => 'ru', 'long' => 'ru-RU', 'english' => 'Russian', 'native' => 'Русский'],
|
||||
['short' => 'sr', 'long' => 'sr-RS', 'english' => 'Serbian (Cyrillic)', 'native' => 'Српски језик'],
|
||||
['short' => 'sr', 'long' => 'sr-CS', 'english' => 'Serbian (Latin)', 'native' => 'Српски језик'],
|
||||
['short' => 'sq', 'long' => 'sq-AL', 'english' => 'Albanian', 'native' => 'Shqip'],
|
||||
['short' => 'sk', 'long' => 'sk-SK', 'english' => 'Slovak', 'native' => 'Slovenčina'],
|
||||
['short' => 'sl', 'long' => 'sl-SI', 'english' => 'Slovenian', 'native' => 'Slovenščina'],
|
||||
['short' => 'sv', 'long' => 'sv-SE', 'english' => 'Swedish', 'native' => 'Svenska'],
|
||||
['short' => 'th', 'long' => 'th-TH', 'english' => 'Thai', 'native' => 'ไทย'],
|
||||
['short' => 'tr', 'long' => 'tr-TR', 'english' => 'Turkish', 'native' => 'Türkçe'],
|
||||
['short' => 'tw', 'long' => 'zh-TW', 'english' => 'Chinese (T)', 'native' => '繁體中文'],
|
||||
['short' => 'uk', 'long' => 'uk-UA', 'english' => 'Ukrainian', 'native' => 'Українська'],
|
||||
['short' => 'ur', 'long' => 'ur-PK', 'english' => 'Urdu (Pakistan)', 'native' => 'اردو'],
|
||||
['short' => 'uz', 'long' => 'uz-UZ', 'english' => 'Uzbek', 'native' => 'O‘zbekcha'],
|
||||
['short' => 'vi', 'long' => 'vi-VN', 'english' => 'Vietnamese', 'native' => 'Tiếng Việt'],
|
||||
['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-SL', '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'],
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -29,6 +29,18 @@ return [
|
||||
|
||||
'view_path' => resource_path('views/livewire'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Layout
|
||||
|--------------------------------------------------------------------------
|
||||
| The default layout view that will be used when rendering a component via
|
||||
| Route::get('/some-endpoint', SomeComponent::class);. In this case the
|
||||
| the view returned by SomeComponent will be wrapped in "layouts.app"
|
||||
|
|
||||
*/
|
||||
|
||||
'layout' => 'components.layouts.admin',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Assets URL
|
||||
@@ -44,6 +56,20 @@ return [
|
||||
|
||||
'asset_url' => env('ASSET_URL', 'public'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire App URL
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value should be used if livewire assets are served from CDN.
|
||||
| Livewire will communicate with an app through this url.
|
||||
|
|
||||
| Examples: "https://my-app.com", "myurl.com/app".
|
||||
|
|
||||
*/
|
||||
|
||||
'app_url' => env('APP_URL', 'localhost'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Endpoint Middleware Group
|
||||
@@ -77,8 +103,9 @@ return [
|
||||
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs.
|
||||
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
|
||||
'mov', 'avi', 'wmv', 'mp3', 'm4a',
|
||||
'jpeg', 'mpga', 'webp', 'wma',
|
||||
'jpg', 'jpeg', 'mpga', 'webp', 'wma',
|
||||
],
|
||||
'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated.
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -88,7 +115,7 @@ return [
|
||||
|
|
||||
| This value sets the path to the Livewire manifest file.
|
||||
| The default should work for most cases (which is
|
||||
| "<app_root>/bootstrap/cache/livewire-components.php)", but for specific
|
||||
| "<app_root>/bootstrap/cache/livewire-components.php"), but for specific
|
||||
| cases like when hosting on Laravel Vapor, it could be set to a different value.
|
||||
|
|
||||
| Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php".
|
||||
@@ -97,4 +124,35 @@ return [
|
||||
|
||||
'manifest_path' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Back Button Cache
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines whether the back button cache will be used on pages
|
||||
| that contain Livewire. By disabling back button cache, it ensures that
|
||||
| the back button shows the correct state of components, instead of
|
||||
| potentially stale, cached data.
|
||||
|
|
||||
| Setting it to "false" (default) will disable back button cache.
|
||||
|
|
||||
*/
|
||||
|
||||
'back_button_cache' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Render On Redirect
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines whether Livewire will render before it's redirected
|
||||
| or not. Setting it to "false" (default) will mean the render method is
|
||||
| skipped when redirecting. And "true" will mean the render method is
|
||||
| run before redirecting. Browsers bfcache can store a potentially
|
||||
| stale view if render is skipped on redirect.
|
||||
|
|
||||
*/
|
||||
|
||||
'render_on_redirect' => false,
|
||||
|
||||
];
|
||||
|
||||
@@ -19,6 +19,20 @@ return [
|
||||
|
||||
'default' => env('LOG_CHANNEL', 'stack'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Deprecations Log Channel
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option controls the log channel that should be used to log warnings
|
||||
| regarding deprecated PHP and library features. This allows you to get
|
||||
| your application ready for upcoming major versions of dependencies.
|
||||
|
|
||||
*/
|
||||
|
||||
'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Log Channels
|
||||
|
||||
@@ -29,7 +29,7 @@ return [
|
||||
| mailers below. You are free to add additional mailers as required.
|
||||
|
|
||||
| Supported: "smtp", "sendmail", "mailgun", "ses",
|
||||
| "postmark", "log", "array", "mail"
|
||||
| "postmark", "log", "array", "mail", "failover"
|
||||
|
|
||||
*/
|
||||
|
||||
@@ -42,7 +42,6 @@ return [
|
||||
'username' => env('MAIL_USERNAME'),
|
||||
'password' => env('MAIL_PASSWORD'),
|
||||
'timeout' => env('MAIL_TIMEOUT'),
|
||||
'auth_mode' => env('MAIL_AUTH_MODE'),
|
||||
],
|
||||
|
||||
'ses' => [
|
||||
@@ -63,7 +62,7 @@ return [
|
||||
|
||||
'sendmail' => [
|
||||
'transport' => 'sendmail',
|
||||
'path' => '/usr/sbin/sendmail -bs',
|
||||
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'),
|
||||
],
|
||||
|
||||
'log' => [
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return [
|
||||
|
||||
'styles' => [
|
||||
'argon' => \Akaunting\Menu\Presenters\Admin\Argon::class,
|
||||
'tailwind' => \App\View\Presenters\Menu::class,
|
||||
],
|
||||
|
||||
'home_urls' => [
|
||||
|
||||
@@ -45,6 +45,6 @@ return [
|
||||
| Skip livewire paths
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'livewire' => explode(',', env('READ_ONLY_LIVEWIRE', 'common.search')),
|
||||
'livewire' => explode(',', env('READ_ONLY_LIVEWIRE', 'menu.notifications,menu.settings,menu.neww')),
|
||||
|
||||
];
|
||||
|
||||
67
config/sanctum.php
Normal file
67
config/sanctum.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Stateful Domains
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Requests from the following domains / hosts will receive stateful API
|
||||
| authentication cookies. Typically, these should include your local
|
||||
| and production domains which access your API via a frontend SPA.
|
||||
|
|
||||
*/
|
||||
|
||||
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
|
||||
'%s%s',
|
||||
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
|
||||
Sanctum::currentApplicationUrlWithPort()
|
||||
))),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sanctum Guards
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This array contains the authentication guards that will be checked when
|
||||
| Sanctum is trying to authenticate a request. If none of these guards
|
||||
| are able to authenticate the request, Sanctum will use the bearer
|
||||
| token that's present on an incoming request for authentication.
|
||||
|
|
||||
*/
|
||||
|
||||
'guard' => ['web'],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Expiration Minutes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value controls the number of minutes until an issued token will be
|
||||
| considered expired. If this value is null, personal access tokens do
|
||||
| not expire. This won't tweak the lifetime of first-party sessions.
|
||||
|
|
||||
*/
|
||||
|
||||
'expiration' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sanctum Middleware
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When authenticating your first-party SPA with Sanctum you may need to
|
||||
| customize some of the middleware Sanctum uses while processing the
|
||||
| request. You may change the middleware listed below as required.
|
||||
|
|
||||
*/
|
||||
|
||||
'middleware' => [
|
||||
'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
|
||||
'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
|
||||
],
|
||||
|
||||
];
|
||||
@@ -94,7 +94,12 @@ return [
|
||||
App\Models\Banking\Transaction::class => [
|
||||
'columns' => [
|
||||
'id',
|
||||
'type',
|
||||
'type' => [
|
||||
'values' => [
|
||||
'income' => 'general.incomes',
|
||||
'expense' => 'general.expenses',
|
||||
],
|
||||
],
|
||||
'account_id' => [
|
||||
'route' => ['accounts.index', 'search=enabled:1'],
|
||||
],
|
||||
@@ -109,7 +114,7 @@ return [
|
||||
'payment_method',
|
||||
'reference',
|
||||
'category_id' => [
|
||||
'route' => ['categories.index', 'search=enabled:1'],
|
||||
'route' => ['categories.index', 'search=type:income,expense enabled:1']
|
||||
],
|
||||
'parent_id',
|
||||
'recurring' => [
|
||||
@@ -117,7 +122,7 @@ return [
|
||||
'foreign_key' => '',
|
||||
'relationship' => true,
|
||||
'boolean' => true,
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
@@ -161,7 +166,7 @@ return [
|
||||
'category_id' => [
|
||||
'route' => ['categories.index', 'search=type:item enabled:1']
|
||||
],
|
||||
'sales_price',
|
||||
'sale_price',
|
||||
'purchase_price',
|
||||
],
|
||||
],
|
||||
@@ -185,6 +190,44 @@ return [
|
||||
],
|
||||
],
|
||||
|
||||
'App\Models\Purchase\Vendor' => [
|
||||
'columns' => [
|
||||
'id',
|
||||
'type',
|
||||
'name' => ['searchable' => true],
|
||||
'email' => ['searchable' => true],
|
||||
'tax_number' => ['searchable' => true],
|
||||
'phone' => ['searchable' => true],
|
||||
'address' => ['searchable' => true],
|
||||
'website' => ['searchable' => true],
|
||||
'currency_code' => [
|
||||
'route' => ['currencies.index', 'search=enabled:1'],
|
||||
],
|
||||
'reference',
|
||||
'user_id',
|
||||
'enabled' => ['boolean' => true],
|
||||
],
|
||||
],
|
||||
|
||||
'App\Models\Sale\Customer' => [
|
||||
'columns' => [
|
||||
'id',
|
||||
'type',
|
||||
'name' => ['searchable' => true],
|
||||
'email' => ['searchable' => true],
|
||||
'tax_number' => ['searchable' => true],
|
||||
'phone' => ['searchable' => true],
|
||||
'address' => ['searchable' => true],
|
||||
'website' => ['searchable' => true],
|
||||
'currency_code' => [
|
||||
'route' => ['currencies.index', 'search=enabled:1'],
|
||||
],
|
||||
'reference',
|
||||
'user_id',
|
||||
'enabled' => ['boolean' => true],
|
||||
],
|
||||
],
|
||||
|
||||
App\Models\Document\Document::class => [
|
||||
'columns' => [
|
||||
'id',
|
||||
@@ -208,14 +251,14 @@ return [
|
||||
'contact_phone' => ['searchable' => true],
|
||||
'contact_address' => ['searchable' => true],
|
||||
'category_id' => [
|
||||
'route' => ['categories.index', 'search=enabled:1'],
|
||||
'route' => ['categories.index', 'search=type:income,expense enabled:1']
|
||||
],
|
||||
'parent_id',
|
||||
'recurring' => [
|
||||
'key' => 'recurring',
|
||||
'relationship' => true,
|
||||
'boolean' => true,
|
||||
]
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
@@ -256,42 +299,9 @@ return [
|
||||
'parent_id',
|
||||
'recurring' => [
|
||||
'key' => 'recurring',
|
||||
'foreign_key' => '',
|
||||
'relationship' => true,
|
||||
'boolean' => true,
|
||||
]
|
||||
],
|
||||
],
|
||||
|
||||
'App\Models\Purchase\Payment' => [
|
||||
'columns' => [
|
||||
'id',
|
||||
'type',
|
||||
'account_id' => [
|
||||
'route' => ['accounts.index', 'search=enabled:1'],
|
||||
],
|
||||
'paid_at' => ['date' => true],
|
||||
'amount',
|
||||
'currency_code' => [
|
||||
'route' => ['currencies.index', 'search=enabled:1'],
|
||||
],
|
||||
'document_id',
|
||||
'contact_id' => [
|
||||
'route' => ['vendors.index', 'search=enabled:1'],
|
||||
],
|
||||
'description' => ['searchable' => true],
|
||||
'payment_method',
|
||||
'reference',
|
||||
'category_id' => [
|
||||
'route' => ['categories.index', 'search=type:expense enabled:1']
|
||||
],
|
||||
'parent_id',
|
||||
'recurring' => [
|
||||
'key' => 'recurring',
|
||||
'foreign_key' => '',
|
||||
'relationship' => true,
|
||||
'boolean' => true,
|
||||
]
|
||||
],
|
||||
],
|
||||
|
||||
@@ -333,42 +343,9 @@ return [
|
||||
'parent_id',
|
||||
'recurring' => [
|
||||
'key' => 'recurring',
|
||||
'foreign_key' => '',
|
||||
'relationship' => true,
|
||||
'boolean' => true,
|
||||
]
|
||||
],
|
||||
],
|
||||
|
||||
'App\Models\Sale\Revenue' => [
|
||||
'columns' => [
|
||||
'id',
|
||||
'type',
|
||||
'account_id' => [
|
||||
'route' => ['accounts.index', 'search=enabled:1'],
|
||||
],
|
||||
'paid_at' => ['date' => true],
|
||||
'amount',
|
||||
'currency_code' => [
|
||||
'route' => ['currencies.index', 'search=enabled:1'],
|
||||
],
|
||||
'document_id',
|
||||
'contact_id' => [
|
||||
'route' => ['customers.index', 'search=enabled:1'],
|
||||
],
|
||||
'description' => ['searchable' => true],
|
||||
'payment_method',
|
||||
'reference',
|
||||
'category_id' => [
|
||||
'route' => ['categories.index', 'search=type:income enabled:1'],
|
||||
],
|
||||
'parent_id',
|
||||
'recurring' => [
|
||||
'key' => 'recurring',
|
||||
'foreign_key' => '',
|
||||
'relationship' => true,
|
||||
'boolean' => true,
|
||||
]
|
||||
],
|
||||
],
|
||||
|
||||
@@ -402,6 +379,14 @@ return [
|
||||
],
|
||||
],
|
||||
|
||||
App\Models\Setting\EmailTemplate::class => [
|
||||
'columns' => [
|
||||
'id',
|
||||
'name' => ['searchable' => true],
|
||||
'subject' => ['searchable' => true],
|
||||
],
|
||||
],
|
||||
|
||||
App\Models\Setting\Tax::class => [
|
||||
'columns' => [
|
||||
'id',
|
||||
|
||||
@@ -72,7 +72,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'connection' => env('SESSION_CONNECTION', null),
|
||||
'connection' => env('SESSION_CONNECTION'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -100,7 +100,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'store' => env('SESSION_STORE', null),
|
||||
'store' => env('SESSION_STORE'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -152,7 +152,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'domain' => env('SESSION_DOMAIN', null),
|
||||
'domain' => env('SESSION_DOMAIN'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -124,18 +124,28 @@ return [
|
||||
'logo_size_height' => env('SETTING_FALLBACK_INVOICE_LOGO_SIZE_HEIGHT', 128),
|
||||
'item_search_char_limit' => env('SETTING_FALLBACK_INVOICE_ITEM_SEARCH_CHAR_LIMIT', 3),
|
||||
],
|
||||
'invoice-recurring' => [
|
||||
'number_prefix' => env('SETTING_FALLBACK_INVOICE_RECURRING_NUMBER_PREFIX', 'RCI-'),
|
||||
'number_digit' => env('SETTING_FALLBACK_INVOICE_RECURRING_NUMBER_DIGIT', '5'),
|
||||
'number_next' => env('SETTING_FALLBACK_INVOICE_RECURRING_NUMBER_NEXT', '1'),
|
||||
],
|
||||
'bill' => [
|
||||
'number_prefix' => env('SETTING_FALLBACK_BILL_NUMBER_PREFIX', 'BILL-'),
|
||||
'number_digit' => env('SETTING_FALLBACK_BILL_NUMBER_DIGIT', '5'),
|
||||
'number_next' => env('SETTING_FALLBACK_BILL_NUMBER_NEXT', '1'),
|
||||
'item_name' => env('SETTING_FALLBACK_BILL_ITEM_NAME', 'settings.bill.item'),
|
||||
'price_name' => env('SETTING_FALLBACK_BILL_PRICE_NAME', 'settings.bill.price'),
|
||||
'quantity_name' => env('SETTING_FALLBACK_BILL_QUANTITY_NAME', 'settings.bill.quantity'),
|
||||
'item_name' => env('SETTING_FALLBACK_BILL_ITEM_NAME', 'settings.invoice.item'),
|
||||
'price_name' => env('SETTING_FALLBACK_BILL_PRICE_NAME', 'settings.invoice.price'),
|
||||
'quantity_name' => env('SETTING_FALLBACK_BILL_QUANTITY_NAME', 'settings.invoice.quantity'),
|
||||
'payment_terms' => env('SETTING_FALLBACK_BILL_PAYMENT_TERMS', '0'),
|
||||
'template' => env('SETTING_FALLBACK_BILL_TEMPLATE', 'default'),
|
||||
'color' => env('SETTING_FALLBACK_BILL_COLOR', '#55588b'),
|
||||
'item_search_char_limit' => env('SETTING_FALLBACK_BILL_ITEM_SEARCH_CHAR_LIMIT', 3),
|
||||
],
|
||||
'bill-recurring' => [
|
||||
'number_prefix' => env('SETTING_FALLBACK_BILL_RECURRING_NUMBER_PREFIX', 'RCB-'),
|
||||
'number_digit' => env('SETTING_FALLBACK_BILL_RECURRING_NUMBER_DIGIT', '5'),
|
||||
'number_next' => env('SETTING_FALLBACK_BILL_RECURRING_NUMBER_NEXT', '1'),
|
||||
],
|
||||
'default' => [
|
||||
'currency' => env('SETTING_FALLBACK_DEFAULT_CURRENCY', 'USD'),
|
||||
'locale' => env('SETTING_FALLBACK_DEFAULT_LOCALE', 'en-GB'),
|
||||
@@ -161,11 +171,19 @@ return [
|
||||
],
|
||||
],
|
||||
'transaction' => [
|
||||
'number_prefix' => env('SETTING_FALLBACK_TRANSACTION_NUMBER_PREFIX', 'TRA-'),
|
||||
'number_digit' => env('SETTING_FALLBACK_TRANSACTION_NUMBER_DIGIT', '5'),
|
||||
'number_next' => env('SETTING_FALLBACK_TRANSACTION_NUMBER_NEXT', '1'),
|
||||
'type' => [
|
||||
'income' => env('SETTING_FALLBACK_TRANSACTION_TYPE_INCOME', 'income'),
|
||||
'expense' => env('SETTING_FALLBACK_TRANSACTION_TYPE_EXPENSE', 'expense'),
|
||||
],
|
||||
],
|
||||
'transaction-recurring' => [
|
||||
'number_prefix' => env('SETTING_FALLBACK_TRANSACTION_RECURRING_NUMBER_PREFIX', 'RCT-'),
|
||||
'number_digit' => env('SETTING_FALLBACK_TRANSACTION_RECURRING_NUMBER_DIGIT', '5'),
|
||||
'number_next' => env('SETTING_FALLBACK_TRANSACTION_RECURRING_NUMBER_NEXT', '1'),
|
||||
],
|
||||
'transfer' => [
|
||||
'template' => env('SETTING_FALLBACK_BANKING_TEMPLATE', 'default'),
|
||||
],
|
||||
|
||||
79
config/sortable.php
Normal file
79
config/sortable.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'types' => [
|
||||
'alpha' => [
|
||||
'fields' => ['name', 'contact_name', 'customer_name', 'vendor_name', 'display_name', 'company_name', 'domain', 'email', 'description', 'code', 'type', 'status', 'vendor', 'account', 'category'],
|
||||
'icon' => 'arrow_drop',
|
||||
],
|
||||
'amount' => [
|
||||
'fields' => ['amount', 'price', 'sale_price', 'purchase_price', 'total_price', 'current_balance', 'total_price', 'opening_balance'],
|
||||
'icon' => 'arrow_drop',
|
||||
],
|
||||
'numeric' => [
|
||||
'fields' => ['created_at', 'updated_at', 'paid_at', 'issued_at', 'due_at', 'id', 'quantity', 'rate', 'number', 'document_number'],
|
||||
'icon' => 'arrow_drop',
|
||||
],
|
||||
],
|
||||
|
||||
'icons' => [
|
||||
'enabled' => true,
|
||||
|
||||
'wrapper' => '<span class="material-icons-outlined text-xl align-middle" style="line-height:0">{icon}</span>',
|
||||
|
||||
'default' => 'arrow_drop',
|
||||
|
||||
// Icon that shows when generating sortable link for columns not sorted by, not applied if value is null
|
||||
'sortable' => null,
|
||||
|
||||
'clickable' => false,
|
||||
|
||||
'prefix' => ' ',
|
||||
|
||||
'suffix' => '',
|
||||
|
||||
'asc_suffix' => '_down',
|
||||
|
||||
'desc_suffix' => '_up',
|
||||
],
|
||||
|
||||
// Default anchor class, not applied if value is null
|
||||
'anchor_class' => null,
|
||||
|
||||
// Default active anchor class, not applied if value is null
|
||||
'active_anchor_class' => null,
|
||||
|
||||
// Default sort direction anchor class, not applied if value is null
|
||||
'direction_anchor_class_prefix' => null,
|
||||
|
||||
// Relation - column separator ex: author.name means relation "author" and column "name"
|
||||
'relation_column_separator' => '.',
|
||||
|
||||
// Formatting function applied to name of column, use null to turn formatting off
|
||||
'formatting_function' => 'ucfirst',
|
||||
|
||||
// Apply formatting function to custom titles as well as column names
|
||||
'format_custom_titles' => true,
|
||||
|
||||
// Inject title parameter in query strings, use null to turn injection off
|
||||
// Example: 'inject_title' => 't' will result in ..user/?t="formatted title of sorted column"
|
||||
'inject_title_as' => null,
|
||||
|
||||
// Allow request modification, when default sorting is set but is not in URI (first load)
|
||||
'allow_request_modification' => true,
|
||||
|
||||
// Default direction for: $user->sortable('id') usage
|
||||
'default_direction' => 'asc',
|
||||
|
||||
// Default direction for non-sorted columns
|
||||
'default_direction_unsorted' => 'asc',
|
||||
|
||||
// Use the first defined sortable column (Model::$sortable) as default
|
||||
// Also applies if sorting parameters are invalid for example: 'sort' => 'name', 'direction' => ''
|
||||
'default_first_column' => false,
|
||||
|
||||
// Join type: join vs leftJoin
|
||||
'join_type' => 'leftJoin',
|
||||
|
||||
];
|
||||
477
config/type.php
477
config/type.php
@@ -1,152 +1,393 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Banking\Transaction;
|
||||
use App\Models\Common\Contact;
|
||||
use App\Models\Document\Document;
|
||||
use App\Models\Setting\Category;
|
||||
|
||||
return [
|
||||
|
||||
// Documents
|
||||
Document::INVOICE_TYPE => [
|
||||
'alias' => '', // core empty but module write own alias
|
||||
'group' => 'sales', // controller folder name for permission and route
|
||||
'route' => [
|
||||
'prefix' => 'invoices', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'invoice', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
// Categories
|
||||
'category' => [
|
||||
Category::INCOME_TYPE => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
],
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'invoices', // this controller file name.
|
||||
//'create' => 'create-sales-invoices', // if you change action permission key, you can write full permission
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'invoices', // this translation file name.
|
||||
'add_contact' => 'general.customers', //
|
||||
'issued_at' => 'invoices.invoice_date',
|
||||
'due_at' => 'invoices.due_date',
|
||||
],
|
||||
'setting' => [
|
||||
'prefix' => 'invoice',
|
||||
],
|
||||
'category_type' => 'income',
|
||||
'transaction_type' => 'income',
|
||||
'contact_type' => 'customer', // use contact type
|
||||
'hide' => [], // for document items
|
||||
'class' => [],
|
||||
'notification' => [
|
||||
'class' => 'App\Notifications\Sale\Invoice',
|
||||
'notify_contact' => true,
|
||||
'notify_user' => true,
|
||||
],
|
||||
],
|
||||
|
||||
Document::BILL_TYPE => [
|
||||
'alias' => '',
|
||||
'group' => 'purchases',
|
||||
'route' => [
|
||||
'prefix' => 'bills',
|
||||
'parameter' => 'bill',
|
||||
//'create' => 'bilss.create',
|
||||
Category::EXPENSE_TYPE => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
],
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'bills',
|
||||
//'create' => 'create-purchases-bills',
|
||||
|
||||
Category::ITEM_TYPE => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
],
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'bills',
|
||||
'issued_at' => 'bills.bill_date',
|
||||
'due_at' => 'bills.due_date',
|
||||
],
|
||||
'setting' => [
|
||||
'prefix' => 'bill',
|
||||
],
|
||||
'category_type' => 'expense',
|
||||
'transaction_type' => 'expense',
|
||||
'contact_type' => 'vendor',
|
||||
'hide' => [],
|
||||
'notification' => [
|
||||
'class' => 'App\Notifications\Purchase\Bill',
|
||||
'notify_contact' => false,
|
||||
'notify_user' => true,
|
||||
|
||||
Category::OTHER_TYPE => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Contacts
|
||||
'customer' => [
|
||||
'group' => 'sales',
|
||||
'permission' => [
|
||||
'prefix' => 'customers',
|
||||
//'create' => 'create-sales-customers',
|
||||
'contact' => [
|
||||
Contact::CUSTOMER_TYPE => [
|
||||
'group' => 'sales',
|
||||
'route' => [
|
||||
'prefix' => 'customers', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'customer', // sales/customers/{parameter}/edit
|
||||
//'create' => 'customers.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'customers',
|
||||
//'create' => 'create-sales-customers',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'customers', // this translation file name.
|
||||
'section_general_description' => 'customers.form_description.general',
|
||||
'section_billing_description' => 'customers.form_description.billing',
|
||||
'section_address_description' => 'customers.form_description.address',
|
||||
],
|
||||
'category_type' => 'income',
|
||||
'document_type' => 'invoice',
|
||||
'transaction_type' => 'income',
|
||||
'hide' => [],
|
||||
'class' => [],
|
||||
'script' => [
|
||||
'folder' => 'common',
|
||||
'file' => 'contacts',
|
||||
],
|
||||
],
|
||||
|
||||
Contact::VENDOR_TYPE => [
|
||||
'group' => 'purchases',
|
||||
'route' => [
|
||||
'prefix' => 'vendors', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'vendor', // sales/vendors/{parameter}/edit
|
||||
//'create' => 'vendors.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'vendors',
|
||||
//'create' => 'create-purchases-vendors',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'vendors', // this translation file name.
|
||||
'section_general_description' => 'vendors.form_description.general',
|
||||
'section_billing_description' => 'vendors.form_description.billing',
|
||||
'section_address_description' => 'vendors.form_description.address',
|
||||
],
|
||||
'category_type' => 'expense',
|
||||
'document_type' => 'bill',
|
||||
'transaction_type' => 'expense',
|
||||
'hide' => [],
|
||||
'class' => [],
|
||||
'script' => [
|
||||
'folder' => 'common',
|
||||
'file' => 'contacts',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'vendor' => [
|
||||
'group' => 'purchases',
|
||||
'permission' => [
|
||||
'prefix' => 'vendors',
|
||||
//'create' => 'create-purchases-vendors',
|
||||
// Documents
|
||||
'document' => [
|
||||
Document::INVOICE_TYPE => [
|
||||
'alias' => '', // core empty but module write own alias
|
||||
'group' => 'sales', // controller folder name for permission and route
|
||||
'route' => [
|
||||
'prefix' => 'invoices', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'invoice', // sales/invoices/{parameter}/edit
|
||||
'document' => 'invoices.index',
|
||||
'recurring' => 'recurring-invoices.index',
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'invoices', // this controller file name.
|
||||
//'create' => 'create-sales-invoices', // if you change action permission key, you can write full permission
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'invoices', // this translation file name.
|
||||
'add_contact' => 'general.customers', //
|
||||
'issued_at' => 'invoices.invoice_date',
|
||||
'due_at' => 'invoices.due_date',
|
||||
'section_billing_description' => 'invoices.form_description.billing',
|
||||
],
|
||||
'setting' => [
|
||||
'prefix' => 'invoice',
|
||||
],
|
||||
'category_type' => 'income',
|
||||
'transaction_type' => 'income',
|
||||
'contact_type' => 'customer', // use contact type
|
||||
'hide' => [], // for document items
|
||||
'class' => [],
|
||||
'notification' => [
|
||||
'class' => 'App\Notifications\Sale\Invoice',
|
||||
'notify_contact' => true,
|
||||
'notify_user' => true,
|
||||
],
|
||||
'script' => [
|
||||
'folder' => 'common',
|
||||
'file' => 'documents',
|
||||
],
|
||||
'status_workflow' => [
|
||||
'draft' => 'send',
|
||||
'sent' => 'get-paid',
|
||||
'viewed' => 'get-paid',
|
||||
'partial' => 'get-paid',
|
||||
'paid' => 'get-paid',
|
||||
'cancelled' => 'restore',
|
||||
],
|
||||
],
|
||||
|
||||
Document::INVOICE_RECURRING_TYPE => [
|
||||
'alias' => '', // core empty but module write own alias
|
||||
'group' => 'sales', // controller folder name for permission and route
|
||||
'route' => [
|
||||
'prefix' => 'recurring-invoices', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'recurring_invoice', // sales/invoices/{parameter}/edit
|
||||
'document' => 'invoices.index',
|
||||
'recurring' => 'recurring-invoices.index',
|
||||
'end' => 'recurring-invoices.end',
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'invoices', // this controller file name.
|
||||
//'create' => 'create-sales-invoices', // if you change action permission key, you can write full permission
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'invoices', // this translation file name.
|
||||
'add_contact' => 'general.customers', //
|
||||
'issued_at' => 'invoices.invoice_date',
|
||||
'due_at' => 'invoices.due_date',
|
||||
'tab_document' => 'general.invoices',
|
||||
'section_billing_description' => 'invoices.form_description.billing',
|
||||
],
|
||||
'setting' => [
|
||||
'prefix' => 'invoice',
|
||||
],
|
||||
'category_type' => 'income',
|
||||
'transaction_type' => 'income',
|
||||
'contact_type' => 'customer', // use contact type
|
||||
'hide' => [], // for document items
|
||||
'class' => [],
|
||||
'notification' => [
|
||||
|
||||
],
|
||||
'image_empty_page' => 'public/img/empty_pages/recurring_templates.png',
|
||||
'script' => [
|
||||
'folder' => 'common',
|
||||
'file' => 'documents',
|
||||
],
|
||||
'status_workflow' => [
|
||||
'draft' => 'schedule',
|
||||
'active' => 'schedule',
|
||||
'end' => 'schedule',
|
||||
],
|
||||
],
|
||||
|
||||
Document::BILL_TYPE => [
|
||||
'alias' => '',
|
||||
'group' => 'purchases',
|
||||
'route' => [
|
||||
'prefix' => 'bills',
|
||||
'parameter' => 'bill',
|
||||
'document' => 'bills.index',
|
||||
'recurring' => 'recurring-bills.index',
|
||||
//'create' => 'bilss.create',
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'bills',
|
||||
//'create' => 'create-purchases-bills',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'bills',
|
||||
'issued_at' => 'bills.bill_date',
|
||||
'due_at' => 'bills.due_date',
|
||||
'section_billing_description' => 'bills.form_description.billing',
|
||||
],
|
||||
'setting' => [
|
||||
'prefix' => 'bill',
|
||||
],
|
||||
'category_type' => 'expense',
|
||||
'transaction_type' => 'expense',
|
||||
'contact_type' => 'vendor',
|
||||
'hide' => [],
|
||||
'notification' => [
|
||||
'class' => 'App\Notifications\Purchase\Bill',
|
||||
'notify_contact' => false,
|
||||
'notify_user' => true,
|
||||
],
|
||||
'script' => [
|
||||
'folder' => 'common',
|
||||
'file' => 'documents',
|
||||
],
|
||||
'status_workflow' => [
|
||||
'draft' => 'receive',
|
||||
'received' => 'make-payment',
|
||||
'viewed' => 'make-payment',
|
||||
'partial' => 'make-payment',
|
||||
'paid' => 'make-payment',
|
||||
'cancelled' => 'restore',
|
||||
],
|
||||
],
|
||||
|
||||
Document::BILL_RECURRING_TYPE => [
|
||||
'alias' => '',
|
||||
'group' => 'purchases',
|
||||
'route' => [
|
||||
'prefix' => 'recurring-bills',
|
||||
'parameter' => 'recurring_bill',
|
||||
'document' => 'bills.index',
|
||||
'recurring' => 'recurring-bills.index',
|
||||
'end' => 'recurring-bills.end',
|
||||
//'create' => 'bilss.create',
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'bills',
|
||||
//'create' => 'create-purchases-bills',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'bills',
|
||||
'issued_at' => 'bills.bill_date',
|
||||
'due_at' => 'bills.due_date',
|
||||
'tab_document' => 'general.bills',
|
||||
'section_billing_description' => 'bills.form_description.billing',
|
||||
],
|
||||
'setting' => [
|
||||
'prefix' => 'bill',
|
||||
],
|
||||
'category_type' => 'expense',
|
||||
'transaction_type' => 'expense',
|
||||
'contact_type' => 'vendor',
|
||||
'hide' => [],
|
||||
'notification' => [
|
||||
|
||||
],
|
||||
'image_empty_page' => 'public/img/empty_pages/recurring_templates.png',
|
||||
'script' => [
|
||||
'folder' => 'common',
|
||||
'file' => 'documents',
|
||||
],
|
||||
'status_workflow' => [
|
||||
'draft' => 'schedule',
|
||||
'active' => 'schedule',
|
||||
'end' => 'schedule',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Transactions
|
||||
'income' => [
|
||||
'group' => 'sales',
|
||||
'route' => [
|
||||
'prefix' => 'revenues', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'revenue', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
'transaction' => [
|
||||
Transaction::INCOME_TYPE => [
|
||||
'group' => 'banking',
|
||||
'route' => [
|
||||
'prefix' => 'transactions', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'income', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'transactions',
|
||||
//'create' => 'create-banking-transactions',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'transactions', // this translation file name.
|
||||
'related_document_amount' => 'invoices.invoice_amount',
|
||||
'transactions' => 'general.incomes',
|
||||
],
|
||||
'contact_type' => 'customer',
|
||||
'document_type' => 'invoice',
|
||||
'split_type' => Transaction::INCOME_SPLIT_TYPE,
|
||||
'email_template' => 'payment_received_customer',
|
||||
'script' => [
|
||||
'folder' => 'banking',
|
||||
'file' => 'transactions',
|
||||
],
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'revenues',
|
||||
//'create' => 'create-sales-revenues',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'revenues', // this translation file name.
|
||||
'related_document_amount' => 'invoices.invoice_amount',
|
||||
],
|
||||
'contact_type' => 'customer',
|
||||
],
|
||||
|
||||
'expense' => [
|
||||
'group' => 'purchases',
|
||||
'route' => [
|
||||
'prefix' => 'payments', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'payment', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
Transaction::INCOME_RECURRING_TYPE => [
|
||||
'group' => 'banking',
|
||||
'route' => [
|
||||
'prefix' => 'recurring-transactions', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'recurring_transaction', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'transactions',
|
||||
//'create' => 'create-banking-transactions',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'transactions', // this translation file name.
|
||||
'new' => 'general.recurring_incomes',
|
||||
'transactions' => 'general.expenses',
|
||||
],
|
||||
'image_empty_page' => 'public/img/empty_pages/recurring_templates.png',
|
||||
'script' => [
|
||||
'folder' => 'banking',
|
||||
'file' => 'transactions',
|
||||
],
|
||||
'status_workflow' => [
|
||||
'draft' => 'schedule',
|
||||
'active' => 'schedule',
|
||||
'end' => 'schedule',
|
||||
],
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'payments',
|
||||
//'create' => 'create-purchases-payments',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'payments', // this translation file name.
|
||||
'related_document_amount' => 'bills.bill_amount',
|
||||
],
|
||||
'contact_type' => 'vendor',
|
||||
],
|
||||
|
||||
// Categories
|
||||
'category' => [
|
||||
'income' => [
|
||||
'alias' => '',
|
||||
Transaction::EXPENSE_TYPE => [
|
||||
'group' => 'banking',
|
||||
'route' => [
|
||||
'prefix' => 'transactions', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'expense', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
],
|
||||
'permission' => [
|
||||
'prefix' => 'transactions',
|
||||
//'create' => 'create-banking-transactions',
|
||||
],
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
'prefix' => 'transactions', // this translation file name.
|
||||
'related_document_amount' => 'bills.bill_amount',
|
||||
],
|
||||
'contact_type' => 'vendor',
|
||||
'document_type' => 'bill',
|
||||
'split_type' => Transaction::EXPENSE_SPLIT_TYPE,
|
||||
'email_template' => 'payment_made_vendor',
|
||||
'script' => [
|
||||
'folder' => 'banking',
|
||||
'file' => 'transactions',
|
||||
],
|
||||
],
|
||||
'expense' => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
|
||||
Transaction::EXPENSE_RECURRING_TYPE => [
|
||||
'group' => 'banking',
|
||||
'route' => [
|
||||
'prefix' => 'recurring-transactions', // core use with group + prefix, module ex. estimates
|
||||
'parameter' => 'recurring_transaction', // sales/invoices/{parameter}/edit
|
||||
//'create' => 'invoices.create', // if you change route, you can write full path
|
||||
],
|
||||
],
|
||||
'item' => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
'permission' => [
|
||||
'prefix' => 'transactions',
|
||||
//'create' => 'create-banking-transactions',
|
||||
],
|
||||
],
|
||||
'other' => [
|
||||
'alias' => '',
|
||||
'translation' => [
|
||||
'prefix' => 'general',
|
||||
'new' => 'general.recurring_expenses',
|
||||
],
|
||||
'image_empty_page' => 'public/img/empty_pages/recurring_templates.png',
|
||||
'script' => [
|
||||
'folder' => 'banking',
|
||||
'file' => 'transactions',
|
||||
],
|
||||
'status_workflow' => [
|
||||
'draft' => 'schedule',
|
||||
'active' => 'schedule',
|
||||
'end' => 'schedule',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
@@ -4,21 +4,21 @@ return [
|
||||
|
||||
'name' => 'Akaunting',
|
||||
|
||||
'code' => 'Document',
|
||||
'code' => 'Tailwind',
|
||||
|
||||
'major' => '2',
|
||||
'major' => '3',
|
||||
|
||||
'minor' => '1',
|
||||
'minor' => '0',
|
||||
|
||||
'patch' => '35',
|
||||
'patch' => '0',
|
||||
|
||||
'build' => '',
|
||||
|
||||
'status' => 'Stable',
|
||||
|
||||
'date' => '27-April-2021',
|
||||
'date' => '1-June-2022',
|
||||
|
||||
'time' => '14:00',
|
||||
'time' => '10:00',
|
||||
|
||||
'zone' => 'GMT +3',
|
||||
|
||||
|
||||
Reference in New Issue
Block a user