示例#1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Salary::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'salary' => $this->salary, 'date_salary' => $this->date_salary]);
     $query->andFilterWhere(['like', 'employee', $this->employee])->andFilterWhere(['like', 'year', $this->year])->andFilterWhere(['like', 'month', $this->month]);
     return $dataProvider;
 }
示例#2
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Salary::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'salary' => $this->salary, 'create_at' => $this->create_at, 'update_at' => $this->update_at, 'uid' => Yii::$app->user->id]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'remark', $this->remark]);
     return $dataProvider;
 }
示例#3
0
 public function store(SalaryPaymentRequest $request)
 {
     try {
         DB::transaction(function () use($request) {
             $inputs = $request->input();
             $user = Auth::user();
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $year = CommonHelper::get_current_financial_year();
             $oldPayment = SalaryPayment::where('salary_id', '=', $inputs['salary_id'])->where('status', '!=', 4)->first();
             if (empty($oldPayment)) {
                 $salaryPayment = new SalaryPayment();
                 $salaryPayment->salary_id = $inputs['salary_id'];
                 $salaryPayment->employee_id = $inputs['employee_id'];
                 $salaryPayment->employee_type = Config::get('common.employee_type.Regular');
                 $salaryPayment->workspace_id = $inputs['workspace_id'];
                 $salaryPayment->year = $year;
                 $salaryPayment->month = $inputs['month'];
                 $salaryPayment->voucher_no = $inputs['voucher_no'];
                 $salaryPayment->payment_date = $time;
                 if (isset($inputs['net_pay'])) {
                     $salaryPayment->net_paid = $inputs['net_pay'];
                 }
                 if (isset($inputs['bonus_pay'])) {
                     $salaryPayment->bonus_paid = $inputs['bonus_pay'];
                 }
                 if (isset($inputs['over_time_pay'])) {
                     $salaryPayment->over_time_paid = $inputs['over_time_pay'];
                 }
                 $salaryPayment->created_by = $user->id;
                 $salaryPayment->created_at = $time;
                 $salaryPayment->save();
                 $salary = Salary::find($inputs['salary_id']);
                 $clone = clone $salary;
                 $net_due = 0;
                 $bonus_due = 0;
                 $overtime_due = 0;
                 if (isset($inputs['net_pay'])) {
                     $salary->net_paid = $net_due = $inputs['net_pay'];
                     $salary->net_due -= $inputs['net_pay'];
                 }
                 if (isset($inputs['bonus_pay'])) {
                     $salary->bonus_paid = $bonus_due = $inputs['bonus_pay'];
                     $salary->bonus_due -= $inputs['bonus_pay'];
                 }
                 if (isset($inputs['over_time_pay'])) {
                     $salary->over_time_paid = $overtime_due = $inputs['over_time_pay'];
                     $salary->over_time_due -= $inputs['over_time_pay'];
                 }
                 if ($net_due == $clone->net_due && $bonus_due == $clone->bonus_due && $overtime_due == $clone->over_time_due) {
                     $salary->status = 4;
                     //Completed
                     //Update Payment
                     $payment = SalaryPayment::find($salaryPayment->id);
                     $payment->status = 4;
                     //Completed
                     $payment->update();
                 } else {
                     $salary->status = 2;
                     //Partial
                     //Update Payment
                     $payment = SalaryPayment::find($salaryPayment->id);
                     $payment->status = 2;
                     //Partial
                     $payment->update();
                 }
                 $salary->updated_by = $user->id;
                 $salary->updated_at = $time;
                 $salary->update();
                 $personalAccount = PersonalAccount::where(['person_id' => $inputs['employee_id'], 'person_type' => Config::get('common.person_type_employee')])->first();
                 if (isset($inputs['net_pay'])) {
                     $personalAccount->balance -= $inputs['net_pay'];
                 }
                 if (isset($inputs['bonus_pay'])) {
                     $personalAccount->bonus_balance -= $inputs['bonus_pay'];
                 }
                 if (isset($inputs['over_time_pay'])) {
                     $personalAccount->overtime_balance -= $inputs['over_time_pay'];
                 }
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
                 if (isset($inputs['net_pay']) && $inputs['net_pay'] > 0) {
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['net_pay'];
                     //Sub Salary Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $salaryPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 42000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['net_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['net_pay'];
                     //Sub Cash
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $salaryPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['net_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
                 if (isset($inputs['bonus_pay']) && $inputs['bonus_pay'] > 0) {
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['bonus_pay'];
                     //Sub Bonus Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $salaryPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 45000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['bonus_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['bonus_pay'];
                     //Sub Cash
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $salaryPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['bonus_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
                 if (isset($inputs['over_time_pay']) && $inputs['over_time_pay'] > 0) {
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['over_time_pay'];
                     //Sub Overtime Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $salaryPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 44000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['over_time_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['over_time_pay'];
                     //Sub Cash
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $generalJournal = new GeneralJournal();
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $salaryPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount = $inputs['over_time_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
             } else {
                 $oldPayment->payment_date = $time;
                 if (isset($inputs['net_pay'])) {
                     $oldPayment->net_paid += $inputs['net_pay'];
                 }
                 if (isset($inputs['bonus_pay'])) {
                     $oldPayment->bonus_paid += $inputs['bonus_pay'];
                 }
                 if (isset($inputs['over_time_pay'])) {
                     $oldPayment->over_time_paid += $inputs['over_time_pay'];
                 }
                 $oldPayment->updated_by = $user->id;
                 $oldPayment->updated_at = $time;
                 $oldPayment->update();
                 $salary = Salary::find($inputs['salary_id']);
                 $clone = clone $salary;
                 $net_due = 0;
                 $bonus_due = 0;
                 $overtime_due = 0;
                 if (isset($inputs['net_pay'])) {
                     $salary->net_paid += $net_due = $inputs['net_pay'];
                     $salary->net_due -= $inputs['net_pay'];
                 }
                 if (isset($inputs['bonus_pay'])) {
                     $salary->bonus_paid += $bonus_due = $inputs['bonus_pay'];
                     $salary->bonus_due -= $inputs['bonus_pay'];
                 }
                 if (isset($inputs['over_time_pay'])) {
                     $salary->over_time_paid += $overtime_due = $inputs['over_time_pay'];
                     $salary->over_time_due -= $inputs['over_time_pay'];
                 }
                 if ($net_due == $clone->net_due && $bonus_due == $clone->bonus_due && $overtime_due == $clone->over_time_due) {
                     $salary->status = 4;
                     //Completed
                     //Update Payment
                     $payment = SalaryPayment::find($oldPayment->id);
                     $payment->status = 4;
                     //Completed
                     $payment->update();
                 } else {
                     $salary->status = 2;
                     //Partial
                     //Update Payment
                     $payment = SalaryPayment::find($oldPayment->id);
                     $payment->status = 2;
                     //Partial
                     $payment->update();
                 }
                 $salary->updated_by = $user->id;
                 $salary->updated_at = $time;
                 $salary->update();
                 $personalAccount = PersonalAccount::where(['person_id' => $inputs['employee_id'], 'person_type' => Config::get('common.person_type_employee')])->first();
                 if (isset($inputs['net_pay'])) {
                     $personalAccount->balance -= $inputs['net_pay'];
                 }
                 if (isset($inputs['bonus_pay'])) {
                     $personalAccount->bonus_balance -= $inputs['bonus_pay'];
                 }
                 if (isset($inputs['over_time_pay'])) {
                     $personalAccount->overtime_balance -= $inputs['over_time_pay'];
                 }
                 $personalAccount->updated_by = $user->id;
                 $personalAccount->updated_at = $time;
                 $personalAccount->update();
                 if (isset($inputs['net_pay']) && $inputs['net_pay'] > 0) {
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['net_pay'];
                     //Sub Salary Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $data = ['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $oldPayment->id, 'year' => $year, 'account_code' => 42000, 'workspace_id' => $user->workspace_id];
                     $generalJournal = GeneralJournal::firstOrCreate($data);
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $oldPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 42000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount += $inputs['net_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['net_pay'];
                     //Sub Cash
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $data = ['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $oldPayment->id, 'year' => $year, 'account_code' => 11000, 'workspace_id' => $user->workspace_id];
                     $generalJournal = GeneralJournal::firstOrCreate($data);
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $oldPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount += $inputs['net_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
                 if (isset($inputs['bonus_pay']) && $inputs['bonus_pay'] > 0) {
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['bonus_pay'];
                     //Sub Bonus Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $data = ['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $oldPayment->id, 'year' => $year, 'account_code' => 45000, 'workspace_id' => $user->workspace_id];
                     $generalJournal = GeneralJournal::firstOrCreate($data);
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $oldPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 45000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount += $inputs['bonus_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['bonus_pay'];
                     //Sub Cash
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $data = ['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $oldPayment->id, 'year' => $year, 'account_code' => 11000, 'workspace_id' => $user->workspace_id];
                     $generalJournal = GeneralJournal::firstOrCreate($data);
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $oldPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount += $inputs['bonus_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
                 if (isset($inputs['over_time_pay']) && $inputs['over_time_pay'] > 0) {
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['over_time_pay'];
                     //Sub Overtime Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $data = ['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $oldPayment->id, 'year' => $year, 'account_code' => 44000, 'workspace_id' => $user->workspace_id];
                     $generalJournal = GeneralJournal::firstOrCreate($data);
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $oldPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 44000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount += $inputs['over_time_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 11000, 'balance_type' => Config::get('common.balance_type_intermediate'), 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $inputs['over_time_pay'];
                     //Sub Cash
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     $data = ['transaction_type' => Config::get('common.transaction_type.salary_payment'), 'reference_id' => $oldPayment->id, 'year' => $year, 'account_code' => 11000, 'workspace_id' => $user->workspace_id];
                     $generalJournal = GeneralJournal::firstOrCreate($data);
                     $generalJournal->date = $date;
                     $generalJournal->transaction_type = Config::get('common.transaction_type.salary_payment');
                     $generalJournal->reference_id = $oldPayment->id;
                     $generalJournal->year = $year;
                     $generalJournal->account_code = 11000;
                     $generalJournal->workspace_id = $user->workspace_id;
                     $generalJournal->amount += $inputs['over_time_pay'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
             }
         });
     } catch (\Exception $e) {
         dd($e);
         Session()->flash('error_message', 'Salary payment cannot successful. Please Try again.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Salary paid successfully.');
     return Redirect::back();
 }
示例#4
0
 public function actionSave()
 {
     $request = Yii::$app->request;
     $columns = array("employee" => $request->post('employee'), "salary" => $request->post('salary'), "month" => $request->post('month'), "year" => $request->post('year'), "car_id" => $request->post('car_id'), "date_salary" => date("Y-m-d"));
     $result = Salary::find()->where(['employee' => $request->post('employee')])->andWhere(['year' => $request->post('year')])->andWhere(['month' => $request->post('month')])->one();
     if (empty($result)) {
         Yii::$app->db->createCommand()->insert("salary", $columns)->execute();
     } else {
         echo "1";
     }
 }
示例#5
0
 public function update($id, SalaryGeneratorRequest $request)
 {
     try {
         DB::transaction(function () use($request, $id) {
             $user = Auth::user();
             $time = time();
             $date = strtotime(date('d-m-Y'));
             $year = CommonHelper::get_current_financial_year();
             $transaction_type = Config::get('common.transaction_type.salary');
             $balance_type = Config::get('common.balance_type_intermediate');
             $inputs = $request->input();
             $salary = Salary::find($id);
             $copy = clone $salary;
             $salary->cut = $inputs['cut'];
             $salary->net = $inputs['net'];
             $salary->net_due = $inputs['net'];
             if ($inputs['over_time'] > 0) {
                 $salary->over_time = $inputs['over_time'];
                 $salary->over_time_due = $inputs['overtime_amount'];
                 $salary->over_time_amount = $inputs['overtime_amount'];
             }
             if ($inputs['bonus'] > 0) {
                 $salary->bonus = $inputs['bonus'];
                 $salary->bonus_due = $inputs['bonus'];
             }
             $salary->update();
             $personalAccount = PersonalAccount::where(['person_id' => $copy->employee_id, 'person_type' => Config::get('common.person_type_employee')])->first();
             if ($inputs['net'] > $copy->net) {
                 $balance = $inputs['net'] - $copy->net;
                 $personalAccount->balance += $balance;
                 //Add
             } elseif ($inputs['net'] < $copy->net) {
                 $balance = $copy->net - $inputs['net'];
                 $personalAccount->balance -= $balance;
                 //Sub
             }
             if ($inputs['overtime_amount'] > $copy->over_time_amount) {
                 $personalAccount->overtime_balance += $inputs['overtime_amount'] - $copy->over_time_amount;
             } elseif ($inputs['overtime_amount'] < $copy->over_time_amount) {
                 $personalAccount->overtime_balance -= $copy->over_time_amount - $inputs['overtime_amount'];
             }
             if ($inputs['bonus'] > $copy->bonus) {
                 $personalAccount->bonus_balance += $inputs['bonus'] - $copy->bonus;
             } elseif ($inputs['bonus'] < $copy->bonus) {
                 $personalAccount->bonus_balance -= $copy->bonus - $inputs['bonus'];
             }
             $personalAccount->updated_by = $user->id;
             $personalAccount->updated_at = $time;
             $personalAccount->save();
             if ($inputs['net'] > $copy->net) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $balance;
                 //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 += $balance;
                 //Add Salary Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 42000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount += $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 22000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount += $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             } elseif ($inputs['net'] < $copy->net) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 42000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $balance;
                 //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 -= $balance;
                 //Add Salary Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 42000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 22000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $balance;
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             }
             if ($inputs['over_time'] && !$copy->over_time) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['overtime_amount'];
                 //Add Overtime Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // 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 = 44000;
                 $generalJournal->workspace_id = $user->workspace_id;
                 $generalJournal->amount = $inputs['over_time'];
                 $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['overtime_amount'];
                 //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['over_time'];
                 $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                 $generalJournal->created_by = $user->id;
                 $generalJournal->created_at = $time;
                 $generalJournal->save();
             } else {
                 if (!$inputs['over_time'] && $copy->over_time) {
                     //Update Workspace Ledger
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance -= $copy->over_time;
                     //Add Overtime Payable
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     // General Journal Table Impact
                     $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 44000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                     $generalJournal->delete();
                     $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                     $accountPayableWorkspaceData->balance = $copy->over_time;
                     //Add Overtime Expense
                     $accountPayableWorkspaceData->updated_by = $user->id;
                     $accountPayableWorkspaceData->updated_at = $time;
                     $accountPayableWorkspaceData->update();
                     // General Journal Table Impact
                     $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29993, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                     $generalJournal->deleet();
                 } else {
                     if ($inputs['over_time'] > $copy->over_time) {
                         //Update Workspace Ledger
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance += $inputs['overtime_amount'] - $copy->overtime_amount;
                         //Add Overtime Payable
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance += $inputs['overtime_amount'] - $copy->overtime_amount;
                         //Add Overtime Expense
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         // General Journal Table Impact
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 44000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount += $inputs['overtime_amount'] - $copy->overtime_amount;
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29993, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount += $inputs['overtime_amount'] - $copy->overtime_amount;
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                     } elseif ($inputs['over_time'] < $copy->over_time) {
                         //Update Workspace Ledger
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 44000, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance -= $copy->overtime_amount - $inputs['overtime_amount'];
                         //Sub Overtime Payable
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29993, 'balance_type' => $balance_type, 'year' => $year])->first();
                         $accountPayableWorkspaceData->balance -= $copy->overtime_amount - $inputs['overtime_amount'];
                         //Sub Overtime Expense
                         $accountPayableWorkspaceData->updated_by = $user->id;
                         $accountPayableWorkspaceData->updated_at = $time;
                         $accountPayableWorkspaceData->update();
                         // General Journal Table Impact
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 44000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount -= $copy->overtime_amount - $inputs['overtime_amount'];
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                         $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29993, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                         $generalJournal->amount -= $copy->overtime_amount - $inputs['overtime_amount'];
                         $generalJournal->updated_by = $user->id;
                         $generalJournal->updated_at = $time;
                         $generalJournal->save();
                     }
                 }
             }
             if ($inputs['bonus'] > $copy->bonus) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['bonus'] - $copy->bonus;
                 //Add bonus Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29970, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance += $inputs['bonus'] - $copy->bonus;
                 //Add bonus Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 45000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 if ($generalJournal) {
                     $generalJournal->amount += $inputs['bonus'] - $copy->bonus;
                     $generalJournal->updated_by = $user->id;
                     $generalJournal->updated_at = $time;
                     $generalJournal->save();
                 } else {
                     $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['bonus'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.credit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29970, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 if ($generalJournal) {
                     $generalJournal->amount += $inputs['bonus'] - $copy->bonus;
                     $generalJournal->updated_by = $user->id;
                     $generalJournal->updated_at = $time;
                     $generalJournal->save();
                 } else {
                     $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['bonus'];
                     $generalJournal->dr_cr_indicator = Config::get('common.debit_credit_indicator.debit');
                     $generalJournal->created_by = $user->id;
                     $generalJournal->created_at = $time;
                     $generalJournal->save();
                 }
             } elseif ($inputs['bonus'] < $copy->bonus) {
                 //Update Workspace Ledger
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 45000, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $copy->bonus - $inputs['bonus'];
                 //Sub bonus Payable
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 $accountPayableWorkspaceData = WorkspaceLedger::where(['workspace_id' => $user->workspace_id, 'account_code' => 29970, 'balance_type' => $balance_type, 'year' => $year])->first();
                 $accountPayableWorkspaceData->balance -= $copy->bonus - $inputs['bonus'];
                 //Sub bonus Expense
                 $accountPayableWorkspaceData->updated_by = $user->id;
                 $accountPayableWorkspaceData->updated_at = $time;
                 $accountPayableWorkspaceData->update();
                 // General Journal Table Impact
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 45000, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $copy->bonus - $inputs['bonus'];
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
                 $generalJournal = GeneralJournal::where(['transaction_type' => $transaction_type, 'reference_id' => $id, 'account_code' => 29970, 'year' => $year, 'workspace_id' => $user->workspace_id])->first();
                 $generalJournal->amount -= $copy->bonus - $inputs['bonus'];
                 $generalJournal->updated_by = $user->id;
                 $generalJournal->updated_at = $time;
                 $generalJournal->save();
             }
         });
     } catch (\Exception $e) {
         dd($e);
         Session()->flash('error_message', 'Salary cannot Update. Please Try again.');
         return Redirect::back();
     }
     Session()->flash('flash_message', 'Salary updated successfully.');
     return redirect('salary_generator');
 }