IMMREX7
<?php
namespace App\Http\Controllers\School;
use Illuminate\Http\Request;
use App\Http\PaymentCalculation;
use Auth;
use DB;
use PDF;
use Carbon\Carbon;
use Session;
class BusFeepaymentController extends SchoolController {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request) {
$stdtransport = \App\StudentTransport::where('student_transport.idSchool', '=', Auth::guard('school')->user()->idSchool);
if($request->has('idFinancialYear')){
$stdtransport = $stdtransport->where('idFinancialYear','=',$request->idFinancialYear)->get();
}else{
$stdtransport = $stdtransport->where('idFinancialYear','=', Session::get('idFinancialYear'))->get();
}
return view('schools.buses.studentbusfee', compact('stdtransport'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) {
// dd($request->all());
$rules = [];
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Online') {
$rules += ['totalPaid' => 'required'];
} else if ($request->paymentMode == 'IMPS') {
$rules = [];
} else if ($request->paymentMode == 'Card') {
$rules += ['cardNo' => 'required', 'totalPaid' => 'required'];
} else {
$rules += [
'idBank' => 'required',
'chequeDate' => 'required',
'chequeNo' => 'required',
'amount' => 'required'
];
}
$messages = [
'cardNo.required' => 'Card No or Trans ID field is required',
'totalPaid.required' => 'Enter The Amount.',
'idBank.required' => 'Bank must be selected',
'chequeDate.required' => 'Cheque / DD Date must be filled.',
'chequeNo.required' => 'Cheque / DD No. must be filled.'
];
$this->validate($request, $rules, $messages);
$penaltyAmount = 0;
$total_paid = 0;
$isSuccessful = 0;
$excessAmount = 0;
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$total_paid = $request->totalPaid;
} else {
$total_paid = $request->amount;
}
$payableAmount = $request->payable;
//Check Bounce fine
$chqbounce = \App\BusFailedTransaction::where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where('status', '=', 'Bounced')
->where('chqFineStatus', '=', '0')
->get();
if (isset($chqbounce)) {
foreach ($chqbounce as $chqFine)
$penaltyAmount = $penaltyAmount + $chqFine->chequeBounceCharge;
}
//Check if excess amount exists
$student_transaction = DB::table('bus_transaction')
->select('idBusTransaction')
->where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->get()->toArray();
$excessIds = array();
foreach ($student_transaction as $transaction)
array_push($excessIds, $transaction->idBusTransaction);
$excess_transaction = DB::table('bus_excess_transaction')
->whereIn('idBusTransaction', $excessIds)
->where('isActive', '=', 'Y')
->orderBy('idBusTransaction', 'desc')->first();
if ((count($request->selectedHeaders) == '1') && $total_paid < $payableAmount) {
$isSuccessful = $this->storeLesserTransaction($request, $penaltyAmount, $excess_transaction);
} else {
$lesser_transaction = DB::table('bus_lesser_transaction')
->join('bus_lesser_transaction_details', 'bus_lesser_transaction_details.idBusLesserTransaction', '=', 'bus_lesser_transaction.idBusLesserTransaction')
->where('bus_lesser_transaction.idStudent', '=', $request->idStudent)
->where('bus_lesser_transaction.idFinancialYear', '=', $request->idFinancialYear)
->whereIn('idBusFeehead', $request->selectedHeaders)
->where(function($query) {
$query->whereNull('bus_lesser_transaction.status');
$query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
$query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
$query->orWhere('bus_lesser_transaction.status', '=', 'Success');
})
->select(DB::raw('SUM(totalPaid) as totalPaid'))
->first();
if ((count($request->selectedHeaders) == '1') && $total_paid == $payableAmount && $lesser_transaction->totalPaid > 0) {
$isSuccessful = $this->storeLesserTransaction($request, $penaltyAmount, $excess_transaction);
} else if ($lesser_transaction->totalPaid > 0) {
flash('Fees cannot been submitted because one selected header belongs to lesser transaction !!');
if ($request->ajax()) {
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}
} else {
$isSuccessful = $this->storeSuccessTransaction($request, $penaltyAmount, $excess_transaction);
}
}
if ($isSuccessful == 1) {
if (isset($chqbounce)) {
foreach ($chqbounce as $chqFine) {
$chqFine->chqFineStatus = 1;
$chqFine->update();
}
}
if ($excess_transaction) {
$this->addAccessTransaction($excess_transaction->excessAmount, $excess_transaction->idBusExcessTransaction, 1, 0);
}
flash('Fees has been submitted successfully!!');
if ($request->ajax()) {
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}
} else {
flash('Fees has not been submitted successfully!!');
if ($request->ajax()) {
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}
}
}
public function storeLesserTransaction(Request $request, $penaltyAmount, $excess_transaction) {
$stdtransaction = new \App\BusLesserTransaction();
$stdtransaction->fill($request->all());
if ($request->has('paymentDate') && $request->paymentDate != null) {
$stdtransaction->paymentDate = $request->paymentDate;
} else {
$stdtransaction->paymentDate = today_date();
}
if($request->has('remarks')){
$stdtransaction->remarks = $request->remarks;
}
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
$stdtransaction->additionalAmount = $request->additionalAmount;
}
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
if ($excess_transaction) {
$stdtransaction->totalPaid = $request->totalPaid + $excess_transaction->excessAmount;
$request->totalPaid = $stdtransaction->totalPaid;
$stdtransaction->excessAmountUsed = $excess_transaction->excessAmount;
$stdtransaction->idBusExcessTransaction = $excess_transaction->idBusExcessTransaction;
} else
$stdtransaction->totalPaid = $request->totalPaid;
} else {
if ($excess_transaction) {
$stdtransaction->totalPaid = $request->amount +
$excess_transaction->excessAmount;
$request->totalPaid = $stdtransaction->totalPaid;
$stdtransaction->excessAmountUsed = $excess_transaction->excessAmount;
$stdtransaction->idBusExcessTransaction = $excess_transaction->idBusExcessTransaction;
} else
{
$stdtransaction->totalPaid = $request->amount;
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
{
$stdtransaction->totalPaid = $request->amount - $request->additionalAmount;
}
}
}
$stdtransaction->status = 'In-Process';
}
$next_receiptno = next_receiptno();
$stdtransaction->receiptNo = 'SFP000' . $next_receiptno;
$stdtransaction->idSchool = Auth::guard('school')->user()->idSchool;
$stdtransaction->penaltyAmount = $penaltyAmount;
$stdtransaction->fine = 0;
$stdtransaction->discount = 0;
$stdtransaction->created_by = Auth::guard('school')->user()->idSchoolUser;
$stdtransaction->save();
foreach ($request->selectedHeaders as $key => $var) {
if ($this->storeLesserDetailsTransaction($request, $stdtransaction->idBusLesserTransaction, $var) == 1)
return 1;
}
return 0;
}
public function storeLesserDetailsTransaction(Request $request, $idBusLesserTransaction, $feeHeaderId) {
$stepDiscount = 0;
$stepFine = 0;
$headerObject = \App\BusFeehead::where('idBusFeehead', '=', $feeHeaderId)->first()->toArray();
$date = Carbon::parse($headerObject['toDate']);
if ($request->has('paymentDate') && $request->paymentDate != null) {
$now = Carbon::parse($request->paymentDate);
}else{
$now = Carbon::now();
}
$diff = $date->diffInDays($now, false);
if ($diff > 0) {
if ($headerObject['fine'] != null && $headerObject['fine'] != 0.00) {
$stepFine = ( $headerObject['fine'] * $diff);
} else
if ($headerObject['flatFine'] != null) {
if(Auth::guard('school')->user()->idSchool == 25){
$student = \App\AdmEntry::where('idStudent', $request->idStudent)->first();
if ($request->has('paymentDate') && $request->paymentDate != null) {
$headerObject['paymentDate'] = $request->paymentDate;
}
$calculatedFine = PaymentCalculation::calculateFine($headerObject,$student);
$fetchFine = PaymentCalculation::fetchFineTransaction($headerObject['idBusFeehead'],$student);
if( $calculatedFine > $fetchFine)
$stepFine = $calculatedFine - $fetchFine;
else $stepFine = 0;
}else
$stepFine = $stepFine + $headerObject['flatFine'];
}
}
$discountfees = DB::table('busfee_discounts')->where('idFinancialYear', '=', $request->idFinancialYear)->where('idStudent', '=', $request->idStudent)->where('idBusFeehead', '=', $headerObject['idBusFeehead'])->where('isActive', 'Y')->get();
if (isset($discountfees)) {
foreach ($discountfees as $discounts) {
$stepDiscount = $stepDiscount + $discounts->amount;
}
}
if ($this->isLesserHeader($request, $idBusLesserTransaction, $feeHeaderId, $stepFine) == 0) {
$stdtransaction_detail = new \App\BusLesserTransactionDetail();
$stdtransaction_detail->idStudent = $request->idStudent;
$stdtransaction_detail->idBusLesserTransaction = $idBusLesserTransaction;
$stdtransaction_detail->idBusFeehead = $feeHeaderId;
$stdtransaction_detail->created_by = Auth::guard('school')->user()->idSchoolUser;
if ($request->has('paymentDate') && $request->paymentDate != null) {
$stdtransaction_detail->paymentDate = $request->paymentDate;
} else {
$stdtransaction_detail->paymentDate = today_date();
}
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$stdtransaction_detail->amountPaid = $request->totalPaid;
} else {
$stdtransaction_detail->amountPaid = $request->amount;
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
{
$stdtransaction_detail->amountPaid = $request->amount - $request->additionalAmount;
}
}
$stdtransaction_detail->status = 'In-Process';
}
$stdtransaction_detail->fine = $stepFine;
$stdtransaction_detail->discount = $stepDiscount;
$stdtransaction_detail->save();
}
return 1;
}
public function isLesserHeader(Request $request, $idBusLesserTransaction, $feeHeaderID, $fine) {
$lesser_transaction = DB::table('bus_lesser_transaction')
->join('bus_lesser_transaction_details', 'bus_lesser_transaction.idBusLesserTransaction', '=', 'bus_lesser_transaction.idBusLesserTransaction')
->where('bus_lesser_transaction.idStudent', '=', $request->idStudent)
->where('bus_lesser_transaction.idFinancialYear', '=', $request->idFinancialYear)
->whereIn('idBusFeehead', $request->selectedHeaders)
->where(function($query) {
$query->whereNull('bus_lesser_transaction.status');
$query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
$query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
$query->orWhere('bus_lesser_transaction.status', '=', 'Success');
})
->select(DB::raw('SUM(totalPaid) as totalPaid'), DB::raw('SUM(bus_lesser_transaction_details.fine) as fine'))
->first();
if ($lesser_transaction->totalPaid > 0) {
$stdtransaction_detail = new \App\BusLesserTransactionDetail();
$stdtransaction_detail->idStudent = $request->idStudent;
$stdtransaction_detail->idBusLesserTransaction = $idBusLesserTransaction;
$stdtransaction_detail->idBusFeehead = $feeHeaderID;
$stdtransaction_detail->created_by = Auth::guard('school')->user()->idSchoolUser;
if ($request->has('paymentDate') && $request->paymentDate != null) {
$stdtransaction_detail->paymentDate = $request->paymentDate;
} else {
$stdtransaction_detail->paymentDate = today_date();
}
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$stdtransaction_detail->amountPaid = $request->totalPaid;
} else {
$stdtransaction_detail->amountPaid = $request->amount;
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
{
$stdtransaction_detail->amountPaid = $request->amount - $request->additionalAmount;
}
}
$stdtransaction_detail->status = 'In-Process';
}
if ($lesser_transaction->fine == $fine)
$stdtransaction_detail->fine = 0;
else
$stdtransaction_detail->fine = $fine - $lesser_transaction->fine;
$stdtransaction_detail->discount = 0;
$stdtransaction_detail->save();
return 1;
}else {
return 0;
}
}
//
public function addAccessTransaction($excessAmount, $idTransaction, $flag, $isCheque) {
if ($flag == 1) {
$excess = \App\BusExcessTransaction::where('idBusExcessTransaction', '=', $idTransaction)->first(); //idTransaction is the idBusExcessTransaction in excess table
$excess->isActive = 'N';
$excess->update();
} else {
$excess = new \App\BusExcessTransaction();
$excess->idBusTransaction = $idTransaction;
if ($isCheque == 1)
$excess->isActive = 'P';
$excess->created_by = Auth::guard('school')->user()->idSchoolUser;
$excess->excessAmount = $excessAmount;
$excess->save();
}
}
public function storeSuccessTransaction(Request $request, $penaltyAmount, $excess_transaction) {
$total_paid = 0;
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$total_paid = $request->totalPaid;
} else {
$total_paid = $request->amount;
}
$excessAmount = $total_paid - $request->payable;
$stdtransaction = new \App\BusTransaction();
$stdtransaction->fill($request->all());
if ($request->has('paymentDate') && $request->paymentDate != null) {
$stdtransaction->paymentDate = $request->paymentDate;
} else {
$stdtransaction->paymentDate = today_date();
}
if($request->has('remarks')){
$stdtransaction->remarks = $request->remarks;
}
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
$stdtransaction->additionalAmount = $request->additionalAmount;
}
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$stdtransaction->totalPaid = $total_paid;
} else {
$stdtransaction->totalPaid = $total_paid;
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
{
$stdtransaction->totalPaid = $total_paid - $request->additionalAmount;
}
}
$stdtransaction->status = 'In-Process';
}
$next_receiptno = next_receiptno();
$stdtransaction->receiptNo = 'SFP000' . $next_receiptno;
$stdtransaction->idSchool = Auth::guard('school')->user()->idSchool;
$stdtransaction->penaltyAmount = $penaltyAmount;
$stdtransaction->fine = 0;
$stdtransaction->discount = 0;
if ($excess_transaction) {
$stdtransaction->excessAmountUsed = $excess_transaction->excessAmount;
$stdtransaction->idBusExcessTransaction = $excess_transaction->idBusExcessTransaction;
}
$stdtransaction->created_by = Auth::guard('school')->user()->idSchoolUser;
$stdtransaction->save();
if ($excessAmount > 0) {
if ($request->paymentMode == 'Cheque')
$this->addAccessTransaction($excessAmount, $stdtransaction->idBusTransaction, 0, 1);
else
$this->addAccessTransaction($excessAmount, $stdtransaction->idBusTransaction, 0, 0);
}
return $this->storeDetailsTransaction($request, $stdtransaction, $excess_transaction);
}
public function storeDetailsTransaction(Request $request, $stdtransaction, $excess_transaction) {
$totalFine = 0;
$totalAmount = 0;
$totalDiscount = 0;
foreach ($request->selectedHeaders as $key => $var) {
$stepFine = 0;
$stepDiscount = 0;
$stepAmount = 0;
$headerObject = \App\BusFeehead::where('idBusFeehead', '=', $var)->first()->toArray();
$date = Carbon::parse($headerObject['toDate']);
if ($request->has('paymentDate') && $request->paymentDate != null) {
$now = Carbon::parse($request->paymentDate);
}else{
$now = Carbon::now();
}
$diff = $date->diffInDays($now, false);
if ($diff > 0) {
if ($headerObject['fine'] != null && $headerObject['fine'] != 0.00) {
$stepFine = ( $headerObject['fine'] * $diff);
} else
if ($headerObject['flatFine'] != null) {
if(Auth::guard('school')->user()->idSchool == 25){
if($now->format('M') != $date->format('M')){
$now->addMonth();
$months = $now->diffInMonths($date);
if($months > 0){
$stepFine = $stepFine + ($headerObject['flatFine'] * $months);
}else
$stepFine = $stepFine + $headerObject['flatFine'];
}else $stepFine = $stepFine + $headerObject['flatFine'];
}else
$stepFine = $stepFine + $headerObject['flatFine'];
}
}
$discountfees = DB::table('busfee_discounts')->where('idFinancialYear', '=', $request->idFinancialYear)->where('idStudent', '=', $request->idStudent)->where('idBusFeehead', '=', $headerObject['idBusFeehead'])->where('isActive', 'Y')->get();
if (isset($discountfees)) {
foreach ($discountfees as $discounts) {
$stepDiscount = $stepDiscount + $discounts->amount;
}
}
$stepAmount = ( $headerObject['amount'] + $stepFine );
$stepAmount = $stepAmount - $stepDiscount;
$stdtransaction_detail = new \App\BusTransactionDetail();
$stdtransaction_detail->idStudent = $request->idStudent;
$stdtransaction_detail->idBusTransaction = $stdtransaction->idBusTransaction;
$stdtransaction_detail->idBusFeehead = $var;
if ($request->has('paymentDate') && $request->paymentDate != null) {
$stdtransaction_detail->paymentDate = $request->paymentDate;
} else {
$stdtransaction_detail->paymentDate = today_date();
}
$stdtransaction_detail->created_by = Auth::guard('school')->user()->idSchoolUser;
$stdtransaction_detail->amountPaid = $stepAmount;
$stdtransaction_detail->fine = $stepFine;
$stdtransaction_detail->discount = $stepDiscount;
if ($request->paymentMode == 'Cheque' || $request->paymentMode == 'DD') {
$stdtransaction_detail->status = 'In-Process';
}
$stdtransaction_detail->save();
$totalAmount = $totalAmount + ( $headerObject['amount'] + $stepFine );
$totalAmount = $totalAmount - $stepDiscount;
$totalDiscount = $totalDiscount + $stepDiscount;
$totalFine = $totalFine + $stepFine;
}
$stdtransaction->totalPaid = $totalAmount;
$stdtransaction->discount = $totalDiscount;
$stdtransaction->fine = $totalFine;
if ($request->payable == 0) {
$excessAmount = $excess_transaction->excessAmount - $totalAmount;
if ($excessAmount > 0) {
$this->addAccessTransaction($excessAmount, $stdtransaction->idBusTransaction, 0, 0);
}
$stdtransaction->excessAmountUsed = $totalAmount;
$stdtransaction->idBusExcessTransaction = $excess_transaction->idBusExcessTransaction;
}
$stdtransaction->update();
return 1;
}
public function addZeroAmountTransaction(Request $request, $penaltyAmount, $excess_transaction) {
$total_paid = 0;
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$total_paid = $request->totalPaid;
} else {
$total_paid = $request->amount;
}
if ($excess_transaction) {
$total_paid = $excess_transaction->excessAmount;
}
$stdtransaction = new \App\BusTransaction();
$stdtransaction->fill($request->all());
$stdtransaction->created_by = Auth::guard('school')->user()->idSchoolUser;
if ($request->has('paymentDate') && $request->paymentDate != null) {
$stdtransaction->paymentDate = $request->paymentDate;
} else {
$stdtransaction->paymentDate = today_date();
}
if($request->has('remarks')){
$stdtransaction->remarks = $request->remarks;
}
if($request->has('additionalAmount')){
if($request->additionalAmount != null)
$stdtransaction->additionalAmount = $request->additionalAmount;
}
if ($request->paymentMode == 'Cash' || $request->paymentMode == 'Card' || $request->paymentMode == 'Online' || $request->paymentMode == 'IMPS') {
$stdtransaction->totalPaid = $total_paid;
} else {
$stdtransaction->totalPaid = $total_paid;
$stdtransaction->status = 'In-Process';
}
$next_receiptno = next_receiptno();
$stdtransaction->receiptNo = 'SFP000' . $next_receiptno;
$stdtransaction->idSchool = Auth::guard('school')->user()->idSchool;
$stdtransaction->penaltyAmount = $penaltyAmount;
$stdtransaction->fine = 0;
$stdtransaction->discount = 0;
$stdtransaction->save();
return $this->storeDetailsTransaction($request, $stdtransaction);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) {
//
}
public function fetchRoyalBusFee($student,$stdtransport,$request){
$lesser_transaction = [];
$feeheads = [];
$feetotal = 0;
$plan = '';
$prevaccess_fee = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $student->idStudent)
->where('idFinancialYear', '=', Session::get('idFinancialYear'))
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
$paidfees_tot = \App\BusTransaction::where('idStudent', '=', $student->idStudent)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('idFinancialYear', '=', Session::get('idFinancialYear'))
->select('paymentMode', 'paymentDate', 'idBusTransaction', DB::raw('SUM(totalPaid) as totalPaid'), DB::raw('SUM(discount) as discount'), DB::raw('SUM(fine) as fine'), DB::raw('SUM(penaltyAmount) as penaltyAmount'))->first();
$paidfees = \App\BusTransaction::where('idStudent', '=', $student->idStudent)
->where('idFinancialYear', '=', Session::get('idFinancialYear'))
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'Success');
$query->orWhere('status', '=', 'Bounced');
})->get();
$lesserfees = \App\BusLesserTransaction::where('idStudent', '=', $student->idStudent)
->where('idFinancialYear', '=', Session::get('idFinancialYear'))
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'Success');
$query->orWhere('status', '=', 'Bounced');
})->get();
if($paidfees->count() > 0){
foreach($paidfees as $paidfee){
if($paidfee->status != "Bounced"){
$transactions = \App\BusTransactionDetail::where('idBusTransaction','=',$paidfee->idBusTransaction)->get();
foreach($transactions as $transaction){
$header = \DB::table('busfeeheads')->where('idBusFeehead',$transaction->idBusFeehead)->first();
if (str_contains($header->feeheadLabel, 'Plan A')) {
$plan = 'Plan A';
break;
}else if (str_contains($header->feeheadLabel, 'Plan B')) {
$plan = 'Plan B';
break;
}else if (str_contains($header->feeheadLabel, 'Plan C')) {
$plan = 'Plan C';
break;
}
}
}
if($plan != '') break;
}
}
if($plan == '')
if($lesserfees->count() > 0){
foreach($lesserfees as $paidfee){
$transactions = \App\BusLesserTransactionDetail::where('idBusLesserTransaction','=',$paidfee->idBusLesserTransaction)->get();
foreach($transactions as $transaction){
$header = \DB::table('busfeeheads')->where('idBusFeehead',$transaction->idBusFeehead)->first();
if (str_contains($header->feeheadLabel, 'Plan A')) {
$plan = 'Plan A';
break;
}else if (str_contains($header->feeheadLabel, 'Plan B')) {
$plan = 'Plan B';
break;
}else if (str_contains($header->feeheadLabel, 'Plan C')) {
$plan = 'Plan C';
break;
}
}
if($plan != '') break;
}
}
$type = '';
if($request->get('paymode') != null && $plan == ''){
$type = $request->get('paymode');
$feeheads = \DB::table('busfeeheads')->where('idStop', '=', $stdtransport->idStop)
->where('idRoute', '=', $stdtransport->idRoute)
->where('feeheadLabel', 'LIKE', $type.'%')
->orderBy('toDate')
->get();
$feetotal = $feeheads->sum('amount');
$feeheader_ids = $feeheads->pluck('idBusFeehead')->toArray();
$lesser_transaction = DB::table('bus_lesser_transaction')
->join('bus_lesser_transaction_details', 'bus_lesser_transaction.idBusLesserTransaction', '=', 'bus_lesser_transaction_details.idBusLesserTransaction')
->where('bus_lesser_transaction.idStudent', '=', $student->idStudent)
->where('bus_lesser_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
->whereIn('idBusFeehead', $feeheader_ids)
->where(function($query) {
$query->whereNull('bus_lesser_transaction.status');
$query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
$query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
$query->orWhere('bus_lesser_transaction.status', '=', 'Success');
})
->select(DB::raw('SUM(totalPaid) as totalPaid'),DB::raw('SUM(bus_lesser_transaction_details.discount) as discount'))
->first();
}else if($plan != ''){
$feeheads = \DB::table('busfeeheads')->where('idStop', '=', $stdtransport->idStop)
->where('idRoute', '=', $stdtransport->idRoute)
->where('feeheadLabel', 'LIKE', $plan.'%')
->orderBy('toDate')
->get();
$feetotal = $feeheads->sum('amount');
$feeheader_ids = $feeheads->pluck('idBusFeehead')->toArray();
$lesser_transaction = DB::table('bus_lesser_transaction')
->join('bus_lesser_transaction_details', 'bus_lesser_transaction_details.idBusLesserTransaction', '=', 'bus_lesser_transaction.idBusLesserTransaction')
->where('bus_lesser_transaction.idStudent', '=', $student->idStudent)
->where('bus_lesser_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
->whereIn('idBusFeehead', $feeheader_ids)
->where(function($query) {
$query->whereNull('bus_lesser_transaction.status');
$query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
$query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
$query->orWhere('bus_lesser_transaction.status', '=', 'Success');
})
->select(DB::raw('SUM(totalPaid) as totalPaid'),DB::raw('SUM(bus_lesser_transaction_details.discount) as discount'))
->first();
}
$feeData = PaymentCalculation::calculateBusFee($student,$request,$stdtransport);
$sessionPending = [];
$idStudentSession = null;
$isCollectionAllowed = "Y";
$fetchSession = \App\FinancialYear::where('idFinancialYear','<',$student->idFinancialYear)->where('idSchool', '=',$student->idSchool)->orderBy('idFinancialYear','DESC')->get();
if(count($fetchSession) > 0){
foreach($fetchSession as $var){
$studentSession = \App\AdmEntry::where('idSchool', '=', $student->idSchool)->where('idFinancialYear', '=', $var->idFinancialYear)->where('ecNo', '=', $student->ecNo)->where('isActive','Y')->first();
if($studentSession != null){
$sessionPending[$var->financialYearName] = PaymentCalculation::getOutstandingAmount($studentSession,$request);
}
}
}
return view('schools.buses.busfeedetails_royal', compact('isCollectionAllowed','sessionPending', 'stdtransport','feeData','lesserfees', 'lesser_transaction', 'feetotal', 'paidfees_tot', 'student', 'paidfees', 'feeheads', 'prevaccess_fee','plan','type'));
}
public function busFeeDetails($id,Request $request) {
$stdtransport = \App\StudentTransport::where('idStdTransport', '=', $id)->where('idFinancialYear','=', Session::get('idFinancialYear'))->first();
$student = \App\AdmEntry::where('idStudent', '=', $stdtransport->idStudent)->first();
//dd( $student);
if($student->idSchool == 25){
return $this->fetchRoyalBusFee($student,$stdtransport,$request);
}
$feeheads = \App\BusFeehead::where('idStop', '=', $stdtransport->idStop)
->where('idRoute', '=', $stdtransport->idRoute)
->where('idFinancialYear','=', Session::get('idFinancialYear'))
->get();
$feeheader_ids = $feeheads->pluck('idBusFeehead')->toArray();
$feetotal = $feeheads->sum('amount');
$prevaccess_fee = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $student->idStudent)
->where('idFinancialYear', '=', $student->idFinancialYear)
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
$lesser_transaction = DB::table('bus_lesser_transaction')
->join('bus_lesser_transaction_details', 'bus_lesser_transaction_details.idBusLesserTransaction', '=', 'bus_lesser_transaction.idBusLesserTransaction')
->where('bus_lesser_transaction.idStudent', '=', $student->idStudent)
->where('bus_lesser_transaction.idFinancialYear', '=', $student->idFinancialYear)
->whereIn('idBusFeehead', $feeheader_ids)
->where(function($query) {
$query->whereNull('bus_lesser_transaction.status');
$query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
$query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
$query->orWhere('bus_lesser_transaction.status', '=', 'Success');
})
->select(DB::raw('SUM(totalPaid) as totalPaid'))
->first();
$paidfees_tot = \App\BusTransaction::where('idStudent', '=', $student->idStudent)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->select('paymentMode', 'paymentDate', 'idBusTransaction', DB::raw('SUM(totalPaid) as totalPaid'), DB::raw('SUM(discount) as discount'), DB::raw('SUM(fine) as fine'), DB::raw('SUM(penaltyAmount) as penaltyAmount'))->first();
$paidfees = \App\BusTransaction::where('idStudent', '=', $student->idStudent)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'Success');
})->get();
$lesserfees = \App\BusLesserTransaction::where('idStudent', '=', $student->idStudent)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'Success');
})->get();
return view('schools.buses.busfeedetails', compact('lesser_transaction', 'prevaccess_fee', 'lesserfees', 'stdtransport', 'feetotal', 'paidfees_tot', 'student', 'paidfees', 'feeheads'));
}
public function getChequeList(Request $request) {
$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();
$feeHeaders = \App\BusFeehead::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->groupBy('feeheadName')
->orderBy('toDate')->get()->pluck('feeheadName', 'idBusFeehead')->toArray();
$fys = ['' => '--Select Academic Year--'] + \App\FinancialYear::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('idFinancialYear')->get()->pluck('financialYearName', 'idFinancialYear')->toArray();
$chequelist = DB::table('bus_transaction')
->join('banks', 'bus_transaction.idBank', '=', 'banks.idBank')
->join('students', 'bus_transaction.idStudent', '=', 'students.idStudent')
->join('classes', 'students.idClass', '=', 'classes.idClass')
->join('sections', 'students.idSection', '=', 'sections.idSection')
->leftJoin('school_users', 'bus_transaction.created_by', '=', 'school_users.idSchoolUser')
->select('bus_transaction.*','banks.*','school_users.name','students.*','classes.*','sections.*')
->where('bus_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
->where('bus_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool);
$lesserchequelist = DB::table('bus_lesser_transaction')
->join('banks', 'bus_lesser_transaction.idBank', '=', 'banks.idBank')
->join('students', 'bus_lesser_transaction.idStudent', '=', 'students.idStudent')
->join('classes', 'students.idClass', '=', 'classes.idClass')
->join('sections', 'students.idSection', '=', 'sections.idSection')
->leftJoin('school_users', 'bus_lesser_transaction.created_by', '=', 'school_users.idSchoolUser')
->select('bus_lesser_transaction.*','banks.*','school_users.name','students.*','classes.*','sections.*')
->where('bus_lesser_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
->where('bus_lesser_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool);
if ($request->has('feeHeaders') && count($request->feeHeaders) > 0) {
$transactionIds = DB::table('bus_transaction_details')->whereIn('bus_transaction_details.idBusFeehead', $request->feeHeaders)->get()->pluck('idBusTransaction')->toArray();
$chequelist = $chequelist->whereIn('bus_transaction.idBusTransaction', $transactionIds);
$transactionLessIds = DB::table('bus_lesser_transaction_details')->whereIn('bus_lesser_transaction_details.idBusFeehead', $request->feeHeaders)->get()->pluck('idBusLesserTransaction')->toArray();
$lesserchequelist = $lesserchequelist->whereIn('bus_lesser_transaction.idBusLesserTransaction', $transactionLessIds);
}
if ($request->toDate != null && $request->fromDate != null) {
$chequelist = $chequelist->whereBetween('paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')]);
$lesserchequelist = $lesserchequelist->whereBetween('paymentDate', [$from_date->format('Y-m-d'), $to_date->format('Y-m-d')]);
} else if ($request->has('fromDate') && $request->fromDate != null) {
$chequelist = $chequelist->whereBetween('paymentDate', [$from_date->format('Y-m-d'), $today_date]);
$lesserchequelist = $lesserchequelist->whereBetween('paymentDate', [$from_date->format('Y-m-d'), $today_date]);
} else if ($request->has('toDate') && $request->toDate != null) {
$chequelist = $chequelist->whereDate('paymentDate', '<=', $to_date);
$lesserchequelist = $lesserchequelist->whereDate('paymentDate', '<=', $to_date);
}
if ($request->has('sections') && count($request->sections) > 0) {
$chequelist = $chequelist->whereIn('students.idSection', $request->sections);
$lesserchequelist = $lesserchequelist->whereIn('students.idSection', $request->sections);
} else if ($request->has('classes') && count($request->classes) > 0) {
$chequelist = $chequelist->whereIn('students.idClass', $request->classes);
$lesserchequelist = $lesserchequelist->whereIn('students.idClass', $request->classes);
}
if ($request->has('paymentMode')) {
if ($request->paymentMode == "All"){
$lesserchequelist = $lesserchequelist->get();
$chequelist = $chequelist->get();
}
else
{
$chequelist = $chequelist->where('paymentMode', '=', $request->paymentMode)->get();
$lesserchequelist = $lesserchequelist->where('paymentMode', '=', $request->paymentMode)->get();
}
}else {
$lesserchequelist = $lesserchequelist->get();
$chequelist = $chequelist->get();
}
return view('schools.buses.chequelist', compact('chequelist', 'classes', 'fys','lesserchequelist','feeHeaders'));
}
public function updateCheque(Request $request) {
$acessAmount = 0;
if ($request->has('idBusTransaction')) {
if ($request->status == 'Bounced') {
$stdcheque = \App\BusTransaction::where('idBusTransaction', '=', $request->idBusTransaction)->first();
$stdcheque->status = 'Bounced';
$acessAmount = $stdcheque->excessAmountUsed;
$stdcheque->chequeBounceCharge = $request->chequeBounceCharge;
DB::beginTransaction();
$stdcheque->update();
$stdtransaction_dets = \App\BusTransactionDetail::where('idBusTransaction', '=', $request->idBusTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusTransactionDetail::where('idBusTransactionDetail', '=', $var->idBusTransactionDetail)->first();
$det->status = 'Bounced';
$det->update();
}
DB::commit();
if ($acessAmount > 0) {
$excess_transaction = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
if (isset($excess_transaction))
$acessAmount = $acessAmount + $excess_transaction->excessAmount;
$excess = new \App\BusExcessTransaction();
$excess->idBusTransaction = $request->idBusTransaction;
$excess->excessAmount = $acessAmount;
$excess->remarks = "Access amount has been reverted to this transaction and previous access amount has been added";
$excess->save();
}
} else if ($request->status == 'Cleared') {
$stdcheque = \App\BusTransaction::where('idBusTransaction', '=', $request->idBusTransaction)->first();
$stdcheque->status = 'Cleared';
DB::beginTransaction();
$stdcheque->update();
$stdtransaction_dets = \App\BusTransactionDetail::where('idBusTransaction', '=', $request->idBusTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusTransactionDetail::where('idBusTransactionDetail', '=', $var->idBusTransactionDetail)->first();
$det->status = 'Cleared';
$det->update();
}
DB::commit();
$excess_transaction = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_excess_transaction.idBusTransaction')
->where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
if (isset($excess_transaction)) {
$acessAmount = $acessAmount + $excess_transaction->excessAmount;
$excess_pending_transaction = DB::table('bus_excess_transaction')
->where('idBusTransaction', $request->idBusTransaction)
->where('isActive', 'P')
->first();
if ($excess_pending_transaction) {
$acessAmount = $acessAmount + $excess_pending_transaction->excessAmount;
DB::table('bus_excess_transaction')
->where('idBusTransaction', $request->idBusTransaction)
->update(['isActive' => 'N']);
}
$excess = new \App\BusExcessTransaction();
$excess->idBusTransaction = $request->idBusTransaction;
$excess->excessAmount = $acessAmount;
$excess->remarks = "Access amount has been adjusted to this transaction";
$excess->save();
} else {
DB::table('bus_excess_transaction')
->where('idBusTransaction', $request->idBusTransaction)
->update(['isActive' => 'Y', 'remarks' => 'Access amount active on cheque clearance']);
}
} else {
$stdcheque = \App\BusTransaction::where('idBusTransaction', '=', $request->idBusTransaction)->first();
$stdcheque->status = 'In-Process';
DB::beginTransaction();
$stdcheque->update();
$stdtransaction_dets = \App\BusTransactionDetail::where('idBusTransaction', '=', $request->idBusTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusTransactionDetail::where('idBusTransactionDetail', '=', $var->idBusTransactionDetail)->first();
$det->status = 'In-Process';
$det->update();
}
DB::commit();
}
} else {
if ($request->status == 'Bounced') {
$acessAmount = 0;
$stdcheque = \App\BusLesserTransaction::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->first();
$stdcheque->status = 'Bounced';
$acessAmount = $stdcheque->excessAmountUsed;
$stdcheque->chequeBounceCharge = $request->chequeBounceCharge;
DB::beginTransaction();
$stdcheque->update();
$stdtransaction_dets = \App\BusLesserTransactionDetail::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusLesserTransactionDetail::where('idBusLessTransactionDet', '=', $var->idBusLessTransactionDet)->first();
$det->status = 'Bounced';
$det->update();
}
DB::commit();
if ($acessAmount > 0) {
$excess_transaction = DB::table('bus_excess_transaction')
->join('bus_lesser_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
if (isset($excess_transaction))
$acessAmount = $acessAmount + $excess_transaction->excessAmount;
$excess = new \App\BusExcessTransaction();
$excess->idBusTransaction = $request->idBusTransaction;
$excess->excessAmount = $acessAmount;
$excess->remarks = "Access amount has been reverted to this transaction and previous access amount has been added";
$excess->save();
}
} else if ($request->status == 'Cleared') {
$stdcheque = \App\BusLesserTransaction::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->first();
$stdcheque->status = 'Cleared';
DB::beginTransaction();
$stdcheque->update();
$stdtransaction_dets = \App\BusLesserTransactionDetail::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusLesserTransactionDetail::where('idBusLessTransactionDet', '=', $var->idBusLessTransactionDet)->first();
$det->status = 'Cleared';
$det->update();
}
DB::commit();
$excess_transaction = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
if (isset($excess_transaction)) {
$acessAmount = $acessAmount + $excess_transaction->excessAmount;
$excess_pending_transaction = DB::table('bus_excess_transaction')
->where('idBusTransaction', $request->idBusTransaction)
->where('isActive', 'P')
->first();
if ($excess_pending_transaction) {
$acessAmount = $acessAmount + $excess_pending_transaction->excessAmount;
DB::table('bus_excess_transaction')
->where('idBusTransaction', $request->idBusTransaction)
->update(['isActive' => 'N']);
}
$excess = new \App\BusExcessTransaction();
$excess->idBusTransaction = $request->idBusTransaction;
$excess->excessAmount = $acessAmount;
$excess->remarks = "Access amount has been adjusted to this transaction";
$excess->save();
} else {
DB::table('bus_excess_transaction')
->where('idBusTransaction', $request->idBusTransaction)
->update(['isActive' => 'Y', 'remarks' => 'Access amount active on cheque clearance']);
}
} else {
$stdcheque = \App\BusLesserTransaction::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->first();
$stdcheque->status = 'In-Process';
DB::beginTransaction();
$stdcheque->update();
$stdtransaction_dets = \App\BusLesserTransactionDetail::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusLesserTransactionDetail::where('idBusLessTransactionDet', '=', $var->idBusLessTransactionDet)->first();
$det->status = 'In-Process';
$det->update();
}
DB::commit();
}
}
flash('Status has been updated Successfully !!');
return redirect('school/tpcheques');
}
public function printReceipt($id) {
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$transaction = \App\BusTransaction::where('idBusTransaction', '=', $id)->first();
$student = \App\AdmEntry::where('idStudent', '=', $transaction->idStudent)->first();
$stdtransport = \App\StudentTransport::where('idStudent', '=', $student->idStudent)->where('idFinancialYear', '=', Session::get('idFinancialYear'))->first();
$feeheads = \App\BusFeehead::where('idStop', '=', $stdtransport->idStop)
->orderBy('toDate')
->get();
$feetotal = $feeheads->sum('amount');
$pdf = PDF::loadView('schools.buses.print_receipt', ['margin_top' => 20], compact('transaction', 'school', 'student', 'feetotal'));
return $pdf->stream('feereceipt.pdf');
}
public function printLessPaidReceipt($id) {
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$transaction = \App\BusLesserTransaction::where('idBusLesserTransaction', '=', $id)->first();
$student = \App\AdmEntry::where('idStudent', '=', $transaction->idStudent)->first();
$stdtransport = \App\StudentTransport::where('idStudent', '=', $student->idStudent)->where('idFinancialYear', '=', Session::get('idFinancialYear'))->first();
$feeheads = \App\BusFeehead::where('idStop', '=', $stdtransport->idStop)
->orderBy('toDate')
->get();
$feetotal = $feeheads->sum('amount');
$pdf = PDF::loadView('schools.buses.print_lesseramt_receipt', ['margin_top' => 20], compact('transaction', 'school', 'student', 'feetotal'));
return $pdf->stream('feereceipt.pdf');
}
public function cancelReceipt($id) {
$transaction = \App\BusTransaction::where('idBusTransaction', '=', $id)->first();
$student = \App\AdmEntry::where('idStudent', '=', $transaction->idStudent)->first();
return view('schools.buses.cancelreceipt', compact('transaction', 'student'));
}
public function cancelLessPaidReceipt($id) {
$transaction = \App\BusLesserTransaction::where('idBusLesserTransaction', '=', $id)->first();
$student = \App\AdmEntry::where('idStudent', '=', $transaction->idStudent)->first();
return view('schools.buses.cancelreceipt', compact('transaction', 'student'));
}
public function receiptCancellation(Request $request) {
$rules = ['remarks' => 'required'];
$this->validate($request, $rules);
$acessAmount = 0;
if ($request->type == 'Full') {
$transaction = \App\BusTransaction::where('idBusTransaction', '=', $request->idBusTransaction)->first();
$acessAmount = $transaction->accessPaid;
DB::beginTransaction();
$transaction->status = 'Cancelled';
$transaction->remarks = $request->remarks;
$transaction->update();
\App\RollbackBusTransaction::insert($transaction->toArray());
$stdtransaction_dets = \App\BusTransactionDetail::where('idBusTransaction', '=', $request->idBusTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusTransactionDetail::where('idBusTransactionDetail', '=', $var->idBusTransactionDetail)->first();
$det->status = 'Cancelled';
$det->update();
unset($det->idBusTransactionDetail);
\App\RollbackBusTransactionDetails::insert($det->toArray());
}
DB::commit();
if ($acessAmount > 0) {
$excess_transaction = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $request->idStudent)
->where('idFinancialYear', '=', $request->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
if (isset($excess_transaction))
$acessAmount = $acessAmount + $excess_transaction->excessAmount;
$excess = new \App\BusExcessTransaction();
$excess->idBusTransaction = $request->idBusTransaction;
$excess->excessAmount = $acessAmount;
$excess->remarks = "Access amount has been reverted to this transaction and previous access amount has been added";
$excess->save();
}
} else {
$transaction = \App\BusLesserTransaction::where('idBusLesserTransaction', '=', $request->idBusLesserTransaction)->first();
$acessAmount = $transaction->accessPaid;
DB::beginTransaction();
$transaction->status = 'Cancelled';
$transaction->remarks = $request->remarks;
$transaction->update();
\App\RollbackBusTransaction::insert($transaction->toArray());
$stdtransaction_dets = \App\BusLesserTransactionDetail::where('idBusLesserTransaction', '=', $request->idBusTransaction)->get();
foreach ($stdtransaction_dets as $var) {
$det = \App\BusLesserTransactionDetail::where('idBusLessTransactionDet', '=', $var->idBusLessTransactionDet)->first();
$det->status = 'Cancelled';
$det->update();
unset($det->idBusLessTransactionDet);
\App\RollbackBusTransactionDetails::insert($det->toArray());
}
DB::commit();
// if ($acessAmount > 0) {
// $excess_transaction = DB::table('excess_transaction')
// ->join('lesser_transaction', 'excess_transaction.idLesserTransaction', '=', 'lesser_transaction.idLesserTransaction')
// ->where('idStudent', '=', $request->idStudent)
// ->where('idFinancialYear', '=', $request->idFinancialYear)
// ->where(function($query) {
// $query->whereNull('status');
// $query->orWhere('status', '=', 'Cleared');
// $query->orWhere('status', '=', 'In-Process');
// $query->orWhere('status', '=', 'Success');
// })
// ->where('excess_transaction.isActive', '=', 'Y')
// ->orderBy('excess_transaction.idLesserTransaction', 'desc')->first();
// if (isset($excess_transaction))
// $acessAmount = $acessAmount + $excess_transaction->excessAmount;
//
// $excess = new \App\Bus();
// $excess->idBusTransaction = $request->idBusTransaction;
// $excess->excessAmount = $acessAmount;
// $excess->remarks = "Access amount has been reverted to this transaction and previous access amount has been added";
// $excess->save();
// }
}
return redirect('school/tpcancelled-receipts');
}
public function getFeewiseData($id, $studentId,Request $request) {
$feeheader_ids = array_map('intval', explode(',', $id));
//return $feeheader_ids;
$student = \App\AdmEntry::where('idStudent', '=', $studentId)->first();
$chqbounce = \App\BusFailedTransaction::where('idStudent', '=', $student->idStudent)
->where('idFinancialYear', '=', $student->idFinancialYear)
->where('status', '=', 'Bounced')
->where('chqFineStatus', '=', '0')
->get();
$penaltyAmount = 0;
$amountDiscount = 0;
if (isset($chqbounce)) {
foreach ($chqbounce as $chqFine)
$penaltyAmount = $penaltyAmount + $chqFine->chequeBounceCharge;
}
$excess_transaction = DB::table('bus_excess_transaction')
->join('bus_transaction', 'bus_excess_transaction.idBusTransaction', '=', 'bus_transaction.idBusTransaction')
->where('idStudent', '=', $student->idStudent)
->where('idFinancialYear', '=', $student->idFinancialYear)
->where(function($query) {
$query->whereNull('status');
$query->orWhere('status', '=', 'Cleared');
$query->orWhere('status', '=', 'In-Process');
$query->orWhere('status', '=', 'Success');
})
->where('bus_excess_transaction.isActive', '=', 'Y')
->orderBy('bus_excess_transaction.idBusTransaction', 'desc')->first();
$excessAmount = 0;
if (isset($excess_transaction))
$excessAmount = $excess_transaction->excessAmount;
$selectedHeaders = \App\BusFeehead::whereIn('idBusFeehead', $feeheader_ids)->get();
$totalAmount = 0;
$lessPaid = 0;
$lesser_transaction = DB::table('bus_lesser_transaction')
->join('bus_lesser_transaction_details', 'bus_lesser_transaction_details.idBusLesserTransaction', '=', 'bus_lesser_transaction.idBusLesserTransaction')
->where('bus_lesser_transaction.idStudent', '=', $student->idStudent)
->where('bus_lesser_transaction.idFinancialYear', '=', $student->idFinancialYear)
->whereIn('idBusFeehead', $feeheader_ids)
->where(function($query) {
$query->whereNull('bus_lesser_transaction.status');
$query->orWhere('bus_lesser_transaction.status', '=', 'Cleared');
$query->orWhere('bus_lesser_transaction.status', '=', 'In-Process');
$query->orWhere('bus_lesser_transaction.status', '=', 'Success');
})
->select(DB::raw('SUM(totalPaid) as totalPaid'))
->first();
if (isset($lesser_transaction))
$lessPaid = $lesser_transaction->totalPaid;
for ($i = 0; $i < sizeof($selectedHeaders); $i++) {
$stepFine = 0;
$stepDiscount = 0;
$stepAmount = 0;
$headerObject = $selectedHeaders[$i];
$date = Carbon::parse($headerObject['toDate']);
$now = Carbon::now();
if($request->get('paydate') != null){
$now = Carbon::parse($request->get('paydate'));
}
$diff = $date->diffInDays($now, false);
if ($diff > 0) {
if ($headerObject['fine'] != null && $headerObject['fine'] != 0.00) {
$stepFine = ( $headerObject['fine'] * $diff);
}
else
if ($headerObject['flatFine'] != null) {
$stepFine = $stepFine + $headerObject['flatFine'];
}
}
$discountfees = DB::table('busfee_discounts')->where('idFinancialYear', '=', $student->idFinancialYear)->where('idStudent', '=', $student->idStudent)->where('idBusFeehead', '=', $headerObject['idBusFeehead'])->where('isActive', 'Y')->get();
if (isset($discountfees)) {
foreach ($discountfees as $discounts) {
$stepDiscount = $stepDiscount + $discounts->amount;
$amountDiscount = $amountDiscount + $stepDiscount;
}
}
$totalAmount = $totalAmount + ( $headerObject['amount'] + $stepFine );
$totalAmount = $totalAmount - $stepDiscount;
}
$totalAmount = $totalAmount + $penaltyAmount;
$totalAmount = $totalAmount - $lessPaid;
if ($totalAmount < $excessAmount)
return 0;
else
return $totalAmount - $excessAmount;
}
public function tempRecord() {
return view('schools.buses.temperature-record');
}
}
Copyright © 2021 -