From e98ade9ffbafb350dbdb823cb098964cff4e83a3 Mon Sep 17 00:00:00 2001 From: Fahim Date: Mon, 9 Aug 2021 15:02:58 +0600 Subject: [PATCH] Added: Payments For Purchase Returns --- .../PurchaseReturnPaymentsController.php | 139 +++++++++++++++--- .../Resources/views/payments/create.blade.php | 114 ++++++++++++++ .../Resources/views/payments/edit.blade.php | 117 +++++++++++++++ .../Resources/views/payments/index.blade.php | 37 +++++ .../SaleReturnPaymentsController.php | 4 +- 5 files changed, 387 insertions(+), 24 deletions(-) diff --git a/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php b/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php index b3feaeb6..8281cd9b 100644 --- a/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php +++ b/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php @@ -2,51 +2,146 @@ namespace Modules\PurchasesReturn\Http\Controllers; +use App\DataTables\PurchaseReturnPaymentsDataTable; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Gate; +use Modules\PurchasesReturn\Entities\PurchaseReturn; +use Modules\PurchasesReturn\Entities\PurchaseReturnPayment; class PurchaseReturnPaymentsController extends Controller { - public function index() - { - return view('purchasesreturn::index'); + public function index($purchase_return_id, PurchaseReturnPaymentsDataTable $dataTable) { + abort_if(Gate::denies('access_purchase_return_payments'), 403); + + $purchase_return = PurchaseReturn::findOrFail($purchase_return_id); + + return $dataTable->render('purchasesreturn::payments.index', compact('purchase_return')); } - public function create() - { - return view('purchasesreturn::create'); + public function create($purchase_return_id) { + abort_if(Gate::denies('access_purchase_return_payments'), 403); + + $purchase_return = PurchaseReturn::findOrFail($purchase_return_id); + + return view('purchasesreturn::payments.create', compact('purchase_return')); } - public function store(Request $request) - { - // + public function store(Request $request) { + abort_if(Gate::denies('access_purchase_return_payments'), 403); + + $request->validate([ + 'date' => 'required|date', + 'reference' => 'required|string|max:255', + 'amount' => 'required|numeric', + 'note' => 'nullable|string|max:1000', + 'purchase_return_id' => 'required', + 'payment_method' => 'required|string|max:255' + ]); + + DB::transaction(function () use ($request) { + PurchaseReturnPayment::create([ + 'date' => $request->date, + 'reference' => $request->reference, + 'amount' => $request->amount, + 'note' => $request->note, + 'purchase_return_id' => $request->purchase_return_id, + 'payment_method' => $request->payment_method + ]); + + $purchase_return = PurchaseReturn::findOrFail($request->purchase_return_id); + + $due_amount = $purchase_return->due_amount - $request->amount; + + if ($due_amount == $purchase_return->total_amount) { + $payment_status = 'Unpaid'; + } elseif ($due_amount > 0) { + $payment_status = 'Partial'; + } else { + $payment_status = 'Paid'; + } + + $purchase_return->update([ + 'paid_amount' => ($purchase_return->paid_amount + $request->amount) * 100, + 'due_amount' => $due_amount * 100, + 'payment_status' => $payment_status + ]); + }); + + toast('Purchase Return Payment Created!', 'success'); + + return redirect()->route('purchase-returns.index'); } - public function show($id) - { - return view('purchasesreturn::show'); + public function edit($purchase_return_id, PurchaseReturnPayment $purchaseReturnPayment) { + abort_if(Gate::denies('access_purchase_return_payments'), 403); + + $purchase_return = PurchaseReturn::findOrFail($purchase_return_id); + + return view('purchasesreturn::payments.edit', compact('purchaseReturnPayment', 'purchase_return')); } - public function edit($id) - { - return view('purchasesreturn::edit'); + public function update(Request $request, PurchaseReturnPayment $purchaseReturnPayment) { + abort_if(Gate::denies('access_purchase_return_payments'), 403); + + $request->validate([ + 'date' => 'required|date', + 'reference' => 'required|string|max:255', + 'amount' => 'required|numeric', + 'note' => 'nullable|string|max:1000', + 'purchase_return_id' => 'required', + 'payment_method' => 'required|string|max:255' + ]); + + DB::transaction(function () use ($request, $purchaseReturnPayment) { + $purchase_return = $purchaseReturnPayment->purchaseReturn; + + $due_amount = ($purchase_return->due_amount + $purchaseReturnPayment->amount) - $request->amount; + + if ($due_amount == $purchase_return->total_amount) { + $payment_status = 'Unpaid'; + } elseif ($due_amount > 0) { + $payment_status = 'Partial'; + } else { + $payment_status = 'Paid'; + } + + $purchase_return->update([ + 'paid_amount' => (($purchase_return->paid_amount - $purchaseReturnPayment->amount) + $request->amount) * 100, + 'due_amount' => $due_amount * 100, + 'payment_status' => $payment_status + ]); + + $purchaseReturnPayment->update([ + 'date' => $request->date, + 'reference' => $request->reference, + 'amount' => $request->amount, + 'note' => $request->note, + 'purchase_return_id' => $request->purchase_return_id, + 'payment_method' => $request->payment_method + ]); + }); + + toast('Purchase Return Payment Updated!', 'info'); + + return redirect()->route('purchase-returns.index'); } - public function update(Request $request, $id) - { - // - } + public function destroy(PurchaseReturnPayment $purchaseReturnPayment) { + abort_if(Gate::denies('access_purchase_return_payments'), 403); + $purchaseReturnPayment->delete(); - public function destroy($id) - { - // + toast('Purchase Return Payment Deleted!', 'warning'); + + return redirect()->route('purchase-returns.index'); } } diff --git a/Modules/PurchasesReturn/Resources/views/payments/create.blade.php b/Modules/PurchasesReturn/Resources/views/payments/create.blade.php index e69de29b..7c8eebaa 100644 --- a/Modules/PurchasesReturn/Resources/views/payments/create.blade.php +++ b/Modules/PurchasesReturn/Resources/views/payments/create.blade.php @@ -0,0 +1,114 @@ +@extends('layouts.app') + +@section('title', 'Create Payment') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+ @csrf +
+
+ @include('utils.alerts') +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+ + +
+
+
+
+ +
+ + +
+ + +
+
+
+
+
+
+@endsection + +@push('page_scripts') + + +@endpush + diff --git a/Modules/PurchasesReturn/Resources/views/payments/edit.blade.php b/Modules/PurchasesReturn/Resources/views/payments/edit.blade.php index e69de29b..c06cfa6e 100644 --- a/Modules/PurchasesReturn/Resources/views/payments/edit.blade.php +++ b/Modules/PurchasesReturn/Resources/views/payments/edit.blade.php @@ -0,0 +1,117 @@ +@extends('layouts.app') + +@section('title', 'Edit Payment') + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+ @csrf + @method('patch') +
+
+ @include('utils.alerts') +
+ +
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+ + +
+
+
+
+ +
+ + +
+ + +
+
+
+
+
+
+@endsection + +@push('page_scripts') + + +@endpush + diff --git a/Modules/PurchasesReturn/Resources/views/payments/index.blade.php b/Modules/PurchasesReturn/Resources/views/payments/index.blade.php index e69de29b..4464f876 100644 --- a/Modules/PurchasesReturn/Resources/views/payments/index.blade.php +++ b/Modules/PurchasesReturn/Resources/views/payments/index.blade.php @@ -0,0 +1,37 @@ +@extends('layouts.app') + +@section('title', 'Sale Payments') + +@section('third_party_stylesheets') + +@endsection + +@section('breadcrumb') + +@endsection + +@section('content') +
+
+
+ @include('utils.alerts') +
+
+
+ {!! $dataTable->table() !!} +
+
+
+
+
+
+@endsection + +@push('page_scripts') + {!! $dataTable->scripts() !!} +@endpush diff --git a/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php b/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php index c54192ce..89a3ba17 100644 --- a/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php +++ b/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php @@ -24,7 +24,7 @@ class SaleReturnPaymentsController extends Controller public function create($sale_return_id) { - abort_if(Gate::denies('access_sale_payments'), 403); + abort_if(Gate::denies('access_sale_return_payments'), 403); $sale_return = SaleReturn::findOrFail($sale_return_id); @@ -33,7 +33,7 @@ class SaleReturnPaymentsController extends Controller public function store(Request $request) { - abort_if(Gate::denies('access_sale_payments'), 403); + abort_if(Gate::denies('access_sale_return_payments'), 403); $request->validate([ 'date' => 'required|date',