Ejemplo n.º 1
0
 public function store(Request $request)
 {
     $workspace_id = Auth::user()->workspace_id;
     $closedWorkspace = AccountClosing::where(['year' => CommonHelper::get_current_financial_year(), 'type' => 1, 'workspace_id' => $workspace_id])->lists('workspace_id');
     if (sizeof($closedWorkspace) == 0) {
         try {
             DB::transaction(function () use($request) {
                 $workspace_id = Auth::user()->workspace_id;
                 $levelZeros = ChartOfAccount::where(['parent' => 0, 'status' => 1])->select('id', 'name', 'code')->get();
                 foreach ($levelZeros as $levelZero) {
                     $workspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $levelZero->code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => CommonHelper::get_current_financial_year()])->first();
                     $balance = isset($workspaceData->balance) ? $workspaceData->balance : 0;
                     $a[] = [$levelZero->id, $levelZero->code, '', $balance];
                 }
                 for ($ci = 0; isset($a[$ci][0]); $ci++) {
                     $nextLevels = ChartOfAccount::where(['parent' => $a[$ci][0], 'status' => 1])->get(['code', 'id']);
                     foreach ($nextLevels as $nextLevel) {
                         $NextLevelWorkspaceData = WorkspaceLedger::where(['workspace_id' => $workspace_id, 'account_code' => $nextLevel->code, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => CommonHelper::get_current_financial_year()])->first();
                         $nextLevelBalance = isset($NextLevelWorkspaceData->balance) ? $NextLevelWorkspaceData->balance : 0;
                         $a[] = [$nextLevel->id, $nextLevel->code, $ci, $nextLevelBalance];
                     }
                 }
                 $ci = sizeof($a) - 1;
                 for (; $ci >= 0; $ci--) {
                     if (isset($a[$a[$ci][2]][3])) {
                         $contra = ChartOfAccount::where(['contra_status' => 1, 'id' => $a[$ci][0]])->first();
                         if ($contra) {
                             $a[$a[$ci][2]][3] -= $a[$ci][3];
                         } else {
                             $a[$a[$ci][2]][3] += $a[$ci][3];
                         }
                     }
                     // Closing Balance
                     $workspaceLedger = new WorkspaceLedger();
                     $workspaceLedger->workspace_id = $workspace_id;
                     $workspaceLedger->year = CommonHelper::get_current_financial_year();
                     $workspaceLedger->account_code = $a[$ci][1];
                     $workspaceLedger->balance_type = Config::get('common.balance_type_closing');
                     $workspaceLedger->balance = $a[$ci][3];
                     $workspaceLedger->created_by = Auth::user()->id;
                     $workspaceLedger->created_at = time();
                     $workspaceLedger->save();
                     if (substr($a[$ci][1], 0, 1) == 1 || substr($a[$ci][1], 0, 1) == 4 || substr($a[$ci][1], 0, 1) == 6) {
                         // Initial Balance Next Year
                         $workspaceLedger = new WorkspaceLedger();
                         $workspaceLedger->workspace_id = $workspace_id;
                         $workspaceLedger->year = CommonHelper::get_next_financial_year();
                         $workspaceLedger->account_code = $a[$ci][1];
                         $workspaceLedger->balance_type = Config::get('common.balance_type_opening');
                         $workspaceLedger->balance = $a[$ci][3];
                         $workspaceLedger->created_by = Auth::user()->id;
                         $workspaceLedger->created_at = time();
                         $workspaceLedger->save();
                         // Intermediate Balance Next Year
                         $workspaceLedger = new WorkspaceLedger();
                         $workspaceLedger->workspace_id = $workspace_id;
                         $workspaceLedger->year = CommonHelper::get_next_financial_year();
                         $workspaceLedger->account_code = $a[$ci][1];
                         $workspaceLedger->balance_type = Config::get('common.balance_type_intermediate');
                         $workspaceLedger->balance = $a[$ci][3];
                         $workspaceLedger->created_by = Auth::user()->id;
                         $workspaceLedger->created_at = time();
                         $workspaceLedger->save();
                     } else {
                         // Initial Balance Next Year
                         $workspaceLedger = new WorkspaceLedger();
                         $workspaceLedger->workspace_id = $workspace_id;
                         $workspaceLedger->year = CommonHelper::get_next_financial_year();
                         $workspaceLedger->account_code = $a[$ci][1];
                         $workspaceLedger->balance_type = Config::get('common.balance_type_opening');
                         $workspaceLedger->balance = 0;
                         $workspaceLedger->created_by = Auth::user()->id;
                         $workspaceLedger->created_at = time();
                         $workspaceLedger->save();
                         // Intermediate Balance Next Year
                         $workspaceLedger = new WorkspaceLedger();
                         $workspaceLedger->workspace_id = $workspace_id;
                         $workspaceLedger->year = CommonHelper::get_next_financial_year();
                         $workspaceLedger->account_code = $a[$ci][1];
                         $workspaceLedger->balance_type = Config::get('common.balance_type_intermediate');
                         $workspaceLedger->balance = 0;
                         $workspaceLedger->created_by = Auth::user()->id;
                         $workspaceLedger->created_at = time();
                         $workspaceLedger->save();
                     }
                 }
                 // Workspace Account Close Info
                 $accountClosing = new AccountClosing();
                 $accountClosing->workspace_id = $workspace_id;
                 $accountClosing->year = CommonHelper::get_current_financial_year();
                 $accountClosing->save();
                 // Workspace Stock Closing
                 $existingStocks = Stock::where(['stock_type' => Config::get('common.balance_type_intermediate'), 'workspace_id' => $workspace_id, 'year' => CommonHelper::get_current_financial_year()])->get();
                 if (sizeof($existingStocks) > 0) {
                     foreach ($existingStocks as $existingStock) {
                         // Current Year Closing Balance
                         $stock = new Stock();
                         $stock->year = CommonHelper::get_current_financial_year();
                         $stock->stock_type = Config::get('common.balance_type_closing');
                         $stock->workspace_id = $workspace_id;
                         $stock->product_id = $existingStock->product_id;
                         $stock->quantity = $existingStock->quantity;
                         $stock->created_by = Auth::user()->id;
                         $stock->created_at = time();
                         $stock->save();
                         // Next Year Opening Balance
                         $stock = new Stock();
                         $stock->year = CommonHelper::get_next_financial_year();
                         $stock->stock_type = Config::get('common.balance_type_opening');
                         $stock->workspace_id = $workspace_id;
                         $stock->product_id = $existingStock->product_id;
                         $stock->quantity = $existingStock->quantity;
                         $stock->created_by = Auth::user()->id;
                         $stock->created_at = time();
                         $stock->save();
                         // Next Year Intermediate Balance
                         $stock = new Stock();
                         $stock->year = CommonHelper::get_next_financial_year();
                         $stock->stock_type = Config::get('common.balance_type_intermediate');
                         $stock->workspace_id = $workspace_id;
                         $stock->product_id = $existingStock->product_id;
                         $stock->quantity = $existingStock->quantity;
                         $stock->created_by = Auth::user()->id;
                         $stock->created_at = time();
                         $stock->save();
                     }
                 }
             });
         } catch (\Exception $e) {
             Session()->flash('error_message', 'Workspace Account Closing Not Done!');
             return redirect('workspace_closing');
         }
         Session()->flash('flash_message', 'Workspace Account Closed Successfully!');
         return redirect('workspace_closing');
     } else {
         Session()->flash('warning_message', 'Workspace Account Closed Already For This Year!');
         return redirect('workspace_closing');
     }
 }
