Added: Payments Report
This commit is contained in:
parent
e3317587bb
commit
fe75cc546d
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Payments Report')
|
||||
|
||||
@section('breadcrumb')
|
||||
<ol class="breadcrumb border-0 m-0">
|
||||
<li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li>
|
||||
<li class="breadcrumb-item active">Payments Report</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<livewire:reports.payments-report/>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Reports;
|
||||
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Modules\People\Entities\Customer;
|
||||
use Modules\People\Entities\Supplier;
|
||||
use Modules\Purchase\Entities\PurchasePayment;
|
||||
use Modules\PurchasesReturn\Entities\PurchaseReturnPayment;
|
||||
use Modules\Sale\Entities\SalePayment;
|
||||
use Modules\SalesReturn\Entities\SaleReturnPayment;
|
||||
|
||||
class PaymentsReport extends Component
|
||||
{
|
||||
|
||||
use WithPagination;
|
||||
|
||||
protected $paginationTheme = 'bootstrap';
|
||||
|
||||
public $start_date;
|
||||
public $end_date;
|
||||
public $payments;
|
||||
public $payment_method;
|
||||
|
||||
protected $rules = [
|
||||
'start_date' => '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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -233,12 +233,19 @@
|
|||
</li>
|
||||
@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')
|
||||
<li class="c-sidebar-nav-item c-sidebar-nav-dropdown {{ request()->routeIs('*-report.index') ? 'c-show' : '' }}">
|
||||
<a class="c-sidebar-nav-link c-sidebar-nav-dropdown-toggle" href="#">
|
||||
<i class="c-sidebar-nav-icon bi bi-graph-up" style="line-height: 1;"></i> Reports
|
||||
</a>
|
||||
<ul class="c-sidebar-nav-dropdown-items">
|
||||
@can('access_payments_report')
|
||||
<li class="c-sidebar-nav-item">
|
||||
<a class="c-sidebar-nav-link {{ request()->routeIs('payments-report.index') ? 'c-active' : '' }}" href="{{ route('payments-report.index') }}">
|
||||
<i class="c-sidebar-nav-icon bi bi-clipboard-data" style="line-height: 1;"></i> Payments Report
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('access_sales_report')
|
||||
<li class="c-sidebar-nav-item">
|
||||
<a class="c-sidebar-nav-link {{ request()->routeIs('sales-report.index') ? 'c-active' : '' }}" href="{{ route('sales-report.index') }}">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,138 @@
|
|||
<div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<form wire:submit.prevent="generateReport">
|
||||
<div class="form-row">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label>Start Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="start_date" type="date" class="form-control" name="start_date">
|
||||
@error('start_date')
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label>End Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="end_date" type="date" class="form-control" name="end_date">
|
||||
@error('end_date')
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label>Payments</label>
|
||||
<select wire:model="payments" class="form-control" name="payments">
|
||||
<option value="">Select Payments</option>
|
||||
<option value="sale">Sales</option>
|
||||
<option value="sale_return">Sale Returns</option>
|
||||
<option value="purchase">Purchase</option>
|
||||
<option value="purchase_return">Purchase Returns</option>
|
||||
</select>
|
||||
@error('payments')
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label>Payment Method</label>
|
||||
<select wire:model.defer="payment_method" class="form-control" name="payment_method">
|
||||
<option value="">Select Payment Method</option>
|
||||
<option value="Cash">Cash</option>
|
||||
<option value="Credit Card">Credit Card</option>
|
||||
<option value="Bank Transfer">Bank Transfer</option>
|
||||
<option value="Cheque">Cheque</option>
|
||||
<option value="Other">Other</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-0">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<span wire:target="generateReport" wire:loading class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
|
||||
<i wire:target="generateReport" wire:loading.remove class="bi bi-shuffle"></i>
|
||||
Filter Report
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($information->isNotEmpty())
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<table class="table table-bordered table-striped text-center mb-0">
|
||||
<div wire:loading.flex class="col-12 position-absolute justify-content-center align-items-center" style="top:0;right:0;left:0;bottom:0;background-color: rgba(255,255,255,0.5);z-index: 99;">
|
||||
<div class="spinner-border text-primary" role="status">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Reference</th>
|
||||
<th>{{ ucwords(str_replace('_', ' ', $payments)) }}</th>
|
||||
<th>Total</th>
|
||||
<th>Payment Method</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($information as $data)
|
||||
<tr>
|
||||
<td>{{ \Carbon\Carbon::parse($data->date)->format('d M, Y') }}</td>
|
||||
<td>{{ $data->reference }}</td>
|
||||
<td>
|
||||
@if($payments == 'sale')
|
||||
{{ $data->sale->reference }}
|
||||
@elseif($payments == 'purchase')
|
||||
{{ $data->purchase->reference }}
|
||||
@elseif($payments == 'sale_return')
|
||||
{{ $data->saleReturn->reference }}
|
||||
@elseif($payments == 'purchase_return')
|
||||
{{ $data->purchaseReturn->reference }}
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ format_currency($data->amount) }}</td>
|
||||
<td>{{ $data->payment_method }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="8">
|
||||
<span class="text-danger">No Data Available!</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
<div @class(['mt-3' => $information->hasPages()])>
|
||||
{{ $information->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<div class="alert alert-warning mb-0">
|
||||
No Data Available!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
<label>Start Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="start_date" type="date" class="form-control" name="start_date">
|
||||
@error('start_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<label>End Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="end_date" type="date" class="form-control" name="end_date">
|
||||
@error('end_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<label>Start Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="start_date" type="date" class="form-control" name="start_date">
|
||||
@error('start_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<label>End Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="end_date" type="date" class="form-control" name="end_date">
|
||||
@error('end_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<label>Start Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="start_date" type="date" class="form-control" name="start_date">
|
||||
@error('start_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<label>End Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="end_date" type="date" class="form-control" name="end_date">
|
||||
@error('end_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<label>Start Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="start_date" type="date" class="form-control" name="start_date">
|
||||
@error('start_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<label>End Date <span class="text-danger">*</span></label>
|
||||
<input wire:model.defer="end_date" type="date" class="form-control" name="end_date">
|
||||
@error('end_date')
|
||||
<span class="text-danger mb-1">{{ $message }}</span>
|
||||
<span class="text-danger mt-1">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue