akaunting 3.0 (the last dance)
This commit is contained in:
@ -5,7 +5,6 @@ namespace App\Http\Controllers\Modals;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Banking\Account as Request;
|
||||
use App\Jobs\Banking\CreateAccount;
|
||||
use App\Models\Banking\Account;
|
||||
use App\Models\Setting\Currency;
|
||||
|
||||
class Accounts extends Controller
|
||||
@ -29,11 +28,9 @@ class Accounts extends Controller
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$currencies = Currency::enabled()->pluck('name', 'code');
|
||||
|
||||
$currency = Currency::where('code', '=', setting('default.currency'))->first();
|
||||
|
||||
$html = view('modals.accounts.create', compact('currencies', 'currency'))->render();
|
||||
$html = view('modals.accounts.create', compact('currency'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
|
@ -14,7 +14,7 @@ class Companies extends Controller
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:read-settings-company')->only('index', 'show', 'edit', 'export');
|
||||
$this->middleware('permission:update-settings-settings')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:update-settings-company')->only('update', 'enable', 'disable');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7,7 +7,6 @@ use App\Http\Requests\Common\Contact as Request;
|
||||
use App\Models\Common\Contact;
|
||||
use App\Jobs\Common\CreateContact;
|
||||
use App\Jobs\Common\UpdateContact;
|
||||
use App\Models\Setting\Currency;
|
||||
|
||||
class Customers extends Controller
|
||||
{
|
||||
@ -30,17 +29,13 @@ class Customers extends Controller
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray();
|
||||
|
||||
$contact_selector = false;
|
||||
|
||||
if (request()->has('contact_selector')) {
|
||||
$contact_selector = request()->get('contact_selector');
|
||||
}
|
||||
|
||||
$rand = rand();
|
||||
|
||||
$html = view('modals.customers.create', compact('currencies', 'contact_selector', 'rand'))->render();
|
||||
$html = view('modals.customers.create', compact('contact_selector'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@ -80,17 +75,13 @@ class Customers extends Controller
|
||||
*/
|
||||
public function edit(Contact $customer)
|
||||
{
|
||||
$currencies = Currency::enabled()->pluck('name', 'code');
|
||||
|
||||
$contact_selector = false;
|
||||
|
||||
if (request()->has('contact_selector')) {
|
||||
$contact_selector = request()->get('contact_selector');
|
||||
}
|
||||
|
||||
$rand = rand();
|
||||
|
||||
$html = view('modals.customers.edit', compact('customer', 'currencies', 'contact_selector', 'rand'))->render();
|
||||
$html = view('modals.customers.edit', compact('customer', 'contact_selector'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
|
@ -15,8 +15,8 @@ class DocumentItemColumns extends Controller
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:read-settings-settings')->only('index', 'edit');
|
||||
$this->middleware('permission:update-settings-settings')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:read-settings-invoice')->only('index', 'edit');
|
||||
$this->middleware('permission:update-settings-invoice')->only('update', 'enable', 'disable');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -31,6 +31,7 @@ class DocumentItemColumns extends Controller
|
||||
$type = request()->get('type', 'invoice');
|
||||
|
||||
$item_names = [
|
||||
'hide' => trans('settings.invoice.hide.item_name'),
|
||||
'settings.invoice.item' => trans('settings.' . $type . '.item'),
|
||||
'settings.invoice.product' => trans('settings.' . $type . '.product'),
|
||||
'settings.invoice.service' => trans('settings.' . $type . '.service'),
|
||||
@ -38,12 +39,14 @@ class DocumentItemColumns extends Controller
|
||||
];
|
||||
|
||||
$price_names = [
|
||||
'hide' => trans('settings.invoice.hide.price'),
|
||||
'settings.invoice.price' => trans('settings.' . $type . '.price'),
|
||||
'settings.invoice.rate' => trans('settings.' . $type . '.rate'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
||||
$quantity_names = [
|
||||
'hide' => trans('settings.invoice.hide.quantity'),
|
||||
'settings.invoice.quantity' => trans('settings.' . $type . '.quantity'),
|
||||
'custom' => trans('settings.invoice.custom'),
|
||||
];
|
||||
|
@ -5,16 +5,18 @@ namespace App\Http\Controllers\Modals;
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Http\Requests\Banking\Transaction as Request;
|
||||
use App\Jobs\Banking\CreateBankingDocumentTransaction;
|
||||
use App\Models\Banking\Account;
|
||||
use App\Jobs\Banking\UpdateBankingDocumentTransaction;
|
||||
use App\Models\Banking\Transaction;
|
||||
use App\Models\Document\Document;
|
||||
use App\Models\Setting\Currency;
|
||||
use App\Utilities\Modules;
|
||||
use App\Traits\Uploads;
|
||||
use App\Traits\Transactions;
|
||||
|
||||
|
||||
class DocumentTransactions extends Controller
|
||||
{
|
||||
use Uploads;
|
||||
use Uploads, Transactions;
|
||||
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
@ -37,16 +39,12 @@ class DocumentTransactions extends Controller
|
||||
*/
|
||||
public function create(Document $document)
|
||||
{
|
||||
$accounts = Account::enabled()->orderBy('name')->pluck('name', 'id');
|
||||
|
||||
$currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray();
|
||||
|
||||
$currency = Currency::where('code', $document->currency_code)->first();
|
||||
|
||||
$payment_methods = Modules::getPaymentMethods();
|
||||
|
||||
$paid = $document->paid;
|
||||
|
||||
$number = $this->getNextTransactionNumber();
|
||||
|
||||
// Get document Totals
|
||||
foreach ($document->totals as $document_total) {
|
||||
$document->{$document_total->code} = $document_total->amount;
|
||||
@ -56,11 +54,29 @@ class DocumentTransactions extends Controller
|
||||
|
||||
$document->grand_total = money($total, $currency->code)->getAmount();
|
||||
|
||||
if (!empty($paid)) {
|
||||
if (! empty($paid)) {
|
||||
$document->grand_total = round($document->total - $paid, $currency->precision);
|
||||
}
|
||||
|
||||
$html = view('modals.documents.payment', compact('document', 'accounts', 'currencies', 'currency', 'payment_methods'))->render();
|
||||
$buttons = [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary'
|
||||
],
|
||||
'payment' => [
|
||||
'text' => trans('invoices.accept_payments'),
|
||||
'class' => 'long-texts',
|
||||
'url' => route('apps.categories.show', 'payment-method')
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.save'),
|
||||
'class' => 'disabled:bg-green-100'
|
||||
],
|
||||
];
|
||||
|
||||
$route = ['modals.documents.document.transactions.store', $document->id];
|
||||
|
||||
$html = view('modals.documents.payment', compact('document', 'route', 'currency', 'number'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@ -69,21 +85,7 @@ class DocumentTransactions extends Controller
|
||||
'html' => $html,
|
||||
'data' => [
|
||||
'title' => trans('general.title.new', ['type' => trans_choice('general.payments', 1)]),
|
||||
'buttons' => [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary'
|
||||
],
|
||||
'payment' => [
|
||||
'text' => trans('invoices.accept_payments'),
|
||||
'class' => 'long-texts',
|
||||
'url' => route('apps.categories.show', 'payment-method')
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.save'),
|
||||
'class' => 'btn-success'
|
||||
]
|
||||
]
|
||||
'buttons' => $buttons,
|
||||
]
|
||||
]);
|
||||
}
|
||||
@ -101,9 +103,99 @@ class DocumentTransactions extends Controller
|
||||
$response = $this->ajaxDispatch(new CreateBankingDocumentTransaction($document, $request));
|
||||
|
||||
if ($response['success']) {
|
||||
$route = config('type.' . $document->type . '.route.prefix');
|
||||
$route = config('type.document.' . $document->type . '.route.prefix');
|
||||
|
||||
if ($alias = config('type.' . $document->type . '.alias')) {
|
||||
if ($alias = config('type.document.' . $document->type . '.alias')) {
|
||||
$route = $alias . '.' . $route;
|
||||
}
|
||||
|
||||
$response['redirect'] = route($route . '.show', $document->id);
|
||||
|
||||
$message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = null;
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param Document $document
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function edit(Document $document, Transaction $transaction)
|
||||
{
|
||||
$currency = Currency::where('code', $document->currency_code)->first();
|
||||
|
||||
$paid = $document->paid;
|
||||
|
||||
$number = $this->getNextTransactionNumber();
|
||||
|
||||
// Get document Totals
|
||||
foreach ($document->totals as $document_total) {
|
||||
$document->{$document_total->code} = $document_total->amount;
|
||||
}
|
||||
|
||||
$total = money($document->total, $currency->code, true)->format();
|
||||
|
||||
$document->grand_total = money($total, $currency->code)->getAmount();
|
||||
|
||||
if (! empty($paid)) {
|
||||
$document->grand_total = round($document->total - $paid, $currency->precision);
|
||||
}
|
||||
|
||||
$buttons = [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary'
|
||||
],
|
||||
'payment' => [
|
||||
'text' => trans('invoices.accept_payments'),
|
||||
'class' => 'long-texts',
|
||||
'url' => route('apps.categories.show', 'payment-method')
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.save'),
|
||||
'class' => 'disabled:bg-green-100'
|
||||
],
|
||||
];
|
||||
|
||||
$route = ['modals.documents.document.transactions.update', $document->id, $transaction->id];
|
||||
|
||||
$html = view('modals.documents.payment', compact('document', 'transaction', 'route', 'currency', 'number'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => 'null',
|
||||
'html' => $html,
|
||||
'data' => [
|
||||
'title' => trans('general.title.edit', ['type' => trans_choice('general.payments', 1)]),
|
||||
'buttons' => $buttons,
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param $item
|
||||
* @param $request
|
||||
* @return Response
|
||||
*/
|
||||
public function update(Document $document, Transaction $transaction, Request $request)
|
||||
{
|
||||
$response = $this->ajaxDispatch(new UpdateBankingDocumentTransaction($document, $transaction, $request));
|
||||
|
||||
if ($response['success']) {
|
||||
$route = config('type.document.' . $document->type . '.route.prefix');
|
||||
|
||||
if ($alias = config('type.document.' . $document->type . '.alias')) {
|
||||
$route = $alias . '.' . $route;
|
||||
}
|
||||
|
||||
|
92
app/Http/Controllers/Modals/InvoiceEmails.php
Normal file
92
app/Http/Controllers/Modals/InvoiceEmails.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Modals;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Document\Document;
|
||||
use App\Notifications\Sale\Invoice as Notification;
|
||||
use App\Jobs\Document\SendDocumentAsCustomMail;
|
||||
use App\Http\Requests\Common\CustomMail as Request;
|
||||
|
||||
class InvoiceEmails extends Controller
|
||||
{
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-sales-invoices')->only('create', 'store', 'duplicate', 'import');
|
||||
$this->middleware('permission:read-sales-invoices')->only('index', 'show', 'edit', 'export');
|
||||
$this->middleware('permission:update-sales-invoices')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-sales-invoices')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param Document $invoice
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create(Document $invoice)
|
||||
{
|
||||
$notification = new Notification($invoice, 'invoice_new_customer', true);
|
||||
|
||||
$store_route = 'modals.invoices.emails.store';
|
||||
|
||||
$html = view('modals.invoices.email', compact('invoice', 'notification', 'store_route'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => 'null',
|
||||
'html' => $html,
|
||||
'data' => [
|
||||
'title' => trans('general.title.new', ['type' => trans_choice('general.email', 1)]),
|
||||
'buttons' => [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary',
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.send'),
|
||||
'class' => 'disabled:bg-green-100',
|
||||
]
|
||||
]
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$response = $this->ajaxDispatch(new SendDocumentAsCustomMail($request, 'invoice_new_customer'));
|
||||
|
||||
if ($response['success']) {
|
||||
$invoice = Document::find($request->get('document_id'));
|
||||
|
||||
$route = config('type.document.' . $invoice->type . '.route.prefix');
|
||||
|
||||
if ($alias = config('type.document.' . $invoice->type . '.alias')) {
|
||||
$route = $alias . '.' . $route;
|
||||
}
|
||||
|
||||
$response['redirect'] = route($route . '.show', $invoice->id);
|
||||
|
||||
$message = trans('documents.messages.email_sent', ['type' => trans_choice('general.invoices', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = null;
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
}
|
81
app/Http/Controllers/Modals/InvoiceShare.php
Normal file
81
app/Http/Controllers/Modals/InvoiceShare.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Modals;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Document\Document;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class InvoiceShare extends Controller
|
||||
{
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-sales-invoices')->only('create', 'store', 'duplicate', 'import');
|
||||
$this->middleware('permission:read-sales-invoices')->only('index', 'show', 'edit', 'export');
|
||||
$this->middleware('permission:update-sales-invoices')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-sales-invoices')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param Document $invoice
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create(Document $invoice)
|
||||
{
|
||||
$page = config('type.document.' . $invoice->type . '.route.prefix');
|
||||
$alias = config('type.document.' . $invoice->type . '.alias');
|
||||
|
||||
$route = '';
|
||||
|
||||
if (! empty($alias)) {
|
||||
$route .= $alias . '.';
|
||||
}
|
||||
|
||||
$preview_route = $route . 'preview.' . $page . '.show';
|
||||
$signed_route = $route . 'signed.' . $page . '.show';
|
||||
|
||||
try {
|
||||
$previewUrl = route($preview_route, $invoice->id);
|
||||
} catch (\Exception $e) {
|
||||
$previewUrl = '';
|
||||
}
|
||||
|
||||
try {
|
||||
route($signed_route, [$this->document->id, 'company_id' => company_id()]);
|
||||
|
||||
$signedUrl = URL::signedRoute($signed_route, [$invoice->id]);
|
||||
} catch (\Exception $e) {
|
||||
$signedUrl = URL::signedRoute('signed.invoices.show', [$invoice->id]);
|
||||
}
|
||||
|
||||
$html = view('modals.invoices.share', compact('invoice', 'previewUrl', 'signedUrl'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => 'null',
|
||||
'html' => $html,
|
||||
'data' => [
|
||||
'title' => trans('general.title.new', ['type' => trans('general.share_link')]),
|
||||
'success_message' => trans('invoices.share.success_message'),
|
||||
'buttons' => [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary',
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.copy_link'),
|
||||
'class' => 'disabled:bg-green-100',
|
||||
],
|
||||
]
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
@ -12,10 +12,10 @@ class InvoiceTemplates extends Controller
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-settings-settings')->only('create', 'store');
|
||||
$this->middleware('permission:read-settings-settings')->only('index', 'edit');
|
||||
$this->middleware('permission:update-settings-settings')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-settings-settings')->only('destroy');
|
||||
$this->middleware('permission:create-settings-invoice')->only('create', 'store');
|
||||
$this->middleware('permission:read-settings-invoice')->only('index', 'edit');
|
||||
$this->middleware('permission:update-settings-invoice')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-settings-invoice')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,7 +4,6 @@ namespace App\Http\Controllers\Modals;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Jobs\Common\CreateItem;
|
||||
use App\Models\Setting\Category;
|
||||
use App\Models\Setting\Currency;
|
||||
use App\Models\Setting\Tax;
|
||||
use Illuminate\Http\Request as IRequest;
|
||||
@ -30,13 +29,11 @@ class Items extends Controller
|
||||
*/
|
||||
public function create(IRequest $request)
|
||||
{
|
||||
$categories = Category::item()->enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id');
|
||||
|
||||
$taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id');
|
||||
|
||||
$currency = Currency::where('code', setting('default.currency'))->first();
|
||||
|
||||
$html = view('modals.items.create', compact('categories', 'taxes', 'currency'))->render();
|
||||
$html = view('modals.items.create', compact('taxes', 'currency'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
|
96
app/Http/Controllers/Modals/TransactionEmails.php
Normal file
96
app/Http/Controllers/Modals/TransactionEmails.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Modals;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Banking\Transaction;
|
||||
use App\Notifications\Banking\Transaction as Notification;
|
||||
use App\Jobs\Banking\SendTransactionAsCustomMail;
|
||||
use App\Http\Requests\Common\CustomMail as Request;
|
||||
|
||||
class TransactionEmails extends Controller
|
||||
{
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-banking-transactions')->only('create', 'store', 'duplicate', 'import');
|
||||
$this->middleware('permission:read-banking-transactions')->only('index', 'show', 'edit', 'export');
|
||||
$this->middleware('permission:update-banking-transactions')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-banking-transactions')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param Transaction $transaction
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create(Transaction $transaction)
|
||||
{
|
||||
$email_template = config('type.transaction.' . $transaction->type . '.email_template');
|
||||
|
||||
$notification = new Notification($transaction, $email_template, true);
|
||||
|
||||
$store_route = 'modals.transactions.emails.store';
|
||||
|
||||
$html = view('modals.transactions.email', compact('transaction', 'notification', 'store_route'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => 'null',
|
||||
'html' => $html,
|
||||
'data' => [
|
||||
'title' => trans('general.title.new', ['type' => trans_choice('general.email', 1)]),
|
||||
'buttons' => [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary',
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.send'),
|
||||
'class' => 'disabled:bg-green-100',
|
||||
]
|
||||
]
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$transaction = Transaction::find($request->get('transaction_id'));
|
||||
|
||||
$email_template = config('type.transaction.' . $transaction->type . '.email_template');
|
||||
|
||||
$response = $this->ajaxDispatch(new SendTransactionAsCustomMail($request, $email_template));
|
||||
|
||||
if ($response['success']) {
|
||||
$route = config('type.transaction.' . $transaction->type . '.route.prefix');
|
||||
|
||||
if ($alias = config('type.transaction.' . $transaction->type . '.alias')) {
|
||||
$route = $alias . '.' . $route;
|
||||
}
|
||||
|
||||
$response['redirect'] = route($route . '.show', $transaction->id);
|
||||
|
||||
$message = trans('documents.messages.email_sent', ['type' => trans_choice('general.transactions', 1)]);
|
||||
|
||||
flash($message)->success();
|
||||
} else {
|
||||
$response['redirect'] = null;
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
}
|
80
app/Http/Controllers/Modals/TransactionShare.php
Normal file
80
app/Http/Controllers/Modals/TransactionShare.php
Normal file
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Modals;
|
||||
|
||||
use App\Abstracts\Http\Controller;
|
||||
use App\Models\Banking\Transaction;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
||||
class TransactionShare extends Controller
|
||||
{
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-banking-transactions')->only('create', 'store', 'duplicate', 'import');
|
||||
$this->middleware('permission:read-banking-transactions')->only('index', 'show', 'edit', 'export');
|
||||
$this->middleware('permission:update-banking-transactions')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-banking-transactions')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param Transaction $transaction
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function create(Transaction $transaction)
|
||||
{
|
||||
$alias = config('type.transaction.' . $transaction->type . '.alias');
|
||||
|
||||
$route = '';
|
||||
|
||||
if (! empty($alias)) {
|
||||
$route .= $alias . '.';
|
||||
}
|
||||
|
||||
$preview_route = $route . 'preview.payments.show';
|
||||
$signed_route = $route . 'signed.payments.show';
|
||||
|
||||
try {
|
||||
$previewUrl = route($preview_route, $transaction->id);
|
||||
} catch (\Exception $e) {
|
||||
$previewUrl = '';
|
||||
}
|
||||
|
||||
try {
|
||||
route($signed_route, [$this->document->id, 'company_id' => company_id()]);
|
||||
|
||||
$signedUrl = URL::signedRoute($signed_route, [$transaction->id]);
|
||||
} catch (\Exception $e) {
|
||||
$signedUrl = URL::signedRoute('signed.payments.show', [$transaction->id]);
|
||||
}
|
||||
|
||||
$html = view('modals.transactions.share', compact('transaction', 'previewUrl', 'signedUrl'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'error' => false,
|
||||
'message' => 'null',
|
||||
'html' => $html,
|
||||
'data' => [
|
||||
'title' => trans('general.title.new', ['type' => trans('general.share_link')]),
|
||||
'success_message' => trans('invoices.share.success_message'),
|
||||
'buttons' => [
|
||||
'cancel' => [
|
||||
'text' => trans('general.cancel'),
|
||||
'class' => 'btn-outline-secondary',
|
||||
],
|
||||
'confirm' => [
|
||||
'text' => trans('general.copy_link'),
|
||||
'class' => 'disabled:bg-green-100',
|
||||
],
|
||||
]
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
@ -12,10 +12,10 @@ class TransferTemplates extends Controller
|
||||
public function __construct()
|
||||
{
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-settings-settings')->only('create', 'store');
|
||||
$this->middleware('permission:read-settings-settings')->only('index', 'edit');
|
||||
$this->middleware('permission:update-settings-settings')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-settings-settings')->only('destroy');
|
||||
$this->middleware('permission:create-banking-transfers')->only('create', 'store');
|
||||
$this->middleware('permission:read-banking-transfers')->only('index', 'edit');
|
||||
$this->middleware('permission:update-banking-transfers')->only('update', 'enable', 'disable');
|
||||
$this->middleware('permission:delete-banking-transfers')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7,7 +7,6 @@ use App\Http\Requests\Common\Contact as Request;
|
||||
use App\Models\Common\Contact;
|
||||
use App\Jobs\Common\CreateContact;
|
||||
use App\Jobs\Common\UpdateContact;
|
||||
use App\Models\Setting\Currency;
|
||||
|
||||
class Vendors extends Controller
|
||||
{
|
||||
@ -30,17 +29,13 @@ class Vendors extends Controller
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray();
|
||||
|
||||
$contact_selector = false;
|
||||
|
||||
if (request()->has('contact_selector')) {
|
||||
$contact_selector = request()->get('contact_selector');
|
||||
}
|
||||
|
||||
$rand = rand();
|
||||
|
||||
$html = view('modals.vendors.create', compact('currencies', 'contact_selector', 'rand'))->render();
|
||||
$html = view('modals.vendors.create', compact('contact_selector'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@ -79,17 +74,13 @@ class Vendors extends Controller
|
||||
*/
|
||||
public function edit(Contact $vendor)
|
||||
{
|
||||
$currencies = Currency::enabled()->pluck('name', 'code');
|
||||
|
||||
$contact_selector = false;
|
||||
|
||||
if (request()->has('contact_selector')) {
|
||||
$contact_selector = request()->get('contact_selector');
|
||||
}
|
||||
|
||||
$rand = rand();
|
||||
|
||||
$html = view('modals.vendors.edit', compact('vendor', 'currencies', 'contact_selector', 'rand'))->render();
|
||||
$html = view('modals.vendors.edit', compact('vendor','contact_selector'))->render();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
|
Reference in New Issue
Block a user