dbfdg can('manage pay slip') || \Auth::user()->type != 'client' || \Auth::user()->type != 'company') { $employees = Employee::where( [ 'created_by' => \Auth::user()->creatorId(), ] )->first(); $month = [ '01' => 'JAN', '02' => 'FEB', '03' => 'MAR', '04' => 'APR', '05' => 'MAY', '06' => 'JUN', '07' => 'JUL', '08' => 'AUG', '09' => 'SEP', '10' => 'OCT', '11' => 'NOV', '12' => 'DEC', ]; $year = [ '2023' => '2023', '2024' => '2024', '2025' => '2025', '2026' => '2026', '2027' => '2027', '2028' => '2028', '2029' => '2029', '2030' => '2030', ]; return view('payslip.index', compact('employees', 'month', 'year')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function create() { // } public function store(Request $request) { $validator = \Validator::make( $request->all(), [ 'month' => 'required', 'year' => 'required', ] ); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->back()->with('error', $messages->first()); } $month = $request->month; $year = $request->year; $formate_month_year = $year . '-' . $month; $validatePaysilp = PaySlip::where('salary_month', '=', $formate_month_year)->where('created_by', \Auth::user()->creatorId())->pluck('employee_id'); $payslip_employee = Employee::where('created_by', \Auth::user()->creatorId())->where('company_doj', '<=', date($year . '-' . $month . '-t'))->count(); $resignation = Resignation::where('created_by' , \Auth::user()->creatorId())->where('resignation_date', '<=' , date('Y-m-d'))->pluck('employee_id')->toArray(); $termination = Termination::where('created_by' , \Auth::user()->creatorId())->where('termination_date', '<=' , date('Y-m-d'))->pluck('employee_id')->toArray(); if($payslip_employee > count($validatePaysilp)) { $employees = Employee::where('created_by', \Auth::user()->creatorId())->where('company_doj', '<=', date($year . '-' . $month . '-t'))->whereNotIn('employee_id', $validatePaysilp)->whereNotIn('id', $resignation)->whereNotIn('id', $termination)->get(); $employeesSalary = Employee::where('created_by', \Auth::user()->creatorId())->where('salary', '<=', 0)->first(); if(!empty($employeesSalary)) { return redirect()->route('payslip.index')->with('error', __('Please set employee salary.')); } foreach($employees as $employee) { $payslipEmployee = new PaySlip(); $payslipEmployee->employee_id = $employee->id; $payslipEmployee->net_payble = $employee->get_net_salary(); $payslipEmployee->salary_month = $formate_month_year; $payslipEmployee->status = 0; $payslipEmployee->basic_salary = !empty($employee->salary) ? $employee->salary : 0; $payslipEmployee->allowance = Employee::allowance($employee->id); $payslipEmployee->commission = Employee::commission($employee->id); $payslipEmployee->loan = Employee::loan($employee->id); $payslipEmployee->saturation_deduction = Employee::saturation_deduction($employee->id); $payslipEmployee->other_payment = Employee::other_payment($employee->id); $payslipEmployee->overtime = Employee::overtime($employee->id); $payslipEmployee->created_by = \Auth::user()->creatorId(); $payslipEmployee->save(); //For Notification $setting = Utility::settings(\Auth::user()->creatorId()); $payslipNotificationArr = [ 'year' => $formate_month_year, ]; //Slack Notification if(isset($setting['payslip_notification']) && $setting['payslip_notification'] ==1) { Utility::send_slack_msg('new_monthly_payslip', $payslipNotificationArr); } //Telegram Notification if(isset($setting['telegram_payslip_notification']) && $setting['telegram_payslip_notification'] ==1) { Utility::send_telegram_msg('new_monthly_payslip', $payslipNotificationArr); } //webhook $module ='New Monthly Payslip'; $webhook= Utility::webhookSetting($module); if($webhook) { $parameter = json_encode($payslipEmployee); $status = Utility::WebhookCall($webhook['url'],$parameter,$webhook['method']); if($status == true) { return redirect()->back()->with('success', __('Payslip successfully created.')); } else { return redirect()->back()->with('error', __('Webhook call failed.')); } } } return redirect()->route('payslip.index')->with('success', __('Payslip successfully created.')); } else { return redirect()->route('payslip.index')->with('error', __('Payslip Already created.')); } } public function destroy($id) { $payslip = PaySlip::find($id); $payslip->delete(); return true; } public function showemployee($paySlip) { $payslip = PaySlip::find($paySlip); return view('payslip.show', compact('payslip')); } public function search_json(Request $request) { $formate_month_year = $request->datePicker; $validatePaysilp = PaySlip::where('salary_month', '=', $formate_month_year)->where('created_by', \Auth::user()->creatorId())->get()->toarray(); $data=[]; if (empty($validatePaysilp)) { $data=[]; return; } else { $paylip_employee = PaySlip::select( [ 'employees.id', 'employees.employee_id', 'employees.name', 'payslip_types.name as payroll_type', 'pay_slips.basic_salary', 'pay_slips.net_payble', 'pay_slips.id as pay_slip_id', 'pay_slips.status', 'employees.user_id', ] )->leftjoin( 'employees', function ($join) use ($formate_month_year) { $join->on('employees.id', '=', 'pay_slips.employee_id'); $join->on('pay_slips.salary_month', '=', \DB::raw("'" . $formate_month_year . "'")); $join->leftjoin('payslip_types', 'payslip_types.id', '=', 'employees.salary_type'); } )->where('employees.created_by', \Auth::user()->creatorId())->get(); foreach ($paylip_employee as $employee) { if (Auth::user()->type == 'Employee') { if (Auth::user()->id == $employee->user_id) { $tmp = []; $tmp[] = $employee->id; $tmp[] = $employee->name; $tmp[] = $employee->payroll_type; $tmp[] = $employee->pay_slip_id; $tmp[] = !empty($employee->basic_salary) ? \Auth::user()->priceFormat($employee->basic_salary) : '-'; $tmp[] = !empty($employee->net_payble) ? \Auth::user()->priceFormat($employee->net_payble) : '-'; if ($employee->status == 1) { $tmp[] = 'paid'; } else { $tmp[] = 'unpaid'; } $tmp[] = !empty($employee->pay_slip_id) ? $employee->pay_slip_id : 0; $tmp['url'] = route('employee.show', Crypt::encrypt($employee->id)); $data[] = $tmp; } } else { $tmp = []; $tmp[] = $employee->id; $tmp[] = \Auth::user()->employeeIdFormat($employee->employee_id); $tmp[] = $employee->name; $tmp[] = $employee->payroll_type; $tmp[] = !empty($employee->basic_salary) ? \Auth::user()->priceFormat($employee->basic_salary) : '-'; $tmp[] = !empty($employee->net_payble) ? \Auth::user()->priceFormat($employee->net_payble) : '-'; if ($employee->status == 1) { $tmp[] = 'Paid'; } else { $tmp[] = 'UnPaid'; } $tmp[] = !empty($employee->pay_slip_id) ? $employee->pay_slip_id : 0; $tmp['url'] = route('employee.show', Crypt::encrypt($employee->id)); $data[] = $tmp; } } return $data; } } public function paysalary($id, $date) { $employeePayslip = PaySlip::where('employee_id', '=', $id)->where('created_by', \Auth::user()->creatorId())->where('salary_month', '=', $date)->first(); $account = Employee::find($id); Utility::bankAccountBalance($account->account, $employeePayslip->net_payble, 'debit'); if(!empty($employeePayslip)) { $employeePayslip->status = 1; $employeePayslip->save(); return redirect()->route('payslip.index')->with('success', __('Payslip Payment successfully.')); } else { return redirect()->route('payslip.index')->with('error', __('Payslip Payment failed.')); } } public function bulk_pay_create($date) { $Employees = PaySlip::where('salary_month', $date)->where('created_by', \Auth::user()->creatorId())->get(); $unpaidEmployees = PaySlip::where('salary_month', $date)->where('created_by', \Auth::user()->creatorId())->where('status', '=', 0)->get(); return view('payslip.bulkcreate', compact('Employees', 'unpaidEmployees', 'date')); } public function bulkpayment(Request $request, $date) { $unpaidEmployees = PaySlip::where('salary_month', $date)->where('created_by', \Auth::user()->creatorId())->where('status', '=', 0)->get(); foreach($unpaidEmployees as $employee) { $employee->status = 1; $employee->save(); } return redirect()->route('payslip.index')->with('success', __('Payslip Bulk Payment successfully.')); } public function employeepayslip() { $employees = Employee::where( [ 'user_id' => \Auth::user()->id, ] )->first(); $payslip = PaySlip::where('employee_id', '=', $employees->id)->get(); return view('payslip.employeepayslip', compact('payslip')); } public function pdf($id, $month) { $payslip = PaySlip::where('employee_id', $id)->where('salary_month', $month)->where('created_by', \Auth::user()->creatorId())->first(); $employee = Employee::find($payslip->employee_id); // dd($employee); $payslipDetail = Utility::employeePayslipDetail($id,$month); return view('payslip.pdf', compact('payslip', 'employee', 'payslipDetail')); } public function send($id, $month) { $setings = Utility::settings(); // dd($setings); if($setings['payslip_sent'] == 1) { $payslip = PaySlip::where('employee_id', $id)->where('salary_month', $month)->where('created_by', \Auth::user()->creatorId())->first(); $employee = Employee::find($payslip->employee_id); $payslip->name = $employee->name; $payslip->email = $employee->email; $payslipId = Crypt::encrypt($payslip->id); $payslip->url = route('payslip.payslipPdf', $payslipId); // dd($payslip->url); $payslipArr = [ 'employee_name'=> $employee->name, 'employee_email' => $employee->email, 'payslip_name' => $payslip->name, 'payslip_salary_month' => $payslip->salary_month, 'payslip_url' =>$payslip->url, ]; $resp = Utility::sendEmailTemplate('payslip_sent', [$employee->id => $employee->email], $payslipArr); return redirect()->back()->with('success', __('Payslip successfully sent.') .(($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '')); } return redirect()->back()->with('success', __('Payslip successfully sent.')); } public function payslipPdf($id) { $payslipId = Crypt::decrypt($id); $payslip = PaySlip::where('id', $payslipId)->where('created_by', \Auth::user()->creatorId())->first(); $employee = Employee::find($payslip->employee_id); $payslipDetail = Utility::employeePayslipDetail($payslip->employee_id); return view('payslip.payslipPdf', compact('payslip', 'employee', 'payslipDetail')); } public function editEmployee($paySlip) { $payslip = PaySlip::find($paySlip); return view('payslip.salaryEdit', compact('payslip')); } public function updateEmployee(Request $request, $id) { if(isset($request->allowance) && !empty($request->allowance)) { $allowances = $request->allowance; $allowanceIds = $request->allowance_id; foreach($allowances as $k => $allownace) { $allowanceData = Allowance::find($allowanceIds[$k]); $allowanceData->amount = $allownace; $allowanceData->save(); } } if(isset($request->commission) && !empty($request->commission)) { $commissions = $request->commission; $commissionIds = $request->commission_id; foreach($commissions as $k => $commission) { $commissionData = Commission::find($commissionIds[$k]); $commissionData->amount = $commission; $commissionData->save(); } } if(isset($request->loan) && !empty($request->loan)) { $loans = $request->loan; $loanIds = $request->loan_id; foreach($loans as $k => $loan) { $loanData = Loan::find($loanIds[$k]); $loanData->amount = $loan; $loanData->save(); } } if(isset($request->saturation_deductions) && !empty($request->saturation_deductions)) { $saturation_deductionss = $request->saturation_deductions; $saturation_deductionsIds = $request->saturation_deductions_id; foreach($saturation_deductionss as $k => $saturation_deductions) { $saturation_deductionsData = SaturationDeduction::find($saturation_deductionsIds[$k]); $saturation_deductionsData->amount = $saturation_deductions; $saturation_deductionsData->save(); } } if(isset($request->other_payment) && !empty($request->other_payment)) { $other_payments = $request->other_payment; $other_paymentIds = $request->other_payment_id; foreach($other_payments as $k => $other_payment) { $other_paymentData = OtherPayment::find($other_paymentIds[$k]); $other_paymentData->amount = $other_payment; $other_paymentData->save(); } } if(isset($request->rate) && !empty($request->rate)) { $rates = $request->rate; $rateIds = $request->rate_id; $hourses = $request->hours; foreach($rates as $k => $rate) { $overtime = Overtime::find($rateIds[$k]); $overtime->rate = $rate; $overtime->hours = $hourses[$k]; $overtime->save(); } } $payslipEmployee = PaySlip::find($request->payslip_id); $payslipEmployee->allowance = Employee::allowance($payslipEmployee->employee_id); $payslipEmployee->commission = Employee::commission($payslipEmployee->employee_id); $payslipEmployee->loan = Employee::loan($payslipEmployee->employee_id); $payslipEmployee->saturation_deduction = Employee::saturation_deduction($payslipEmployee->employee_id); $payslipEmployee->other_payment = Employee::other_payment($payslipEmployee->employee_id); $payslipEmployee->overtime = Employee::overtime($payslipEmployee->employee_id); $payslipEmployee->net_payble = Employee::find($payslipEmployee->employee_id)->get_net_salary(); $payslipEmployee->save(); return redirect()->route('payslip.index')->with('success', __('Employee payroll successfully updated.')); } public function export(Request $request) { $name = 'payslip_' . date('Y-m-d i:h:s'); $data = Excel::download(new PayslipExport($request), $name . '.xlsx'); ob_end_clean(); return $data; } }