expense()->isNotTransfer()->collect(['paid_at'=> 'desc']); return $this->response('purchases.payments.index', compact('payments')); } /** * Show the form for viewing the specified resource. * * @return Response */ public function show() { return redirect()->route('payments.index'); } /** * Show the form for creating a new resource. * * @return Response */ public function create() { $accounts = Account::enabled()->orderBy('name')->pluck('name', 'id'); $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray(); $account_currency_code = Account::where('id', setting('default.account'))->pluck('currency_code')->first(); $currency = Currency::where('code', $account_currency_code)->first(); $vendors = Contact::vendor()->enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id'); $categories = Category::expense()->enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id'); $payment_methods = Modules::getPaymentMethods(); return view('purchases.payments.create', compact('accounts', 'currencies', 'account_currency_code', 'currency', 'vendors', 'categories', 'payment_methods')); } /** * Store a newly created resource in storage. * * @param Request $request * * @return Response */ public function store(Request $request) { $response = $this->ajaxDispatch(new CreateTransaction($request)); if ($response['success']) { $response['redirect'] = route('payments.index'); $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); flash($message)->success(); } else { $response['redirect'] = route('payments.create'); $message = $response['message']; flash($message)->error(); } return response()->json($response); } /** * Duplicate the specified resource. * * @param Transaction $payment * * @return Response */ public function duplicate(Transaction $payment) { $clone = $payment->duplicate(); $message = trans('messages.success.duplicated', ['type' => trans_choice('general.payments', 1)]); flash($message)->success(); return redirect()->route('payments.edit', $clone->id); } /** * Import the specified resource. * * @param ImportRequest $request * * @return Response */ public function import(ImportRequest $request) { \Excel::import(new Import(), $request->file('import')); $message = trans('messages.success.imported', ['type' => trans_choice('general.payments', 2)]); flash($message)->success(); return redirect()->route('payments.index'); } /** * Show the form for editing the specified resource. * * @param Transaction $payment * * @return Response */ public function edit(Transaction $payment) { $accounts = Account::enabled()->orderBy('name')->pluck('name', 'id'); $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray(); $currency = Currency::where('code', $payment->currency_code)->first(); $vendors = Contact::vendor()->enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id'); if ($payment->contact && !array_key_exists($payment->contact_id, $vendors)) { $vendors->put($payment->contact->id, $payment->contact->name); } $categories = Category::expense()->enabled()->orderBy('name')->take(setting('default.select_limit'))->pluck('name', 'id'); if ($payment->category && !array_key_exists($payment->category_id, $categories)) { $categories->put($payment->category->id, $payment->category->name); } $payment_methods = Modules::getPaymentMethods(); $date_format = $this->getCompanyDateFormat(); return view('purchases.payments.edit', compact('payment', 'accounts', 'currencies', 'currency', 'vendors', 'categories', 'payment_methods', 'date_format')); } /** * Update the specified resource in storage. * * @param Transaction $payment * @param Request $request * * @return Response */ public function update(Transaction $payment, Request $request) { $response = $this->ajaxDispatch(new UpdateTransaction($payment, $request)); if ($response['success']) { $response['redirect'] = route('payments.index'); $message = trans('messages.success.updated', ['type' => trans_choice('general.payments', 1)]); flash($message)->success(); } else { $response['redirect'] = route('payments.edit', $payment->id); $message = $response['message']; flash($message)->error(); } return response()->json($response); } /** * Remove the specified resource from storage. * * @param Transaction $payment * * @return Response */ public function destroy(Transaction $payment) { $response = $this->ajaxDispatch(new DeleteTransaction($payment)); $response['redirect'] = route('payments.index'); if ($response['success']) { $message = trans('messages.success.deleted', ['type' => trans_choice('general.payments', 1)]); flash($message)->success(); } else { $message = $response['message']; flash($message)->error(); } return response()->json($response); } /** * Export the specified resource. * * @return Response */ public function export() { return \Excel::download(new Export(), \Str::filename(trans_choice('general.payments', 2)) . '.xlsx'); } }