Ejemplo n.º 2
0
 public function update($id, InitializationRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $currentYear = CommonHelper::get_current_financial_year();
             $balanceInput = $request->input('balance');
             foreach ($balanceInput as $code => $amount) {
                 $WorkspaceLedger = new WorkspaceLedger();
                 $GeneralLedger = new GeneralLedger();
                 $WorkspaceLedger->workspace_id = $id;
                 $WorkspaceLedger->year = $currentYear;
                 $WorkspaceLedger->account_code = $code;
                 $WorkspaceLedger->balance_type = Config::get('common.balance_type_opening');
                 $WorkspaceLedger->balance = $amount;
                 $WorkspaceLedger->created_by = Auth::user()->id;
                 $WorkspaceLedger->created_at = time();
                 $WorkspaceLedger->save();
                 $WorkspaceLedger = new WorkspaceLedger();
                 // Intermediate row insert
                 $WorkspaceLedger->workspace_id = $id;
                 $WorkspaceLedger->year = $currentYear;
                 $WorkspaceLedger->account_code = $code;
                 $WorkspaceLedger->balance_type = Config::get('common.balance_type_intermediate');
                 $WorkspaceLedger->balance = $amount;
                 $WorkspaceLedger->created_by = Auth::user()->id;
                 $WorkspaceLedger->created_at = time();
                 $WorkspaceLedger->save();
                 $existingGeneralData = GeneralLedger::where(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_opening'), 'year' => $currentYear])->first();
                 if ($existingGeneralData) {
                     $existingGeneral = GeneralLedger::firstOrNew(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_opening'), 'year' => $currentYear]);
                     $existingGeneral->year = $currentYear;
                     $existingGeneral->account_code = $code;
                     $existingGeneral->balance_type = Config::get('common.balance_type_opening');
                     $existingGeneral->balance = $existingGeneralData->balance + $amount;
                     $existingGeneral->updated_by = Auth::user()->id;
                     $existingGeneral->updated_at = time();
                     $existingGeneral->update();
                 } else {
                     $GeneralLedger->year = $currentYear;
                     $GeneralLedger->account_code = $code;
                     $GeneralLedger->balance_type = Config::get('common.balance_type_opening');
                     $GeneralLedger->balance = $amount;
                     $GeneralLedger->created_by = Auth::user()->id;
                     $GeneralLedger->created_at = time();
                     $GeneralLedger->save();
                 }
                 //                // General Intermediate Data Insert/ Update
                 //                $GeneralLedger = New GeneralLedger;
                 //                $existingGeneralIntermediateData = GeneralLedger::where(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_intermediate')])->first();
                 //
                 //                if($existingGeneralIntermediateData)
                 //                {
                 //                    $existingGeneralIntermediate = GeneralLedger::firstOrNew(['account_code' => $code, 'balance_type' => Config::get('common.balance_type_intermediate')]);
                 //
                 //                    $existingGeneralIntermediate->year = date('Y');
                 //                    $existingGeneralIntermediate->account_code = $code;
                 //                    $existingGeneralIntermediate->balance_type = Config::get('common.balance_type_intermediate');
                 //                    $existingGeneralIntermediate->balance = $existingGeneralData->balance + $amount;
                 //                    $existingGeneralIntermediate->updated_by = Auth::user()->id;
                 //                    $existingGeneralIntermediate->updated_at = time();
                 //                    $existingGeneralIntermediate->update();
                 //                }
                 //                else
                 //                {
                 //                    $GeneralLedger->year = date('Y');
                 //                    $GeneralLedger->account_code = $code;
                 //                    $GeneralLedger->balance_type = Config::get('common.balance_type_intermediate');
                 //                    $GeneralLedger->balance = $amount;
                 //                    $GeneralLedger->created_by = Auth::user()->id;
                 //                    $GeneralLedger->created_at = time();
                 //                    $GeneralLedger->save();
                 //                }
             }
         });
     } catch (\Exception $e) {
         Session()->flash('error_message', 'Accounts not Initialized!');
         return redirect('initializations');
     }
     Session()->flash('flash_message', 'Accounts Initialized!');
     return redirect('initializations');
 }
