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; }
function agregarNotaCreditoReclamo($reclamo_id, $tipo, $numero, $fecha, $monto, $concepto, $rma, $pedido, $url) { LogController::logWebServiceIn('Llamada a web service: ' . __FILE__ . ' - ' . __FUNCTION__, compact('reclamo_id', 'tipo', 'numero', 'fecha', 'monto', 'concepto', 'rma', 'pedido', 'url')); try { $reclamo = Reclamo::find($reclamo_id); $nc = NotaCredito::create(['reclamo_id' => $reclamo_id, 'tipo' => $tipo, 'numero' => $numero, 'fecha' => $fecha, 'monto' => $monto, 'concepto' => $concepto, 'rma' => $rma, 'pedido' => $pedido]); if ($url) { $urlArray = explode('.', $url); $filename = APP_TMPPATH . "tmpdoc." . end($urlArray); $url_file = fopen($url, 'r'); if ($url_file) { file_put_contents($filename, $url_file); $descripcion = $tipo == 'nc' ? 'Nota de Crédito - ' . $numero : 'Nota de Débito - ' . $numero; (new \AttachmentCore())->addAttachmentToRequest($reclamo->ef_id, \FlowSettingsCore::get(FLOW_RECLAMOS, 'REC_ATT_ARCHIVO_NC'), $filename, APP_ENVPATH, 'admin', 'Nota de crédito / débito subida desde el módulo externo'); } } } catch (Exception $e) { LogController::logWebServiceIn('Error de webservice: ' . $e->getMessage()); return 'Error: ' . $e->getMessage(); } return ''; }
public function getResults() { $input = Request::createFromGlobals(); // Traer reclamos $reclamos = Reclamo::where('id', '>', 0); $reclamos = $this->applyFilters($reclamos); $reclamos = $reclamos->get(); $periodos = $this->getPredefinedFilters(); foreach ($periodos as &$periodo) { $periodo->cantidad = 0; $periodo->monto = 0; $reclamos_periodo = $reclamos->filter(function ($reclamo) use($periodo) { return strtotime($reclamo->reclamo_fecha_inicio) > strtotime($periodo->start . ' 00:00:00') && strtotime($reclamo->reclamo_fecha_inicio) < strtotime($periodo->end . ' 23:59:59'); }); if (count($reclamos_periodo) > 0) { foreach ($reclamos_periodo as $reclamo) { $periodo->cantidad += 1; $periodo->monto += $reclamo->nc_monto; } } } // Get the records return $periodos; }
function reclamoFinalizado($requestId) { $messageArray = array("message_value" => "Solicitud finalizada con éxito!", "message_type" => "success"); $user = User::getLoggedUser(); $request = Request::with(['attachments' => function ($query) use($user) { return $query->where('attachment_filetype', \FlowSettingsCore::get($user->user_lastflow, 'REC_ATT_ARCHIVO_NC')); }])->find($requestId); $creator = User::find($request->request_createdby); $attachment_array = []; $attachment = $request->attachments->last(); if ($attachment) { $attachment_array[] = APP_ENVPATH . '/attachments/requests/' . $attachment->attachment_name; } // Actualizar fecha de cierre $reclamo = Reclamo::where('ef_id', $requestId)->first(); $reclamo->reclamo_fecha_fin = date("Y-m-d H:i:s"); $reclamo->save(); // Enviar mail a cliente $email = \RequestMetadataCore::get($requestId, "REC-EMAIL-CONTACTO"); $subject = "AVISO: Reclamo finalizado"; $emailContent = view('Reclamos.Emails.reclamo_finalizado', compact('request', 'reclamo')); if (filter_var($email, FILTER_VALIDATE_EMAIL)) { MailController::sendGeneralMail([["email" => $email], ["email" => $creator->user_email]], $subject, $emailContent, [], [], $attachment_array); } return $messageArray; }
public function insertReclamo() { $input = Request::createFromGlobals(); $handlerRequestCore = new \RequestCore(); $handlerAttachmentCore = new \AttachmentCore(); $clase = Clase::find($input->reclamo['clase']); // Asignar creador $creador = $asignado_a = FlowSettingsCore::get(FLOW_RECLAMOS, "REC_PRO_USUARIO_VL"); if (FlowSettingsCore::get(FLOW_RECLAMOS, "REC_PRO_REGION_EXT") == $input->reclamo['region']) { $creador = $asignado_a = FlowSettingsCore::get(FLOW_RECLAMOS, "REC_PRO_USUARIO_EXP"); } $extemporaneo = false; $customStep = ""; foreach ($input->facturas as $factura) { if ($factura['infoFactura']['extemporaneo'] == true) { $customStep = FlowSettingsCore::get(FLOW_RECLAMOS, "REC_STEP_EXTEMPORANEAS"); $asignado_a = FlowSettingsCore::get(FLOW_RECLAMOS, "REC_USER_EXTEMPORANEAS"); $extemporaneo = true; break; } } $request_id = $handlerRequestCore->createNewRequest(0, 0, FLOW_RECLAMOS, "Reclamo - " . date("Y-m-d") . " - " . $input->cliente['nombre'], "Reclamo - " . date("Y-m-d") . " - " . $input->cliente['nombre'], $creador, $asignado_a, $customStep); $reclamo = Reclamo::create(['ef_id' => $request_id, 'cliente_codigo' => $input->cliente['codigo'], 'cliente_nombre' => $input->cliente['nombre'], 'cliente_identificacion' => $input->cliente['identificacion'], 'cliente_direccion' => $input->cliente['direccion'], 'contacto_nombre' => $input->contacto['nombre'], 'contacto_telefono' => $input->contacto['telefono'], 'contacto_email' => $input->contacto['email'], 'reclamo_descripcion' => $input->reclamo['descripcion'], 'reclamo_fecha_inicio' => date('Y-m-d H:i:s'), 'reclamo_clase' => $input->reclamo['clase'], 'reclamo_region' => $input->reclamo['region'], 'reclamo_extemporaneo' => $extemporaneo ? 1 : 0, 'reclamo_num_interno' => $input->reclamo['num_interno'], 'reclamo_monto' => $input->reclamo['total_reclamo'], 'visita_requiere' => 0]); $listaFacturas = array(); foreach ($input->facturas as $factura) { foreach ($factura['detalles'] as $detalle) { if ($detalle['cantidad_reclamo'] > 0 || $detalle['cantidad_no_facturado'] > 0) { if ($detalle['cantidad_no_facturado'] > 0) { $cantidad = $detalle['cantidad_no_facturado']; $valor = $detalle['valor_no_facturado']; $lote = $detalle['lote_no_facturado']; } else { $cantidad = $detalle['cantidad_reclamo']; $valor = $detalle['cantidad_reclamo'] * $detalle['precioUnitario']; $lote = $detalle['lote']; } ReclamoDetalle::create(['reclamo_id' => $reclamo->id, 'factura' => $factura['infoFactura']['numero_factura'], 'factura_fecha' => $factura['infoFactura']['fechaEmision'], 'producto_comercial' => $detalle['clase'], 'codigo_item' => $detalle['codigoPrincipal'], 'descripcion_item' => $detalle['descripcion'], 'precio_unitario' => $detalle['precioUnitario'], 'cantidad_original' => $detalle['cantidad'], 'cantidad_reclamo' => $cantidad, 'valor_reclamo' => $valor, 'lote_reclamo' => $lote]); $listaFacturas[] = $factura['infoFactura']['numero_factura']; } } } $listaFacturas = array_unique($listaFacturas); foreach ($input->adjuntos as $adjunto) { $handlerAttachmentCore->addAttachmentToRequest($request_id, $adjunto['filetype']['filetype_id'], $adjunto['filename'], APP_ENVPATH, 'admin', 'Adjunto del cliente'); } RequestMetadataCore::set($request_id, 'REC-CODIGO-CLIENTE', $input->cliente['codigo']); RequestMetadataCore::set($request_id, 'REC-NOMBRE-CLIENTE', $input->cliente['nombre']); RequestMetadataCore::set($request_id, 'REC-IDENTIFICACION-CLIENTE', $input->cliente['identificacion']); RequestMetadataCore::set($request_id, 'REC-EMAIL-CLIENTE', $input->cliente['email']); RequestMetadataCore::set($request_id, 'REC-EMAIL-CONTACTO', $input->contacto['email']); RequestMetadataCore::set($request_id, 'REC-CLASE', $clase->nombre); RequestMetadataCore::set($request_id, 'REC-NUMERO-FACTURA', implode(',', $listaFacturas)); RequestMetadataCore::set($request_id, 'REC-NUMERO-REC-CLIENTE', $input->reclamo['num_interno']); RequestMetadataCore::set($request_id, 'REC-DESCRIPCION', $input->reclamo['descripcion']); RequestMetadataCore::set($request_id, 'REC-MONTO-DECISION', $input->reclamo['total_reclamo']); $request = EFRequest::find($request_id); echo $request->request_inner_id; }
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; }
public function removeAccion($id_reclamo, $id_accion) { $reclamo = Reclamo::find($id_reclamo); $reclamo->reclamo_acciones()->detach($id_accion); return new AjaxResponse('success', ''); }
protected function getGraphClaseRegion() { $input = Request::createFromGlobals(); // Get graph/table data $graphArray = []; $tableArray = []; $graphArray['chart']['type'] = 'column'; $graphArray['title']['text'] = 'Reclamos por clase / región'; if ($input->filters['tipo_analisis'] == 'cantidad') { $graphArray['title']['text'] .= ' (cantidad)'; } else { $graphArray['title']['text'] .= ' (valor)'; } $graphArray['subtitle']['text'] = 'Haga click en una barra para ver información detallada'; $graphArray['xAxis']['type'] = 'category'; $graphArray['xAxis']['min'] = 0; if ($input->filters['tipo_analisis'] == 'cantidad') { $graphArray['yAxis']['title']['text'] = 'Número de reclamos'; } else { $graphArray['yAxis']['title']['text'] = 'Valor'; } // Drill up button styling $graphArray['drilldown']['drillUpButton'] = ['relativeTo' => 'spacingBox', 'position' => ['x' => -30, 'y' => 0], 'theme' => ['fill' => 'white', 'stroke-width' => 1, 'stroke' => 'silver', 'style' => ['font-size' => '10px'], 'states' => ['hover' => ['fill' => '#bada55'], 'select' => ['fill' => '#bada55', 'stroke' => '#039']]]]; // Estructurar datos $estados = [['id' => 'open', 'name' => 'Abiertos'], ['id' => 'closed', 'name' => 'Cerrados']]; $clases = Clase::all(); $regiones = Region::all(); // Nivel 1: Clases (Abiertas / Cerradas) foreach ($estados as $estado) { $clasesData = []; foreach ($clases as $clase) { $query = Reclamo::whereReclamoClase($clase->id)->whereHas('ef_request', function ($query) use($estado) { if ($estado['id'] == 'open') { $estado['id'] = ''; } return $query->whereRequestStatus($estado['id']); })->analysis(); if ($input->filters['tipo_analisis'] == 'cantidad') { $num_reclamos = $query->count(); } else { $num_reclamos = $query->sum('nc_monto'); } if ($num_reclamos) { $clasesData[] = ['name' => $clase->nombre, 'y' => $num_reclamos, 'drilldown' => $estado['id'] . '-' . $clase->id]; } } $graphArray["series"][] = ['name' => $estado['name'], 'data' => $clasesData]; } // Nivel 2: Región foreach ($estados as $estado) { foreach ($clases as $clase) { $regionesData = []; foreach ($regiones as $region) { $query = Reclamo::whereReclamoClase($clase->id)->whereReclamoRegion($region->id)->whereHas('ef_request', function ($query) use($estado) { if ($estado['id'] == 'open') { $estado['id'] = ''; } return $query->whereRequestStatus($estado['id']); })->analysis(); if ($input->filters['tipo_analisis'] == 'cantidad') { $num_reclamos = $query->count(); } else { $num_reclamos = $query->sum('nc_monto'); } if ($num_reclamos) { $regionesData[] = ['name' => $region->nombre, 'y' => $num_reclamos, 'drilldown' => $estado['id'] . '-' . $clase->id . '-' . $region->id]; } } $graphArray['drilldown']['series'][] = ['name' => $estado['name'], 'id' => $estado['id'] . '-' . $clase->id, 'data' => $regionesData]; } } // Nivel 3: Reclamos foreach ($estados as $estado) { foreach ($clases as $clase) { foreach ($regiones as $region) { $reclamosData = []; $reclamos = Reclamo::whereReclamoClase($clase->id)->whereReclamoRegion($region->id)->whereHas('ef_request', function ($query) use($estado) { if ($estado['id'] == 'open') { $estado['id'] = ''; } return $query->whereRequestStatus($estado['id']); })->analysis()->get(); if ($reclamos) { foreach ($reclamos as $reclamo) { if ($input->filters['tipo_analisis'] == 'cantidad') { $reclamosData[] = [(string) $reclamo->id, 1]; } else { $reclamosData[] = [(string) $reclamo->id, $reclamo->nc_monto]; } } } $graphArray['drilldown']['series'][] = ['name' => $estado['name'], 'id' => $estado['id'] . '-' . $clase->id . '-' . $region->id, 'data' => $reclamosData]; } } } return ['graph' => $graphArray, 'table' => $tableArray]; }
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" => ""]; }