v2 first commit
This commit is contained in:
@ -2,8 +2,11 @@
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Setting\Category as Request;
|
||||
use App\Jobs\Setting\CreateCategory;
|
||||
use App\Jobs\Setting\DeleteCategory;
|
||||
use App\Jobs\Setting\UpdateCategory;
|
||||
use App\Models\Setting\Category;
|
||||
|
||||
class Categories extends Controller
|
||||
@ -37,7 +40,7 @@ class Categories extends Controller
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
return redirect('settings/categories');
|
||||
return redirect()->route('categories.index');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -66,13 +69,23 @@ class Categories extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
Category::create($request->all());
|
||||
$response = $this->ajaxDispatch(new CreateCategory($request));
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.categories', 1)]);
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('categories.index');
|
||||
|
||||
flash($message)->success();
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.categories', 1)]);
|
||||
|
||||
return redirect('settings/categories');
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = route('categories.create');
|
||||
|
||||
$message = $response['message'];
|
||||
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -99,134 +112,97 @@ class Categories extends Controller
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param Category $category
|
||||
* @param Request $request
|
||||
* @param Category $category
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Category $category, Request $request)
|
||||
{
|
||||
$relationships = $this->countRelationships($category, [
|
||||
'items' => 'items',
|
||||
'invoices' => 'invoices',
|
||||
'revenues' => 'revenues',
|
||||
'bills' => 'bills',
|
||||
'payments' => 'payments',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new UpdateCategory($category, $request));
|
||||
|
||||
if (empty($relationships) || $request['enabled']) {
|
||||
$category->update($request->all());
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('categories.index');
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.categories', 1)]);
|
||||
$message = trans('messages.success.updated', ['type' => $category->name]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('settings/categories');
|
||||
} else {
|
||||
$message = trans('messages.warning.disabled', ['name' => $category->name, 'text' => implode(', ', $relationships)]);
|
||||
$response['redirect'] = route('categories.edit', $category->id);
|
||||
|
||||
flash($message)->warning();
|
||||
$message = $response['message'];
|
||||
|
||||
return redirect('settings/categories/' . $category->id . '/edit');
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the specified resource.
|
||||
*
|
||||
* @param Category $category
|
||||
* @param Category $category
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function enable(Category $category)
|
||||
{
|
||||
$category->enabled = 1;
|
||||
$category->save();
|
||||
$response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 1])));
|
||||
|
||||
$message = trans('messages.success.enabled', ['type' => trans_choice('general.categories', 1)]);
|
||||
if ($response['success']) {
|
||||
$response['message'] = trans('messages.success.enabled', ['type' => $category->name]);
|
||||
}
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect()->route('categories.index');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the specified resource.
|
||||
*
|
||||
* @param Category $category
|
||||
* @param Category $category
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function disable(Category $category)
|
||||
{
|
||||
$relationships = $this->countRelationships($category, [
|
||||
'items' => 'items',
|
||||
'invoices' => 'invoices',
|
||||
'revenues' => 'revenues',
|
||||
'bills' => 'bills',
|
||||
'payments' => 'payments',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 0])));
|
||||
|
||||
if (empty($relationships)) {
|
||||
$category->enabled = 0;
|
||||
$category->save();
|
||||
|
||||
$message = trans('messages.success.disabled', ['type' => trans_choice('general.categories', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$message = trans('messages.warning.disabled', ['name' => $category->name, 'text' => implode(', ', $relationships)]);
|
||||
|
||||
flash($message)->warning();
|
||||
if ($response['success']) {
|
||||
$response['message'] = trans('messages.success.disabled', ['type' => $category->name]);
|
||||
}
|
||||
|
||||
return redirect()->route('categories.index');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param Category $category
|
||||
* @param Category $category
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function destroy(Category $category)
|
||||
{
|
||||
// Can not delete the last category by type
|
||||
if (Category::where('type', $category->type)->count() == 1) {
|
||||
$message = trans('messages.error.last_category', ['type' => strtolower(trans_choice('general.' . $category->type . 's', 1))]);
|
||||
$response = $this->ajaxDispatch(new DeleteCategory($category));
|
||||
|
||||
flash($message)->warning();
|
||||
$response['redirect'] = route('categories.index');
|
||||
|
||||
return redirect('settings/categories');
|
||||
}
|
||||
|
||||
$relationships = $this->countRelationships($category, [
|
||||
'items' => 'items',
|
||||
'invoices' => 'invoices',
|
||||
'revenues' => 'revenues',
|
||||
'bills' => 'bills',
|
||||
'payments' => 'payments',
|
||||
]);
|
||||
|
||||
if (empty($relationships)) {
|
||||
$category->delete();
|
||||
|
||||
$message = trans('messages.success.deleted', ['type' => trans_choice('general.categories', 1)]);
|
||||
if ($response['success']) {
|
||||
$message = trans('messages.success.deleted', ['type' => $category->name]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$message = trans('messages.warning.deleted', ['name' => $category->name, 'text' => implode(', ', $relationships)]);
|
||||
$message = $response['message'];
|
||||
|
||||
flash($message)->warning();
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return redirect('settings/categories');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function category(Request $request)
|
||||
{
|
||||
$category = Category::create($request->all());
|
||||
$category = $this->dispatch(new CreateCategory($request));
|
||||
|
||||
return response()->json($category);
|
||||
}
|
||||
|
22
app/Http/Controllers/Settings/Company.php
Normal file
22
app/Http/Controllers/Settings/Company.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Setting\Setting;
|
||||
|
||||
class Company extends Controller
|
||||
{
|
||||
public function edit()
|
||||
{
|
||||
$setting = Setting::all('company')->map(function ($s) {
|
||||
$s->key = str_replace('company.', '', $s->key);
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
return view('settings.company.edit', compact(
|
||||
'setting'
|
||||
));
|
||||
}
|
||||
}
|
@ -3,9 +3,11 @@
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use Akaunting\Money\Currency as MoneyCurrency;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Setting\Currency as Request;
|
||||
use App\Models\Banking\Account;
|
||||
use App\Jobs\Setting\CreateCurrency;
|
||||
use App\Jobs\Setting\DeleteCurrency;
|
||||
use App\Jobs\Setting\UpdateCurrency;
|
||||
use App\Models\Setting\Currency;
|
||||
|
||||
class Currencies extends Controller
|
||||
@ -29,7 +31,7 @@ class Currencies extends Controller
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
return redirect('settings/currencies');
|
||||
return redirect()->route('currencies.index');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -66,24 +68,23 @@ class Currencies extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
// Force the rate to be 1 for default currency
|
||||
if ($request['default_currency']) {
|
||||
$request['rate'] = '1';
|
||||
$response = $this->ajaxDispatch(new CreateCurrency($request));
|
||||
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('currencies.index');
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.currencies', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = route('currencies.create');
|
||||
|
||||
$message = $response['message'];
|
||||
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
Currency::create($request->all());
|
||||
|
||||
// Update default currency setting
|
||||
if ($request['default_currency']) {
|
||||
setting()->set('general.default_currency', $request['code']);
|
||||
setting()->save();
|
||||
}
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.currencies', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('settings/currencies');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +112,7 @@ class Currencies extends Controller
|
||||
}
|
||||
|
||||
// Set default currency
|
||||
$currency->default_currency = ($currency->code == setting('general.default_currency')) ? 1 : 0;
|
||||
$currency->default_currency = ($currency->code == setting('default.currency')) ? 1 : 0;
|
||||
|
||||
return view('settings.currencies.edit', compact('currency', 'codes'));
|
||||
}
|
||||
@ -119,149 +120,92 @@ class Currencies extends Controller
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param Currency $currency
|
||||
* @param Request $request
|
||||
* @param Currency $currency
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Currency $currency, Request $request)
|
||||
{
|
||||
// Check if we can disable or change the code
|
||||
if (!$request['enabled'] || ($currency->code != $request['code'])) {
|
||||
$relationships = $this->countRelationships($currency, [
|
||||
'accounts' => 'accounts',
|
||||
'customers' => 'customers',
|
||||
'invoices' => 'invoices',
|
||||
'revenues' => 'revenues',
|
||||
'bills' => 'bills',
|
||||
'payments' => 'payments',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new UpdateCurrency($currency, $request));
|
||||
|
||||
if ($currency->code == setting('general.default_currency')) {
|
||||
$relationships[] = strtolower(trans_choice('general.companies', 1));
|
||||
}
|
||||
}
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('currencies.index');
|
||||
|
||||
if (empty($relationships)) {
|
||||
// Force the rate to be 1 for default currency
|
||||
if ($request['default_currency']) {
|
||||
$request['rate'] = '1';
|
||||
}
|
||||
|
||||
$currency->update($request->all());
|
||||
|
||||
// Update default currency setting
|
||||
if ($request['default_currency']) {
|
||||
setting()->set('general.default_currency', $request['code']);
|
||||
setting()->save();
|
||||
}
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.currencies', 1)]);
|
||||
$message = trans('messages.success.updated', ['type' => $currency->name]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('settings/currencies');
|
||||
} else {
|
||||
$message = trans('messages.warning.disable_code', ['name' => $currency->name, 'text' => implode(', ', $relationships)]);
|
||||
$response['redirect'] = route('currencies.edit', $currency->id);
|
||||
|
||||
flash($message)->warning();
|
||||
$message = $response['message'];
|
||||
|
||||
return redirect('settings/currencies/' . $currency->id . '/edit');
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the specified resource.
|
||||
*
|
||||
* @param Currency $currency
|
||||
* @param Currency $currency
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function enable(Currency $currency)
|
||||
{
|
||||
$currency->enabled = 1;
|
||||
$currency->save();
|
||||
$response = $this->ajaxDispatch(new UpdateCurrency($currency, request()->merge(['enabled' => 1])));
|
||||
|
||||
$message = trans('messages.success.enabled', ['type' => trans_choice('general.currencies', 1)]);
|
||||
if ($response['success']) {
|
||||
$response['message'] = trans('messages.success.enabled', ['type' => $currency->name]);
|
||||
}
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect()->route('currencies.index');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the specified resource.
|
||||
*
|
||||
* @param Currency $currency
|
||||
* @param Currency $currency
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function disable(Currency $currency)
|
||||
{
|
||||
$relationships = $this->countRelationships($currency, [
|
||||
'accounts' => 'accounts',
|
||||
'customers' => 'customers',
|
||||
'invoices' => 'invoices',
|
||||
'revenues' => 'revenues',
|
||||
'bills' => 'bills',
|
||||
'payments' => 'payments',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new UpdateCurrency($currency, request()->merge(['enabled' => 0])));
|
||||
|
||||
if ($currency->code == setting('general.default_currency')) {
|
||||
$relationships[] = strtolower(trans_choice('general.companies', 1));
|
||||
if ($response['success']) {
|
||||
$response['message'] = trans('messages.success.disabled', ['type' => $currency->name]);
|
||||
}
|
||||
|
||||
if (empty($relationships)) {
|
||||
$currency->enabled = 0;
|
||||
$currency->save();
|
||||
|
||||
$message = trans('messages.success.disabled', ['type' => trans_choice('general.currencies', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$message = trans('messages.warning.disabled', ['name' => $currency->name, 'text' => implode(', ', $relationships)]);
|
||||
|
||||
flash($message)->warning();
|
||||
}
|
||||
|
||||
return redirect()->route('currencies.index');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param Currency $currency
|
||||
* @param Currency $currency
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function destroy(Currency $currency)
|
||||
{
|
||||
$relationships = $this->countRelationships($currency, [
|
||||
'accounts' => 'accounts',
|
||||
'customers' => 'customers',
|
||||
'invoices' => 'invoices',
|
||||
'revenues' => 'revenues',
|
||||
'bills' => 'bills',
|
||||
'payments' => 'payments',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new DeleteCurrency($currency));
|
||||
|
||||
if ($currency->code == setting('general.default_currency')) {
|
||||
$relationships[] = strtolower(trans_choice('general.companies', 1));
|
||||
}
|
||||
$response['redirect'] = route('currencies.index');
|
||||
|
||||
if (empty($relationships)) {
|
||||
$currency->delete();
|
||||
|
||||
$message = trans('messages.success.deleted', ['type' => trans_choice('general.currencies', 1)]);
|
||||
if ($response['success']) {
|
||||
$message = trans('messages.success.deleted', ['type' => $currency->name]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$message = trans('messages.warning.deleted', ['name' => $currency->name, 'text' => implode(', ', $relationships)]);
|
||||
$message = $response['message'];
|
||||
|
||||
flash($message)->warning();
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return redirect('settings/currencies');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function currency()
|
||||
@ -270,13 +214,17 @@ class Currencies extends Controller
|
||||
|
||||
$code = request('code');
|
||||
|
||||
// Get currency object
|
||||
$currency = Currency::where('code', $code)->first();
|
||||
if ($code) {
|
||||
// Get currency object
|
||||
$currency = Currency::where('code', $code)->first();
|
||||
|
||||
// it should be integer for amount mask
|
||||
$currency->precision = (int) $currency->precision;
|
||||
// it should be integer for amount mask
|
||||
$currency->precision = (int) $currency->precision;
|
||||
|
||||
return response()->json($currency);
|
||||
$json = (object) $currency;
|
||||
}
|
||||
|
||||
return response()->json($json);
|
||||
}
|
||||
|
||||
public function config()
|
||||
@ -287,7 +235,7 @@ class Currencies extends Controller
|
||||
|
||||
if ($code) {
|
||||
$currency = config('money.' . $code);
|
||||
|
||||
|
||||
$currency['rate'] = isset($currency['rate']) ? $currency['rate'] : null;
|
||||
$currency['symbol_first'] = $currency['symbol_first'] ? 1 : 0;
|
||||
|
||||
|
38
app/Http/Controllers/Settings/Defaults.php
Normal file
38
app/Http/Controllers/Settings/Defaults.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Banking\Account;
|
||||
use App\Models\Setting\Currency;
|
||||
use App\Models\Setting\Setting;
|
||||
use App\Models\Setting\Tax;
|
||||
use App\Utilities\Modules;
|
||||
|
||||
class Defaults extends Controller
|
||||
{
|
||||
public function edit()
|
||||
{
|
||||
$setting = Setting::all('default')->map(function ($s) {
|
||||
$s->key = str_replace('default.', '', $s->key);
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
$accounts = Account::enabled()->orderBy('name')->pluck('name', 'id');
|
||||
|
||||
$currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code');
|
||||
|
||||
$taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id');
|
||||
|
||||
$payment_methods = Modules::getPaymentMethods();
|
||||
|
||||
return view('settings.default.edit', compact(
|
||||
'setting',
|
||||
'accounts',
|
||||
'currencies',
|
||||
'taxes',
|
||||
'payment_methods'
|
||||
));
|
||||
}
|
||||
}
|
129
app/Http/Controllers/Settings/Email.php
Normal file
129
app/Http/Controllers/Settings/Email.php
Normal file
@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Setting\Setting as Request;
|
||||
use App\Models\Common\EmailTemplate;
|
||||
use App\Models\Setting\Setting;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class Email extends Controller
|
||||
{
|
||||
public $skip_keys = ['company_id', '_method', '_token', '_prefix'];
|
||||
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// No need to check for permission in console
|
||||
if (app()->runningInConsole()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-settings-settings')->only(['create', 'store', 'duplicate', 'import']);
|
||||
$this->middleware('permission:read-settings-email')->only(['index', 'show', 'edit', 'export']);
|
||||
$this->middleware('permission:update-settings-settings')->only(['update', 'enable', 'disable']);
|
||||
$this->middleware('permission:delete-settings-settings')->only('destroy');
|
||||
}
|
||||
|
||||
public function edit()
|
||||
{
|
||||
$setting = Setting::all('email')->map(function ($s) {
|
||||
$s->key = str_replace('email.', '', $s->key);
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
EmailTemplate::all()->each(function ($template) use ($setting) {
|
||||
$setting->put('template_' . $template->alias . '_subject', $template->subject);
|
||||
$setting->put('template_' . $template->alias . '_body', $template->body);
|
||||
$setting->put('template_' . $template->alias . '_params', $template->params);
|
||||
});
|
||||
|
||||
$email_protocols = [
|
||||
'mail' => trans('settings.email.php'),
|
||||
'smtp' => trans('settings.email.smtp.name'),
|
||||
'sendmail' => trans('settings.email.sendmail'),
|
||||
'log' => trans('settings.email.log'),
|
||||
];
|
||||
|
||||
$invoice_tags = implode(', ', app('App\Notifications\Income\Invoice')->getTags());
|
||||
$payment_tags = implode(', ', app('App\Notifications\Portal\PaymentReceived')->getTags());
|
||||
$bill_tags = implode(', ', app('App\Notifications\Expense\Bill')->getTags());
|
||||
|
||||
return view('settings.email.edit', compact(
|
||||
'setting',
|
||||
'email_protocols',
|
||||
'invoice_tags',
|
||||
'payment_tags',
|
||||
'bill_tags'
|
||||
));
|
||||
}
|
||||
|
||||
public function update(Request $request)
|
||||
{
|
||||
$fields = $request->all();
|
||||
$prefix = $request->get('_prefix', 'email');
|
||||
|
||||
foreach ($fields as $key => $value) {
|
||||
$real_key = $prefix . '.' . $key;
|
||||
|
||||
// Don't process unwanted keys
|
||||
if (in_array($key, $this->skip_keys)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Str::startsWith($key, 'template_')) {
|
||||
$this->updateEmailTemplate($key, $fields);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
setting()->set($real_key, $value);
|
||||
}
|
||||
|
||||
// Save all settings
|
||||
setting()->save();
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.settings', 2)]);
|
||||
|
||||
$response = [
|
||||
'status' => null,
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => $message,
|
||||
'data' => null,
|
||||
'redirect' => route('settings.index'),
|
||||
];
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function updateEmailTemplate($key, &$fields)
|
||||
{
|
||||
$alias = str_replace(['template_', '_subject', '_body'], '', $key);
|
||||
$subject_key = 'template_' . $alias . '_subject';
|
||||
$body_key = 'template_' . $alias . '_body';
|
||||
|
||||
if (empty($fields[$subject_key]) || empty($fields[$body_key])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$template = EmailTemplate::alias($alias)->first();
|
||||
|
||||
$template->update([
|
||||
'company_id' => $template->company_id,
|
||||
'alias' => $template->alias,
|
||||
'subject' => $fields[$subject_key],
|
||||
'body' => $fields[$body_key],
|
||||
]);
|
||||
|
||||
unset($fields[$subject_key]);
|
||||
unset($fields[$body_key]);
|
||||
}
|
||||
}
|
53
app/Http/Controllers/Settings/Invoice.php
Normal file
53
app/Http/Controllers/Settings/Invoice.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Setting\Setting;
|
||||
|
||||
class Invoice extends Controller
|
||||
{
|
||||
public function edit()
|
||||
{
|
||||
$setting = Setting::all('invoice')->map(function ($s) {
|
||||
$s->key = str_replace('invoice.', '', $s->key);
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
$item_names = [
|
||||
'settings.invoice.item' => trans('settings.invoice.item'),
|
||||
'settings.invoice.product' => trans('settings.invoice.product'),
|
||||
'settings.invoice.service' => trans('settings.invoice.service'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$price_names = [
|
||||
'settings.invoice.price' => trans('settings.invoice.price'),
|
||||
'settings.invoice.rate' => trans('settings.invoice.rate'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$quantity_names = [
|
||||
'settings.invoice.quantity' => trans('settings.invoice.quantity'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$payment_terms = [
|
||||
'0' => trans('settings.invoice.due_receipt'),
|
||||
'15' => trans('settings.invoice.due_days', ['days' => 15]),
|
||||
'30' => trans('settings.invoice.due_days', ['days' => 30]),
|
||||
'45' => trans('settings.invoice.due_days', ['days' => 45]),
|
||||
'60' => trans('settings.invoice.due_days', ['days' => 60]),
|
||||
'90' => trans('settings.invoice.due_days', ['days' => 90]),
|
||||
];
|
||||
|
||||
return view('settings.invoice.edit', compact(
|
||||
'setting',
|
||||
'item_names',
|
||||
'price_names',
|
||||
'quantity_names',
|
||||
'payment_terms'
|
||||
));
|
||||
}
|
||||
}
|
52
app/Http/Controllers/Settings/Localisation.php
Normal file
52
app/Http/Controllers/Settings/Localisation.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Setting\Setting;
|
||||
use App\Traits\DateTime;
|
||||
|
||||
class Localisation extends Controller
|
||||
{
|
||||
use DateTime;
|
||||
|
||||
public function edit()
|
||||
{
|
||||
$setting = Setting::all('localisation')->map(function ($s) {
|
||||
$s->key = str_replace('localisation.', '', $s->key);
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
$timezones = $this->getTimezones();
|
||||
|
||||
$date_formats = [
|
||||
'd M Y' => '31 Dec 2017',
|
||||
'd F Y' => '31 December 2017',
|
||||
'd m Y' => '31 12 2017',
|
||||
'm d Y' => '12 31 2017',
|
||||
'Y m d' => '2017 12 31',
|
||||
];
|
||||
|
||||
$date_separators = [
|
||||
'dash' => trans('settings.localisation.date.dash'),
|
||||
'slash' => trans('settings.localisation.date.slash'),
|
||||
'dot' => trans('settings.localisation.date.dot'),
|
||||
'comma' => trans('settings.localisation.date.comma'),
|
||||
'space' => trans('settings.localisation.date.space'),
|
||||
];
|
||||
|
||||
$percent_positions = [
|
||||
'before' => trans('settings.localisation.percent.before'),
|
||||
'after' => trans('settings.localisation.percent.after'),
|
||||
];
|
||||
|
||||
return view('settings.localisation.edit', compact(
|
||||
'setting',
|
||||
'timezones',
|
||||
'date_formats',
|
||||
'date_separators',
|
||||
'percent_positions'
|
||||
));
|
||||
}
|
||||
}
|
@ -2,10 +2,9 @@
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Setting\Setting;
|
||||
use File;
|
||||
use Module;
|
||||
use App\Http\Requests\Setting\Module as Request;
|
||||
|
||||
class Modules extends Controller
|
||||
{
|
||||
@ -16,13 +15,12 @@ class Modules extends Controller
|
||||
*/
|
||||
public function edit($alias)
|
||||
{
|
||||
/*$setting = Setting::all($alias)->pluck('value', 'key');*/
|
||||
$setting = Setting::all($alias)->map(function($s) use($alias) {
|
||||
$setting = Setting::all($alias)->map(function ($s) use ($alias) {
|
||||
$s->key = str_replace($alias . '.', '', $s->key);
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
$module = Module::findByAlias($alias);
|
||||
$module = module($alias);
|
||||
|
||||
return view('settings.modules.edit', compact('setting', 'module'));
|
||||
}
|
||||
@ -34,18 +32,11 @@ class Modules extends Controller
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update($alias)
|
||||
public function update($alias, Request $request)
|
||||
{
|
||||
$fields = request()->all();
|
||||
|
||||
$skip_keys = ['company_id', '_method', '_token'];
|
||||
|
||||
foreach ($fields as $key => $value) {
|
||||
// Don't process unwanted keys
|
||||
if (in_array($key, $skip_keys)) {
|
||||
continue;
|
||||
}
|
||||
$fields = $request->except(['company_id', '_method', '_token', 'module_alias']);
|
||||
|
||||
foreach ($fields as $key => $value) {
|
||||
setting()->set($alias . '.' . $key, $value);
|
||||
}
|
||||
|
||||
@ -54,8 +45,17 @@ class Modules extends Controller
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.settings', 2)]);
|
||||
|
||||
$response = [
|
||||
'status' => null,
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => $message,
|
||||
'data' => null,
|
||||
'redirect' => route('settings.index')//('settings/apps/' . $alias),
|
||||
];
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('settings/apps/' . $alias);
|
||||
return response()->json($response);
|
||||
}
|
||||
}
|
||||
|
22
app/Http/Controllers/Settings/Schedule.php
Normal file
22
app/Http/Controllers/Settings/Schedule.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Setting\Setting;
|
||||
|
||||
class Schedule extends Controller
|
||||
{
|
||||
public function edit()
|
||||
{
|
||||
$setting = Setting::all('schedule')->map(function ($s) {
|
||||
$s->key = str_replace('schedule.', '', $s->key);
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
|
||||
return view('settings.schedule.edit', compact(
|
||||
'setting'
|
||||
));
|
||||
}
|
||||
}
|
@ -2,123 +2,68 @@
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Setting\Setting as Request;
|
||||
use App\Models\Banking\Account;
|
||||
use App\Models\Common\Company;
|
||||
use App\Models\Setting\Currency;
|
||||
use App\Models\Setting\Setting;
|
||||
use App\Models\Common\Media;
|
||||
use App\Models\Setting\Tax;
|
||||
use App\Models\Module\Module;
|
||||
use App\Traits\DateTime;
|
||||
use App\Traits\Uploads;
|
||||
use App\Utilities\Installer;
|
||||
use App\Utilities\Modules;
|
||||
use Date;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class Settings extends Controller
|
||||
{
|
||||
use DateTime, Uploads;
|
||||
|
||||
public $skip_keys = ['company_id', '_method', '_token', '_prefix'];
|
||||
|
||||
public $file_keys = ['company.logo', 'invoice.logo'];
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit()
|
||||
public function index()
|
||||
{
|
||||
$setting = Setting::all()->map(function ($s) {
|
||||
$s->key = str_replace('general.', '', $s->key);
|
||||
$modules = new \stdClass();
|
||||
$modules->settings = [];
|
||||
|
||||
return $s;
|
||||
})->pluck('value', 'key');
|
||||
// Get enabled modules
|
||||
$enabled_modules = Module::enabled()->get();
|
||||
|
||||
$setting->put('company_logo', Media::find($setting->pull('company_logo')));
|
||||
$setting->put('invoice_logo', Media::find($setting->pull('invoice_logo')));
|
||||
foreach ($enabled_modules as $module) {
|
||||
$m = module($module->alias);
|
||||
|
||||
$timezones = $this->getTimezones();
|
||||
// Check if the module exists and has settings
|
||||
if (!$m || empty($m->get('settings'))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$accounts = Account::enabled()->orderBy('name')->pluck('name', 'id');
|
||||
$modules->settings[$m->getAlias()] = [
|
||||
'name' => $m->getName(),
|
||||
'description' => $m->getDescription(),
|
||||
'url' => 'settings/' . $m->getAlias(),
|
||||
'icon' => $m->get('icon', 'fa fa-cog'),
|
||||
];
|
||||
}
|
||||
|
||||
$currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code');
|
||||
event(new \App\Events\Module\SettingShowing($modules));
|
||||
|
||||
$taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id');
|
||||
|
||||
$payment_methods = Modules::getPaymentMethods();
|
||||
|
||||
$date_formats = [
|
||||
'd M Y' => '31 Dec 2017',
|
||||
'd F Y' => '31 December 2017',
|
||||
'd m Y' => '31 12 2017',
|
||||
'm d Y' => '12 31 2017',
|
||||
'Y m d' => '2017 12 31',
|
||||
];
|
||||
|
||||
$date_separators = [
|
||||
'dash' => trans('settings.localisation.date.dash'),
|
||||
'slash' => trans('settings.localisation.date.slash'),
|
||||
'dot' => trans('settings.localisation.date.dot'),
|
||||
'comma' => trans('settings.localisation.date.comma'),
|
||||
'space' => trans('settings.localisation.date.space'),
|
||||
];
|
||||
|
||||
$item_names = [
|
||||
'settings.invoice.item' => trans('settings.invoice.item'),
|
||||
'settings.invoice.product' => trans('settings.invoice.product'),
|
||||
'settings.invoice.service' => trans('settings.invoice.service'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$price_names = [
|
||||
'settings.invoice.price' => trans('settings.invoice.price'),
|
||||
'settings.invoice.rate' => trans('settings.invoice.rate'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$quantity_names = [
|
||||
'settings.invoice.quantity' => trans('settings.invoice.quantity'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$email_protocols = [
|
||||
'mail' => trans('settings.email.php'),
|
||||
'smtp' => trans('settings.email.smtp.name'),
|
||||
'sendmail' => trans('settings.email.sendmail'),
|
||||
'log' => trans('settings.email.log'),
|
||||
];
|
||||
|
||||
$percent_positions = [
|
||||
'before' => trans('settings.localisation.percent.before'),
|
||||
'after' => trans('settings.localisation.percent.after'),
|
||||
];
|
||||
|
||||
return view('settings.settings.edit', compact(
|
||||
'setting',
|
||||
'timezones',
|
||||
'accounts',
|
||||
'currencies',
|
||||
'taxes',
|
||||
'payment_methods',
|
||||
'date_formats',
|
||||
'date_separators',
|
||||
'item_names',
|
||||
'price_names',
|
||||
'quantity_names',
|
||||
'email_protocols',
|
||||
'percent_positions'
|
||||
));
|
||||
return view('settings.settings.index', ['modules' => $modules->settings]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param Request $request
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Request $request)
|
||||
{
|
||||
$fields = $request->all();
|
||||
$prefix = $request->get('_prefix', 'general');
|
||||
$company_id = $request->get('company_id');
|
||||
|
||||
if (empty($company_id)) {
|
||||
@ -127,24 +72,23 @@ class Settings extends Controller
|
||||
|
||||
$company = Company::find($company_id);
|
||||
|
||||
$skip_keys = ['company_id', '_method', '_token'];
|
||||
$file_keys = ['company_logo', 'invoice_logo'];
|
||||
|
||||
$companies = Company::all()->count();
|
||||
|
||||
|
||||
foreach ($fields as $key => $value) {
|
||||
$real_key = $prefix . '.' . $key;
|
||||
|
||||
// Don't process unwanted keys
|
||||
if (in_array($key, $skip_keys)) {
|
||||
if (in_array($key, $this->skip_keys)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Process file uploads
|
||||
if (in_array($key, $file_keys)) {
|
||||
if (in_array($real_key, $this->file_keys)) {
|
||||
// Upload attachment
|
||||
if ($request->file($key)) {
|
||||
$media = $this->getMedia($request->file($key), 'settings');
|
||||
|
||||
$company->attachMedia($media, $key);
|
||||
$company->attachMedia($media, Str::snake($real_key));
|
||||
|
||||
$value = $media->id;
|
||||
}
|
||||
@ -155,12 +99,16 @@ class Settings extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
// If only 1 company
|
||||
if ($companies == 1) {
|
||||
$this->oneCompany($key, $value);
|
||||
if ($real_key == 'default.locale') {
|
||||
user()->setAttribute('locale', $value)->save();
|
||||
}
|
||||
|
||||
setting()->set('general.' . $key, $value);
|
||||
// If only 1 company
|
||||
if ($companies == 1) {
|
||||
$this->oneCompany($real_key, $value);
|
||||
}
|
||||
|
||||
setting()->set($real_key, $value);
|
||||
}
|
||||
|
||||
// Save all settings
|
||||
@ -168,27 +116,33 @@ class Settings extends Controller
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.settings', 2)]);
|
||||
|
||||
$response = [
|
||||
'status' => null,
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => $message,
|
||||
'data' => null,
|
||||
'redirect' => route('settings.index'),
|
||||
];
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('settings/settings');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
protected function oneCompany($key, $value)
|
||||
protected function oneCompany($real_key, $value)
|
||||
{
|
||||
switch ($key) {
|
||||
case 'company_name':
|
||||
switch ($real_key) {
|
||||
case 'company.name':
|
||||
Installer::updateEnv(['MAIL_FROM_NAME' => '"' . $value . '"']);
|
||||
break;
|
||||
case 'company_email':
|
||||
case 'company.email':
|
||||
Installer::updateEnv(['MAIL_FROM_ADDRESS' => $value]);
|
||||
break;
|
||||
case 'default_locale':
|
||||
case 'default.locale':
|
||||
Installer::updateEnv(['APP_LOCALE' => $value]);
|
||||
break;
|
||||
case 'session_handler':
|
||||
Installer::updateEnv(['SESSION_DRIVER' => $value]);
|
||||
break;
|
||||
case 'schedule_time':
|
||||
case 'schedule.time':
|
||||
Installer::updateEnv(['APP_SCHEDULE_TIME' => '"' . $value . '"']);
|
||||
break;
|
||||
}
|
||||
|
@ -2,8 +2,11 @@
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Setting\Tax as Request;
|
||||
use App\Jobs\Setting\CreateTax;
|
||||
use App\Jobs\Setting\DeleteTax;
|
||||
use App\Jobs\Setting\UpdateTax;
|
||||
use App\Models\Setting\Tax;
|
||||
|
||||
class Taxes extends Controller
|
||||
@ -19,6 +22,7 @@ class Taxes extends Controller
|
||||
$taxes = Tax::collect();
|
||||
|
||||
$types = [
|
||||
'fixed' => trans('taxes.fixed'),
|
||||
'normal' => trans('taxes.normal'),
|
||||
'inclusive' => trans('taxes.inclusive'),
|
||||
'compound' => trans('taxes.compound'),
|
||||
@ -34,7 +38,7 @@ class Taxes extends Controller
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
return redirect('settings/taxes');
|
||||
return redirect()->route('taxes.index');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -45,6 +49,7 @@ class Taxes extends Controller
|
||||
public function create()
|
||||
{
|
||||
$types = [
|
||||
'fixed' => trans('taxes.fixed'),
|
||||
'normal' => trans('taxes.normal'),
|
||||
'inclusive' => trans('taxes.inclusive'),
|
||||
'compound' => trans('taxes.compound'),
|
||||
@ -62,13 +67,23 @@ class Taxes extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
Tax::create($request->all());
|
||||
$response = $this->ajaxDispatch(new CreateTax($request));
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.tax_rates', 1)]);
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('taxes.index');
|
||||
|
||||
flash($message)->success();
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.taxes', 1)]);
|
||||
|
||||
return redirect('settings/taxes');
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = route('taxes.create');
|
||||
|
||||
$message = $response['message'];
|
||||
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -81,6 +96,7 @@ class Taxes extends Controller
|
||||
public function edit(Tax $tax)
|
||||
{
|
||||
$types = [
|
||||
'fixed' => trans('taxes.fixed'),
|
||||
'normal' => trans('taxes.normal'),
|
||||
'inclusive' => trans('taxes.inclusive'),
|
||||
'compound' => trans('taxes.compound'),
|
||||
@ -92,113 +108,91 @@ class Taxes extends Controller
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param Tax $tax
|
||||
* @param Request $request
|
||||
* @param Tax $tax
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Tax $tax, Request $request)
|
||||
{
|
||||
$relationships = $this->countRelationships($tax, [
|
||||
'items' => 'items',
|
||||
'invoice_items' => 'invoices',
|
||||
'bill_items' => 'bills',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new UpdateTax($tax, $request));
|
||||
|
||||
if (empty($relationships) || $request['enabled']) {
|
||||
$tax->update($request->all());
|
||||
if ($response['success']) {
|
||||
$response['redirect'] = route('taxes.index');
|
||||
|
||||
$message = trans('messages.success.updated', ['type' => trans_choice('general.tax_rates', 1)]);
|
||||
$message = trans('messages.success.updated', ['type' => $tax->name]);
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect('settings/taxes');
|
||||
} else {
|
||||
$message = trans('messages.warning.disabled', ['name' => $tax->name, 'text' => implode(', ', $relationships)]);
|
||||
$response['redirect'] = route('taxes.edit', $tax->id);
|
||||
|
||||
flash($message)->warning();
|
||||
$message = $response['message'];
|
||||
|
||||
return redirect('settings/taxes/' . $tax->id . '/edit');
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the specified resource.
|
||||
*
|
||||
* @param Tax $tax
|
||||
* @param Tax $tax
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function enable(Tax $tax)
|
||||
{
|
||||
$tax->enabled = 1;
|
||||
$tax->save();
|
||||
$response = $this->ajaxDispatch(new UpdateTax($tax, request()->merge(['enabled' => 1])));
|
||||
|
||||
$message = trans('messages.success.enabled', ['type' => trans_choice('general.tax_rates', 1)]);
|
||||
if ($response['success']) {
|
||||
$response['message'] = trans('messages.success.enabled', ['type' => $tax->name]);
|
||||
}
|
||||
|
||||
flash($message)->success();
|
||||
|
||||
return redirect()->route('taxes.index');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the specified resource.
|
||||
*
|
||||
* @param Tax $tax
|
||||
* @param Tax $tax
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function disable(Tax $tax)
|
||||
{
|
||||
$relationships = $this->countRelationships($tax, [
|
||||
'items' => 'items',
|
||||
'invoice_items' => 'invoices',
|
||||
'bill_items' => 'bills',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new UpdateTax($tax, request()->merge(['enabled' => 0])));
|
||||
|
||||
if (empty($relationships)) {
|
||||
$tax->enabled = 0;
|
||||
$tax->save();
|
||||
|
||||
$message = trans('messages.success.disabled', ['type' => trans_choice('general.tax_rates', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$message = trans('messages.warning.disabled', ['name' => $tax->name, 'text' => implode(', ', $relationships)]);
|
||||
|
||||
flash($message)->warning();
|
||||
if ($response['success']) {
|
||||
$response['message'] = trans('messages.success.disabled', ['type' => $tax->name]);
|
||||
}
|
||||
|
||||
return redirect()->route('taxes.index');
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param Tax $tax
|
||||
* @param Tax $tax
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function destroy(Tax $tax)
|
||||
{
|
||||
$relationships = $this->countRelationships($tax, [
|
||||
'items' => 'items',
|
||||
'invoice_items' => 'invoices',
|
||||
'bill_items' => 'bills',
|
||||
]);
|
||||
$response = $this->ajaxDispatch(new DeleteTax($tax));
|
||||
|
||||
if (empty($relationships)) {
|
||||
$tax->delete();
|
||||
$response['redirect'] = route('taxes.index');
|
||||
|
||||
$message = trans('messages.success.deleted', ['type' => trans_choice('general.taxes', 1)]);
|
||||
if ($response['success']) {
|
||||
$message = trans('messages.success.deleted', ['type' => $tax->name]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$message = trans('messages.warning.deleted', ['name' => $tax->name, 'text' => implode(', ', $relationships)]);
|
||||
$message = $response['message'];
|
||||
|
||||
flash($message)->warning();
|
||||
flash($message)->error();
|
||||
}
|
||||
|
||||
return redirect('settings/taxes');
|
||||
return response()->json($response);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user