public function store(BankTransactionRequest $request) { try { DB::transaction(function () use($request) { $inputs = $request->input(); $time = time(); $user = Auth::user(); $year = CommonHelper::get_current_financial_year(); $bankTransaction = new BankTransaction(); // Transaction Entry $bankTransaction->bank_id = $inputs['bank_id']; $bankTransaction->transaction_type = $inputs['transaction_type']; $bankTransaction->amount = $inputs['amount']; $bankTransaction->transaction_date = $inputs['transaction_date']; $bankTransaction->created_by = $user->id; $bankTransaction->created_at = $time; $bankTransaction->save(); if ($inputs['amount'] > 0) { if ($inputs['transaction_type'] == 1) { // Bank Balance Update $bank = Bank::findOrfail($inputs['bank_id']); $bank->balance += $inputs['amount']; $bank->updated_by = $user->id; $bank->updated_by = $time; $bank->save(); // Update Workspace Ledger Bank $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance += $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // Update Workspace Ledger Cash $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance -= $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_deposit'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = 11000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // Bank Account Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_deposit'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = $bank->account_code; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($inputs['transaction_type'] == 2) { // Bank Balance Update $bank = Bank::findOrfail($inputs['bank_id']); $bank->balance -= $inputs['amount']; $bank->updated_by = $user->id; $bank->updated_by = $time; $bank->save(); // Update Workspace Ledger Bank $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance -= $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // Update Workspace Ledger Cash $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance += $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // General Journals Cash Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_withdraw'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = 11000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // Bank Account Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_withdraw'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = $bank->account_code; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($inputs['transaction_type'] == 3) { // Bank Balance Update $bank = Bank::findOrfail($inputs['bank_id']); $bank->balance += $inputs['amount']; $bank->updated_by = $user->id; $bank->updated_by = $time; $bank->save(); // Update Workspace Ledger Bank $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance += $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // Update Workspace Ledger Interest $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 38000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance += $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // General Journals Cash Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_interest'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = 11000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // Bank Interest Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_interest'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = 38000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } elseif ($inputs['transaction_type'] == 4) { // Bank Balance Update $bank = Bank::findOrfail($inputs['bank_id']); $bank->balance -= $inputs['amount']; $bank->updated_by = $user->id; $bank->updated_by = $time; $bank->save(); // Update Workspace Ledger Bank $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $bank->account_code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance -= $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // Update Workspace Ledger Bank Charge $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29995, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first(); $workspaceLedger->balance += $inputs['amount']; $workspaceLedger->updated_by = $user->id; $workspaceLedger->updated_by = $time; $workspaceLedger->save(); // General Journals Cash Credit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_charge'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = 11000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); // Bank Charge Debit $generalJournal = new GeneralJournal(); $generalJournal->date = strtotime($inputs['transaction_date']); $generalJournal->transaction_type = Config::get('common.transaction_type.bank_charge'); $generalJournal->reference_id = $bankTransaction->id; $generalJournal->year = $year; $generalJournal->account_code = 29995; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['amount']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = Auth::user()->id; $generalJournal->created_at = time(); $generalJournal->save(); } } }); } catch (\Exception $e) { Session::flash('error_message', 'Failed to do Bank Transaction. Please try again!'); return Redirect::back(); } Session::flash('flash_message', 'Bank Transaction done successfully!'); return redirect('bank_transactions'); }