Path : /var/www/html/usd_loan_system/app/Http/Controllers/ |
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
Current File : /var/www/html/usd_loan_system/app/Http/Controllers/SavingTransactionController.php |
<?php namespace App\Http\Controllers; use App\Helpers\GeneralHelper; use App\Models\JournalEntry; use App\Models\LoanRepaymentMethod; use App\Models\SavingsProductCharge; use App\Models\SavingTransaction; use Cartalyst\Sentinel\Laravel\Facades\Sentinel; use Barryvdh\DomPDF\Facade\Pdf; use Illuminate\Http\Request; use Laracasts\Flash\Flash; class SavingTransactionController extends Controller { public function __construct() { $this->middleware(['sentinel', 'branch']); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $data = SavingTransaction::where('branch_id', session('branch_id'))->where('reversal_type','none')->orderBy('id','desc')->get(); return view('savings_transaction.data', compact('data')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create($saving) { $repayment_methods = array(); foreach (LoanRepaymentMethod::orderBy('id','desc')->get() as $key) { $repayment_methods[$key->id] = $key->name; } return view('savings_transaction.create', compact('saving', 'repayment_methods')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request, $saving) { $savings_transaction = new SavingTransaction(); if ($request->type == "withdrawal" && GeneralHelper::savings_account_balance($saving->id) < $request->amount && $saving->savings_product->allow_overdraw == 0) { Flash::warning(translate('withdrawal_more_than_balance')); return redirect()->back()->withInput(); } $savings_transaction->user_id = Sentinel::getUser()->id; $savings_transaction->borrower_id = $saving->borrower_id; $savings_transaction->branch_id = session('branch_id'); $savings_transaction->payment_method_id = $request->payment_method_id; $savings_transaction->receipt = $request->receipt; $savings_transaction->savings_id = $saving->id; $savings_transaction->type = $request->type; $savings_transaction->reversible = 1; $savings_transaction->date = $request->date; $savings_transaction->time = $request->time; $date = explode('-', $request->date); $savings_transaction->year = $date[0]; $savings_transaction->month = $date[1]; $savings_transaction->notes = $request->notes; if ($request->type == "withdrawal") { $savings_transaction->debit = $request->amount; } if ($request->type == "deposit") { $savings_transaction->credit = $request->amount; } if ($request->type == "interest") { $savings_transaction->credit = $request->amount; } if ($request->type == "bank_fees") { $savings_transaction->debit = $request->amount; } $savings_transaction->save(); //make journal transactions if ($request->type == "deposit") { if (!empty($saving->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'deposit'; $journal->name = "Deposit"; $journal->savings_id = $saving->id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($saving->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'deposit'; $journal->name = "Deposit"; $journal->savings_id = $saving->id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } if ($request->type == "withdrawal") { if (!empty($saving->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'withdrawal'; $journal->name = "Withdrawal"; $journal->savings_id = $saving->id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($saving->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'withdrawal'; $journal->name = "Withdrawal"; $journal->savings_id = $saving->id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } //check for fees foreach (SavingsProductCharge::where('savings_product_id', $saving->savings_product_id)->get() as $tkey) { if (!empty($tkey->charge)) { //specified due date charge if ($tkey->charge->charge_type == "withdrawal_fee") { if ($tkey->charge->charge_option == "fixed") { $amount=$tkey->charge->amount; }else{ $amount=$tkey->charge->amount*$request->amount/100; } $savings_transaction = new SavingTransaction(); $savings_transaction->user_id = Sentinel::getUser()->id; $savings_transaction->borrower_id = $saving->borrower_id; $savings_transaction->branch_id = $saving->branch_id; $savings_transaction->savings_id = $saving->id; $savings_transaction->type = "bank_fees"; $savings_transaction->reversible = 1; $savings_transaction->date = date("Y-m-d"); $savings_transaction->time = date("H:i"); $date = explode('-', date("Y-m-d")); $savings_transaction->year = $date[0]; $savings_transaction->month = $date[1]; $savings_transaction->debit = $amount; $savings_transaction->save(); if (!empty($saving->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = date("Y-m-d"); $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'pay_charge'; $journal->name = "Charge"; $journal->savings_id = $saving->id; $journal->credit =$amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($saving->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = date("Y-m-d"); $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'pay_charge'; $journal->name = "Charge"; $journal->savings_id = $saving->id; $journal->debit = $amount; $journal->reference = $savings_transaction->id; $journal->save(); } } } } } if ($request->type == "bank_fees") { if (!empty($saving->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'pay_charge'; $journal->name = "Charge"; $journal->savings_id = $saving->id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($saving->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'pay_charge'; $journal->name = "Charge"; $journal->savings_id = $saving->id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } if ($request->type == "interest") { if (!empty($saving->savings_product->chart_expense_interest)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_expense_interest->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'interest'; $journal->name = "Savings Interest"; $journal->savings_id = $saving->id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($saving->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $saving->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'interest'; $journal->name = "Savings Interest"; $journal->savings_id = $saving->id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } Flash::success(translate('successfully_saved')); return redirect('saving/' . $saving->id . '/show'); } public function show($savings_transaction) { return view('savings_transaction.show', compact('savings_transaction')); } public function edit($savings_transaction) { $repayment_methods = array(); foreach (LoanRepaymentMethod::orderBy('id','desc')->get() as $key) { $repayment_methods[$key->id] = $key->name; } if ($savings_transaction->type == "withdrawal") { $amount = $savings_transaction->debit; } if ($savings_transaction->type == "deposit") { $amount = $savings_transaction->credit; } if ($savings_transaction->type == "interest") { $amount = $savings_transaction->credit; } return view('savings_transaction.edit', compact('savings_transaction', 'repayment_methods', 'amount')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $savings_transaction = SavingTransaction::find($id); $savings_transaction->reversible = 0; $savings_transaction->reversed = 1; $savings_transaction->reversal_type = "user"; if ($savings_transaction->debit > $savings_transaction->credit) { $savings_transaction->credit = $savings_transaction->debit; } else { $savings_transaction->debit = $savings_transaction->credit; } $savings_transaction->save(); //reverse journal transactions foreach (JournalEntry::where('reference', $id)->where('savings_id', $savings_transaction->savings_id)->get() as $key) { $journal = JournalEntry::find($key->id); if ($key->debit > $key->credit) { $journal->credit = $journal->debit; } else { $journal->debit = $journal->credit; } $journal->reversed = 1; $journal->save(); } $old = $savings_transaction; $savings_transaction = new SavingTransaction(); $savings_transaction->user_id = Sentinel::getUser()->id; $savings_transaction->borrower_id = $old->borrower_id; $savings_transaction->branch_id = session('branch_id'); $savings_transaction->payment_method_id = $request->payment_method_id; $savings_transaction->receipt = $request->receipt; $savings_transaction->savings_id = $old->savings_id; $savings_transaction->type = $old->type; $savings_transaction->reversible = 1; $savings_transaction->date = $request->date; $savings_transaction->time = $request->time; $date = explode('-', $request->date); $savings_transaction->year = $date[0]; $savings_transaction->month = $date[1]; $savings_transaction->notes = $request->notes; if ($old->type == "withdrawal") { $savings_transaction->debit = $request->amount; } if ($old->type == "bank_fees") { $savings_transaction->debit = $request->amount; } if ($old->type == "deposit") { $savings_transaction->credit = $request->amount; } if ($old->type == "interest") { $savings_transaction->credit = $request->amount; } $savings_transaction->save(); //make journal transactions if ($savings_transaction->type == "deposit") { if (!empty($savings_transaction->savings->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'deposit'; $journal->name = "Deposit"; $journal->savings_id = $savings_transaction->saving_id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($savings_transaction->savings->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'deposit'; $journal->name = "Deposit"; $journal->savings_id = $savings_transaction->saving_id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } if ($savings_transaction->type == "withdrawal") { if (!empty($savings_transaction->savings->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'withdrawal'; $journal->name = "Withdrawal"; $journal->savings_id = $savings_transaction->saving_id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($savings_transaction->savings->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'withdrawal'; $journal->name = "Withdrawal"; $journal->savings_id = $savings_transaction->saving_id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } if ($savings_transaction->type == "bank_fees") { if (!empty($savings_transaction->savings->savings_product->chart_reference)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_reference->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'pay_charge'; $journal->name = "Charge"; $journal->savings_id = $savings_transaction->saving_id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($savings_transaction->savings->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'pay_charge'; $journal->name = "Charge"; $journal->savings_id = $savings_transaction->saving_id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } if ($savings_transaction->type == "interest") { if (!empty($savings_transaction->savings->savings_product->chart_expense_interest)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_expense_interest->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'interest'; $journal->name = "Savings Interest"; $journal->savings_id = $savings_transaction->saving_id; $journal->debit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } if (!empty($savings_transaction->savings->savings_product->chart_control)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $savings_transaction->savings->savings_product->chart_control->id; $journal->branch_id = $savings_transaction->branch_id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $savings_transaction->borrower_id; $journal->transaction_type = 'interest'; $journal->name = "Savings Interest"; $journal->savings_id = $savings_transaction->saving_id; $journal->credit = $request->amount; $journal->reference = $savings_transaction->id; $journal->save(); } } Flash::success(translate('successfully_saved')); return redirect('saving/' . $savings_transaction->savings_id . '/show'); } public function reverse($id) { if (!Sentinel::hasAccess('repayments.update')) { Flash::warning(translate('permission_denied')); return redirect('/'); } $savings_transaction = SavingTransaction::find($id); $savings_transaction->reversible = 0; $savings_transaction->reversed = 1; $savings_transaction->reversal_type = "user"; if ($savings_transaction->debit > $savings_transaction->credit) { $savings_transaction->credit = $savings_transaction->debit; } else { $savings_transaction->debit = $savings_transaction->credit; } $savings_transaction->save(); //reverse journal transactions foreach (JournalEntry::where('reference', $id)->where('savings_id', $savings_transaction->savings_id)->get() as $key) { $journal = JournalEntry::find($key->id); if ($key->debit > $key->credit) { $journal->credit = $journal->debit; } else { $journal->debit = $journal->credit; } $journal->reversed = 1; $journal->save(); } Flash::success(translate('successfully_saved')); return redirect()->back(); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function delete($id) { SavingTransaction::destroy($id); Flash::success(translate('successfully_deleted')); return redirect()->back(); } // print repayment public function pdf_transaction($savings_transaction) { $pdf = Pdf::loadView('savings_transaction.pdf', compact('savings_transaction')); return $pdf->download($savings_transaction->borrower->title . ' ' . $savings_transaction->borrower->first_name . ' ' . $savings_transaction->borrower->last_name . " - Savings Transactions.pdf"); } public function print_transaction($savings_transaction) { return view('savings_transaction.print', compact('savings_transaction')); } }