diff --git a/Modules/Reports/Http/Controllers/ReportsController.php b/Modules/Reports/Http/Controllers/ReportsController.php index 7c2c1f2c..cda4692b 100644 --- a/Modules/Reports/Http/Controllers/ReportsController.php +++ b/Modules/Reports/Http/Controllers/ReportsController.php @@ -10,6 +10,12 @@ use Illuminate\Support\Facades\Gate; class ReportsController extends Controller { + public function paymentsReport() { + abort_if(Gate::denies('access_payments_report'), 403); + + return view('reports::payments.index'); + } + public function salesReport() { abort_if(Gate::denies('access_sales_report'), 403); diff --git a/Modules/Reports/Resources/views/payments/index.blade.php b/Modules/Reports/Resources/views/payments/index.blade.php new file mode 100644 index 00000000..2a5218c0 --- /dev/null +++ b/Modules/Reports/Resources/views/payments/index.blade.php @@ -0,0 +1,16 @@ +@extends('layouts.app') + +@section('title', 'Payments Report') + +@section('breadcrumb') + +@endsection + +@section('content') +
+ +
+@endsection diff --git a/Modules/Reports/Routes/web.php b/Modules/Reports/Routes/web.php index bf6aad57..6d6b511d 100644 --- a/Modules/Reports/Routes/web.php +++ b/Modules/Reports/Routes/web.php @@ -12,6 +12,9 @@ */ Route::group(['middleware' => 'auth'], function () { + //Payments Report + Route::get('/payments-report', 'ReportsController@paymentsReport') + ->name('payments-report.index'); //Sales Report Route::get('/sales-report', 'ReportsController@salesReport') ->name('sales-report.index'); diff --git a/app/Http/Livewire/Reports/PaymentsReport.php b/app/Http/Livewire/Reports/PaymentsReport.php new file mode 100644 index 00000000..437cc9b3 --- /dev/null +++ b/app/Http/Livewire/Reports/PaymentsReport.php @@ -0,0 +1,74 @@ + 'required|date|before:end_date', + 'end_date' => 'required|date|after:start_date', + 'payments' => 'required|string' + ]; + protected $query; + + public function mount() { + $this->start_date = today()->subDays(30)->format('Y-m-d'); + $this->end_date = today()->format('Y-m-d'); + $this->payments = ''; + $this->query = null; + } + + public function render() { + $this->getQuery(); + + return view('livewire.reports.payments-report', [ + 'information' => $this->query ? $this->query->orderBy('date', 'desc') + ->when($this->payment_method, function ($query) { + return $query->where('payment_method', $this->payment_method); + }) + ->paginate(10) : collect() + ]); + } + + public function generateReport() { + $this->validate(); + $this->render(); + } + + public function updatedPayments($value) { + $this->resetPage(); + } + + public function getQuery() { + if ($this->payments == 'sale') { + $this->query = SalePayment::query()->with('sale'); + } elseif ($this->payments == 'sale_return') { + $this->query = SaleReturnPayment::query()->with('saleReturn'); + } elseif ($this->payments == 'purchase') { + $this->query = PurchasePayment::query()->with('purchase'); + } elseif ($this->payments == 'purchase_return') { + $this->query = PurchaseReturnPayment::query()->with('purchaseReturn'); + } else { + $this->query = null; + } + } +} diff --git a/resources/views/layouts/menu.blade.php b/resources/views/layouts/menu.blade.php index d2171916..7407153e 100644 --- a/resources/views/layouts/menu.blade.php +++ b/resources/views/layouts/menu.blade.php @@ -233,12 +233,19 @@ @endcan -@can('access_sales_report|access_purchases_report|access_sales_return_report|access_purchases_return_report') +@can('access_sales_report|access_purchases_report|access_sales_return_report|access_purchases_return_report|access_payments_reports')
  • Reports