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; }
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" => ""]; }