Ejemplo n.º 3
0
 public function store(BankRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $inputs = $request->input();
             $time = time();
             $user = Auth::user();
             $year = CommonHelper::get_current_financial_year();
             $bank = new Bank();
             $chartOfAccount = new ChartOfAccount();
             $workspaceLedgerData = new WorkspaceLedger();
             // Bank Entry
             $bank->name = $inputs['name'];
             $bank->account_name = $inputs['account_name'];
             $bank->account_no = $inputs['account_no'];
             $bank->account_director = $inputs['account_director'];
             $bank->account_type = $inputs['account_type'];
             $bank->start_date = $inputs['start_date'];
             $bank->balance = $inputs['opening_balance'];
             $bank->account_code = $inputs['account_code'];
             $bank->created_by = $user->id;
             $bank->created_at = $time;
             $bank->save();
             // Account Head Entry
             $chartOfAccount->parent = 1;
             // Asset
             $chartOfAccount->name = $inputs['name'];
             $chartOfAccount->code = $inputs['account_code'];
             $chartOfAccount->save();
             // Workspace Ledger Account Head Data (Opening)
             $workspaceLedgerData->workspace_id = $user->workspace_id;
             $workspaceLedgerData->year = $year;
             $workspaceLedgerData->account_code = $inputs['account_code'];
             $workspaceLedgerData->balance_type = Config::get('common.balance_type_opening');
             $workspaceLedgerData->balance = 0;
             $workspaceLedgerData->created_by = $user->id;
             $workspaceLedgerData->created_at = $time;
             $workspaceLedgerData->save();
             // Workspace Ledger Account Head Data (Intermediate)
             $workspaceLedgerData = new WorkspaceLedger();
             $workspaceLedgerData->workspace_id = $user->workspace_id;
             $workspaceLedgerData->year = $year;
             $workspaceLedgerData->account_code = $inputs['account_code'];
             $workspaceLedgerData->balance_type = Config::get('common.balance_type_intermediate');
             $workspaceLedgerData->balance = 0;
             $workspaceLedgerData->created_by = $user->id;
             $workspaceLedgerData->created_at = $time;
             $workspaceLedgerData->save();
             if ($inputs['opening_balance'] > 0) {
                 // Update Workspace Ledger
                 $workspaceLedger = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => $inputs['account_code'], 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                 $workspaceLedger->balance += $inputs['opening_balance'];
                 $workspaceLedger->updated_by = $user->id;
                 $workspaceLedger->updated_by = $time;
                 $workspaceLedger->save();
             }
         });
     } catch (\Exception $e) {
         dd($e);
         Session::flash('error_message', 'Failed to create Bank. Please try again!');
         return Redirect::back();
     }
     Session::flash('flash_message', 'Bank created successfully!');
     return redirect('banks');
 }