/** * Creates a new Salary model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Salary(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
public function store(SalaryGeneratorRequest $request) { // dd($request->input()); try { DB::transaction(function () use($request) { $inputs = $request->input(); $user = Auth::user(); $time = time(); $date = strtotime(date('d-m-Y')); $transaction_type = Config::get('common.transaction_type.salary'); $balance_type = Config::get('common.balance_type_intermediate'); $year = CommonHelper::get_current_financial_year(); $total = 0; foreach ($inputs['selected'] as $employee_id) { $salary = new Salary(); $salary->employee_id = $employee_id; $salary->employee_type = $inputs['employee'][$employee_id]['employee_type']; $salary->workspace_id = $inputs['employee'][$employee_id]['workspace_id']; $salary->year = $year; $salary->month = $inputs['month']; $salary->salary = $inputs['employee'][$employee_id]['salary']; $salary->cut = $inputs['employee'][$employee_id]['cut']; $salary->net = $inputs['employee'][$employee_id]['net']; $salary->net_due = $inputs['employee'][$employee_id]['net']; if ($inputs['employee'][$employee_id]['overtime'] > 0) { $salary->over_time = $inputs['employee'][$employee_id]['overtime']; $salary->over_time_amount = $inputs['employee'][$employee_id]['overtime_amount']; $salary->over_time_due = $inputs['employee'][$employee_id]['overtime_amount']; } if ($inputs['employee'][$employee_id]['bonus'] > 0) { $salary->bonus = $inputs['employee'][$employee_id]['bonus']; $salary->bonus_due = $inputs['employee'][$employee_id]['bonus']; } $salary->created_by = $user->id; $salary->created_by = $time; $salary->save(); $personalAccount = PersonalAccount::where(['person_id' => $employee_id, 'person_type' => Config::get('common.person_type_employee')])->first(); $personalAccount->balance += $inputs['employee'][$employee_id]['net']; //Add Balance if ($inputs['employee'][$employee_id]['overtime'] > 0) { $personalAccount->overtime_balance += $inputs['employee'][$employee_id]['overtime_amount']; //Add overtime balance } if ($inputs['employee'][$employee_id]['bonus'] > 0) { $personalAccount->bonus_balance += $inputs['employee'][$employee_id]['bonus']; //Add overtime balance } $personalAccount->updated_by = $user->id; $personalAccount->updated_at = $time; $personalAccount->save(); //Update Workspace Ledger $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => $balance_type, 'year' => $year])->first(); $accountPayableWorkspaceData->balance += $inputs['employee'][$employee_id]['net']; //Add Salary Payable $accountPayableWorkspaceData->updated_by = $user->id; $accountPayableWorkspaceData->updated_at = $time; $accountPayableWorkspaceData->update(); $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 22000, 'balance_type' => $balance_type, 'year' => $year])->first(); $accountPayableWorkspaceData->balance += $inputs['employee'][$employee_id]['net']; //Add Salary Expense $accountPayableWorkspaceData->updated_by = $user->id; $accountPayableWorkspaceData->updated_at = $time; $accountPayableWorkspaceData->update(); if ($inputs['employee'][$employee_id]['overtime'] > 0) { $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first(); $accountPayableWorkspaceData->balance += $inputs['employee'][$employee_id]['overtime']; //Add Overtime Payable $accountPayableWorkspaceData->updated_by = $user->id; $accountPayableWorkspaceData->updated_at = $time; $accountPayableWorkspaceData->update(); $generalJournal = new GeneralJournal(); $generalJournal->date = $date; $generalJournal->transaction_type = $transaction_type; $generalJournal->reference_id = $salary->id; $generalJournal->year = $year; $generalJournal->account_code = 44000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['employee'][$employee_id]['overtime']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = $user->id; $generalJournal->created_at = $time; $generalJournal->save(); $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first(); $accountPayableWorkspaceData->balance += $inputs['employee'][$employee_id]['overtime']; //Add Overtime Expense $accountPayableWorkspaceData->updated_by = $user->id; $accountPayableWorkspaceData->updated_at = $time; $accountPayableWorkspaceData->update(); $generalJournal = new GeneralJournal(); $generalJournal->date = $date; $generalJournal->transaction_type = $transaction_type; $generalJournal->reference_id = $salary->id; $generalJournal->year = $year; $generalJournal->account_code = 29993; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['employee'][$employee_id]['overtime']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = $user->id; $generalJournal->created_at = $time; $generalJournal->save(); } if ($inputs['employee'][$employee_id]['bonus'] > 0) { $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => $balance_type, 'year' => $year])->first(); $accountPayableWorkspaceData->balance += $inputs['employee'][$employee_id]['bonus']; //Add Bonus Expense $accountPayableWorkspaceData->updated_by = $user->id; $accountPayableWorkspaceData->updated_at = $time; $accountPayableWorkspaceData->update(); $generalJournal = new GeneralJournal(); $generalJournal->date = $date; $generalJournal->transaction_type = $transaction_type; $generalJournal->reference_id = $salary->id; $generalJournal->year = $year; $generalJournal->account_code = 45000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['employee'][$employee_id]['bonus']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = $user->id; $generalJournal->created_at = $time; $generalJournal->save(); $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29970, 'balance_type' => $balance_type, 'year' => $year])->first(); $accountPayableWorkspaceData->balance += $inputs['employee'][$employee_id]['bonus']; //Add Bonus Expense $accountPayableWorkspaceData->updated_by = $user->id; $accountPayableWorkspaceData->updated_at = $time; $accountPayableWorkspaceData->update(); $generalJournal = new GeneralJournal(); $generalJournal->date = $date; $generalJournal->transaction_type = $transaction_type; $generalJournal->reference_id = $salary->id; $generalJournal->year = $year; $generalJournal->account_code = 29970; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['employee'][$employee_id]['bonus']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = $user->id; $generalJournal->created_at = $time; $generalJournal->save(); } // General Journal Table Impact $generalJournal = new GeneralJournal(); $generalJournal->date = $date; $generalJournal->transaction_type = $transaction_type; $generalJournal->reference_id = $salary->id; $generalJournal->year = $year; $generalJournal->account_code = 42000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['employee'][$employee_id]['net']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit'); $generalJournal->created_by = $user->id; $generalJournal->created_at = $time; $generalJournal->save(); $generalJournal = new GeneralJournal(); $generalJournal->date = $date; $generalJournal->transaction_type = $transaction_type; $generalJournal->reference_id = $salary->id; $generalJournal->year = $year; $generalJournal->account_code = 22000; $generalJournal->workspace_id = $user->workspace_id; $generalJournal->amount = $inputs['employee'][$employee_id]['net']; $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit'); $generalJournal->created_by = $user->id; $generalJournal->created_at = $time; $generalJournal->save(); } }); } catch (\Exception $e) { Session()->flash('error_message', 'Salary cannot generate. Please Try again.'); return Redirect::back(); } Session()->flash('flash_message', 'Salary generated successfully.'); return redirect('salary_generator'); }