IMMREX7

aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/School/
File Up :
aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/School/NorthTransactionReportController.php

<?php

namespace App\Http\Controllers\School;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Auth;
use Carbon\Carbon;
use PDF;
use Session;

class NorthTransactionReportController extends SchoolController {

    public function transactionReport(Request $request) {
        $transactions = [];
        $today_date = Carbon::today()->format('Y-m-d');
        if ($request->has('fromDate') && $request->fromDate != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->fromDate);
        }
        if ($request->has('toDate') && $request->toDate != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->toDate);
        }
        $classes = \App\ClassM::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->orderBy('idClass')->get()->pluck('className', 'idClass')->toArray();
        $feetype = $request->feetype;
        if ($request->feetype == 'Student') {
            if ($request->has('feeheads') && count($request->feeheads) > 0) {

                // here feeheads is demand
                $transactions = DB::table('student_transaction')
                        ->join('student_transaction_details', 'student_transaction.idTransaction', '=', 'student_transaction_details.idTransaction')
                        ->join('northfeeheads', 'student_transaction_details.idParent', '=', 'northfeeheads.idFeehead')
                        ->leftJoin('excess_transaction', 'student_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->join('students', 'student_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('student_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->where('student_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                        ->whereIn('student_transaction_details.idParent', $request->feeheads)
                        ->where(function($query) {
                            $query->whereNull('student_transaction.status');
                            $query->orWhere('student_transaction.status', '=', 'In-Process');
                            $query->orWhere('student_transaction.status', '=', 'Cleared');
                            $query->orWhere('student_transaction.status', '=', 'Success');
                        })
                        ->groupBy('student_transaction_details.idParent')
                        ->select('northfeeheads.amount', 'demandName', 'students.ecNo', 'student_transaction.idTransaction', 'student_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo', 'paymentMode', 'penaltyAmount', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(student_transaction_details.discount) as discountTotal'), DB::raw('SUM(student_transaction_details.fine) as fineTotal'), 'penaltyRemarks', 'excessAmount', 'student_transaction.paymentDate', 'chequeNo');
                if ($request->toDate != null && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('student_transaction.paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')])->get();
                } else if ($request->has('fromDate') && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('student_transaction.paymentDate', [$from_date->format('Y-m-d'), $today_date])->get();
                } else if ($request->has('toDate') && $request->toDate != null) {
                    $transactions = $transactions->whereDate('student_transaction.paymentDate', '<=', $to_date)->get();
                } else {
                    $transactions = $transactions->get();
                }
            }
        } else if ($request->feetype == 'Bus') {
            if ($request->has('feeheads') && count($request->feeheads) > 0) {

                // here feeheads is demand
                $transactions = DB::table('bus_transaction')
                        ->join('bus_transaction_details', 'bus_transaction.idBusTransaction', '=', 'bus_transaction_details.idBusTransaction')
                        ->join('northfeeheads', 'bus_transaction_details.idParent', '=', 'northfeeheads.idFeehead')
                        ->leftJoin('bus_excess_transaction', 'bus_transaction.idBusExcessTransaction', '=', 'bus_excess_transaction.idBusExcessTransaction')
                        ->join('students', 'bus_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('bus_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->where('bus_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                        ->whereIn('bus_transaction_details.idParent', $request->feeheads)
                        ->where(function($query) {
                            $query->whereNull('bus_transaction.status');
                            $query->orWhere('bus_transaction.status', '=', 'In-Process');
                            $query->orWhere('bus_transaction.status', '=', 'Cleared');
                            $query->orWhere('bus_transaction.status', '=', 'Success');
                        })
                        ->groupBy('bus_transaction_details.idParent')
                        ->select('northfeeheads.amount', 'demandName', 'students.ecNo', 'bus_transaction.idBusTransaction', 'bus_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo', 'paymentMode', 'penaltyAmount', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(bus_transaction_details.discount) as discountTotal'), DB::raw('SUM(bus_transaction_details.fine) as fineTotal'), 'penaltyRemarks', 'excessAmount', 'bus_transaction.paymentDate', 'chequeNo');
                if ($request->toDate != null && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('bus_transaction.paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')])->get();
                } else if ($request->has('fromDate') && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('bus_transaction.paymentDate', [$from_date->format('Y-m-d'), $today_date])->get();
                } else if ($request->has('toDate') && $request->toDate != null) {
                    $transactions = $transactions->whereDate('bus_transaction.paymentDate', '<=', $to_date)->get();
                } else {
                    $transactions = $transactions->get();
                }
            }
        } else if ($request->feetype == 'Hostel') {
            if ($request->has('feeheads') && count($request->feeheads) > 0) {

                // here feeheads is demand
                $transactions = DB::table('hostel_transaction')
                        ->join('hostel_transaction_details', 'hostel_transaction.idHostelTransaction', '=', 'hostel_transaction_details.idHostelTransaction')
                        ->join('northfeeheads', 'hostel_transaction_details.idParent', '=', 'northfeeheads.idFeehead')
                        ->leftJoin('hostel_excess_transaction', 'hostel_transaction.idHostelExcessTransaction', '=', 'hostel_excess_transaction.idHosotelExcessTransaction')
                        ->join('students', 'hostel_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('hostel_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->where('hostel_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                        ->whereIn('hostel_transaction_details.idParent', $request->feeheads)
                        ->where(function($query) {
                            $query->whereNull('hostel_transaction.status');
                            $query->orWhere('hostel_transaction.status', '=', 'In-Process');
                            $query->orWhere('hostel_transaction.status', '=', 'Cleared');
                            $query->orWhere('hostel_transaction.status', '=', 'Success');
                        })
                        ->groupBy('hostel_transaction_details.idParent')
                        ->select('northfeeheads.amount', 'demandName', 'students.ecNo', 'hostel_transaction.idHostelTransaction', 'hostel_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo', 'paymentMode', 'penaltyAmount', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(hostel_transaction_details.discount) as discountTotal'), DB::raw('SUM(hostel_transaction_details.fine) as fineTotal'), 'penaltyRemarks', 'excessAmount', 'hostel_transaction.paymentDate', 'chequeNo');
                if ($request->toDate != null && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('hostel_transaction.paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')])->get();
                } else if ($request->has('fromDate') && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('hostel_transaction.paymentDate', [$from_date->format('Y-m-d'), $today_date])->get();
                } else if ($request->has('toDate') && $request->toDate != null) {
                    $transactions = $transactions->whereDate('hostel_transaction.paymentDate', '<=', $to_date)->get();
                } else {
                    $transactions = $transactions->get();
                }
            }
        }

        //dd($transactions);
        return view('schools.north.transaction.transaction_report', compact('feetype', 'classes','transactions'));
    }

    public function lesserTransactionReport(Request $request) {
        $transactions = [];
        $today_date = Carbon::today()->format('Y-m-d');
        if ($request->has('fromDate') && $request->fromDate != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->fromDate);
        }
        if ($request->has('toDate') && $request->toDate != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->toDate);
        }
        $classes = \App\ClassM::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->orderBy('idClass')->get()->pluck('className', 'idClass')->toArray();
        $feetype = $request->feetype;
        if ($request->feetype == 'Student') {
            if ($request->has('feeheads') && count($request->feeheads) > 0) {
                $transactions = DB::table('lesser_transaction')
                        ->join('lesser_transaction_details', 'lesser_transaction.idLesserTransaction', '=', 'lesser_transaction.idLesserTransaction')
                        ->join('northfeeheads', 'lesser_transaction_details.idParent', '=', 'northfeeheads.idFeehead')
                        ->leftJoin('excess_transaction', 'lesser_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->join('students', 'lesser_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->where('lesser_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                        ->where(function($query) {
                            $query->whereNull('lesser_transaction.status');
                            $query->orWhere('lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('lesser_transaction.status', '=', 'Success');
                        })
                        ->whereIn('lesser_transaction_details.idParent', $request->feeheads)
                        ->groupBy('lesser_transaction_details.idParent')
                        ->select('northfeeheads.amount', 'demandName', 'students.ecNo', 'lesser_transaction.idLesserTransaction', 'lesser_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo', 'paymentMode', 'penaltyAmount', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(lesser_transaction_details.fine) as fineTotal'), 'penaltyRemarks', 'excessAmount', 'lesser_transaction.paymentDate', 'chequeNo');
                if ($request->toDate != null && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('lesser_transaction.paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')])->get();
                } else if ($request->has('fromDate') && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('lesser_transaction.paymentDate', [$from_date->format('Y-m-d'), $today_date])->get();
                } else if ($request->has('toDate') && $request->toDate != null) {
                    $transactions = $transactions->whereDate('lesser_transaction.paymentDate', '<=', $to_date)->get();
                } else {
                    $transactions = $transactions->get();
                }
            }
        } elseif ($request->feetype == 'Bus') {
            if ($request->has('feeheads') && count($request->feeheads) > 0) {
                $transactions = DB::table('bus_lesser_transaction')
                        ->join('bus_lesser_transaction_details', 'bus_lesser_transaction.idBusLesserTransaction', '=', 'bus_lesser_transaction.idBusLesserTransaction')
                        ->join('northfeeheads', 'bus_lesser_transaction_details.idParent', '=', 'northfeeheads.idFeehead')
                        ->leftJoin('bus_excess_transaction', 'bus_lesser_transaction.idBusExcessTransaction', '=', 'bus_excess_transaction.idBusExcessTransaction')
                        ->join('students', 'bus_lesser_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('bus_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->where('bus_lesser_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                        ->where(function($query) {
                            $query->whereNull('bus_lesser_transaction.status');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'Success');
                        })
                        ->whereIn('bus_lesser_transaction_details.idParent', $request->feeheads)
                        ->groupBy('bus_lesser_transaction_details.idParent')
                        ->select('northfeeheads.amount', 'demandName', 'students.ecNo', 'bus_lesser_transaction.idBusLesserTransaction', 'bus_lesser_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo', 'paymentMode', 'penaltyAmount', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(bus_lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(bus_lesser_transaction_details.fine) as fineTotal'), 'penaltyRemarks', 'excessAmount', 'bus_lesser_transaction.paymentDate', 'chequeNo');
                if ($request->toDate != null && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('bus_lesser_transaction.paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')])->get();
                } else if ($request->has('fromDate') && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('bus_lesser_transaction.paymentDate', [$from_date->format('Y-m-d'), $today_date])->get();
                } else if ($request->has('toDate') && $request->toDate != null) {
                    $transactions = $transactions->whereDate('bus_lesser_transaction.paymentDate', '<=', $to_date)->get();
                } else {
                    $transactions = $transactions->get();
                }
            }
        } elseif ($request->feetype == 'Hostel') {
            if ($request->has('feeheads') && count($request->feeheads) > 0) {
                $transactions = DB::table('hostel_lesser_transaction')
                        ->join('hostel_lesser_transaction_details', 'hostel_lesser_transaction.idHostelLesserTransaction', '=', 'hostel_lesser_transaction.idHostelLesserTransaction')
                        ->join('northfeeheads', 'lesser_transaction_details.idParent', '=', 'northfeeheads.idFeehead')
                        ->leftJoin('hostel_excess_transaction', 'hostel_lesser_transaction.idHostelExcessTransaction', '=', 'hostel_excess_transaction.idHostelExcessTransaction')
                        ->join('students', 'hostel_lesser_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('hostel_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->where('hostel_lesser_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                        ->where(function($query) {
                            $query->whereNull('hostel_lesser_transaction.status');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'Success');
                        })
                        ->whereIn('hostel_lesser_transaction_details.idParent', $request->feeheads)
                        ->groupBy('hostel_lesser_transaction_details.idParent')
                        ->select('northfeeheads.amount', 'demandName', 'students.ecNo', 'hostel_lesser_transaction.idHostelLesserTransaction', 'hostel_lesser_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo', 'paymentMode', 'penaltyAmount', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(hostel_lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(hostel_lesser_transaction_details.fine) as fineTotal'), 'penaltyRemarks', 'excessAmount', 'hostel_lesser_transaction.paymentDate', 'chequeNo');
                if ($request->toDate != null && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('hostel_lesser_transaction.paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')])->get();
                } else if ($request->has('fromDate') && $request->fromDate != null) {
                    $transactions = $transactions->whereBetween('hostel_lesser_transaction.paymentDate', [$from_date->format('Y-m-d'), $today_date])->get();
                } else if ($request->has('toDate') && $request->toDate != null) {
                    $transactions = $transactions->whereDate('hostel_lesser_transaction.paymentDate', '<=', $to_date)->get();
                } else {
                    $transactions = $transactions->get();
                }
            }
        }
        return view('schools.north.transaction.lesser_transaction_report', compact('feetype', 'classes','transactions'));
    }

    public function getFeeDemands($id) {
        $sections_ids = array_map('intval', explode(',', $id));
        $feeheads = \App\NorthFeeHead::whereIn('idSection', $sections_ids)
                        ->where('isParent', '=', '0')->get()->pluck('demandName', 'idFeehead')->toArray();
        return json_encode($feeheads);
    }

    public function daywiseHostelFeeCollection(Request $request) {
        $transactions = [];
        $feeheads = [];
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        if ($request->has('date') && $request->date != null) {
            $todaydate = \Carbon\Carbon::parse($request->date)->format('Y-m-d');
            $feeheads = DB::table('dailytransaction')
                    ->join('dailytransaction_details', 'dailytransaction.idDailyTransaction', '=', 'dailytransaction_details.idDailyTransaction')
                    ->where('idSchool', '=', $school->idSchool)
                    ->where('transactionType', '=', 'Hostel')
                    ->whereDate('dailytransaction.paymentDate', '=', $todaydate)
                    ->groupBy('headerName')
                    ->select('headerName', DB::raw('SUM(dailytransaction_details.amountPaid) AS feeheadPaidTotal'), DB::raw('SUM(dailytransaction_details.discountFeehead) AS discountTotalFeehead'))
                    ->get();
            $transactions = DB::table('dailytransaction')
                    ->whereDate('dailytransaction.paymentDate', '=', $todaydate)
                    ->where('idSchool', '=', $school->idSchool)
                    ->where('transactionType', '=', 'Hostel')
                    ->get();
            $pdf = PDF::loadView('schools.north.transaction.daycollpdf', ['margin_top' => 20], compact('transactions', 'feeheads', 'school', 'todaydate'));
            return $pdf->stream($todaydate . 'hostel_collection.pdf');
        } else {
            return view('schools.north.transaction.daywise_hostelfee_collection', compact('transactions', 'school', 'feeheads'));
        }
    }

    public function daywiseFeeCollection(Request $request) {
        if ($request->has('date') && $request->date != null) {
            $todaydate = \Carbon\Carbon::parse($request->date)->format('Y-m-d');
        } else {
            $todaydate = \Carbon\Carbon::parse(today_date())->format('Y-m-d');
        }
        $transactions = [];
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        $lessertransaction = DB::table('lesser_transaction')
                ->join('lesser_transaction_details', 'lesser_transaction.idLesserTransaction', '=', 'lesser_transaction_details.idLesserTransaction')
                ->leftJoin('excess_transaction', 'lesser_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                ->join('students', 'lesser_transaction.idStudent', '=', 'students.idStudent')
                ->join('classes', 'students.idClass', '=', 'classes.idClass')
                ->join('sections', 'students.idSection', '=', 'sections.idSection')
                ->where('lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                ->whereDate('lesser_transaction.paymentDate', '=', $todaydate)
                ->where(function($query) {
                    $query->whereNull('lesser_transaction.status');
                    $query->orWhere('lesser_transaction.status', '=', 'In-Process');
                    $query->orWhere('lesser_transaction.status', '=', 'Cleared');
                    $query->orWhere('lesser_transaction.status', '=', 'Success');
                })
                ->select('lesser_transaction.idStudent', 'receiptNo', 'lesser_transaction.paymentDate', 'ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(lesser_transaction_details.fine) as fineTotal'));

        $fulltransaction = DB::table('student_transaction')
                        ->join('student_transaction_details', 'student_transaction.idTransaction', '=', 'student_transaction_details.idTransaction')
                        ->leftJoin('excess_transaction', 'student_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->join('students', 'student_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('student_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('student_transaction.paymentDate', '=', $todaydate)
                        ->where(function($query) {
                            $query->whereNull('student_transaction.status');
                            $query->orWhere('student_transaction.status', '=', 'In-Process');
                            $query->orWhere('student_transaction.status', '=', 'Cleared');
                            $query->orWhere('student_transaction.status', '=', 'Success');
                        })
                        ->union($lessertransaction)
                        ->groupBy('student_transaction.idStudent')
                        ->select('student_transaction.idStudent', 'receiptNo', 'student_transaction.paymentDate', 'ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(amountPaid) as totalpaid'), DB::raw('SUM(student_transaction_details.discount) as discountTotal'), DB::raw('SUM(student_transaction_details.fine) as fineTotal'))->get();
        return view('schools.north.transaction.daywise_collection', compact('fulltransaction', 'school'));
    }

    public function dayCollection(Request $request) {
        $transactions = [];
        $feeheads = [];
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        if ($request->has('date') && $request->date != null) {
            $todaydate = \Carbon\Carbon::parse($request->date)->format('Y-m-d');

            $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
            $feeheads = DB::table('dailytransaction')
                    ->join('dailytransaction_details', 'dailytransaction.idDailyTransaction', '=', 'dailytransaction_details.idDailyTransaction')
                    ->where('idSchool', '=', $school->idSchool)
                    ->whereDate('dailytransaction.paymentDate', '=', $todaydate)
                    ->where('transactionType','=','Student')
                    ->select('headerName', DB::raw('SUM(dailytransaction_details.amountPaid) AS feeheadPaidTotal'), DB::raw('SUM(dailytransaction_details.discountFeehead) AS discountTotalFeehead'))
                    ->groupBy('headerName')
                    ->get();
            $transactions = DB::table('dailytransaction')
                    ->whereDate('dailytransaction.paymentDate', '=', $todaydate)
                    ->where('transactionType','=','Student')
                    ->where('idSchool', '=', $school->idSchool)
                    ->get();

            $pdf = PDF::loadView('schools.north.transaction.daycollpdf', ['margin_top' => 20], compact('transactions', 'feeheads', 'school', 'todaydate'));
            return $pdf->stream($todaydate . 'collection.pdf');
        } else {
            return view('schools.north.transaction.daycollection', compact('transactions', 'school', 'feeheads'));
        }
    }

    public function storedayCollection(Request $request) {
        if ($request->has('date') && $request->date != null) {
            $selected_date = \Carbon\Carbon::parse($request->date)->format('Y-m-d');

            $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
            if ($request->transactionType == 'Student') {
                $lessertransaction = DB::table('lesser_transaction')
                        ->join('lesser_transaction_details', 'lesser_transaction.idLesserTransaction', '=', 'lesser_transaction_details.idLesserTransaction')
                        ->join('northfeeheads', 'lesser_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                        ->leftJoin('excess_transaction', 'lesser_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->join('students', 'lesser_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('lesser_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('lesser_transaction.status');
                            $query->orWhere('lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('lesser_transaction.status', '=', 'Success');
                        })
                        ->groupBy('lesser_transaction.idStudent')
                        ->select('lesser_transaction.idStudent', 'receiptNo', 'lesser_transaction.paymentDate', 'students.ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(lesser_transaction_details.amountPaid) as amountPaidTotal'), DB::raw('SUM(lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(lesser_transaction.fine) as fineTotal'));

                $transactions = DB::table('student_transaction')
                                ->join('student_transaction_details', 'student_transaction.idTransaction', '=', 'student_transaction_details.idTransaction')
                                ->join('northfeeheads', 'student_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                                ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                                ->leftJoin('excess_transaction', 'student_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                                ->join('students', 'student_transaction.idStudent', '=', 'students.idStudent')
                                ->join('classes', 'students.idClass', '=', 'classes.idClass')
                                ->join('sections', 'students.idSection', '=', 'sections.idSection')
                                ->where('student_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                                ->whereDate('student_transaction.paymentDate', '=', $selected_date)
                                ->where(function($query) {
                                    $query->whereNull('student_transaction.status');
                                    $query->orWhere('student_transaction.status', '=', 'In-Process');
                                    $query->orWhere('student_transaction.status', '=', 'Cleared');
                                    $query->orWhere('student_transaction.status', '=', 'Success');
                                })
                                ->union($lessertransaction)
                                ->groupBy('student_transaction.idStudent')
                                ->select('student_transaction.idStudent', 'receiptNo', 'student_transaction.paymentDate', 'students.ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(student_transaction_details.amountPaid) AS amountPaidTotal'), DB::raw('SUM(student_transaction_details.discount) as discountTotal'), DB::raw('SUM(student_transaction.fine) as fineTotal'))->get();

                $lesserpaid_feehead = DB::table('lesser_transaction')
                        ->join('lesser_transaction_details', 'lesser_transaction.idLesserTransaction', '=', 'lesser_transaction_details.idLesserTransaction')
                        ->join('northfeeheads', 'lesser_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                        ->leftJoin('excess_transaction', 'lesser_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->where('lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('lesser_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('lesser_transaction.status');
                            $query->orWhere('lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('lesser_transaction.status', '=', 'Success');
                        })
                        ->select('headerName', 'northfeeheads.ecNo', 'lesser_transaction_details.idFeehead', 'amountPaid', 'northfeeheads.discount as discountFeehead');
                $feeheads = DB::table('student_transaction')
                        ->join('student_transaction_details', 'student_transaction.idTransaction', '=', 'student_transaction_details.idTransaction')
                        ->join('northfeeheads', 'student_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                        ->leftJoin('excess_transaction', 'student_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->where('student_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('student_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('student_transaction.status');
                            $query->orWhere('student_transaction.status', '=', 'In-Process');
                            $query->orWhere('student_transaction.status', '=', 'Cleared');
                            $query->orWhere('student_transaction.status', '=', 'Success');
                        })
                        ->union($lesserpaid_feehead)
                        ->select('headerName', 'northfeeheads.ecNo', 'student_transaction_details.idFeehead', 'amountPaid', 'northfeeheads.discount as discountFeehead')
                        ->get();
            } elseif ($request->transactionType == 'Bus') {
                $lessertransaction = DB::table('bus_lesser_transaction')
                        ->join('bus_lesser_transaction_details', 'bus_lesser_transaction.idBusLesserTransaction', '=', 'bus_lesser_transaction_details.idBusLesserTransaction')
                        ->join('northfeeheads', 'bus_lesser_transaction_details.idBusFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                        ->leftJoin('bus_excess_transaction', 'bus_lesser_transaction.idBusExcessTransaction', '=', 'bus_excess_transaction.idBusExcessTransaction')
                        ->join('students', 'bus_lesser_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('bus_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('bus_lesser_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('bus_lesser_transaction.status');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'Success');
                        })
                        ->groupBy('bus_lesser_transaction.idStudent')
                        ->select('bus_lesser_transaction.idStudent', 'receiptNo', 'bus_lesser_transaction.paymentDate', 'students.ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(bus_lesser_transaction_details.amountPaid) as amountPaidTotal'), DB::raw('SUM(bus_lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(bus_lesser_transaction.fine) as fineTotal'));

                $transactions = DB::table('bus_transaction')
                                ->join('bus_transaction_details', 'bus_transaction.idBusTransaction', '=', 'bus_transaction_details.idBusTransaction')
                                ->join('northfeeheads', 'bus_transaction_details.idBusFeehead', '=', 'northfeeheads.idFeehead')
                                ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                                ->leftJoin('bus_excess_transaction', 'bus_transaction.idBusExcessTransaction', '=', 'bus_excess_transaction.idBusExcessTransaction')
                                ->join('students', 'bus_transaction.idStudent', '=', 'students.idStudent')
                                ->join('classes', 'students.idClass', '=', 'classes.idClass')
                                ->join('sections', 'students.idSection', '=', 'sections.idSection')
                                ->where('bus_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                                ->whereDate('bus_transaction.paymentDate', '=', $selected_date)
                                ->where(function($query) {
                                    $query->whereNull('bus_transaction.status');
                                    $query->orWhere('bus_transaction.status', '=', 'In-Process');
                                    $query->orWhere('bus_transaction.status', '=', 'Cleared');
                                    $query->orWhere('bus_transaction.status', '=', 'Success');
                                })
                                ->union($lessertransaction)
                                ->groupBy('bus_transaction.idStudent')
                                ->select('bus_transaction.idStudent', 'receiptNo', 'bus_transaction.paymentDate', 'students.ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(bus_transaction_details.amountPaid) AS amountPaidTotal'), DB::raw('SUM(bus_transaction_details.discount) as discountTotal'), DB::raw('SUM(bus_transaction.fine) as fineTotal'))->get();

                $lesserpaid_feehead = DB::table('bus_lesser_transaction')
                        ->join('bus_lesser_transaction_details', 'bus_lesser_transaction.idBusLesserTransaction', '=', 'bus_lesser_transaction_details.idBusLesserTransaction')
                        ->join('northfeeheads', 'bus_lesser_transaction_details.idBusFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                        ->leftJoin('bus_excess_transaction', 'bus_lesser_transaction.idBusExcessTransaction', '=', 'bus_excess_transaction.idBusExcessTransaction')
                        ->where('bus_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('bus_lesser_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('bus_lesser_transaction.status');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('bus_lesser_transaction.status', '=', 'Success');
                        })
                        ->select('headerName', 'northfeeheads.ecNo', 'bus_lesser_transaction_details.idBusFeehead', 'amountPaid', 'northfeeheads.discount as discountFeehead');
                $feeheads = DB::table('bus_transaction')
                        ->join('bus_transaction_details', 'bus_transaction.idBusTransaction', '=', 'bus_transaction_details.idBusTransaction')
                        ->join('northfeeheads', 'bus_transaction_details.idBusFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                        ->leftJoin('bus_excess_transaction', 'bus_transaction.idBusExcessTransaction', '=', 'bus_excess_transaction.idBusExcessTransaction')
                        ->where('bus_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('bus_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('bus_transaction.status');
                            $query->orWhere('bus_transaction.status', '=', 'In-Process');
                            $query->orWhere('bus_transaction.status', '=', 'Cleared');
                            $query->orWhere('bus_transaction.status', '=', 'Success');
                        })
                        ->union($lesserpaid_feehead)
                        ->select('headerName', 'northfeeheads.ecNo', 'bus_transaction_details.idBusFeehead', 'amountPaid', 'northfeeheads.discount as discountFeehead')
                        ->get();
            } elseif ($request->transactionType == 'Hostel') {
                $lessertransaction = DB::table('hostel_lesser_transaction')
                        ->join('hostel_lesser_transaction_details', 'hostel_lesser_transaction.idHostelLesserTransaction', '=', 'hostel_lesser_transaction_details.idHostelLesserTransaction')
                        ->join('northfeeheads', 'hostel_lesser_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                       // ->leftJoin('excess_transaction', 'lesser_transaction.idExcessTransaction', '=', 'excess_transaction.idExcessTransaction')
                        ->join('students', 'hostel_lesser_transaction.idStudent', '=', 'students.idStudent')
                        ->join('classes', 'students.idClass', '=', 'classes.idClass')
                        ->join('sections', 'students.idSection', '=', 'sections.idSection')
                        ->where('hostel_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('hostel_lesser_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('hostel_lesser_transaction.status');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'Success');
                        })
                        ->groupBy('hostel_lesser_transaction.idStudent')
                        ->select('hostel_lesser_transaction.idStudent', 'receiptNo', 'hostel_lesser_transaction.paymentDate', 'students.ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(hostel_lesser_transaction_details.amountPaid) as amountPaidTotal'), DB::raw('SUM(hostel_lesser_transaction_details.discount) as discountTotal'), DB::raw('SUM(hostel_lesser_transaction.fine) as fineTotal'));

                $transactions = DB::table('hostel_transaction')
                                ->join('hostel_transaction_details', 'hostel_transaction.idHostelTransaction', '=', 'hostel_transaction_details.idHostelTransaction')
                                ->join('northfeeheads', 'hostel_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                                ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                             //   ->leftJoin('hostel_excess_transaction', 'hostel_transaction.idHostelExcessTransaction', '=', 'hostel_excess_transaction.idHostelExcessTransaction')
                                ->join('students', 'hostel_transaction.idStudent', '=', 'students.idStudent')
                                ->join('classes', 'students.idClass', '=', 'classes.idClass')
                                ->join('sections', 'students.idSection', '=', 'sections.idSection')
                                ->where('hostel_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                                ->whereDate('hostel_transaction.paymentDate', '=', $selected_date)
                                ->where(function($query) {
                                    $query->whereNull('hostel_transaction.status');
                                    $query->orWhere('hostel_transaction.status', '=', 'In-Process');
                                    $query->orWhere('hostel_transaction.status', '=', 'Cleared');
                                    $query->orWhere('hostel_transaction.status', '=', 'Success');
                                })
                                ->union($lessertransaction)
                                ->groupBy('hostel_transaction.idStudent')
                                ->select('hostel_transaction.idStudent', 'receiptNo', 'hostel_transaction.paymentDate', 'students.ecNo', 'firstName', 'middleName', 'lastName', 'className', 'sectionName', 'paymentMode', DB::raw('SUM(hostel_transaction_details.amountPaid) AS amountPaidTotal'), DB::raw('SUM(hostel_transaction_details.discount) as discountTotal'), DB::raw('SUM(hostel_transaction.fine) as fineTotal'))->get();
		//dd($transaction);
                $lesserpaid_feehead = DB::table('hostel_lesser_transaction')
                        ->join('hostel_lesser_transaction_details', 'hostel_lesser_transaction.idHostelLesserTransaction', '=', 'hostel_lesser_transaction_details.idHostelLesserTransaction')
                        ->join('northfeeheads', 'hostel_lesser_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                      //  ->leftJoin('hostel_excess_transaction', 'hostel_lesser_transaction.idHostelExcessTransaction', '=', 'hostel_excess_transaction.idHostelExcessTransaction')
                        ->where('hostel_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('hostel_lesser_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('hostel_lesser_transaction.status');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'In-Process');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'Cleared');
                            $query->orWhere('hostel_lesser_transaction.status', '=', 'Success');
                        })
                        ->select('headerName', 'northfeeheads.ecNo', 'hostel_lesser_transaction_details.idFeehead', 'amountPaid', 'northfeeheads.discount as discountFeehead');
                $feeheads = DB::table('hostel_transaction')
                        ->join('hostel_transaction_details', 'hostel_transaction.idHostelTransaction', '=', 'hostel_transaction_details.idHostelTransaction')
                        ->join('northfeeheads', 'hostel_transaction_details.idFeehead', '=', 'northfeeheads.idFeehead')
                        ->join('headers', 'northfeeheads.idHeader', '=', 'headers.idHeader')
                      //  ->leftJoin('hostel_excess_transaction', 'hostel_transaction.idHostelExcessTransaction', '=', 'hostel_excess_transaction.idHostelExcessTransaction')
                        ->where('hostel_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->whereDate('hostel_transaction.paymentDate', '=', $selected_date)
                        ->where(function($query) {
                            $query->whereNull('hostel_transaction.status');
                            $query->orWhere('hostel_transaction.status', '=', 'In-Process');
                            $query->orWhere('hostel_transaction.status', '=', 'Cleared');
                            $query->orWhere('hostel_transaction.status', '=', 'Success');
                        })
                        ->union($lesserpaid_feehead)
                        ->select('headerName', 'northfeeheads.ecNo', 'hostel_transaction_details.idFeehead', 'amountPaid', 'northfeeheads.discount as discountFeehead')
                        ->get();
            }

           // dd($feeheads);
            foreach ($transactions as $var) {
                if ($var->ecNo != null) {
                    $daily_transaction = new \App\DailyTransaction();
                    $daily_transaction->idSchool = $school->idSchool;
                    $daily_transaction->transactionType = $request->transactionType;
                    $daily_transaction->ecNo = $var->ecNo;
                    $daily_transaction->Name = $var->firstName . ' ' . $var->middleName . ' ' . $var->lastName;
                    $daily_transaction->class = $var->className;
                    $daily_transaction->section = $var->sectionName;
                    $daily_transaction->totalFine = $var->fineTotal;
                    $daily_transaction->totalDiscount = $var->discountTotal;
                    $daily_transaction->totalfeePaid = $var->amountPaidTotal;
                    $daily_transaction->totalFine = $var->fineTotal;
                    $net = $var->amountPaidTotal + $var->discountTotal + $var->fineTotal;
                    $daily_transaction->netAmount = $net;
                    $daily_transaction->paymentDate = $var->paymentDate;
                    $daily_transaction->receiptNo = $var->receiptNo;
                    $daily_transaction->save();
                }
            }
            foreach ($feeheads as $fh) {
                if ($fh->ecNo != null) {
                    $dt = \App\DailyTransaction::where('ecNo', '=', $fh->ecNo)
                            ->where('transactionType','=',$request->transactionType)
                            ->where('paymentDate', '=', $selected_date)->first();
                    $dt_detail = new \App\DailyTransactionDetail();
                    $dt_detail->idDailyTransaction = $dt->idDailyTransaction;
                    if($request->transactionType == 'Bus'){
                        $dt_detail->idFeehead = $fh->idBusFeehead;
                    }else{
                        $dt_detail->idFeehead = $fh->idFeehead;
                    }
                    
                    $dt_detail->headerName = $fh->headerName;
                    $dt_detail->amountPaid = $fh->amountPaid;
                    $dt_detail->discountFeehead = $fh->discountFeehead;
                    $dt_detail->save();
                }
            }
            return redirect('school/north/savedaycollection');
        } else {
            return view('schools.north.transaction.savedaycoll_toreport_table');
        }
    }

    public function newdayCollection(Request $request) {
        if ($request->has('date') && $request->date != null) {
            $todaydate = \Carbon\Carbon::parse($request->date)->format('Y-m-d');
        } else {
            $todaydate = \Carbon\Carbon::parse(today_date())->format('Y-m-d');
        }
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        $feeheads = DB::table('dailytransaction')
                ->join('dailytransaction_details', 'dailytransaction.idDailyTransaction', '=', 'dailytransaction_details.idDailyTransaction')
                ->where('idSchool', '=', $school->idSchool)
                ->groupBy('headerName')
                ->select('headerName', DB::raw('SUM(dailytransaction_details.amountPaid) AS feeheadPaidTotal'), DB::raw('SUM(dailytransaction_details.discountFeehead) AS discountTotalFeehead'))
                ->get();
        $transactions = DB::table('dailytransaction')
                ->where('idSchool', '=', $school->idSchool)
                ->get();
        if ($request->has('date') && $request->date != null) {
            $pdf = PDF::loadView('schools.north.transaction.daycollpdf', ['margin_top' => 20], compact('transactions', 'feeheads', 'school'));
            return $pdf->stream($todaydate . 'collection.pdf');
        }
        return view('schools.north.transaction.newdaycollection', compact('transactions', 'school', 'feeheads'));
    }

}

Copyright © 2021 - 2025 IMMREX7