public function getResults()
 {
     $input = Request::createFromGlobals();
     $steps = Step::where('step_flow', $_SESSION['user_flow'])->get();
     foreach ($steps as $step) {
         $records = Reclamo::with(['ef_request.dates' => function ($query) use($step) {
             return $query->whereDateFlow($step->step_flow)->whereDateStep($step->step_id);
         }]);
         $records = $this->applyFilters($records);
         $records = $records->get();
         $subtotalArray = ['work' => 0, 'non-work' => 0, 'total' => 0];
         $dateCount = 0;
         foreach ($records as $record) {
             foreach ($record->ef_request->dates as $date) {
                 $date_end = $date->date_end ? $date->date_end : date('Y-m-d H:i:s');
                 $timeArray = TimeController::getHours($date->date_start, $date_end);
                 $subtotalArray['work'] += $timeArray['work'];
                 $subtotalArray['non-work'] += $timeArray['non-work'];
                 $subtotalArray['total'] += $timeArray['total'];
                 $dateCount++;
             }
         }
         if ($dateCount > 0) {
             $subtotalArray['work'] = $subtotalArray['work'] / $dateCount;
             $subtotalArray['non-work'] = $subtotalArray['non-work'] / $dateCount;
             $subtotalArray['total'] = $subtotalArray['total'] / $dateCount;
         }
         $step->elapsed_time = $subtotalArray;
     }
     return $steps;
 }
 public function getResults()
 {
     $input = Request::createFromGlobals();
     $records = [];
     $steps = Step::where('step_flow', $_SESSION['user_flow'])->get();
     $reclamos = Reclamo::with('ef_request.dates');
     $reclamos = $this->applyFilters($reclamos);
     $reclamos = $reclamos->get();
     foreach ($reclamos as $reclamo) {
         $record = ['reclamo' => $reclamo->ef_request->request_inner_id, 'times' => [], 'total' => 0];
         // Iterate steps and load times/totals
         foreach ($steps as $step) {
             $step_time = 0;
             $dates = $reclamo->ef_request->dates->filter(function ($date) use($step) {
                 return $date->date_step == $step->step_id;
             });
             foreach ($dates as $date) {
                 $timeArray = TimeController::getHours($date->date_start, $date->date_end);
                 if ($input->duration == 'calendar') {
                     $step_time += $timeArray['total'] / 24;
                 } else {
                     $step_time += $timeArray['work'] / 8;
                 }
             }
             $stepArray = ['name' => $step->step_name, 'time' => number_format($step_time, 2)];
             $record['times'][] = $stepArray;
         }
         // Add totals
         foreach ($record['times'] as $time) {
             $record['total'] += $time['time'];
         }
         $records[] = $record;
     }
     return compact('records', 'steps');
 }
