Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function store(){
- $validator = Validator::make(Request::all(), [
- 'date' => 'required|date',
- 'date_from' => 'required|date',
- 'date_to' => 'required|date',
- 'quincena_id' => 'required',
- 'company_id' => 'required',
- ],[
- 'date.required' => 'Please select payroll date',
- 'date_from.required' => 'Please select date from',
- 'date_to.required' => 'Please select date to',
- 'quincena_id.required' => 'Please select quincena',
- 'company_id.required' => 'Please select company',
- ]);
- if ($validator->fails()) {
- return redirect()->back()
- ->withErrors($validator)
- ->withInput();
- }
- $payroll_report = Request::all();
- $payroll_report_id = Payroll::create($payroll_report)->id;
- $empID = [];
- $empCompanies = \App\Employee_general_info::where('company_id',Request::get('company_id'))->orderBy('employee_id')->get();
- foreach($empCompanies as $ec){
- $empID[] = $ec->employee_id;
- }
- $employees = \App\Employee::with(['geninfo'])->whereIn('id',$empID)->where('isActive',1)->get();
- $stime = 0;
- $arrayAttendance = [];
- $arrayBasicPay = [];
- $arrayLateAbsent = [];
- $arrayHolidayDuty = [];
- $stime = 0;
- foreach($employees as $employee){
- $valid_days = 0;
- $absent_days = 0;
- $restdays = 0;
- $rdduty = $ut = $holipay = $rdpay = 0;
- $trulate = $truunder = 0;
- $holipay2 = $rdpay2 = $otpay2 = 0;
- $basic_pay = 0;
- $converted_lates_undertimes = $converted_absences = 0;
- $dtr = \App\Employee_biolog::whereDate('date','>=',Request::get('date_from'))
- ->whereDate('date','<=',Request::get('date_to'))
- ->where('employee_id',$employee->id)
- ->orderBy('date')
- ->get();
- $nd = [];
- $test = [];
- $timein = \App\Employee_schedule::where('employee_id',$employee->id)->latest()->first();
- $from = Carbon::parse(Request::get('date_from'));
- $to = Carbon::parse(Request::get('date_to'));
- $dinterval = $to->diffInDays($from) + 1;
- /*HOLIDAY AND RESTDAY*/
- foreach($dtr->groupBy('date') as $date => $value){
- $holidaydate = \App\Holiday_date::where('date',Carbon::parse($date)->toDateString())->first();
- if($holidaydate != NULL){
- if($employee->geninfo->category_id == 1 && $employee->geninfo->area_id == $holidaydate->area_id){
- if($holidaydate->type == 'LEGAL'){
- /*LEGAL HOLIDAY*/
- $holipay = (($employee->salinfo->salaryrate / 8) * 8);
- }else{
- /*SPECIAL HOLIDAY*/
- $holipay = (($employee->salinfo->salaryrate / 8) * 8) * .3;
- }
- }elseif($employee->geninfo->category_id == 2 && $employee->geninfo->area_id == $holidaydate->area_id){
- if($holidaydate->type == 'LEGAL'){
- /*LEGAL HOLIDAY*/
- $holipay = ((($employee->salinfo->salaryrate / 26) / 8) * 8);
- }else{
- /*SPECIAL HOLIDAY*/
- $holipay = ((($employee->salinfo->salaryrate / 26) / 8) * 8) * .3;
- }
- }
- $holidaypay = [
- 'payroll_report_id' => $payroll_report_id,
- 'employee_id' => $employee->id,
- 'holiday_id' => $holidaydate->id,
- 'amount' => $holipay,
- ];
- $holipay2 += $holipay;
- array_push($arrayHolidayDuty,$holidaypay);
- }
- }
- foreach($dtr as $data){
- $fixtime = Carbon::parse($data->date);
- $fixdate = $fixtime->toDateString();
- if(! isset($test[$fixdate]) && $data->status == 'C/In'){
- $latesSeconds = Carbon::parse($timein->time_in)->diffInSeconds($fixtime->toTimeString(), false);
- if ($latesSeconds >= -7200 && $latesSeconds <= 7200 ) {
- $test[$fixdate] = 1;
- if ($latesSeconds > 0) {
- $trulate = $latesSeconds/60;
- if($trulate > 5){
- $stime += $trulate; //undertime rules here
- }else{
- $stime += $trulate;
- }
- }
- }
- }
- $hdays = \App\Holiday_date::whereBetween('date',[Request::get('date_from'),Request::get('date_to')])
- ->where('area_id',$employee->geninfo->area_id)
- ->count();
- if($employee->geninfo->category_id == 1){
- $valid_days = count($test);
- }elseif($employee->geninfo->category_id == 2){
- $valid_days = count($test);
- $absent_days = $dinterval - $valid_days;
- }
- /*UNDERTIME*/
- $utSeconds = strtotime($fixtime->toTimeString()) - strtotime($timein->time_out);
- if($data->status == 'C/Out'){
- if ($utSeconds >= -7200 && $utSeconds <= 7200 ) {
- if ($utSeconds <= 0) {
- $ut += ($utSeconds/60);
- }
- }
- }
- if($employee->geninfo->category_id == 2){
- $converted_lates_undertimes = (($employee->salinfo->salaryrate / 26 / 8) / 60) * ($stime + ($ut * -1)); //insert late computation
- }else{
- $converted_lates_undertimes = (($employee->salinfo->salaryrate / 26 / 8) / 60) * ($stime + ($ut * -1)); //insert late computation
- }
- } // END OF LOOP FOR DTR ENTRY
- if ($valid_days === 0) {
- $absent_days = $dinterval;
- }
- if($employee->geninfo->category_id == 2){
- $converted_absences = ($employee->salinfo->salaryrate / 26) * $absent_days;
- }else{
- $converted_absences = 0.00;
- }
- if($employee->geninfo->category_id == 1){
- $basic_pay = $employee->salinfo->salaryrate * $days;
- }elseif($employee->geninfo->category_id == 2){
- $basic_pay = $employee->salinfo->salaryrate / 2;
- }
- $attendance = [
- 'payroll_report_id' => $payroll_report_id,
- 'employee_id' => $employee->id,
- 'days_present' => $valid_days,
- 'days_absent' => $absent_days,
- ];
- array_push($arrayAttendance,$attendance);
- $ltutab = [
- 'payroll_report_id' => $payroll_report_id,
- 'employee_id' => $employee->id,
- 'total_lates' => $converted_lates_undertimes,
- 'total_absences' => $converted_absences,
- ];
- array_push($arrayLateAbsent,$ltutab);
- $basicpay = [
- 'payroll_report_id' => $payroll_report_id,
- 'employee_id' => $employee->id,
- 'basic_pay' => $basic_pay,
- ];
- array_push($arrayBasicPay,$basicpay);
- }
- \App\Payroll_emp_attendance::insert($arrayAttendance);
- \App\Payroll_emp_basicpay::insert($arrayBasicPay);
- \App\Payroll_emp_absent_late::insert($arrayLateAbsent);
- \App\Payroll_emp_holiday::insert($arrayHolidayDuty);
- notify()->success('Payroll Report Entry Created');
- return redirect()->back();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement