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');
 }
 public function getResults()
 {
     $input = Request::createFromGlobals();
     // Traer reclamos
     $reclamos = Reclamo::with(['reclamo_nc', 'clase', 'region']);
     $reclamos = $this->applyFilters($reclamos);
     $reclamos = $reclamos->get();
     foreach ($reclamos as &$reclamo) {
         $reclamo->duracion_dias = $input->duration == 'calendar' ? $reclamo->duracion_calendario / 24 : $reclamo->duracion_laborable / 8;
     }
     // Reorder data
     $regiones = Region::all();
     $returnData = [];
     foreach ($regiones as $region) {
         $regionArray = ['name' => $region->nombre, 'data' => [], 'total' => 0];
         $reclamos_region = $reclamos->filter(function ($reclamo) use($region) {
             return $reclamo->reclamo_region == $region->id;
         });
         if (count($reclamos_region) > 0) {
             $total_nc = 0;
             $total_nd = 0;
             foreach ($reclamos_region as $reclamo) {
                 foreach ($reclamo->reclamo_nc as $nota_credito) {
                     $regionArray['data'][] = ['reclamo' => $reclamo->id, 'cliente' => $reclamo->cliente_codigo . ' - ' . $reclamo->cliente_nombre, 'clase' => $reclamo->clase->nombre, 'analisis' => $reclamo->analisis_descripcion, 'decision' => $reclamo->reclamo_decision->nombre, 'nc_tipo' => $nota_credito->tipo_label, 'nc_fecha' => $nota_credito->fecha, 'nc_numero' => $nota_credito->numero, 'nc_monto' => $nota_credito->monto];
                     if ($nota_credito->tipo == 'nc') {
                         $total_nc += $nota_credito->monto;
                     } else {
                         $total_nd += $nota_credito->monto;
                     }
                 }
             }
             if (count($reclamo->reclamo_nc) > 0) {
                 $regionArray['total_nc'] = $total_nc;
                 $regionArray['total_nd'] = $total_nd;
                 $returnData[] = $regionArray;
             }
         }
     }
     // Get the records
     return $returnData;
 }
 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;
 }
Example #5
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" => ""];
 }