⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
crm.dev-unit.com
/
app
/
Http
/
Controllers
/
View File Name :
CreditNoteController.php
<?php namespace App\Http\Controllers; use App\Http\Requests\CreateCreditNoteRequest; use App\Http\Requests\UpdateCreditNotRequest; use App\Models\CreditNote; use App\Models\Customer; use App\Models\Setting; use App\Repositories\CreditNoteRepository; use Barryvdh\DomPDF\Facade as PDF; use Exception; use Flash; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Routing\Redirector; use Illuminate\Support\Facades\DB; use Throwable; class CreditNoteController extends AppBaseController { /** @var CreditNoteRepository */ private $creditNoteRepository; public function __construct(CreditNoteRepository $creditNoteRepo) { $this->creditNoteRepository = $creditNoteRepo; } /** * Display a listing of the CreditNotes. * * @return Application|Factory|\Illuminate\Contracts\View\View */ public function index() { $paymentStatuses = CreditNote::PAYMENT_STATUS; return view('credit_notes.index', compact('paymentStatuses')); } /** * Show the form for creating a new CreditNote. * * @param null $customerId * @return Application|Factory|\Illuminate\Contracts\View\View */ public function create($customerId = null) { $data = $this->creditNoteRepository->getSyncList(); $settings = Setting::pluck('value', 'key'); return view('credit_notes.create', compact('data', 'customerId', 'settings')); } /** * Store a newly created CreditNote in storage. * * @param CreateCreditNoteRequest $request * @return RedirectResponse|Redirector */ public function store(CreateCreditNoteRequest $request) { try { DB::beginTransaction(); $input = $request->all(); if (array_sum($input['quantity']) > 9999999) { return $this->sendError(__('messages.credit_note.quantity_is_not_greater_than')); } $creditNote = $this->creditNoteRepository->saveCreditNote($input); DB::commit(); Flash::success(__('messages.credit_note.credit_note_saved_successfully')); return $this->sendResponse($creditNote, __('messages.credit_note.credit_note_saved_successfully')); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } /** * Display the specified CreditNote. * * @param CreditNote $creditNote * @return Application|Factory|\Illuminate\Contracts\View\View */ public function show(creditNote $creditNote) { $creditNote = $this->creditNoteRepository->getSyncListForCreditNoteDetail($creditNote->id); return view('credit_notes.show', compact('creditNote')); } /** * Update the specified CreditNote in storage. * * @param CreditNote $creditNote * @param UpdateCreditNotRequest $request * @return JsonResponse */ public function update(CreditNote $creditNote, UpdateCreditNotRequest $request) { try { DB::beginTransaction(); $input = $request->all(); if (array_sum($input['quantity']) > 9999999) { return $this->sendError(__('messages.credit_note.quantity_is_not_greater_than')); } $creditNote = $this->creditNoteRepository->updateCreditNote($input, $creditNote->id); DB::commit(); Flash::success(__('messages.credit_note.credit_note_updated_successfully')); return $this->sendResponse($creditNote, __('messages.credit_note.credit_note_updated_successfully')); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } /** * Show the form for editing the specified CreditNote. * * @param CreditNote $creditNote * @return Application|Factory|\Illuminate\Contracts\View\View|RedirectResponse */ public function edit(CreditNote $creditNote) { if ($creditNote->payment_status == CreditNote::PAYMENT_STATUS_CLOSED) { return redirect()->back(); } $creditNote = CreditNote::with(['creditNoteAddresses', 'salesItems', 'salesItems.taxes'])->whereId($creditNote->id)->first(); $data = $this->creditNoteRepository->getSyncList(); $addresses = []; foreach ($creditNote->creditNoteAddresses as $index => $address) { $addresses[$index] = $address; } return view('credit_notes.edit', compact('data', 'creditNote', 'addresses')); } /** * Remove the specified CreditNote from storage. * * @param CreditNote $creditNote * @return JsonResponse|RedirectResponse * * @throws Throwable */ public function destroy(CreditNote $creditNote) { try { DB::beginTransaction(); $this->creditNoteRepository->deleteCreditNote($creditNote); DB::commit(); return $this->sendSuccess('Credit Note deleted successfully.'); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } /** * @param CreditNote $creditNote * @param Request $request * @return mixed */ public function changePaymentStatus(CreditNote $creditNote, Request $request) { $this->creditNoteRepository->changePaymentStatus($creditNote->id, $request->get('paymentStatus')); return $this->sendSuccess(__('messages.credit_note.credit_note_details_updated_successfully')); } /** * @param CreditNote $creditNote * @return Factory|Application|\Illuminate\Contracts\View\View */ public function viewAsCustomer(CreditNote $creditNote) { $creditNote = $this->creditNoteRepository->getSyncListForCreditNoteDetail($creditNote->id); $settings = Setting::pluck('value', 'key')->toArray(); $currency = Customer::CURRENCIES[$creditNote->currency]; return view('credit_notes.view_as_customer', compact('creditNote', 'settings', 'currency')); } /** * @param CreditNote $creditNote * @return mixed */ public function convertToPdf(CreditNote $creditNote) { $creditNote = $this->creditNoteRepository->getSyncListForCreditNoteDetail($creditNote->id); $settings = Setting::pluck('value', 'key')->toArray(); $currency = Customer::CURRENCIES[$creditNote->currency]; $pdf = PDF::loadView('credit_notes.credit_note_pdf', compact(['creditNote', 'settings', 'currency'])); return $pdf->download(__('messages.credit_note.credit_note_prefix').$creditNote->credit_note_number.'.pdf'); } /** * @param Request $request * @return mixed */ public function getCustomerAddress(Request $request) { $address = getAddressOfCustomer($request->customer_id); if (! empty($address[0])) { $address[0]->country = $address[0]->country != null ? $address[0]->addressCountry->name : 'null'; } if (! empty($address[1])) { $address[1]->country = $address[1]->country != null ? $address[1]->addressCountry->name : 'null'; } return $this->sendResponse($address, 'Address retrieved successfully'); } }