Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.97 KB | None | 0 0
  1. public function store(){
  2.         $validator = Validator::make(Request::all(), [
  3.             'date'          =>      'required|date',
  4.             'date_from'     =>      'required|date',
  5.             'date_to'       =>      'required|date',
  6.             'quincena_id'   =>      'required',
  7.             'company_id'    =>      'required',
  8.         ],[
  9.             'date.required'             =>      'Please select payroll date',
  10.             'date_from.required'        =>      'Please select date from',
  11.             'date_to.required'          =>      'Please select date to',
  12.             'quincena_id.required'      =>      'Please select quincena',
  13.             'company_id.required'       =>      'Please select company',
  14.         ]);
  15.  
  16.         if ($validator->fails()) {
  17.             return redirect()->back()
  18.                         ->withErrors($validator)
  19.                         ->withInput();
  20.         }
  21.  
  22.         $payroll_report = Request::all();
  23.         $payroll_report_id = Payroll::create($payroll_report)->id;
  24.  
  25.         $empID = [];
  26.         $empCompanies = \App\Employee_general_info::where('company_id',Request::get('company_id'))->orderBy('employee_id')->get();
  27.  
  28.         foreach($empCompanies as $ec){
  29.             $empID[] = $ec->employee_id;
  30.         }
  31.  
  32.         $employees = \App\Employee::with(['geninfo'])->whereIn('id',$empID)->where('isActive',1)->get();
  33.  
  34.         $stime = 0;
  35.         $arrayAttendance = [];
  36.         $arrayBasicPay = [];
  37.         $arrayLateAbsent = [];
  38.         $arrayHolidayDuty = [];
  39.  
  40.         $stime = 0;
  41.         foreach($employees as $employee){
  42.             $valid_days = 0;
  43.             $absent_days = 0;
  44.             $restdays = 0;
  45.             $rdduty = $ut = $holipay = $rdpay = 0;
  46.             $trulate = $truunder = 0;
  47.             $holipay2 = $rdpay2 = $otpay2 = 0;
  48.             $basic_pay = 0;
  49.             $converted_lates_undertimes = $converted_absences = 0;
  50.  
  51.             $dtr = \App\Employee_biolog::whereDate('date','>=',Request::get('date_from'))
  52.                 ->whereDate('date','<=',Request::get('date_to'))
  53.                 ->where('employee_id',$employee->id)
  54.                 ->orderBy('date')
  55.                 ->get();
  56.  
  57.             $nd = [];
  58.             $test = [];
  59.  
  60.             $timein = \App\Employee_schedule::where('employee_id',$employee->id)->latest()->first();
  61.             $from = Carbon::parse(Request::get('date_from'));
  62.             $to = Carbon::parse(Request::get('date_to'));
  63.             $dinterval = $to->diffInDays($from) + 1;       
  64.  
  65.             /*HOLIDAY AND RESTDAY*/
  66.             foreach($dtr->groupBy('date') as $date => $value){
  67.                 $holidaydate = \App\Holiday_date::where('date',Carbon::parse($date)->toDateString())->first();
  68.                 if($holidaydate != NULL){
  69.                     if($employee->geninfo->category_id == 1 && $employee->geninfo->area_id == $holidaydate->area_id){
  70.                         if($holidaydate->type == 'LEGAL'){
  71.                             /*LEGAL HOLIDAY*/
  72.                             $holipay = (($employee->salinfo->salaryrate / 8) * 8);
  73.                         }else{
  74.                             /*SPECIAL HOLIDAY*/
  75.                             $holipay = (($employee->salinfo->salaryrate / 8) * 8) * .3;
  76.                         }
  77.                     }elseif($employee->geninfo->category_id == 2 && $employee->geninfo->area_id == $holidaydate->area_id){
  78.                         if($holidaydate->type == 'LEGAL'){
  79.                             /*LEGAL HOLIDAY*/
  80.                             $holipay = ((($employee->salinfo->salaryrate / 26) / 8) * 8);
  81.                         }else{
  82.                             /*SPECIAL HOLIDAY*/
  83.                             $holipay = ((($employee->salinfo->salaryrate / 26) / 8) * 8) * .3;
  84.                         }
  85.                     }
  86.  
  87.                     $holidaypay = [
  88.                         'payroll_report_id'         =>      $payroll_report_id,
  89.                         'employee_id'               =>      $employee->id,
  90.                         'holiday_id'                =>      $holidaydate->id,
  91.                         'amount'                    =>      $holipay,
  92.                     ];
  93.  
  94.                     $holipay2 += $holipay;
  95.  
  96.                     array_push($arrayHolidayDuty,$holidaypay);
  97.                 }
  98.             }
  99.  
  100.             foreach($dtr as $data){
  101.                 $fixtime = Carbon::parse($data->date);
  102.                 $fixdate = $fixtime->toDateString();
  103.  
  104.                 if(! isset($test[$fixdate]) && $data->status == 'C/In'){
  105.                     $latesSeconds = Carbon::parse($timein->time_in)->diffInSeconds($fixtime->toTimeString(), false);
  106.                     if ($latesSeconds >= -7200  && $latesSeconds <= 7200 ) {
  107.                         $test[$fixdate] = 1;
  108.                         if ($latesSeconds > 0) {
  109.                             $trulate = $latesSeconds/60;
  110.                             if($trulate > 5){
  111.                                 $stime += $trulate; //undertime rules here
  112.                             }else{
  113.                                 $stime += $trulate;
  114.                             }
  115.                         }
  116.                     }
  117.                 }
  118.  
  119.                 $hdays = \App\Holiday_date::whereBetween('date',[Request::get('date_from'),Request::get('date_to')])
  120.                     ->where('area_id',$employee->geninfo->area_id)
  121.                     ->count();
  122.  
  123.                 if($employee->geninfo->category_id == 1){
  124.                     $valid_days = count($test);
  125.                 }elseif($employee->geninfo->category_id == 2){
  126.                     $valid_days = count($test);
  127.                     $absent_days = $dinterval - $valid_days;
  128.                 }
  129.  
  130.                 /*UNDERTIME*/
  131.                 $utSeconds = strtotime($fixtime->toTimeString()) - strtotime($timein->time_out);
  132.                 if($data->status == 'C/Out'){
  133.                     if ($utSeconds >= -7200  && $utSeconds <= 7200 ) {
  134.                         if ($utSeconds <= 0) {
  135.                             $ut += ($utSeconds/60);
  136.                         }
  137.                     }
  138.                 }
  139.  
  140.                 if($employee->geninfo->category_id == 2){
  141.                     $converted_lates_undertimes = (($employee->salinfo->salaryrate / 26 / 8) / 60) * ($stime + ($ut * -1)); //insert late computation
  142.                 }else{
  143.                     $converted_lates_undertimes = (($employee->salinfo->salaryrate / 26 / 8) / 60) * ($stime + ($ut * -1)); //insert late computation
  144.                 }
  145.             } // END OF LOOP FOR DTR ENTRY
  146.  
  147.             if ($valid_days === 0) {
  148.                 $absent_days = $dinterval;
  149.             }
  150.  
  151.             if($employee->geninfo->category_id == 2){
  152.                 $converted_absences = ($employee->salinfo->salaryrate / 26) * $absent_days;
  153.             }else{
  154.                 $converted_absences = 0.00;
  155.             }
  156.  
  157.  
  158.             if($employee->geninfo->category_id == 1){
  159.                 $basic_pay = $employee->salinfo->salaryrate * $days;
  160.             }elseif($employee->geninfo->category_id == 2){
  161.                 $basic_pay = $employee->salinfo->salaryrate / 2;
  162.             }
  163.  
  164.             $attendance = [
  165.                 'payroll_report_id' =>      $payroll_report_id,
  166.                 'employee_id'       =>      $employee->id,
  167.                 'days_present'      =>      $valid_days,
  168.                 'days_absent'       =>      $absent_days,
  169.             ];
  170.             array_push($arrayAttendance,$attendance);
  171.  
  172.             $ltutab = [
  173.                 'payroll_report_id' =>      $payroll_report_id,
  174.                 'employee_id'       =>      $employee->id,
  175.                 'total_lates'       =>      $converted_lates_undertimes,
  176.                 'total_absences'    =>      $converted_absences,
  177.             ];
  178.  
  179.             array_push($arrayLateAbsent,$ltutab);
  180.  
  181.             $basicpay = [
  182.                 'payroll_report_id' =>      $payroll_report_id,
  183.                 'employee_id'       =>      $employee->id,
  184.                 'basic_pay'         =>      $basic_pay,
  185.             ];
  186.             array_push($arrayBasicPay,$basicpay);
  187.         }
  188.  
  189.         \App\Payroll_emp_attendance::insert($arrayAttendance);
  190.         \App\Payroll_emp_basicpay::insert($arrayBasicPay);
  191.         \App\Payroll_emp_absent_late::insert($arrayLateAbsent);
  192.         \App\Payroll_emp_holiday::insert($arrayHolidayDuty);
  193.         notify()->success('Payroll Report Entry Created');
  194.         return redirect()->back();
  195.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement