Пример #1
0
 /**
  * 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]);
     }
 }
Пример #2
0
 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');
 }