Example #3
0
 public function getDuracionLaborableAttribute()
 {
     // Set end date
     $end_date = $this->reclamo_fecha_fin;
     if ($end_date == null || $end_date == '' || $end_date == '0000-00-00 00:00:00') {
         $end_date = date('Y-m-d H:i:s');
     }
     // Get duration
     $timeArray = TimeController::getHours($this->reclamo_fecha_inicio, $end_date);
     return $timeArray['work'];
 }
 public function getResults()
 {
     $input = Request::createFromGlobals();
     // Get customers
     $clientes = Reclamo::orderBy('cliente_nombre')->lists('cliente_nombre');
     $clientes = $clientes->unique();
     // Get unfiltered requests
     $reclamos = Reclamo::with('ef_request');
     // Apply filters
     $reclamos = $this->applyFilters($reclamos);
     $reclamos = $reclamos->get();
     $records = [];
     foreach ($clientes as $cliente) {
         $cliente_reclamos = $reclamos->filter(function ($reclamo) use($cliente) {
             return $reclamo->cliente_nombre == $cliente;
         });
         $numAbiertos = 0;
         $montoAbiertos = 0;
         $totalTimeArrayAbiertos = ['work' => 0, 'non-work' => 0, 'total' => 0];
         $numCerrados = 0;
         $montoCerrados = 0;
         $totalTimeArrayCerrados = ['work' => 0, 'non-work' => 0, 'total' => 0];
         foreach ($cliente_reclamos as $reclamo) {
             if ($reclamo->reclamo_fecha_fin != null && $reclamo->reclamo_fecha_fin != '' && $reclamo->reclamo_fecha_fin != '0000-00-00 00:00:00') {
                 // Set end date
                 $date_end = $reclamo->reclamo_fecha_fin;
                 // Get times
                 $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                 $totalTimeArrayCerrados['work'] += $timeArray['work'];
                 $totalTimeArrayCerrados['non-work'] += $timeArray['non-work'];
                 $totalTimeArrayCerrados['total'] += $timeArray['total'];
                 $numCerrados++;
                 $montoCerrados += $reclamo->nc_monto;
             } else {
                 // Set end date
                 $date_end = date('Y-m-d H:i:s');
                 // Get times
                 $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                 $totalTimeArrayAbiertos['work'] += $timeArray['work'];
                 $totalTimeArrayAbiertos['non-work'] += $timeArray['non-work'];
                 $totalTimeArrayAbiertos['total'] += $timeArray['total'];
                 $numAbiertos++;
                 $montoAbiertos += $reclamo->nc_monto;
             }
             // Set end date
             $date_end = $reclamo->reclamo_fecha_fin ? $reclamo->reclamo_fecha_fin : date('Y-m-d H:i:s');
             // Get times
             $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
         }
         $duracionAbiertos = 0;
         $duracionCerrados = 0;
         if ($input->duration == 'calendar') {
             if ($numAbiertos > 0) {
                 $duracionAbiertos = $totalTimeArrayAbiertos['total'] / $numAbiertos / 24;
             }
             if ($numCerrados > 0) {
                 $duracionCerrados = $totalTimeArrayCerrados['total'] / $numCerrados / 24;
             }
         } else {
             if ($numAbiertos > 0) {
                 $duracionAbiertos = $totalTimeArrayAbiertos['work'] / $numAbiertos / 8;
             }
             if ($numCerrados > 0) {
                 $duracionCerrados = $totalTimeArrayCerrados['work'] / $numCerrados / 8;
             }
         }
         if ($numAbiertos > 0 || $numCerrados > 0) {
             $records[] = ['nombre' => $cliente, 'num_abiertos' => $numAbiertos, 'monto_abiertos' => $montoAbiertos, 'duracion_abiertos' => $duracionAbiertos, 'num_cerrados' => $numCerrados, 'monto_cerrados' => $montoCerrados, 'duracion_cerrados' => $duracionCerrados, 'total' => $numAbiertos + $numCerrados];
         }
     }
     // Get the records
     return $records;
 }
 public function getResults()
 {
     $input = Request::createFromGlobals();
     // Tomar clases
     $clases = Reclamo::orderBy('reclamo_clase')->lists('reclamo_clase');
     $clases = $clases->unique();
     // Get unfiltered requests
     $reclamos = Reclamo::where('id', '>', 0);
     // Apply filters
     $reclamos = $this->applyFilters($reclamos);
     $reclamos = $reclamos->with('reclamo_causas')->get();
     $records = [];
     foreach ($clases as $clase) {
         $finalData = [];
         $obj_clase = Clase::find($clase);
         $problemas = Problema::where('clase_id', $obj_clase->id)->get();
         foreach ($problemas as $problema) {
             $causas = Causa::where('problema_id', $problema->id)->get();
             foreach ($causas as $causa) {
                 $cliente_reclamos = $reclamos->filter(function ($reclamo) use($clase) {
                     return $reclamo->reclamo_clase == $clase;
                 })->filter(function ($reclamo) use($causa) {
                     $retval = false;
                     foreach ($reclamo->reclamo_causas as $reclamo_causa) {
                         if ($reclamo_causa->causa_id == $causa->id && !$retval) {
                             $retval = true;
                         }
                     }
                     return $retval;
                 });
                 $numAbiertos = 0;
                 $montoAbiertos = 0;
                 $totalTimeArrayAbiertos = ['work' => 0, 'non-work' => 0, 'total' => 0];
                 $numCerrados = 0;
                 $montoCerrados = 0;
                 $totalTimeArrayCerrados = ['work' => 0, 'non-work' => 0, 'total' => 0];
                 foreach ($cliente_reclamos as $reclamo) {
                     if ($reclamo->reclamo_fecha_fin != null && $reclamo->reclamo_fecha_fin != '' && $reclamo->reclamo_fecha_fin != '0000-00-00 00:00:00') {
                         // Set end date
                         $date_end = $reclamo->reclamo_fecha_fin;
                         // Get times
                         $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                         $totalTimeArrayCerrados['work'] += $timeArray['work'];
                         $totalTimeArrayCerrados['non-work'] += $timeArray['non-work'];
                         $totalTimeArrayCerrados['total'] += $timeArray['total'];
                         $numCerrados++;
                         $montoCerrados += $reclamo->nc_monto;
                     } else {
                         // Set end date
                         $date_end = date('Y-m-d H:i:s');
                         // Get times
                         $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                         $totalTimeArrayAbiertos['work'] += $timeArray['work'];
                         $totalTimeArrayAbiertos['non-work'] += $timeArray['non-work'];
                         $totalTimeArrayAbiertos['total'] += $timeArray['total'];
                         $numAbiertos++;
                         $montoAbiertos += $reclamo->nc_monto;
                     }
                     // Set end date
                     $date_end = $reclamo->reclamo_fecha_fin ? $reclamo->reclamo_fecha_fin : date('Y-m-d H:i:s');
                     // Get times
                     $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                 }
                 $duracionAbiertos = 0;
                 $duracionCerrados = 0;
                 if ($input->duration == 'calendar') {
                     if ($numAbiertos > 0) {
                         $duracionAbiertos = $totalTimeArrayAbiertos['total'] / $numAbiertos / 24;
                     }
                     if ($numCerrados > 0) {
                         $duracionCerrados = $totalTimeArrayCerrados['total'] / $numCerrados / 24;
                     }
                 } else {
                     if ($numAbiertos > 0) {
                         $duracionAbiertos = $totalTimeArrayAbiertos['work'] / $numAbiertos / 8;
                     }
                     if ($numCerrados > 0) {
                         $duracionCerrados = $totalTimeArrayCerrados['work'] / $numCerrados / 8;
                     }
                 }
                 if ($numAbiertos + $numCerrados > 0) {
                     $finalData[] = ['nombre' => $problema->nombre . ' - ' . $causa->nombre, 'num_abiertos' => $numAbiertos, 'monto_abiertos' => $montoAbiertos, 'duracion_abiertos' => $duracionAbiertos, 'num_cerrados' => $numCerrados, 'monto_cerrados' => $montoCerrados, 'duracion_cerrados' => $duracionCerrados, 'total' => $numAbiertos + $numCerrados];
                 }
             }
         }
         if (count($finalData) > 0) {
             $records[] = ['name' => $obj_clase->nombre, 'data' => $finalData];
         }
     }
     // Get the records
     return $records;
 }
Example #6
0
 public function generateRequestPDF()
 {
     $input = Request::createFromGlobals();
     $filename = APP_TMPPATH . 'requisicion.pdf';
     $reclamo = Reclamo::with(['clase', 'lineas', 'reclamo_causas.causa', 'reclamo_acciones.reclamos', 'reclamo_decision', 'reclamo_nc'])->whereEfId($input->request_id)->first();
     $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio);
     $dias_calendario = number_format($timeArray['total'] / 24, 2);
     $dias_laborable = number_format($timeArray['work'] / 8, 2);
     PDFController::generatePDF(view('Reclamos.PDF.reclamo', compact('reclamo', 'dias_calendario', 'dias_laborable')), false, $filename);
     (new \AttachmentCore())->addAttachmentToRequest($input->request_id, \FlowSettingsCore::get(FLOW_RECLAMOS, 'REC_ATT_ARCHIVO_PDF'), $filename, APP_ENVPATH, $_SESSION['user_id'], "Reclamo");
     return ["status" => true, "message" => ""];
 }