From e5a7f5b15edb2c05a16a22268989f0fe85e1bf32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Duli=C3=A7i?= Date: Fri, 6 Nov 2020 00:43:46 +0300 Subject: [PATCH 01/19] added responsable class to index --- app/Abstracts/Http/Controller.php | 22 ++++++++ app/Abstracts/Http/Response.php | 55 +++++++++++++++++++ app/Abstracts/Model.php | 9 ++- app/Console/Stubs/Modules/controller.stub | 10 +++- app/Http/Controllers/Auth/Permissions.php | 2 +- app/Http/Controllers/Auth/Roles.php | 2 +- app/Http/Controllers/Auth/Users.php | 2 +- app/Http/Controllers/Banking/Accounts.php | 2 +- .../Controllers/Banking/Reconciliations.php | 2 +- app/Http/Controllers/Banking/Transactions.php | 2 +- app/Http/Controllers/Banking/Transfers.php | 8 +-- app/Http/Controllers/Common/Companies.php | 2 +- app/Http/Controllers/Common/Dashboards.php | 2 +- app/Http/Controllers/Common/Items.php | 2 +- app/Http/Controllers/Common/Reports.php | 2 +- app/Http/Controllers/Modules/Home.php | 2 +- app/Http/Controllers/Modules/My.php | 2 +- app/Http/Controllers/Portal/Invoices.php | 2 +- app/Http/Controllers/Portal/Payments.php | 2 +- app/Http/Controllers/Purchases/Bills.php | 2 +- app/Http/Controllers/Purchases/Payments.php | 2 +- app/Http/Controllers/Purchases/Vendors.php | 2 +- app/Http/Controllers/Sales/Customers.php | 2 +- app/Http/Controllers/Sales/Invoices.php | 2 +- app/Http/Controllers/Sales/Revenues.php | 2 +- app/Http/Controllers/Settings/Categories.php | 2 +- app/Http/Controllers/Settings/Currencies.php | 2 +- app/Http/Controllers/Settings/Settings.php | 2 +- app/Http/Controllers/Settings/Taxes.php | 2 +- app/Http/Responses/Common/Items.php | 10 ++++ app/Models/Common/Company.php | 9 ++- 31 files changed, 139 insertions(+), 32 deletions(-) create mode 100644 app/Abstracts/Http/Response.php create mode 100644 app/Http/Responses/Common/Items.php diff --git a/app/Abstracts/Http/Controller.php b/app/Abstracts/Http/Controller.php index f366929d5..d1f7dce54 100644 --- a/app/Abstracts/Http/Controller.php +++ b/app/Abstracts/Http/Controller.php @@ -2,6 +2,7 @@ namespace App\Abstracts\Http; +use App\Abstracts\Http\Response; use App\Traits\Jobs; use App\Traits\Relationships; use Illuminate\Database\Eloquent\Collection; @@ -99,4 +100,25 @@ abstract class Controller extends BaseController return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); } + + /** + * Generate a response based on request type like HTML, JSON, or anything else. + * + * @param string $view + * @param array $data + * + * @return \Illuminate\Http\Response + */ + public function response($view, $data = []) + { + $class_name = str_replace('Controllers', 'Responses', (new \ReflectionClass($this))->getName()); + + if (class_exists($class_name)) { + $response = new $class_name($view, $data); + } else { + $response = new class($view, $data) extends Response {}; + } + + return $response; + } } diff --git a/app/Abstracts/Http/Response.php b/app/Abstracts/Http/Response.php new file mode 100644 index 000000000..75a3dac50 --- /dev/null +++ b/app/Abstracts/Http/Response.php @@ -0,0 +1,55 @@ +view = $view; + $this->data = $data; + } + + public function toJson() + { + return response()->json([ + 'success' => true, + 'error' => false, + 'data' => Arr::first($this->data), + 'message' => '', + ]); + } + + public function toHtml() + { + return view($this->view, $this->data); + } + + public function toResponse($request) + { + foreach ($this->accepts as $accept) { + $request_method = 'expects' . Str::studly($accept); + $response_method = 'to' . Str::studly($accept); + + if (!method_exists($request, $request_method) || !method_exists($this, $response_method)) { + continue; + } + + if ($request->{$request_method}()) { + return $this->{$response_method}(); + } + } + + return $this->toHtml(); + } +} diff --git a/app/Abstracts/Model.php b/app/Abstracts/Model.php index f2fd309ea..460de969c 100644 --- a/app/Abstracts/Model.php +++ b/app/Abstracts/Model.php @@ -70,9 +70,16 @@ abstract class Model extends Eloquent $request = request(); $search = $request->get('search'); + + $query->usingSearchString($search)->sortable($sort); + + if ($request->expectsJson()) { + return $query->get(); + } + $limit = $request->get('limit', setting('default.list_limit', '25')); - return $query->usingSearchString($search)->sortable($sort)->paginate($limit); + return $query->paginate($limit); } /** diff --git a/app/Console/Stubs/Modules/controller.stub b/app/Console/Stubs/Modules/controller.stub index 4a62c49dd..1dcac0c56 100644 --- a/app/Console/Stubs/Modules/controller.stub +++ b/app/Console/Stubs/Modules/controller.stub @@ -3,7 +3,6 @@ namespace $CLASS_NAMESPACE$; use App\Abstracts\Http\Controller; -use App\Abstracts\Http\FormRequest; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -11,15 +10,17 @@ class $CLASS$ extends Controller { /** * Display a listing of the resource. + * * @return Response */ public function index() { - return view('$ALIAS$::index'); + return $this->response('$ALIAS$::index'); } /** * Show the form for creating a new resource. + * * @return Response */ public function create() @@ -29,6 +30,7 @@ class $CLASS$ extends Controller /** * Store a newly created resource in storage. + * * @param Request $request * @return Response */ @@ -39,6 +41,7 @@ class $CLASS$ extends Controller /** * Show the specified resource. + * * @param int $id * @return Response */ @@ -49,6 +52,7 @@ class $CLASS$ extends Controller /** * Show the form for editing the specified resource. + * * @param int $id * @return Response */ @@ -59,6 +63,7 @@ class $CLASS$ extends Controller /** * Update the specified resource in storage. + * * @param Request $request * @param int $id * @return Response @@ -70,6 +75,7 @@ class $CLASS$ extends Controller /** * Remove the specified resource from storage. + * * @param int $id * @return Response */ diff --git a/app/Http/Controllers/Auth/Permissions.php b/app/Http/Controllers/Auth/Permissions.php index 5fadd7f0a..555435dbb 100644 --- a/app/Http/Controllers/Auth/Permissions.php +++ b/app/Http/Controllers/Auth/Permissions.php @@ -20,7 +20,7 @@ class Permissions extends Controller { $permissions = Permission::collect(); - return view('auth.permissions.index', compact('permissions')); + return $this->response('auth.permissions.index', compact('permissions')); } /** diff --git a/app/Http/Controllers/Auth/Roles.php b/app/Http/Controllers/Auth/Roles.php index 53a74b561..ab4e042f5 100644 --- a/app/Http/Controllers/Auth/Roles.php +++ b/app/Http/Controllers/Auth/Roles.php @@ -21,7 +21,7 @@ class Roles extends Controller { $roles = Role::collect(); - return view('auth.roles.index', compact('roles')); + return $this->response('auth.roles.index', compact('roles')); } /** diff --git a/app/Http/Controllers/Auth/Users.php b/app/Http/Controllers/Auth/Users.php index c43aac6e7..dfff5b28a 100644 --- a/app/Http/Controllers/Auth/Users.php +++ b/app/Http/Controllers/Auth/Users.php @@ -37,7 +37,7 @@ class Users extends Controller { $users = User::with('media', 'roles')->collect(); - return view('auth.users.index', compact('users')); + return $this->response('auth.users.index', compact('users')); } /** diff --git a/app/Http/Controllers/Banking/Accounts.php b/app/Http/Controllers/Banking/Accounts.php index 08e9f89e4..0683c4e59 100644 --- a/app/Http/Controllers/Banking/Accounts.php +++ b/app/Http/Controllers/Banking/Accounts.php @@ -21,7 +21,7 @@ class Accounts extends Controller { $accounts = Account::collect(); - return view('banking.accounts.index', compact('accounts')); + return $this->response('banking.accounts.index', compact('accounts')); } /** diff --git a/app/Http/Controllers/Banking/Reconciliations.php b/app/Http/Controllers/Banking/Reconciliations.php index 81f0f8229..fe040cfdd 100644 --- a/app/Http/Controllers/Banking/Reconciliations.php +++ b/app/Http/Controllers/Banking/Reconciliations.php @@ -26,7 +26,7 @@ class Reconciliations extends Controller $accounts = collect(Account::enabled()->orderBy('name')->pluck('name', 'id')); - return view('banking.reconciliations.index', compact('reconciliations', 'accounts')); + return $this->response('banking.reconciliations.index', compact('reconciliations', 'accounts')); } /** diff --git a/app/Http/Controllers/Banking/Transactions.php b/app/Http/Controllers/Banking/Transactions.php index 7cfeded9c..9ec181b73 100644 --- a/app/Http/Controllers/Banking/Transactions.php +++ b/app/Http/Controllers/Banking/Transactions.php @@ -30,7 +30,7 @@ class Transactions extends Controller $transactions = Transaction::with('account', 'category', 'contact')->collect(['paid_at'=> 'desc']); - return view('banking.transactions.index', compact('transactions', 'accounts', 'types', 'categories')); + return $this->response('banking.transactions.index', compact('transactions', 'accounts', 'types', 'categories')); } /** diff --git a/app/Http/Controllers/Banking/Transfers.php b/app/Http/Controllers/Banking/Transfers.php index 64e7b7a71..b9febd0fd 100644 --- a/app/Http/Controllers/Banking/Transfers.php +++ b/app/Http/Controllers/Banking/Transfers.php @@ -52,10 +52,10 @@ class Transfers extends Controller ]; } - $special_key = array( + $special_key = [ 'expense_transaction.name' => 'from_account', 'income_transaction.name' => 'to_account', - ); + ]; $request = request(); @@ -77,12 +77,12 @@ class Transfers extends Controller array_multisort($sort_order, $sort_type, $data); } - $transfers = $this->paginate($data); + $transfers = $request->expectsJson() ? $data : $this->paginate($data); $accounts = collect(Account::enabled()->orderBy('name')->pluck('name', 'id')) ->prepend(trans('general.all_type', ['type' => trans_choice('general.accounts', 2)]), ''); - return view('banking.transfers.index', compact('transfers', 'accounts')); + return $this->response('banking.transfers.index', compact('transfers', 'accounts')); } /** diff --git a/app/Http/Controllers/Common/Companies.php b/app/Http/Controllers/Common/Companies.php index 2cd575a18..3876b7574 100644 --- a/app/Http/Controllers/Common/Companies.php +++ b/app/Http/Controllers/Common/Companies.php @@ -26,7 +26,7 @@ class Companies extends Controller { $companies = Company::collect(); - return view('common.companies.index', compact('companies')); + return $this->response('common.companies.index', compact('companies')); } /** diff --git a/app/Http/Controllers/Common/Dashboards.php b/app/Http/Controllers/Common/Dashboards.php index 53afd6784..99a77c24a 100644 --- a/app/Http/Controllers/Common/Dashboards.php +++ b/app/Http/Controllers/Common/Dashboards.php @@ -39,7 +39,7 @@ class Dashboards extends Controller { $dashboards = user()->dashboards()->collect(); - return view('common.dashboards.index', compact('dashboards')); + return $this->response('common.dashboards.index', compact('dashboards')); } /** diff --git a/app/Http/Controllers/Common/Items.php b/app/Http/Controllers/Common/Items.php index 58214e3ea..180a95499 100644 --- a/app/Http/Controllers/Common/Items.php +++ b/app/Http/Controllers/Common/Items.php @@ -30,7 +30,7 @@ class Items extends Controller { $items = Item::with('category', 'media')->collect(); - return view('common.items.index', compact('items')); + return $this->response('common.items.index', compact('items')); } /** diff --git a/app/Http/Controllers/Common/Reports.php b/app/Http/Controllers/Common/Reports.php index 93a5fcbf5..d846e96a8 100644 --- a/app/Http/Controllers/Common/Reports.php +++ b/app/Http/Controllers/Common/Reports.php @@ -45,7 +45,7 @@ class Reports extends Controller $categories[$class->getCategory()][] = $report; } - return view('common.reports.index', compact('categories', 'totals', 'icons')); + return $this->response('common.reports.index', compact('categories', 'totals', 'icons')); } /** diff --git a/app/Http/Controllers/Modules/Home.php b/app/Http/Controllers/Modules/Home.php index 4465cf47f..358f0c4ca 100644 --- a/app/Http/Controllers/Modules/Home.php +++ b/app/Http/Controllers/Modules/Home.php @@ -29,6 +29,6 @@ class Home extends Controller $free = $this->getFreeModules($data); $installed = Module::all()->pluck('enabled', 'alias')->toArray(); - return view('modules.home.index', compact('pre_sale', 'paid', 'new', 'free', 'installed')); + return $this->response('modules.home.index', compact('pre_sale', 'paid', 'new', 'free', 'installed')); } } diff --git a/app/Http/Controllers/Modules/My.php b/app/Http/Controllers/Modules/My.php index cf043fb6b..ded71f548 100644 --- a/app/Http/Controllers/Modules/My.php +++ b/app/Http/Controllers/Modules/My.php @@ -21,6 +21,6 @@ class My extends Controller $modules = $this->getInstalledModules(); $installed = Module::where('company_id', '=', session('company_id'))->pluck('enabled', 'alias')->toArray(); - return view('modules.my.index', compact('purchased', 'modules', 'installed')); + return $this->response('modules.my.index', compact('purchased', 'modules', 'installed')); } } diff --git a/app/Http/Controllers/Portal/Invoices.php b/app/Http/Controllers/Portal/Invoices.php index dc10e2a0f..e25e8c862 100644 --- a/app/Http/Controllers/Portal/Invoices.php +++ b/app/Http/Controllers/Portal/Invoices.php @@ -32,7 +32,7 @@ class Invoices extends Controller $statuses = $this->getInvoiceStatuses(); - return view('portal.invoices.index', compact('invoices', 'categories', 'statuses')); + return $this->response('portal.invoices.index', compact('invoices', 'categories', 'statuses')); } /** diff --git a/app/Http/Controllers/Portal/Payments.php b/app/Http/Controllers/Portal/Payments.php index 5357a2e74..82eefc662 100644 --- a/app/Http/Controllers/Portal/Payments.php +++ b/app/Http/Controllers/Portal/Payments.php @@ -20,7 +20,7 @@ class Payments extends Controller $payment_methods = Modules::getPaymentMethods('all'); - return view('portal.payments.index', compact('payments', 'payment_methods')); + return $this->response('portal.payments.index', compact('payments', 'payment_methods')); } /** diff --git a/app/Http/Controllers/Purchases/Bills.php b/app/Http/Controllers/Purchases/Bills.php index 0f2f8120b..a26f33f28 100644 --- a/app/Http/Controllers/Purchases/Bills.php +++ b/app/Http/Controllers/Purchases/Bills.php @@ -45,7 +45,7 @@ class Bills extends Controller $statuses = $this->getBillStatuses(); - return view('purchases.bills.index', compact('bills', 'vendors', 'categories', 'statuses')); + return $this->response('purchases.bills.index', compact('bills', 'vendors', 'categories', 'statuses')); } /** diff --git a/app/Http/Controllers/Purchases/Payments.php b/app/Http/Controllers/Purchases/Payments.php index e49d77f85..21b4cea43 100644 --- a/app/Http/Controllers/Purchases/Payments.php +++ b/app/Http/Controllers/Purchases/Payments.php @@ -38,7 +38,7 @@ class Payments extends Controller $accounts = Account::enabled()->orderBy('name')->pluck('name', 'id'); - return view('purchases.payments.index', compact('payments', 'vendors', 'categories', 'accounts')); + return $this->response('purchases.payments.index', compact('payments', 'vendors', 'categories', 'accounts')); } /** diff --git a/app/Http/Controllers/Purchases/Vendors.php b/app/Http/Controllers/Purchases/Vendors.php index 39aaf9df4..766c315ce 100644 --- a/app/Http/Controllers/Purchases/Vendors.php +++ b/app/Http/Controllers/Purchases/Vendors.php @@ -30,7 +30,7 @@ class Vendors extends Controller { $vendors = Contact::with('bills.transactions')->vendor()->collect(); - return view('purchases.vendors.index', compact('vendors')); + return $this->response('purchases.vendors.index', compact('vendors')); } /** diff --git a/app/Http/Controllers/Sales/Customers.php b/app/Http/Controllers/Sales/Customers.php index af77ce983..179ac68e1 100644 --- a/app/Http/Controllers/Sales/Customers.php +++ b/app/Http/Controllers/Sales/Customers.php @@ -28,7 +28,7 @@ class Customers extends Controller { $customers = Contact::with('invoices.transactions')->customer()->collect(); - return view('sales.customers.index', compact('customers')); + return $this->response('sales.customers.index', compact('customers')); } /** diff --git a/app/Http/Controllers/Sales/Invoices.php b/app/Http/Controllers/Sales/Invoices.php index 059f3e16e..d15ff5847 100644 --- a/app/Http/Controllers/Sales/Invoices.php +++ b/app/Http/Controllers/Sales/Invoices.php @@ -46,7 +46,7 @@ class Invoices extends Controller $statuses = $this->getInvoiceStatuses(); - return view('sales.invoices.index', compact('invoices', 'customers', 'categories', 'statuses')); + return $this->response('sales.invoices.index', compact('invoices', 'customers', 'categories', 'statuses')); } /** diff --git a/app/Http/Controllers/Sales/Revenues.php b/app/Http/Controllers/Sales/Revenues.php index 14212e8f2..ead04da46 100644 --- a/app/Http/Controllers/Sales/Revenues.php +++ b/app/Http/Controllers/Sales/Revenues.php @@ -38,7 +38,7 @@ class Revenues extends Controller $accounts = Account::enabled()->orderBy('name')->pluck('name', 'id'); - return view('sales.revenues.index', compact('revenues', 'customers', 'categories', 'accounts')); + return $this->response('sales.revenues.index', compact('revenues', 'customers', 'categories', 'accounts')); } /** diff --git a/app/Http/Controllers/Settings/Categories.php b/app/Http/Controllers/Settings/Categories.php index 9a37b0298..b37a1132c 100644 --- a/app/Http/Controllers/Settings/Categories.php +++ b/app/Http/Controllers/Settings/Categories.php @@ -30,7 +30,7 @@ class Categories extends Controller 'other' => trans_choice('general.others', 1), ]); - return view('settings.categories.index', compact('categories', 'types', 'transfer_id')); + return $this->response('settings.categories.index', compact('categories', 'types', 'transfer_id')); } /** diff --git a/app/Http/Controllers/Settings/Currencies.php b/app/Http/Controllers/Settings/Currencies.php index 080d11e3f..de310271e 100644 --- a/app/Http/Controllers/Settings/Currencies.php +++ b/app/Http/Controllers/Settings/Currencies.php @@ -21,7 +21,7 @@ class Currencies extends Controller { $currencies = Currency::collect(); - return view('settings.currencies.index', compact('currencies')); + return $this->response('settings.currencies.index', compact('currencies')); } /** diff --git a/app/Http/Controllers/Settings/Settings.php b/app/Http/Controllers/Settings/Settings.php index 75b4e6c5e..90364505e 100644 --- a/app/Http/Controllers/Settings/Settings.php +++ b/app/Http/Controllers/Settings/Settings.php @@ -63,7 +63,7 @@ class Settings extends Controller $settings[$alias] = $setting; } - return view('settings.settings.index', ['modules' => $settings]); + return $this->response('settings.settings.index', ['modules' => $settings]); } /** diff --git a/app/Http/Controllers/Settings/Taxes.php b/app/Http/Controllers/Settings/Taxes.php index d7b75c974..500e32587 100644 --- a/app/Http/Controllers/Settings/Taxes.php +++ b/app/Http/Controllers/Settings/Taxes.php @@ -29,7 +29,7 @@ class Taxes extends Controller 'compound' => trans('taxes.compound'), ]; - return view('settings.taxes.index', compact('taxes', 'types')); + return $this->response('settings.taxes.index', compact('taxes', 'types')); } /** diff --git a/app/Http/Responses/Common/Items.php b/app/Http/Responses/Common/Items.php new file mode 100644 index 000000000..6437e644b --- /dev/null +++ b/app/Http/Responses/Common/Items.php @@ -0,0 +1,10 @@ +get('search'); + + $query = user()->companies()->usingSearchString($search)->sortable($sort); + + if ($request->expectsJson()) { + return $query->get(); + } + $limit = $request->get('limit', setting('default.list_limit', '25')); - return user()->companies()->usingSearchString($search)->sortable($sort)->paginate($limit); + return $query->paginate($limit); } /** From ff843840241db9676272771616fb5087a85a4f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Fri, 6 Nov 2020 01:48:49 +0300 Subject: [PATCH 02/19] Search and filter first commit --- app/Http/Controllers/Common/BulkActions.php | 4 +- app/View/Components/SearchString.php | 82 +++ config/search-string.php | 6 +- .../assets/js/components/AkauntingSearch.vue | 587 +++++++++++++----- resources/lang/en-GB/general.php | 2 +- .../views/auth/permissions/index.blade.php | 5 +- resources/views/auth/roles/index.blade.php | 5 +- resources/views/auth/users/index.blade.php | 5 +- .../views/banking/accounts/index.blade.php | 5 +- .../banking/reconciliations/index.blade.php | 5 +- .../banking/transactions/index.blade.php | 5 +- .../views/banking/transfers/index.blade.php | 5 +- .../views/common/companies/index.blade.php | 5 +- .../views/common/dashboards/index.blade.php | 5 +- resources/views/common/items/index.blade.php | 5 +- .../views/components/search-string.blade.php | 7 + .../views/purchases/bills/index.blade.php | 5 +- .../views/purchases/payments/index.blade.php | 5 +- .../views/purchases/vendors/index.blade.php | 5 +- .../views/sales/customers/index.blade.php | 5 +- .../views/sales/invoices/index.blade.php | 5 +- .../views/sales/revenues/index.blade.php | 5 +- .../views/settings/categories/index.blade.php | 5 +- .../views/settings/currencies/index.blade.php | 5 +- .../views/settings/taxes/index.blade.php | 5 +- 25 files changed, 552 insertions(+), 231 deletions(-) create mode 100644 app/View/Components/SearchString.php create mode 100644 resources/views/components/search-string.blade.php diff --git a/app/Http/Controllers/Common/BulkActions.php b/app/Http/Controllers/Common/BulkActions.php index e84694553..ef43531a8 100644 --- a/app/Http/Controllers/Common/BulkActions.php +++ b/app/Http/Controllers/Common/BulkActions.php @@ -6,9 +6,7 @@ use App\Abstracts\Http\Controller; use App\Http\Requests\Common\BulkAction as Request; use Illuminate\Support\Str; -class - -BulkActions extends Controller +class BulkActions extends Controller { /** diff --git a/app/View/Components/SearchString.php b/app/View/Components/SearchString.php new file mode 100644 index 000000000..d7969ad06 --- /dev/null +++ b/app/View/Components/SearchString.php @@ -0,0 +1,82 @@ +model = $model; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\Contracts\View\View|string + */ + public function render() + { + $searc_string = config('search-string'); + + $this->filters = false; + + if (!empty($searc_string[$this->model])) { + $columns = $searc_string[$this->model]['columns']; + + foreach ($columns as $column => $options) { + if (!empty($options['searchable'])) { + continue; + } + + if (!is_array($options)) { + $column = $options; + } + + $name = $this->getFilterName($column); + + $this->filters[] = [ + 'key' => $column, + 'value' => $name, + 'url' => !empty($options['route']) ? route($options['route'][0], $options['route'][1]) : '' + ]; + } + } + + return view('components.search-string'); + } + + protected function getFilterName($column) + { + if (strpos($column, '_id') !== false) { + $column = str_replace('_id', '', $column); + } + + $plural = Str::plural($column, 2); + + if (trans_choice('general.' . $plural, 1) !== 'general.' . $plural) { + return trans_choice('general.' . $plural, 1); + } elseif (trans_choice('search_string.colmuns.' . $plural, 1) !== 'search_string.colmuns.' . $plural) { + return trans_choice('search_string.colmuns.' . $plural, 1); + } + + $name = trans('general.' . $column); + + if ($name == 'general.' . $column) { + $name = trans('search_string.colmuns.' . $column); + } + + return $name; + } +} diff --git a/config/search-string.php b/config/search-string.php index 355e1a988..cf316c474 100644 --- a/config/search-string.php +++ b/config/search-string.php @@ -120,9 +120,9 @@ return [ 'name' => ['searchable' => true], 'description' => ['searchable' => true], 'enabled' => ['boolean' => true], - 'category_id' => ['key' => 'category_id'], - 'sale_price', - 'purchase_price', + 'category_id' => [ + 'route' => ['categories.index', 'search=type:item'] + ], ], ], diff --git a/resources/assets/js/components/AkauntingSearch.vue b/resources/assets/js/components/AkauntingSearch.vue index 639849c4a..238c34490 100644 --- a/resources/assets/js/components/AkauntingSearch.vue +++ b/resources/assets/js/components/AkauntingSearch.vue @@ -1,175 +1,466 @@ - - + + \ No newline at end of file diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 7c3426789..86eb36c0e 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -105,7 +105,7 @@ return [ 'to' => 'To', 'print' => 'Print', 'search' => 'Search', - 'search_placeholder' => 'Type to search..', + 'search_placeholder' => 'Search or filter results..', 'filter' => 'Filter', 'help' => 'Help', 'all' => 'All', diff --git a/resources/views/auth/permissions/index.blade.php b/resources/views/auth/permissions/index.blade.php index 54d53b2e0..381594d41 100644 --- a/resources/views/auth/permissions/index.blade.php +++ b/resources/views/auth/permissions/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.permissions', $bulk_actions, ['group' => 'auth', 'type' => 'permissions']) }} diff --git a/resources/views/auth/roles/index.blade.php b/resources/views/auth/roles/index.blade.php index a24fcabd3..992b7ff9e 100644 --- a/resources/views/auth/roles/index.blade.php +++ b/resources/views/auth/roles/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.roles', $bulk_actions, ['group' => 'auth', 'type' => 'roles']) }} diff --git a/resources/views/auth/users/index.blade.php b/resources/views/auth/users/index.blade.php index 69e5cd50f..a5d283672 100644 --- a/resources/views/auth/users/index.blade.php +++ b/resources/views/auth/users/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.users', $bulk_actions, ['group' => 'auth', 'type' => 'users']) }} diff --git a/resources/views/banking/accounts/index.blade.php b/resources/views/banking/accounts/index.blade.php index 888ff8cc7..24df6f215 100644 --- a/resources/views/banking/accounts/index.blade.php +++ b/resources/views/banking/accounts/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.accounts', $bulk_actions, ['group' => 'banking', 'type' => 'accounts']) }} diff --git a/resources/views/banking/reconciliations/index.blade.php b/resources/views/banking/reconciliations/index.blade.php index 2c0a9b255..d5ceabef9 100644 --- a/resources/views/banking/reconciliations/index.blade.php +++ b/resources/views/banking/reconciliations/index.blade.php @@ -19,10 +19,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.reconciliations', $bulk_actions, ['group' => 'banking', 'type' => 'reconciliations']) }} diff --git a/resources/views/banking/transactions/index.blade.php b/resources/views/banking/transactions/index.blade.php index 58d9a3a95..6b16ba24a 100644 --- a/resources/views/banking/transactions/index.blade.php +++ b/resources/views/banking/transactions/index.blade.php @@ -22,10 +22,7 @@ 'role' => 'form', 'class' => 'mb-0' ]) !!} - + {!! Form::close() !!} diff --git a/resources/views/banking/transfers/index.blade.php b/resources/views/banking/transfers/index.blade.php index f2f3b08f0..3b13700ec 100644 --- a/resources/views/banking/transfers/index.blade.php +++ b/resources/views/banking/transfers/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.transfers', $bulk_actions, ['group' => 'banking', 'type' => 'transfers']) }} diff --git a/resources/views/common/companies/index.blade.php b/resources/views/common/companies/index.blade.php index b4de518d9..40049bbe9 100644 --- a/resources/views/common/companies/index.blade.php +++ b/resources/views/common/companies/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.companies', $bulk_actions, ['group' => 'common', 'type' => 'companies']) }} diff --git a/resources/views/common/dashboards/index.blade.php b/resources/views/common/dashboards/index.blade.php index 06cc6964a..a7536c528 100644 --- a/resources/views/common/dashboards/index.blade.php +++ b/resources/views/common/dashboards/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.dashboards', $bulk_actions, ['group' => 'common', 'type' => 'dashboards']) }} diff --git a/resources/views/common/items/index.blade.php b/resources/views/common/items/index.blade.php index 6a7170a7f..9e6b48018 100644 --- a/resources/views/common/items/index.blade.php +++ b/resources/views/common/items/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.items', $bulk_actions, ['group' => 'common', 'type' => 'items']) }} diff --git a/resources/views/components/search-string.blade.php b/resources/views/components/search-string.blade.php new file mode 100644 index 000000000..d655b6dc8 --- /dev/null +++ b/resources/views/components/search-string.blade.php @@ -0,0 +1,7 @@ + + diff --git a/resources/views/purchases/bills/index.blade.php b/resources/views/purchases/bills/index.blade.php index 97f715f75..540b72cc7 100644 --- a/resources/views/purchases/bills/index.blade.php +++ b/resources/views/purchases/bills/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.bills', $bulk_actions, ['group' => 'purchases', 'type' => 'bills']) }} diff --git a/resources/views/purchases/payments/index.blade.php b/resources/views/purchases/payments/index.blade.php index 3c24e4cb6..7aa451d26 100644 --- a/resources/views/purchases/payments/index.blade.php +++ b/resources/views/purchases/payments/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.payments', $bulk_actions, ['group' => 'purchases', 'type' => 'payments']) }} diff --git a/resources/views/purchases/vendors/index.blade.php b/resources/views/purchases/vendors/index.blade.php index 8d2f4501a..c1045e75b 100644 --- a/resources/views/purchases/vendors/index.blade.php +++ b/resources/views/purchases/vendors/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.vendors', $bulk_actions, ['group' => 'purchases', 'type' => 'vendors']) }} diff --git a/resources/views/sales/customers/index.blade.php b/resources/views/sales/customers/index.blade.php index 0b067419d..824341b7a 100644 --- a/resources/views/sales/customers/index.blade.php +++ b/resources/views/sales/customers/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.customers', $bulk_actions, ['group' => 'sales', 'type' => 'customers']) }} diff --git a/resources/views/sales/invoices/index.blade.php b/resources/views/sales/invoices/index.blade.php index ec9deea37..03649eb26 100644 --- a/resources/views/sales/invoices/index.blade.php +++ b/resources/views/sales/invoices/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.invoices', $bulk_actions, ['group' => 'sales', 'type' => 'invoices']) }} diff --git a/resources/views/sales/revenues/index.blade.php b/resources/views/sales/revenues/index.blade.php index 75930749e..42f6cab05 100644 --- a/resources/views/sales/revenues/index.blade.php +++ b/resources/views/sales/revenues/index.blade.php @@ -21,10 +21,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.revenues', $bulk_actions, ['group' => 'sales', 'type' => 'revenues']) }} diff --git a/resources/views/settings/categories/index.blade.php b/resources/views/settings/categories/index.blade.php index 50d1a1ade..ac5b2a67f 100644 --- a/resources/views/settings/categories/index.blade.php +++ b/resources/views/settings/categories/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.categories', $bulk_actions, ['group' => 'settings', 'type' => 'categories']) }} diff --git a/resources/views/settings/currencies/index.blade.php b/resources/views/settings/currencies/index.blade.php index 3a22a21ba..259cbfd45 100644 --- a/resources/views/settings/currencies/index.blade.php +++ b/resources/views/settings/currencies/index.blade.php @@ -18,10 +18,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.currencies', $bulk_actions, ['group' => 'settings', 'type' => 'currencies']) }} diff --git a/resources/views/settings/taxes/index.blade.php b/resources/views/settings/taxes/index.blade.php index fd22cde08..cbea11413 100644 --- a/resources/views/settings/taxes/index.blade.php +++ b/resources/views/settings/taxes/index.blade.php @@ -19,10 +19,7 @@ 'class' => 'mb-0' ]) !!}
- +
{{ Form::bulkActionRowGroup('general.taxes', $bulk_actions, ['group' => 'settings', 'type' => 'taxes']) }} From a9ab2e61a0f6a6a86ac001cc5bde8265e380c492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Fri, 6 Nov 2020 22:34:53 +0300 Subject: [PATCH 03/19] refs search filter files.. --- app/View/Components/SearchString.php | 86 ++++++++++++- .../assets/js/components/AkauntingSearch.vue | 117 +++++++++++++++--- resources/lang/en-GB/general.php | 10 +- .../views/components/search-string.blade.php | 9 +- 4 files changed, 195 insertions(+), 27 deletions(-) diff --git a/app/View/Components/SearchString.php b/app/View/Components/SearchString.php index d7969ad06..cfedd9190 100644 --- a/app/View/Components/SearchString.php +++ b/app/View/Components/SearchString.php @@ -30,12 +30,13 @@ class SearchString extends Component { $searc_string = config('search-string'); - $this->filters = false; + $this->filters = []; if (!empty($searc_string[$this->model])) { $columns = $searc_string[$this->model]['columns']; foreach ($columns as $column => $options) { + // This column skip for filter if (!empty($options['searchable'])) { continue; } @@ -43,13 +44,13 @@ class SearchString extends Component if (!is_array($options)) { $column = $options; } - - $name = $this->getFilterName($column); $this->filters[] = [ - 'key' => $column, - 'value' => $name, - 'url' => !empty($options['route']) ? route($options['route'][0], $options['route'][1]) : '' + 'key' => $this->getFilterKey($column, $options), + 'value' => $this->getFilterName($column), + 'type' => $this->getFilterType($options), + 'url' => $this->getFilterUrl($column, $options), + 'values' => $this->getFilterValues($options), ]; } } @@ -57,6 +58,15 @@ class SearchString extends Component return view('components.search-string'); } + protected function getFilterKey($column, $options) + { + if (isset($options['relationship'])) { + $column .= '.id'; + } + + return $column; + } + protected function getFilterName($column) { if (strpos($column, '_id') !== false) { @@ -79,4 +89,68 @@ class SearchString extends Component return $name; } + + protected function getFilterType($options) + { + $type = 'select'; + + if (isset($options['boolean'])) { + $type = 'boolean'; + } + + return $type; + } + + protected function getFilterUrl($column, $options) + { + $url = ''; + + if (isset($options['boolean'])) { + return $url; + } + + if (!empty($options['route'])) { + if (is_array($options['route'])) { + $url = route($options['route'][0], $options['route'][1]); + } else { + $url = route($options['route']); + } + } else { + if (strpos($this->model, 'Modules') !== false) { + $module_class = explode('\\', $this->model); + + $url .= Str::slug($module_class[1], '-') . '::'; + } + + if (strpos($column, '_id') !== false) { + $column = str_replace('_id', '', $column); + } + + $plural = Str::plural($column, 2); + + $url = route($url . $plural . '.index'); + } + + return $url; + } + + protected function getFilterValues($options) + { + $values = []; + + if (isset($options['boolean'])) { + $values = [ + [ + 'key' => 0, + 'value' => trans('general.no'), + ], + [ + 'key' => 1, + 'value' => trans('general.yes'), + ], + ]; + } + + return $values; + } } diff --git a/resources/assets/js/components/AkauntingSearch.vue b/resources/assets/js/components/AkauntingSearch.vue index 238c34490..ed3f893d6 100644 --- a/resources/assets/js/components/AkauntingSearch.vue +++ b/resources/assets/js/components/AkauntingSearch.vue @@ -36,16 +36,16 @@ @@ -53,6 +53,9 @@ + @@ -68,11 +71,31 @@ export default { default: 'Search or filter results...', description: 'Input placeholder' }, - textSearch: { + searchText: { type: String, default: 'Search for this text', description: 'Input placeholder' }, + operatorIsText: { + type: String, + default: 'is', + description: 'Operator is "="' + }, + operatorIsNotText: { + type: String, + default: 'is not', + description: 'Operator is not "!="' + }, + noDataText: { + type: String, + default: 'No Data', + description: "Selectbox empty options message" + }, + noMatchingDataText: { + type: String, + default: 'No Matchign Data', + description: "Selectbox search option not found item message" + }, value: { type: String, default: null, @@ -113,6 +136,10 @@ export default { methods: { onInputFocus() { + if (!this.filters.length) { + return; + } + this.visible[this.filter_last_step] = true; this.$nextTick(() => { @@ -122,6 +149,31 @@ export default { onInput(evt) { this.search = evt.target.value; + + let option_url = this.selected_options[this.filter_index].url; + + if (this.search) { + option_url += '?search=' + this.search; + } + + window.axios.get(option_url) + .then(response => { + this.values = []; + + let data = response.data.data; + + data.forEach(function (item) { + this.values.push({ + key: item.id, + value: item.name + }); + }, this); + + this.option_values[value] = this.values; + }) + .catch(error => { + + }); this.$emit('input', evt.target.value); }, @@ -138,17 +190,17 @@ export default { args += '?search='; } - args += this.selected_options[index].key + ':' + this.selected_values[index].key; + args += this.selected_options[index].key + ':' + this.selected_values[index].key + ' '; }, this); - window.location = url + '/common/items' + args; + window.location = window.location.href.replace(window.location.search, '') + args; }, onOptionSelected(value) { this.current_value = value; let option = false; - let option_url = url + ''; + let option_url = url; for (let i = 0; i < this.filter_list.length; i++) { if (this.filter_list[i].key == value) { @@ -158,6 +210,10 @@ export default { option_url = this.filter_list[i].url; } + if (typeof this.filter_list[i].type !== 'undefined' && this.filter_list[i].type == 'boolean') { + this.option_values[value] = this.filter_list[i].values; + } + this.selected_options.push(this.filter_list[i]); this.filter_list.splice(i, 1); break; @@ -190,11 +246,7 @@ export default { this.option_values[value] = this.values; }) .catch(error => { - this.form.loading = false; - this.form.onFail(error); - - this.method_show_html = error.message; }); } else { this.values = this.option_values[value]; @@ -277,13 +329,15 @@ export default { onSearchAndFilterClear() { this.filtered = []; this.search = ''; + + this.onInputConfirm(); }, closeIfClickedOutside(event) { if (!document.getElementById('search-field-' + this._uid).contains(event.target)) { - this.visible.options = false; - this.visible.operator = false; - this.visible.values = false; + //this.visible.options = false; + //this.visible.operator = false; + //this.visible.values = false; document.removeEventListener('click', this.closeIfClickedOutside); } @@ -299,12 +353,41 @@ export default { this.search = string; } else { let filter = string.split(':'); + let option = ''; + let value = ''; + + this.filter_list.forEach(function (_filter, i) { + if (_filter.key == filter[0]) { + option = _filter.value; + + _filter.values.forEach(function (_value) { + if (_value.key == filter[1]) { + value = _value.value; + } + }, this); + + this.selected_options.push(this.filter_list[i]); + this.filter_list.splice(i, 1); + + this.option_values[_filter.key] = _filter.values; + + _filter.values.forEach(function (value, j) { + if (value.key == filter[1]) { + this.selected_values.push(value); + + this.option_values[_filter.key].splice(j, 1); + } + }, this); + } + }, this); this.filtered.push({ - option: filter[0], + option: option, operator: '=', - value: filter[1] - }) + value: value + }); + + this.filter_index++; } }, this); } diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 86eb36c0e..6d6a1a153 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -105,7 +105,8 @@ return [ 'to' => 'To', 'print' => 'Print', 'search' => 'Search', - 'search_placeholder' => 'Search or filter results..', + 'search_text' => 'Search for this text', + 'search_placeholder' => 'Type to search..', 'filter' => 'Filter', 'help' => 'Help', 'all' => 'All', @@ -152,6 +153,8 @@ return [ 'no_matching_data' => 'No matching data', 'clear_cache' => 'Clear Cache', 'go_to_dashboard' => 'Go to dashboard', + 'is' => 'is', + 'isnot' => 'is not', 'card' => [ 'name' => 'Name on Card', @@ -181,6 +184,11 @@ return [ 'no_file_selected' => 'No file selected...', ], + 'placeholder' => [ + 'search' => 'Type to search..', + 'search_and_filter' => 'Search or filter results..', + ], + 'date_range' => [ 'today' => 'Today', 'yesterday' => 'Yesterday', diff --git a/resources/views/components/search-string.blade.php b/resources/views/components/search-string.blade.php index d655b6dc8..fe89a5f41 100644 --- a/resources/views/components/search-string.blade.php +++ b/resources/views/components/search-string.blade.php @@ -1,7 +1,10 @@ - From e638b7860c5696e5af544c6890d5fc44604b5950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Sat, 7 Nov 2020 16:18:44 +0300 Subject: [PATCH 04/19] Added Sales & Purchases default category --- app/Http/Controllers/Settings/Defaults.php | 6 +++ app/Listeners/Update/V21/Version210.php | 39 +++++++++++++++++++ database/seeds/Categories.php | 20 +++++++++- resources/lang/en-GB/settings.php | 2 + .../views/purchases/bills/create.blade.php | 2 +- .../views/purchases/payments/create.blade.php | 2 +- .../views/sales/invoices/create.blade.php | 2 +- .../views/sales/revenues/create.blade.php | 2 +- .../views/settings/default/edit.blade.php | 4 ++ 9 files changed, 74 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Settings/Defaults.php b/app/Http/Controllers/Settings/Defaults.php index 6be3afb9e..818cfaf8c 100644 --- a/app/Http/Controllers/Settings/Defaults.php +++ b/app/Http/Controllers/Settings/Defaults.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Settings; use App\Abstracts\Http\Controller; use App\Models\Banking\Account; +use App\Models\Setting\Category; use App\Models\Setting\Currency; use App\Models\Setting\Tax; use App\Utilities\Modules; @@ -16,6 +17,9 @@ class Defaults extends Controller $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code'); + $sales_categories = Category::income()->enabled()->orderBy('name')->pluck('name', 'id'); + $purchases_categories = Category::expense()->enabled()->orderBy('name')->pluck('name', 'id'); + $taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id'); $payment_methods = Modules::getPaymentMethods(); @@ -23,6 +27,8 @@ class Defaults extends Controller return view('settings.default.edit', compact( 'accounts', 'currencies', + 'sales_categories', + 'purchases_categories', 'taxes', 'payment_methods' )); diff --git a/app/Listeners/Update/V21/Version210.php b/app/Listeners/Update/V21/Version210.php index eb5bd4107..cacf6257e 100644 --- a/app/Listeners/Update/V21/Version210.php +++ b/app/Listeners/Update/V21/Version210.php @@ -4,6 +4,9 @@ namespace App\Listeners\Update\V21; use App\Abstracts\Listeners\Update as Listener; use App\Events\Install\UpdateFinished as Event; +use App\Models\Setting\Category; +use App\Models\Common\Company; +use App\Utilities\Overrider; use Illuminate\Support\Facades\Artisan; class Version210 extends Listener @@ -24,6 +27,42 @@ class Version210 extends Listener return; } + $this->updateCompanies(); + Artisan::call('migrate', ['--force' => true]); } + protected function updateCompanies() + { + $company_id = session('company_id'); + + $companies = Company::cursor(); + + foreach ($companies as $company) { + session(['company_id' => $company->id]); + + $this->updateSettings($company); + } + + setting()->forgetAll(); + + session(['company_id' => $company_id]); + + Overrider::load('settings'); + } + + public function updateSettings($company) + { + $sales_category = Category::income()->enabled()->first(); + $purchases_category = Category::expense()->enabled()->first(); + + // Set the active company settings + setting()->setExtraColumns(['company_id' => $company->id]); + setting()->forgetAll(); + setting()->load(true); + + setting()->set(['default.sales_category' => setting('default.sales_category', $sales_category->id)]); + setting()->set(['default.purchases_category' => setting('default.purchases_category', $purchases_category->id)]); + + setting()->save(); + } } diff --git a/database/seeds/Categories.php b/database/seeds/Categories.php index c74833575..463f84f85 100644 --- a/database/seeds/Categories.php +++ b/database/seeds/Categories.php @@ -64,8 +64,26 @@ class Categories extends Seeder ], ]; + $sales_category = $purchases_category = false; + foreach ($rows as $row) { - Category::create($row); + $category = Category::create($row); + + switch ($category->type) { + case 'income': + if (empty($sales_category)) { + $sales_category = $category; + } + break; + case 'expense': + if (empty($purchases_category)) { + $purchases_category = $category; + } + break; + } } + + setting()->set('default.sales_category', $sales_category->id); + setting()->set('default.purchases_category', $purchases_category->id); } } diff --git a/resources/lang/en-GB/settings.php b/resources/lang/en-GB/settings.php index 394c2910d..3a6f8335a 100644 --- a/resources/lang/en-GB/settings.php +++ b/resources/lang/en-GB/settings.php @@ -68,6 +68,8 @@ return [ 'description' => 'Default account, currency, language of your company', 'list_limit' => 'Records Per Page', 'use_gravatar' => 'Use Gravatar', + 'sales_category' => 'Sales Category', + 'purchases_category'=> 'Purchases Category', ], 'email' => [ diff --git a/resources/views/purchases/bills/create.blade.php b/resources/views/purchases/bills/create.blade.php index b0fe97801..19ebd4c6d 100644 --- a/resources/views/purchases/bills/create.blade.php +++ b/resources/views/purchases/bills/create.blade.php @@ -194,7 +194,7 @@ {{ Form::textareaGroup('notes', trans_choice('general.notes', 2)) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.purchases_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} {{ Form::recurring('create') }} diff --git a/resources/views/purchases/payments/create.blade.php b/resources/views/purchases/payments/create.blade.php index 57fc19ec6..46844b047 100644 --- a/resources/views/purchases/payments/create.blade.php +++ b/resources/views/purchases/payments/create.blade.php @@ -30,7 +30,7 @@ {{ Form::textareaGroup('description', trans('general.description')) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.purchases_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} {{ Form::recurring('create') }} diff --git a/resources/views/sales/invoices/create.blade.php b/resources/views/sales/invoices/create.blade.php index defccec38..68de6d3ec 100644 --- a/resources/views/sales/invoices/create.blade.php +++ b/resources/views/sales/invoices/create.blade.php @@ -196,7 +196,7 @@ {{ Form::textareaGroup('footer', trans('general.footer'), '', setting('invoice.footer'), ['rows' => '3'], 'col-md-6') }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('defaults.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.sales_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} {{ Form::recurring('create') }} diff --git a/resources/views/sales/revenues/create.blade.php b/resources/views/sales/revenues/create.blade.php index c1c23ab06..dbbb3495d 100644 --- a/resources/views/sales/revenues/create.blade.php +++ b/resources/views/sales/revenues/create.blade.php @@ -30,7 +30,7 @@ {{ Form::textareaGroup('description', trans('general.description')) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.sales_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} {{ Form::recurring('create') }} diff --git a/resources/views/settings/default/edit.blade.php b/resources/views/settings/default/edit.blade.php index e18c01914..b5c8bbc46 100644 --- a/resources/views/settings/default/edit.blade.php +++ b/resources/views/settings/default/edit.blade.php @@ -22,6 +22,10 @@ {{ Form::selectGroup('currency', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), []) }} + {{ Form::selectGroup('sales_category', trans('settings.default.sales_category'), 'folder', $sales_categories, setting('default.sales_category'), []) }} + + {{ Form::selectGroup('purchases_category', trans('settings.default.purchases_category'), 'folder', $purchases_categories, setting('default.purchases_category'), []) }} + {{ Form::selectGroup('tax', trans_choice('general.taxes', 1), 'percent', $taxes, setting('default.tax'), []) }} {{ Form::selectGroup('payment_method', trans_choice('general.payment_methods', 1), 'credit-card', $payment_methods, setting('default.payment_method'), []) }} From 4694e3bfaff1a7008b7427dc7baf978b1fd950cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Sat, 7 Nov 2020 22:48:25 +0300 Subject: [PATCH 05/19] Change default category prefix sales to income, purchases to expense --- app/Listeners/Update/V21/Version210.php | 8 ++++---- database/seeds/Categories.php | 14 +++++++------- resources/lang/en-GB/settings.php | 4 ++-- resources/views/purchases/bills/create.blade.php | 2 +- .../views/purchases/payments/create.blade.php | 2 +- resources/views/sales/invoices/create.blade.php | 2 +- resources/views/sales/revenues/create.blade.php | 2 +- resources/views/settings/default/edit.blade.php | 4 ++-- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/Listeners/Update/V21/Version210.php b/app/Listeners/Update/V21/Version210.php index cacf6257e..81fd01bf7 100644 --- a/app/Listeners/Update/V21/Version210.php +++ b/app/Listeners/Update/V21/Version210.php @@ -52,16 +52,16 @@ class Version210 extends Listener public function updateSettings($company) { - $sales_category = Category::income()->enabled()->first(); - $purchases_category = Category::expense()->enabled()->first(); + $income_category = Category::income()->enabled()->first(); + $expense_category = Category::expense()->enabled()->first(); // Set the active company settings setting()->setExtraColumns(['company_id' => $company->id]); setting()->forgetAll(); setting()->load(true); - setting()->set(['default.sales_category' => setting('default.sales_category', $sales_category->id)]); - setting()->set(['default.purchases_category' => setting('default.purchases_category', $purchases_category->id)]); + setting()->set(['default.income_category' => setting('default.income_category', $income_category->id)]); + setting()->set(['default.expense_category' => setting('default.expense_category', $expense_category->id)]); setting()->save(); } diff --git a/database/seeds/Categories.php b/database/seeds/Categories.php index 463f84f85..a46874f73 100644 --- a/database/seeds/Categories.php +++ b/database/seeds/Categories.php @@ -64,26 +64,26 @@ class Categories extends Seeder ], ]; - $sales_category = $purchases_category = false; + $income_category = $expense_category = false; foreach ($rows as $row) { $category = Category::create($row); switch ($category->type) { case 'income': - if (empty($sales_category)) { - $sales_category = $category; + if (empty($income_category)) { + $income_category = $category; } break; case 'expense': - if (empty($purchases_category)) { - $purchases_category = $category; + if (empty($expense_category)) { + $expense_category = $category; } break; } } - setting()->set('default.sales_category', $sales_category->id); - setting()->set('default.purchases_category', $purchases_category->id); + setting()->set('default.income_category', $income_category->id); + setting()->set('default.expense_category', $expense_category->id); } } diff --git a/resources/lang/en-GB/settings.php b/resources/lang/en-GB/settings.php index 3a6f8335a..3e47ce44d 100644 --- a/resources/lang/en-GB/settings.php +++ b/resources/lang/en-GB/settings.php @@ -68,8 +68,8 @@ return [ 'description' => 'Default account, currency, language of your company', 'list_limit' => 'Records Per Page', 'use_gravatar' => 'Use Gravatar', - 'sales_category' => 'Sales Category', - 'purchases_category'=> 'Purchases Category', + 'income_category' => 'Income Category', + 'expense_category' => 'Expense Category', ], 'email' => [ diff --git a/resources/views/purchases/bills/create.blade.php b/resources/views/purchases/bills/create.blade.php index 19ebd4c6d..f730ba22c 100644 --- a/resources/views/purchases/bills/create.blade.php +++ b/resources/views/purchases/bills/create.blade.php @@ -194,7 +194,7 @@ {{ Form::textareaGroup('notes', trans_choice('general.notes', 2)) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.purchases_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.expense_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} {{ Form::recurring('create') }} diff --git a/resources/views/purchases/payments/create.blade.php b/resources/views/purchases/payments/create.blade.php index 46844b047..493b857a2 100644 --- a/resources/views/purchases/payments/create.blade.php +++ b/resources/views/purchases/payments/create.blade.php @@ -30,7 +30,7 @@ {{ Form::textareaGroup('description', trans('general.description')) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.purchases_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.expense_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} {{ Form::recurring('create') }} diff --git a/resources/views/sales/invoices/create.blade.php b/resources/views/sales/invoices/create.blade.php index 68de6d3ec..25931a413 100644 --- a/resources/views/sales/invoices/create.blade.php +++ b/resources/views/sales/invoices/create.blade.php @@ -196,7 +196,7 @@ {{ Form::textareaGroup('footer', trans('general.footer'), '', setting('invoice.footer'), ['rows' => '3'], 'col-md-6') }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.sales_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.income_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} {{ Form::recurring('create') }} diff --git a/resources/views/sales/revenues/create.blade.php b/resources/views/sales/revenues/create.blade.php index dbbb3495d..36308d1b8 100644 --- a/resources/views/sales/revenues/create.blade.php +++ b/resources/views/sales/revenues/create.blade.php @@ -30,7 +30,7 @@ {{ Form::textareaGroup('description', trans('general.description')) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.sales_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.income_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} {{ Form::recurring('create') }} diff --git a/resources/views/settings/default/edit.blade.php b/resources/views/settings/default/edit.blade.php index b5c8bbc46..9f22b9e29 100644 --- a/resources/views/settings/default/edit.blade.php +++ b/resources/views/settings/default/edit.blade.php @@ -22,9 +22,9 @@ {{ Form::selectGroup('currency', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), []) }} - {{ Form::selectGroup('sales_category', trans('settings.default.sales_category'), 'folder', $sales_categories, setting('default.sales_category'), []) }} + {{ Form::selectGroup('income_category', trans('settings.default.income_category'), 'folder', $sales_categories, setting('default.income_category'), []) }} - {{ Form::selectGroup('purchases_category', trans('settings.default.purchases_category'), 'folder', $purchases_categories, setting('default.purchases_category'), []) }} + {{ Form::selectGroup('expense_category', trans('settings.default.expense_category'), 'folder', $purchases_categories, setting('default.expense_category'), []) }} {{ Form::selectGroup('tax', trans_choice('general.taxes', 1), 'percent', $taxes, setting('default.tax'), []) }} From 4f8a1661fcb741ce6dc09f5c1bf760d915f293a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Mon, 9 Nov 2020 20:30:05 +0300 Subject: [PATCH 06/19] index blade fixes.. --- app/View/Components/SearchString.php | 18 +++- public/css/custom.css | 6 ++ public/vendor/js-cookie/js.cookie.js | 24 +++++- .../assets/js/components/AkauntingSearch.vue | 84 ++++++++++++++----- resources/assets/js/views/auth/roles.js | 2 +- .../banking/reconciliations/index.blade.php | 2 +- .../views/banking/transfers/index.blade.php | 2 +- resources/views/common/items/index.blade.php | 2 +- .../views/purchases/bills/index.blade.php | 2 +- .../views/purchases/payments/index.blade.php | 2 +- .../views/purchases/vendors/index.blade.php | 2 +- .../views/sales/customers/index.blade.php | 2 +- .../views/sales/invoices/index.blade.php | 2 +- .../views/sales/revenues/index.blade.php | 2 +- .../views/settings/taxes/index.blade.php | 2 +- 15 files changed, 117 insertions(+), 37 deletions(-) diff --git a/app/View/Components/SearchString.php b/app/View/Components/SearchString.php index cfedd9190..51ef8500c 100644 --- a/app/View/Components/SearchString.php +++ b/app/View/Components/SearchString.php @@ -50,7 +50,7 @@ class SearchString extends Component 'value' => $this->getFilterName($column), 'type' => $this->getFilterType($options), 'url' => $this->getFilterUrl($column, $options), - 'values' => $this->getFilterValues($options), + 'values' => $this->getFilterValues($column, $options), ]; } } @@ -134,7 +134,7 @@ class SearchString extends Component return $url; } - protected function getFilterValues($options) + protected function getFilterValues($column, $options) { $values = []; @@ -149,6 +149,20 @@ class SearchString extends Component 'value' => trans('general.yes'), ], ]; + } else if ($search = request()->get('search', false)) { + $fields = explode(' ', $search); + + foreach ($fields as $field) { + if (strpos($field, ':') === false) { + continue; + } + + $filters = explode(':', $field); + + if ($filters[0] != $column) { + continue; + } + } } return $values; diff --git a/public/css/custom.css b/public/css/custom.css index daf4d6f16..8feca3952 100644 --- a/public/css/custom.css +++ b/public/css/custom.css @@ -846,3 +846,9 @@ table .align-items-center td span.badge { border: 1px solid #3c3f72; } /*--lightbox Finish--*/ + +/*-- Search string & BulkAction Start --*/ +#app .card .card-header { + min-height: 88px; +} +/*-- Search string & BulkAction Finish --*/ \ No newline at end of file diff --git a/public/vendor/js-cookie/js.cookie.js b/public/vendor/js-cookie/js.cookie.js index 9a0945ed8..98f13c735 100644 --- a/public/vendor/js-cookie/js.cookie.js +++ b/public/vendor/js-cookie/js.cookie.js @@ -7,19 +7,26 @@ */ ;(function (factory) { var registeredInModuleLoader = false; + if (typeof define === 'function' && define.amd) { define(factory); + registeredInModuleLoader = true; } + if (typeof exports === 'object') { module.exports = factory(); + registeredInModuleLoader = true; } + if (!registeredInModuleLoader) { var OldCookies = window.Cookies; var api = window.Cookies = factory(); + api.noConflict = function () { window.Cookies = OldCookies; + return api; }; } @@ -27,24 +34,27 @@ function extend () { var i = 0; var result = {}; + for (; i < arguments.length; i++) { var attributes = arguments[ i ]; + for (var key in attributes) { result[key] = attributes[key]; } } + return result; } function init (converter) { function api (key, value, attributes) { var result; + if (typeof document === 'undefined') { return; } // Write - if (arguments.length > 1) { attributes = extend({ path: '/' @@ -52,7 +62,9 @@ if (typeof attributes.expires === 'number') { var expires = new Date(); + expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); + attributes.expires = expires; } @@ -61,6 +73,7 @@ try { result = JSON.stringify(value); + if (/^[\{\[]/.test(result)) { value = result; } @@ -83,17 +96,20 @@ if (!attributes[attributeName]) { continue; } + stringifiedAttributes += '; ' + attributeName; + if (attributes[attributeName] === true) { continue; } + stringifiedAttributes += '=' + attributes[attributeName]; } + return (document.cookie = key + '=' + value + stringifiedAttributes); } // Read - if (!key) { result = {}; } @@ -115,6 +131,7 @@ try { var name = parts[0].replace(rdecode, decodeURIComponent); + cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent); @@ -140,14 +157,17 @@ } api.set = api; + api.get = function (key) { return api.call(api, key); }; + api.getJSON = function () { return api.apply({ json: true }, [].slice.call(arguments)); }; + api.defaults = {}; api.remove = function (key, attributes) { diff --git a/resources/assets/js/components/AkauntingSearch.vue b/resources/assets/js/components/AkauntingSearch.vue index ed3f893d6..932cfc777 100644 --- a/resources/assets/js/components/AkauntingSearch.vue +++ b/resources/assets/js/components/AkauntingSearch.vue @@ -6,7 +6,7 @@ - {{ filter.operator }} + {{ (filter.operator == '=') ? operatorIsText : operatorIsNotText }} @@ -31,7 +31,7 @@ -