diff --git a/Modules/Reports/Http/Controllers/ReportsController.php b/Modules/Reports/Http/Controllers/ReportsController.php index 4499895c..7c2c1f2c 100644 --- a/Modules/Reports/Http/Controllers/ReportsController.php +++ b/Modules/Reports/Http/Controllers/ReportsController.php @@ -5,14 +5,32 @@ namespace Modules\Reports\Http\Controllers; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; +use Illuminate\Support\Facades\Gate; class ReportsController extends Controller { + public function salesReport() { + abort_if(Gate::denies('access_sales_report'), 403); + return view('reports::sales.index'); } public function purchasesReport() { + abort_if(Gate::denies('access_purchases_report'), 403); + return view('reports::purchases.index'); } + + public function salesReturnReport() { + abort_if(Gate::denies('access_sales_return_report'), 403); + + return view('reports::sales-return.index'); + } + + public function purchasesReturnReport() { + abort_if(Gate::denies('access_purchases_return_report'), 403); + + return view('reports::purchases-return.index'); + } } diff --git a/Modules/Reports/Resources/views/purchases-return/index.blade.php b/Modules/Reports/Resources/views/purchases-return/index.blade.php new file mode 100644 index 00000000..bd18fdec --- /dev/null +++ b/Modules/Reports/Resources/views/purchases-return/index.blade.php @@ -0,0 +1,16 @@ +@extends('layouts.app') + +@section('title', 'Purchases Return Report') + +@section('breadcrumb') + +@endsection + +@section('content') +
+ +
+@endsection diff --git a/Modules/Reports/Resources/views/sales-return/index.blade.php b/Modules/Reports/Resources/views/sales-return/index.blade.php new file mode 100644 index 00000000..9e9093fd --- /dev/null +++ b/Modules/Reports/Resources/views/sales-return/index.blade.php @@ -0,0 +1,16 @@ +@extends('layouts.app') + +@section('title', 'Sales Return Report') + +@section('breadcrumb') + +@endsection + +@section('content') +
+ +
+@endsection diff --git a/Modules/Reports/Routes/web.php b/Modules/Reports/Routes/web.php index 8678a70e..bf6aad57 100644 --- a/Modules/Reports/Routes/web.php +++ b/Modules/Reports/Routes/web.php @@ -18,4 +18,10 @@ Route::group(['middleware' => 'auth'], function () { //Purchases Report Route::get('/purchases-report', 'ReportsController@purchasesReport') ->name('purchases-report.index'); + //Sales Return Report + Route::get('/sales-return-report', 'ReportsController@salesReturnReport') + ->name('sales-return-report.index'); + //Purchases Return Report + Route::get('/purchases-return-report', 'ReportsController@purchasesReturnReport') + ->name('purchases-return-report.index'); }); diff --git a/app/Http/Livewire/Reports/PurchasesReturnReport.php b/app/Http/Livewire/Reports/PurchasesReturnReport.php new file mode 100644 index 00000000..e104da7f --- /dev/null +++ b/app/Http/Livewire/Reports/PurchasesReturnReport.php @@ -0,0 +1,61 @@ + 'required|date|before:end_date', + 'end_date' => 'required|date|after:start_date', + ]; + + public function mount($suppliers) { + $this->suppliers = $suppliers; + $this->start_date = today()->subDays(30)->format('Y-m-d'); + $this->end_date = today()->format('Y-m-d'); + $this->supplier_id = ''; + $this->purchase_return_status = ''; + $this->payment_status = ''; + } + + public function render() { + $purchase_returns = PurchaseReturn::whereDate('date', '>=', $this->start_date) + ->whereDate('date', '<=', $this->end_date) + ->when($this->supplier_id, function ($query) { + return $query->where('supplier_id', $this->supplier_id); + }) + ->when($this->purchase_return_status, function ($query) { + return $query->where('status', $this->purchase_return_status); + }) + ->when($this->payment_status, function ($query) { + return $query->where('payment_status', $this->payment_status); + }) + ->orderBy('date', 'desc')->paginate(10); + + return view('livewire.reports.purchases-return-report', [ + 'purchase_returns' => $purchase_returns + ]); + } + + public function generateReport() { + $this->validate(); + $this->render(); + } +} diff --git a/app/Http/Livewire/Reports/SalesReturnReport.php b/app/Http/Livewire/Reports/SalesReturnReport.php new file mode 100644 index 00000000..33bb81fc --- /dev/null +++ b/app/Http/Livewire/Reports/SalesReturnReport.php @@ -0,0 +1,60 @@ + 'required|date|before:end_date', + 'end_date' => 'required|date|after:start_date', + ]; + + public function mount($customers) { + $this->customers = $customers; + $this->start_date = today()->subDays(30)->format('Y-m-d'); + $this->end_date = today()->format('Y-m-d'); + $this->customer_id = ''; + $this->sale_return_status = ''; + $this->payment_status = ''; + } + + public function render() { + $sale_returns = SaleReturn::whereDate('date', '>=', $this->start_date) + ->whereDate('date', '<=', $this->end_date) + ->when($this->customer_id, function ($query) { + return $query->where('customer_id', $this->customer_id); + }) + ->when($this->sale_return_status, function ($query) { + return $query->where('status', $this->sale_return_status); + }) + ->when($this->payment_status, function ($query) { + return $query->where('payment_status', $this->payment_status); + }) + ->orderBy('date', 'desc')->paginate(10); + + return view('livewire.reports.sales-return-report', [ + 'sale_returns' => $sale_returns + ]); + } + + public function generateReport() { + $this->validate(); + $this->render(); + } +} diff --git a/resources/views/layouts/menu.blade.php b/resources/views/layouts/menu.blade.php index 64ff0650..d2171916 100644 --- a/resources/views/layouts/menu.blade.php +++ b/resources/views/layouts/menu.blade.php @@ -109,7 +109,7 @@ @endcan @can('access_purchase_returns') -
  • +
  • Purchase Returns @@ -157,7 +157,7 @@ @endcan @can('access_sale_returns') -
  • +
  • Sale Returns @@ -233,7 +233,7 @@
  • @endcan -@can('access_sales_report|access_purchases_report') +@can('access_sales_report|access_purchases_report|access_sales_return_report|access_purchases_return_report')
  • Reports @@ -253,6 +253,20 @@
  • @endcan + @can('access_sales_return_report') +
  • + + Sales Return Report + +
  • + @endcan + @can('access_purchases_return_report') +
  • + + Purchases Return Report + +
  • + @endcan @endcan diff --git a/resources/views/livewire/reports/purchases-return-report.blade.php b/resources/views/livewire/reports/purchases-return-report.blade.php new file mode 100644 index 00000000..b9019e27 --- /dev/null +++ b/resources/views/livewire/reports/purchases-return-report.blade.php @@ -0,0 +1,154 @@ +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + @error('start_date') + {{ $message }} + @enderror +
    +
    +
    +
    + + + @error('end_date') + {{ $message }} + @enderror +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + Loading... +
    +
    + + + + + + + + + + + + + + @forelse($purchase_returns as $purchase_return) + + + + + + + + + + + @empty + + + + @endforelse + +
    DateReferenceSupplierStatusTotalPaidDuePayment Status
    {{ \Carbon\Carbon::parse($purchase_return->date)->format('d M, Y') }}{{ $purchase_return->reference }}{{ $purchase_return->supplier_name }} + @if ($purchase_return->status == 'Pending') + + {{ $purchase_return->status }} + + @elseif ($purchase_return->status == 'Shipped') + + {{ $purchase_return->status }} + + @else + + {{ $purchase_return->status }} + + @endif + {{ format_currency($purchase_return->total_amount) }}{{ format_currency($purchase_return->paid_amount) }}{{ format_currency($purchase_return->due_amount) }} + @if ($purchase_return->payment_status == 'Partial') + + {{ $purchase_return->payment_status }} + + @elseif ($purchase_return->payment_status == 'Paid') + + {{ $purchase_return->payment_status }} + + @else + + {{ $purchase_return->payment_status }} + + @endif + +
    + No Purchase Return Data Available! +
    +
    $purchase_returns->hasPages()])> + {{ $purchase_returns->links() }} +
    +
    +
    +
    +
    +
    diff --git a/resources/views/livewire/reports/sales-report.blade.php b/resources/views/livewire/reports/sales-report.blade.php index 427c66fb..debb4ba8 100644 --- a/resources/views/livewire/reports/sales-report.blade.php +++ b/resources/views/livewire/reports/sales-report.blade.php @@ -50,7 +50,7 @@
    - diff --git a/resources/views/livewire/reports/sales-return-report.blade.php b/resources/views/livewire/reports/sales-return-report.blade.php new file mode 100644 index 00000000..126dfe05 --- /dev/null +++ b/resources/views/livewire/reports/sales-return-report.blade.php @@ -0,0 +1,154 @@ +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + @error('start_date') + {{ $message }} + @enderror +
    +
    +
    +
    + + + @error('end_date') + {{ $message }} + @enderror +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + Loading... +
    +
    + + + + + + + + + + + + + + @forelse($sale_returns as $sale_return) + + + + + + + + + + + @empty + + + + @endforelse + +
    DateReferenceCustomerStatusTotalPaidDuePayment Status
    {{ \Carbon\Carbon::parse($sale_return->date)->format('d M, Y') }}{{ $sale_return->reference }}{{ $sale_return->customer_name }} + @if ($sale_return->status == 'Pending') + + {{ $sale_return->status }} + + @elseif ($sale_return->status == 'Shipped') + + {{ $sale_return->status }} + + @else + + {{ $sale_return->status }} + + @endif + {{ format_currency($sale_return->total_amount) }}{{ format_currency($sale_return->paid_amount) }}{{ format_currency($sale_return->due_amount) }} + @if ($sale_return->payment_status == 'Partial') + + {{ $sale_return->payment_status }} + + @elseif ($sale_return->payment_status == 'Paid') + + {{ $sale_return->payment_status }} + + @else + + {{ $sale_return->payment_status }} + + @endif + +
    + No Sale Return Data Available! +
    +
    $sale_returns->hasPages()])> + {{ $sale_returns->links() }} +
    +
    +
    +
    +
    +