![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /home/fdshops/public_html/app/Http/Controllers/ |
<?php namespace App\Http\Controllers; use App\Contact; use App\Events\TransactionPaymentAdded; use App\Events\TransactionPaymentUpdated; use App\Exceptions\AdvanceBalanceNotAvailable; use App\Transaction; use App\TransactionPayment; use App\Utils\ModuleUtil; use App\Utils\TransactionUtil; use Datatables; use DB; use Illuminate\Http\Request; class TransactionPaymentController extends Controller { protected $transactionUtil; protected $moduleUtil; /** * Constructor * * @param TransactionUtil $transactionUtil * @return void */ public function __construct(TransactionUtil $transactionUtil, ModuleUtil $moduleUtil) { $this->transactionUtil = $transactionUtil; $this->moduleUtil = $moduleUtil; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { try { $business_id = $request->session()->get('user.business_id'); $transaction_id = $request->input('transaction_id'); $transaction = Transaction::where('business_id', $business_id)->with(['contact'])->findOrFail($transaction_id); $transaction_before = $transaction->replicate(); if (! (auth()->user()->can('purchase.payments') || auth()->user()->can('hms.add_booking_payment') || auth()->user()->can('sell.payments') || auth()->user()->can('all_expense.access') || auth()->user()->can('view_own_expense'))) { abort(403, 'Unauthorized action.'); } if ($transaction->payment_status != 'paid') { $inputs = $request->only(['amount', 'method', 'note', 'card_number', 'card_holder_name', 'card_transaction_number', 'card_type', 'card_month', 'card_year', 'card_security', 'cheque_number', 'bank_account_number', ]); $inputs['paid_on'] = $this->transactionUtil->uf_date($request->input('paid_on'), true); $inputs['transaction_id'] = $transaction->id; $inputs['amount'] = $this->transactionUtil->num_uf($inputs['amount']); $inputs['created_by'] = auth()->user()->id; $inputs['payment_for'] = $transaction->contact_id; if ($inputs['method'] == 'custom_pay_1') { $inputs['transaction_no'] = $request->input('transaction_no_1'); } elseif ($inputs['method'] == 'custom_pay_2') { $inputs['transaction_no'] = $request->input('transaction_no_2'); } elseif ($inputs['method'] == 'custom_pay_3') { $inputs['transaction_no'] = $request->input('transaction_no_3'); } if (! empty($request->input('account_id')) && $inputs['method'] != 'advance') { $inputs['account_id'] = $request->input('account_id'); } $prefix_type = 'purchase_payment'; if (in_array($transaction->type, ['sell', 'sell_return'])) { $prefix_type = 'sell_payment'; } elseif (in_array($transaction->type, ['expense', 'expense_refund'])) { $prefix_type = 'expense_payment'; } DB::beginTransaction(); $ref_count = $this->transactionUtil->setAndGetReferenceCount($prefix_type); //Generate reference number $inputs['payment_ref_no'] = $this->transactionUtil->generateReferenceNumber($prefix_type, $ref_count); $inputs['business_id'] = $request->session()->get('business.id'); $inputs['document'] = $this->transactionUtil->uploadFile($request, 'document', 'documents'); //Pay from advance balance $payment_amount = $inputs['amount']; $contact_balance = ! empty($transaction->contact) ? $transaction->contact->balance : 0; if ($inputs['method'] == 'advance' && $inputs['amount'] > $contact_balance) { throw new AdvanceBalanceNotAvailable(__('lang_v1.required_advance_balance_not_available')); } if (! empty($inputs['amount'])) { $tp = TransactionPayment::create($inputs); if (! empty($request->input('denominations'))) { $this->transactionUtil->addCashDenominations($tp, $request->input('denominations')); } $inputs['transaction_type'] = $transaction->type; event(new TransactionPaymentAdded($tp, $inputs)); } //update payment status $payment_status = $this->transactionUtil->updatePaymentStatus($transaction_id, $transaction->final_total); $transaction->payment_status = $payment_status; $this->transactionUtil->activityLog($transaction, 'payment_edited', $transaction_before); DB::commit(); } $output = ['success' => true, 'msg' => __('purchase.payment_added_success'), ]; } catch (\Exception $e) { DB::rollBack(); $msg = __('messages.something_went_wrong'); if (get_class($e) == \App\Exceptions\AdvanceBalanceNotAvailable::class) { $msg = $e->getMessage(); } else { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); } $output = ['success' => false, 'msg' => $msg, ]; } return redirect()->back()->with(['status' => $output]); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { if (! (auth()->user()->can('sell.payments') || auth()->user()->can('purchase.payments') || auth()->user()->can('hms.add_booking_payment'))) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $transaction = Transaction::where('id', $id) ->with(['contact', 'business', 'transaction_for']) ->first(); $payments_query = TransactionPayment::where('transaction_id', $id); $accounts_enabled = false; if ($this->moduleUtil->isModuleEnabled('account')) { $accounts_enabled = true; $payments_query->with(['payment_account']); } $payments = $payments_query->get(); $location_id = ! empty($transaction->location_id) ? $transaction->location_id : null; $payment_types = $this->transactionUtil->payment_types($location_id, true); return view('transaction_payment.show_payments') ->with(compact('transaction', 'payments', 'payment_types', 'accounts_enabled')); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { if (! auth()->user()->can('edit_purchase_payment') && ! auth()->user()->can('edit_sell_payment') && !auth()->user()->can('hms.edit_booking_payment')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('user.business_id'); $payment_line = TransactionPayment::with(['denominations'])->where('method', '!=', 'advance')->findOrFail($id); $transaction = Transaction::where('id', $payment_line->transaction_id) ->where('business_id', $business_id) ->with(['contact', 'location']) ->first(); $payment_types = $this->transactionUtil->payment_types($transaction->location); //Accounts $accounts = $this->moduleUtil->accountsDropdown($business_id, true, false, true); return view('transaction_payment.edit_payment_row') ->with(compact('transaction', 'payment_types', 'payment_line', 'accounts')); } } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { if (! auth()->user()->can('edit_purchase_payment') && ! auth()->user()->can('edit_sell_payment') && ! auth()->user()->can('all_expense.access') && ! auth()->user()->can('view_own_expense') && !auth()->user()->can('hms.edit_booking_payment')) { abort(403, 'Unauthorized action.'); } try { $business_id = request()->session()->get('user.business_id'); $inputs = $request->only(['amount', 'method', 'note', 'card_number', 'card_holder_name', 'card_transaction_number', 'card_type', 'card_month', 'card_year', 'card_security', 'cheque_number', 'bank_account_number', ]); $inputs['paid_on'] = $this->transactionUtil->uf_date($request->input('paid_on'), true); $inputs['amount'] = $this->transactionUtil->num_uf($inputs['amount']); if ($inputs['method'] == 'custom_pay_1') { $inputs['transaction_no'] = $request->input('transaction_no_1'); } elseif ($inputs['method'] == 'custom_pay_2') { $inputs['transaction_no'] = $request->input('transaction_no_2'); } elseif ($inputs['method'] == 'custom_pay_3') { $inputs['transaction_no'] = $request->input('transaction_no_3'); } if (! empty($request->input('account_id'))) { $inputs['account_id'] = $request->input('account_id'); } $payment = TransactionPayment::where('method', '!=', 'advance')->findOrFail($id); if (! empty($request->input('denominations'))) { $this->transactionUtil->updateCashDenominations($payment, $request->input('denominations')); } //Update parent payment if exists if (! empty($payment->parent_id)) { $parent_payment = TransactionPayment::find($payment->parent_id); $parent_payment->amount = $parent_payment->amount - ($payment->amount - $inputs['amount']); $parent_payment->save(); } $business_id = $request->session()->get('user.business_id'); $transaction = Transaction::where('business_id', $business_id) ->find($payment->transaction_id); $transaction_before = $transaction->replicate(); $document_name = $this->transactionUtil->uploadFile($request, 'document', 'documents'); if (! empty($document_name)) { $inputs['document'] = $document_name; } DB::beginTransaction(); $payment->update($inputs); //update payment status $payment_status = $this->transactionUtil->updatePaymentStatus($payment->transaction_id); $transaction->payment_status = $payment_status; $this->transactionUtil->activityLog($transaction, 'payment_edited', $transaction_before); DB::commit(); //event event(new TransactionPaymentUpdated($payment, $transaction->type)); $output = ['success' => true, 'msg' => __('purchase.payment_updated_success'), ]; } catch (\Exception $e) { DB::rollBack(); \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => __('messages.something_went_wrong'), ]; } return redirect()->back()->with(['status' => $output]); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { if (! auth()->user()->can('delete_purchase_payment') && ! auth()->user()->can('delete_sell_payment') && ! auth()->user()->can('all_expense.access') && ! auth()->user()->can('view_own_expense') && !auth()->user()->can('hms.delete_booking_payment')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { try { $payment = TransactionPayment::findOrFail($id); DB::beginTransaction(); if (! empty($payment->transaction_id)) { TransactionPayment::deletePayment($payment); } else { //advance payment $adjusted_payments = TransactionPayment::where('parent_id', $payment->id) ->get(); $total_adjusted_amount = $adjusted_payments->sum('amount'); //Get customer advance share from payment and deduct from advance balance $total_customer_advance = $payment->amount - $total_adjusted_amount; if ($total_customer_advance > 0) { $this->transactionUtil->updateContactBalance($payment->payment_for, $total_customer_advance, 'deduct'); } //Delete all child payments foreach ($adjusted_payments as $adjusted_payment) { //Make parent payment null as it will get deleted $adjusted_payment->parent_id = null; TransactionPayment::deletePayment($adjusted_payment); } //Delete advance payment TransactionPayment::deletePayment($payment); } DB::commit(); $output = ['success' => true, 'msg' => __('purchase.payment_deleted_success'), ]; } catch (\Exception $e) { DB::rollBack(); \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => __('messages.something_went_wrong'), ]; } return $output; } } /** * Adds new payment to the given transaction. * * @param int $transaction_id * @return \Illuminate\Http\Response */ public function addPayment($transaction_id) { if (! auth()->user()->can('purchase.payments') && ! auth()->user()->can('sell.payments') && ! auth()->user()->can('all_expense.access') && ! auth()->user()->can('view_own_expense') && !auth()->user()->can('hms.add_booking_payment')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('user.business_id'); $transaction = Transaction::where('business_id', $business_id) ->with(['contact', 'location']) ->findOrFail($transaction_id); if ($transaction->payment_status != 'paid') { $show_advance = in_array($transaction->type, ['sell', 'purchase']) ? true : false; $payment_types = $this->transactionUtil->payment_types($transaction->location, $show_advance); $paid_amount = $this->transactionUtil->getTotalPaid($transaction_id); $amount = $transaction->final_total - $paid_amount; if ($amount < 0) { $amount = 0; } $amount_formated = $this->transactionUtil->num_f($amount); $payment_line = new TransactionPayment(); $payment_line->amount = $amount; $payment_line->method = 'cash'; $payment_line->paid_on = \Carbon::now()->toDateTimeString(); //Accounts $accounts = $this->moduleUtil->accountsDropdown($business_id, true, false, true); $view = view('transaction_payment.payment_row') ->with(compact('transaction', 'payment_types', 'payment_line', 'amount_formated', 'accounts'))->render(); $output = ['status' => 'due', 'view' => $view, ]; } else { $output = ['status' => 'paid', 'view' => '', 'msg' => __('purchase.amount_already_paid'), ]; } return json_encode($output); } } /** * Shows contact's payment due modal * * @param int $contact_id * @return \Illuminate\Http\Response */ public function getPayContactDue($contact_id) { if (! (auth()->user()->can('sell.payments') || auth()->user()->can('purchase.payments'))) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('user.business_id'); $due_payment_type = request()->input('type'); $query = Contact::where('contacts.id', $contact_id) ->leftjoin('transactions AS t', 'contacts.id', '=', 't.contact_id'); if ($due_payment_type == 'purchase') { $query->select( DB::raw("SUM(IF(t.type = 'purchase', final_total, 0)) as total_purchase"), DB::raw("SUM(IF(t.type = 'purchase', (SELECT SUM(amount) FROM transaction_payments WHERE transaction_payments.transaction_id=t.id), 0)) as total_paid"), 'contacts.name', 'contacts.supplier_business_name', 'contacts.id as contact_id' ); } elseif ($due_payment_type == 'purchase_return') { $query->select( DB::raw("SUM(IF(t.type = 'purchase_return', final_total, 0)) as total_purchase_return"), DB::raw("SUM(IF(t.type = 'purchase_return', (SELECT SUM(amount) FROM transaction_payments WHERE transaction_payments.transaction_id=t.id), 0)) as total_return_paid"), 'contacts.name', 'contacts.supplier_business_name', 'contacts.id as contact_id' ); } elseif ($due_payment_type == 'sell') { $query->select( DB::raw("SUM(IF(t.type = 'sell' AND t.status = 'final', final_total, 0)) as total_invoice"), DB::raw("SUM(IF(t.type = 'sell' AND t.status = 'final', (SELECT SUM(IF(is_return = 1,-1*amount,amount)) FROM transaction_payments WHERE transaction_payments.transaction_id=t.id), 0)) as total_paid"), 'contacts.name', 'contacts.supplier_business_name', 'contacts.id as contact_id' ); } elseif ($due_payment_type == 'sell_return') { $query->select( DB::raw("SUM(IF(t.type = 'sell_return', final_total, 0)) as total_sell_return"), DB::raw("SUM(IF(t.type = 'sell_return', (SELECT SUM(amount) FROM transaction_payments WHERE transaction_payments.transaction_id=t.id), 0)) as total_return_paid"), 'contacts.name', 'contacts.supplier_business_name', 'contacts.id as contact_id' ); } //Query for opening balance details $query->addSelect( DB::raw("SUM(IF(t.type = 'opening_balance', final_total, 0)) as opening_balance"), DB::raw("SUM(IF(t.type = 'opening_balance', (SELECT SUM(amount) FROM transaction_payments WHERE transaction_payments.transaction_id=t.id), 0)) as opening_balance_paid") ); $contact_details = $query->first(); $payment_line = new TransactionPayment(); if ($due_payment_type == 'purchase') { $contact_details->total_purchase = empty($contact_details->total_purchase) ? 0 : $contact_details->total_purchase; $payment_line->amount = $contact_details->total_purchase - $contact_details->total_paid; } elseif ($due_payment_type == 'purchase_return') { $payment_line->amount = $contact_details->total_purchase_return - $contact_details->total_return_paid; } elseif ($due_payment_type == 'sell') { $contact_details->total_invoice = empty($contact_details->total_invoice) ? 0 : $contact_details->total_invoice; $payment_line->amount = $contact_details->total_invoice - $contact_details->total_paid; } elseif ($due_payment_type == 'sell_return') { $payment_line->amount = $contact_details->total_sell_return - $contact_details->total_return_paid; } //If opening balance due exists add to payment amount $contact_details->opening_balance = ! empty($contact_details->opening_balance) ? $contact_details->opening_balance : 0; $contact_details->opening_balance_paid = ! empty($contact_details->opening_balance_paid) ? $contact_details->opening_balance_paid : 0; $ob_due = $contact_details->opening_balance - $contact_details->opening_balance_paid; if ($ob_due > 0) { $payment_line->amount += $ob_due; } $amount_formated = $this->transactionUtil->num_f($payment_line->amount); $contact_details->total_paid = empty($contact_details->total_paid) ? 0 : $contact_details->total_paid; $payment_line->method = 'cash'; $payment_line->paid_on = \Carbon::now()->toDateTimeString(); $payment_types = $this->transactionUtil->payment_types(null, false, $business_id); //Accounts $accounts = $this->moduleUtil->accountsDropdown($business_id, true); return view('transaction_payment.pay_supplier_due_modal') ->with(compact('contact_details', 'payment_types', 'payment_line', 'due_payment_type', 'ob_due', 'amount_formated', 'accounts')); } } /** * Adds Payments for Contact due * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function postPayContactDue(Request $request) { if (! (auth()->user()->can('sell.payments') || auth()->user()->can('purchase.payments'))) { abort(403, 'Unauthorized action.'); } try { DB::beginTransaction(); $business_id = request()->session()->get('business.id'); $tp = $this->transactionUtil->payContact($request); $pos_settings = ! empty(session()->get('business.pos_settings')) ? json_decode(session()->get('business.pos_settings'), true) : []; $enable_cash_denomination_for_payment_methods = ! empty($pos_settings['enable_cash_denomination_for_payment_methods']) ? $pos_settings['enable_cash_denomination_for_payment_methods'] : []; //add cash denomination if (in_array($tp->method, $enable_cash_denomination_for_payment_methods) && ! empty($request->input('denominations')) && ! empty($pos_settings['enable_cash_denomination_on']) && $pos_settings['enable_cash_denomination_on'] == 'all_screens') { $denominations = []; foreach ($request->input('denominations') as $key => $value) { if (! empty($value)) { $denominations[] = [ 'business_id' => $business_id, 'amount' => $key, 'total_count' => $value, ]; } } if (! empty($denominations)) { $tp->denominations()->createMany($denominations); } } DB::commit(); $output = ['success' => true, 'msg' => __('purchase.payment_added_success'), ]; } catch (\Exception $e) { DB::rollBack(); \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => 'File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage(), ]; } return redirect()->back()->with(['status' => $output]); } /** * view details of single.., * payment. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function viewPayment($payment_id) { if (! (auth()->user()->can('sell.payments') || auth()->user()->can('purchase.payments') || auth()->user()->can('edit_sell_payment') || auth()->user()->can('delete_sell_payment') || auth()->user()->can('edit_purchase_payment') || auth()->user()->can('delete_purchase_payment') || auth()->user()->can('hms.add_booking_payment') )) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('business.id'); $single_payment_line = TransactionPayment::findOrFail($payment_id); $transaction = null; if (! empty($single_payment_line->transaction_id)) { $transaction = Transaction::where('id', $single_payment_line->transaction_id) ->with(['contact', 'location', 'transaction_for']) ->first(); } else { $child_payment = TransactionPayment::where('business_id', $business_id) ->where('parent_id', $payment_id) ->with(['transaction', 'transaction.contact', 'transaction.location', 'transaction.transaction_for']) ->first(); $transaction = ! empty($child_payment) ? $child_payment->transaction : null; } $payment_types = $this->transactionUtil->payment_types(null, false, $business_id); return view('transaction_payment.single_payment_view') ->with(compact('single_payment_line', 'transaction', 'payment_types')); } } /** * Retrieves all the child payments of a parent payments * payment. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function showChildPayments($payment_id) { if (! (auth()->user()->can('sell.payments') || auth()->user()->can('purchase.payments') || auth()->user()->can('edit_sell_payment') || auth()->user()->can('delete_sell_payment') || auth()->user()->can('edit_purchase_payment') || auth()->user()->can('delete_purchase_payment') )) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('business.id'); $child_payments = TransactionPayment::where('business_id', $business_id) ->where('parent_id', $payment_id) ->with(['transaction', 'transaction.contact']) ->get(); $payment_types = $this->transactionUtil->payment_types(null, false, $business_id); return view('transaction_payment.show_child_payments') ->with(compact('child_payments', 'payment_types')); } } /** * Retrieves list of all opening balance payments. * * @param int $contact_id * @return \Illuminate\Http\Response */ public function getOpeningBalancePayments($contact_id) { if (! (auth()->user()->can('sell.payments') || auth()->user()->can('purchase.payments') || auth()->user()->can('edit_sell_payment') || auth()->user()->can('delete_sell_payment') || auth()->user()->can('edit_purchase_payment') || auth()->user()->can('delete_purchase_payment') )) { abort(403, 'Unauthorized action.'); } $business_id = request()->session()->get('business.id'); if (request()->ajax()) { $query = TransactionPayment::leftjoin('transactions as t', 'transaction_payments.transaction_id', '=', 't.id') ->where('t.business_id', $business_id) ->where('t.type', 'opening_balance') ->where('t.contact_id', $contact_id) ->where('transaction_payments.business_id', $business_id) ->select( 'transaction_payments.amount', 'method', 'paid_on', 'transaction_payments.payment_ref_no', 'transaction_payments.document', 'transaction_payments.id', 'cheque_number', 'card_transaction_number', 'bank_account_number' ) ->groupBy('transaction_payments.id'); $permitted_locations = auth()->user()->permitted_locations(); if ($permitted_locations != 'all') { $query->whereIn('t.location_id', $permitted_locations); } return Datatables::of($query) ->editColumn('paid_on', '{{@format_datetime($paid_on)}}') ->editColumn('method', function ($row) { $method = __('lang_v1.'.$row->method); if ($row->method == 'cheque') { $method .= '<br>('.__('lang_v1.cheque_no').': '.$row->cheque_number.')'; } elseif ($row->method == 'card') { $method .= '<br>('.__('lang_v1.card_transaction_no').': '.$row->card_transaction_number.')'; } elseif ($row->method == 'bank_transfer') { $method .= '<br>('.__('lang_v1.bank_account_no').': '.$row->bank_account_number.')'; } elseif ($row->method == 'custom_pay_1') { $method = __('lang_v1.custom_payment_1').'<br>('.__('lang_v1.transaction_no').': '.$row->transaction_no.')'; } elseif ($row->method == 'custom_pay_2') { $method = __('lang_v1.custom_payment_2').'<br>('.__('lang_v1.transaction_no').': '.$row->transaction_no.')'; } elseif ($row->method == 'custom_pay_3') { $method = __('lang_v1.custom_payment_3').'<br>('.__('lang_v1.transaction_no').': '.$row->transaction_no.')'; } return $method; }) ->editColumn('amount', function ($row) { return '<span class="display_currency paid-amount" data-orig-value="'.$row->amount.'" data-currency_symbol = true>'.$row->amount.'</span>'; }) ->addColumn('action', '<button type="button" class="tw-dw-btn tw-dw-btn-xs tw-dw-btn-outline tw-dw-btn-primary view_payment" data-href="{{ action([\App\Http\Controllers\TransactionPaymentController::class, \'viewPayment\'], [$id]) }}"><i class="fas fa-eye"></i> @lang("messages.view") </button> <button type="button" class="tw-dw-btn tw-dw-btn-xs tw-dw-btn-outline tw-dw-btn-info edit_payment" data-href="{{action([\App\Http\Controllers\TransactionPaymentController::class, \'edit\'], [$id]) }}"><i class="glyphicon glyphicon-edit"></i> @lang("messages.edit")</button> <button type="button" class="tw-dw-btn tw-dw-btn-xs tw-dw-btn-outline tw-dw-btn-error delete_payment" data-href="{{ action([\App\Http\Controllers\TransactionPaymentController::class, \'destroy\'], [$id]) }}" ><i class="fa fa-trash" aria-hidden="true"></i> @lang("messages.delete")</button> @if(!empty($document))<a href="{{asset("/uploads/documents/" . $document)}}" class="tw-dw-btn tw-dw-btn-xs tw-dw-btn-outline tw-dw-btn-accent" download=""><i class="fa fa-download"></i> @lang("purchase.download_document")</a>@endif') ->rawColumns(['amount', 'method', 'action']) ->make(true); } } }