এই লেসনে payments report এবং receipts report দেখানো হয়েছে। এবং reports এ date range দিয়ে search দেয়া দেখানো হয়েছে।
Routes:
Route::get('reposts/payments', 'Reports\PaymentReportController@index')->name('reports.payments');
Route::get('reposts/receipts', 'Reports\ReceiptReportController@index')->name('reports.receipts');
PaymentReportController.php
namespace App\Http\Controllers\Reports;
use App\Http\Controllers\Controller;
use App\Payment;
use Illuminate\Http\Request;
class PaymentReportController extends Controller
{
public function __construct()
{
parent::__construct();
$this->data['main_manu'] = 'Reports';
$this->data['sub_manu'] = 'Payments';
}
public function index(Request $request)
{
$this->data['start_date'] = $request->get('start_date', date('Y-m-d'));
$this->data['end_date'] = $request->get('end_date', date('Y-m-d'));
$this->data['payments'] = Payment::whereBetween('date', [ $this->data['start_date'], $this->data['end_date'] ])
->get();
return view('reports.payments', $this->data);
}
}
ReceiptReportController.php
namespace App\Http\Controllers\Reports;
use App\Http\Controllers\Controller;
use App\Receipt;
use Illuminate\Http\Request;
class ReceiptReportController extends Controller
{
public function __construct()
{
parent::__construct();
$this->data['main_manu'] = 'Reports';
$this->data['sub_manu'] = 'Receipts';
}
public function index(Request $request)
{
$this->data['start_date'] = $request->get('start_date', date('Y-m-d'));
$this->data['end_date'] = $request->get('end_date', date('Y-m-d'));
$this->data['receipts'] = Receipt::whereBetween('date', [ $this->data['start_date'], $this->data['end_date'] ])
->get();
return view('reports.receipts', $this->data);
}
}
reports/payments.blade.php
@extends('layout.main')
@section('main_content')
<div class="row clearfix page_header">
<div class="col-md-4">
<h2> Payments Report </h2>
</div>
<div class="col-md-8 text-right">
{!! Form::open([ 'route' => ['reports.payments'], 'method' => 'get' ]) !!}
<div class="form-row align-items-center">
<div class="col-auto">
<label class="sr-only" for="inlineFormInput">Start Date</label>
{{ Form::date('start_date', $start_date, [ 'class'=>'form-control', 'id' => 'date', 'placeholder' => 'Start Date' ]) }}
</div>
<div class="col-auto">
<label class="sr-only" for="inlineFormInputGroup">End Date</label>
<div class="input-group mb-2">
{{ Form::date('end_date', $end_date, [ 'class'=>'form-control', 'id' => 'date', 'placeholder' => 'End Date' ]) }}
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</div>
</div>
{!! Form::close() !!}
</div>
</div>
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Payments Report From <strong>{{ $start_date }}</strong> to <strong>{{ $end_date }}</strong> </h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped table-borderless" cellspacing="0">
<thead>
<tr>
<th>Date</th>
<th>User</th>
<th class="text-right">Amount</th>
</tr>
</thead>
<tbody>
@foreach ($payments as $payment)
<tr>
<td> {{ $payment->date }} </td>
<td> {{ optional($payment->user)->name }} </td>
<td class="text-right"> {{ $payment->amount }} </td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<th colspan="2" class="text-right">Total:</th>
<th class="text-right"> {{ $payments->sum('amount') }} </th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
@stop
reports/receipts.blade.php
@extends('layout.main')
@section('main_content')
<div class="row clearfix page_header">
<div class="col-md-4">
<h2> Receipts Report </h2>
</div>
<div class="col-md-8 text-right">
{!! Form::open([ 'route' => ['reports.receipts'], 'method' => 'get' ]) !!}
<div class="form-row align-items-center">
<div class="col-auto">
<label class="sr-only" for="inlineFormInput">Start Date</label>
{{ Form::date('start_date', $start_date, [ 'class'=>'form-control', 'id' => 'date', 'placeholder' => 'Start Date' ]) }}
</div>
<div class="col-auto">
<label class="sr-only" for="inlineFormInputGroup">End Date</label>
<div class="input-group mb-2">
{{ Form::date('end_date', $end_date, [ 'class'=>'form-control', 'id' => 'date', 'placeholder' => 'End Date' ]) }}
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</div>
</div>
{!! Form::close() !!}
</div>
</div>
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Receipts Report From <strong>{{ $start_date }}</strong> to <strong>{{ $end_date }}</strong> </h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped table-borderless" cellspacing="0">
<thead>
<tr>
<th>Date</th>
<th>User</th>
<th class="text-right">Amount</th>
</tr>
</thead>
<tbody>
@foreach ($receipts as $receipt)
<tr>
<td> {{ $receipt->date }} </td>
<td> {{ optional($receipt->user)->name }} </td>
<td class="text-right"> {{ $receipt->amount }} </td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<th colspan="2" class="text-right">Total:</th>
<th class="text-right"> {{ $receipts->sum('amount') }} </th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
@stop
Controller.php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public $data = [];
public function __construct()
{
$this->data['main_manu'] = 'Users';
$this->data['sub_manu'] = 'Users';
$this->data['tab_menu'] = '';
}
}
layout/main.blade.php
@extends('layout.primary')
@section('page_body')
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="{{ url('/') }}">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
<div class="sidebar-brand-text mx-3">Mini Pos</div>
</a>
<!-- Divider -->
<hr class="sidebar-divider my-0">
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href=" {{ url('dashboard') }} ">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a>
</li>
<!-- Divider -->
<hr class="sidebar-divider">
<!-- Heading -->
<div class="sidebar-heading">
Interface
</div>
<!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item @if($main_manu == 'Users') active @endif ">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<i class="fas fa-fw fa-users"></i>
<span>Users</span>
</a>
<div id="collapseOne" class="collapse @if($main_manu == 'Users') show @endif" aria-labelledby="headingOne" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<a class="collapse-item @if($sub_manu == 'Groups') active @endif" href="{{ url('groups') }}">Groups</a>
<a class="collapse-item @if($sub_manu == 'Users') active @endif" href="{{ url('users') }}">Users</a>
</div>
</div>
</li>
<!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item @if($main_manu == 'Products') active @endif">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo">
<i class="fas fa-fw fa-bars"></i>
<span>Products</span>
</a>
<div id="collapseTwo" class="collapse @if($main_manu == 'Products') show @endif" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<a class="collapse-item @if($sub_manu == 'Categories') active @endif" href="{{ route('categories.index') }}">Categories</a>
<a class="collapse-item @if($sub_manu == 'Products') active @endif" href="{{ url('products') }}">Products</a>
<a class="collapse-item @if($sub_manu == 'Stocks') active @endif" href="{{ route('stocks') }}">Stocks</a>
</div>
</div>
</li>
<!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item @if($main_manu == 'Reports') active @endif">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseReport" aria-expanded="true" aria-controls="collapseReport">
<i class="fas fa-fw fa-chart-area"></i>
<span>Reports</span>
</a>
<div id="collapseReport" class="collapse @if($main_manu == 'Reports') show @endif" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
<div class="bg-white py-2 collapse-inner rounded">
<a class="collapse-item @if($sub_manu == 'Sales') active @endif" href="{{ route('reports.sales') }}">Sales</a>
<a class="collapse-item @if($sub_manu == 'Purchases') active @endif" href="{{ route('reports.purchases') }}">Purchases</a>
<a class="collapse-item @if($sub_manu == 'Payments') active @endif" href="{{ route('reports.payments') }}">Payments</a>
<a class="collapse-item @if($sub_manu == 'Receipts') active @endif" href="{{ route('reports.receipts') }}">Receipts</a>
</div>
</div>
</li>
<!-- Divider -->
<hr class="sidebar-divider d-none d-md-block">
<!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Topbar -->
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
<!-- Sidebar Toggle (Topbar) -->
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
<i class="fa fa-bars"></i>
</button>
<!-- Topbar Search -->
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2">
<div class="input-group-append">
<button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
</div>
</form>
<!-- Topbar Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Nav Item - Search Dropdown (Visible Only XS) -->
<li class="nav-item dropdown no-arrow d-sm-none">
<a class="nav-link dropdown-toggle" href="#" id="searchDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-search fa-fw"></i>
</a>
<!-- Dropdown - Messages -->
<div class="dropdown-menu dropdown-menu-right p-3 shadow animated--grow-in" aria-labelledby="searchDropdown">
<form class="form-inline mr-auto w-100 navbar-search">
<div class="input-group">
<input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2">
<div class="input-group-append">
<button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
</div>
</form>
</div>
</li>
<div class="topbar-divider d-none d-sm-block"></div>
<!-- Nav Item - User Information -->
<li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="mr-2 d-none d-lg-inline text-gray-600 small"> {{ Auth::user()->name }} </span>
<img class="img-profile rounded-circle" src="https://source.unsplash.com/QAB-WJcbgJk/60x60">
</a>
<!-- Dropdown - User Information -->
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
<a class="dropdown-item" href="#">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
Profile
</a>
<a class="dropdown-item" href="#">
<i class="fas fa-cogs fa-sm fa-fw mr-2 text-gray-400"></i>
Settings
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
Logout
</a>
</div>
</li>
</ul>
</nav>
<!-- End of Topbar -->
<!-- Begin Page Content -->
<div class="container-fluid">
@if ( session('message') )
<div class="alert alert-success" role="alert">
{{ session('message') }}
</div>
@endif
@yield('main_content')
</div>
<!-- /.container-fluid -->
</div>
<!-- End of Main Content -->
<!-- Footer -->
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright © Your Website 2020</span>
</div>
</div>
</footer>
<!-- End of Footer -->
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
</a>
<!-- Logout Modal-->
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">Select "Logout" below if you are ready to end your current session.</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
<a class="btn btn-primary" href="{{ route('logout') }}">Logout</a>
</div>
</div>
</div>
</div>
@stop