function crearRequisicionHaciendas($estructura) { LogController::logWebServiceIn('Llamada a web service: ' . __FILE__ . ' - ' . __FUNCTION__, compact('estructura')); $id_clase = 1; // Haciendas $requisicion = json_decode($estructura); $clase = Clase::find($id_clase); $solicitante = User::where('user_additional_data_1', $requisicion->id_solicitante)->first(); if ($solicitante) { $requisicion->id_solicitante = $solicitante->user_id; $requisicion->nombre_solicitante = $solicitante->user_name; } else { return 'No hay un usuario en EasyFlow con ese codigo de empleado Novopan. Imposible continuar'; } // Armar arreglo de cabecera de requisición $cabecera = ['ext_id' => $requisicion->id_requisicion, 'id_clase' => $id_clase, 'id_solicitante' => $requisicion->id_solicitante, 'nombre_solicitante' => $requisicion->nombre_solicitante, 'id_cc' => $requisicion->id_hacienda, 'nombre_cc' => $requisicion->nombre_hacienda, 'descripcion' => $requisicion->descripcion, 'prioridad' => $requisicion->prioridad]; // Armar arreglo de líneas de requisición $lineas = []; foreach ($requisicion->lineas as $linea) { // Ingresar el producto si no existe $producto = Producto::firstOrNew(['origen' => $clase->origen_productos, 'codigo' => $linea->id_producto]); $producto->origen = $clase->origen_productos; $producto->codigo = $linea->id_producto; $producto->nombre = $linea->nombre_producto; $producto->unidad = $linea->unidad; $producto->tipo = $linea->tipo; $producto->save(); // Sincronizar la clase 'haciendas' para el mismo producto $producto->clases()->sync([$clase->id]); // Armar la línea $lineas[] = ['ext_id' => $linea->id_linea, 'id_producto' => $producto->id, 'observacion_creador' => $linea->observacion, 'cantidad' => $linea->cantidad_solicitada, 'bodega_haciendas' => $requisicion->bodega]; } $datos_requisicion = [compact(['cabecera', 'lineas'])]; return IngresoRequisicionController::ingresarRequisicionesYSolicitudes($datos_requisicion); }
public function insertActividad() { Actividad::create(['id_tarea' => $_REQUEST['id_tarea'], 'descripcion' => $_REQUEST['descripcion'], 'estado' => 'A', 'prioridad' => 1, 'responsable' => $_REQUEST['responsable'], 'fechamax' => $_REQUEST['fechamax']]); $tarea = Tarea::find($_REQUEST['id_tarea']); // Send e-mail $userData = User::find($_REQUEST['responsable']); if ($userData) { if ($userData->user_email != "") { $emailContentHtml = "Hola " . $userData->user_name . "<br /><br />\r\n Le informamos que debe realizar la actividad <strong>'" . $_REQUEST['descripcion'] . "'</strong> para la tarea '" . $tarea->titulo . "' del usuario " . $tarea->encargado . " con fecha máxima " . $_REQUEST['fechamax']; MailController::sendGeneralMail([["email" => $userData["user_email"]]], "Nueva actividad asignada", $emailContentHtml); } } return Actividad::where('id_tarea', $_REQUEST['id_tarea'])->get(); }
public function addObservacion() { $input = Request::createFromGlobals(); $record = AccionObservacion::create($input->all()); // Notificar usuario creador $accion = Accion::with('observaciones')->find($input->accion_id); $user = User::find($accion->observaciones[0]->responsable); $observacion = $record; $html = view('Reclamos.Emails.new_action_comment', compact('user', 'accion', 'observacion')); echo '<pre>'; print_r($html); echo '</pre>'; die; MailController::sendGeneralMail([["email" => $user->user_email]], "Nuevo comentario en acción correctiva/preventiva", $html); }
function crearSolicitudTarea($tipo, $id, $fecha_inicio, $fecha_fin, $titulo, $descripcion, $encargado, $prioridad, $proyeccion, $url) { LogController::logWebServiceIn('Llamada a web service: ' . __FILE__ . ' - ' . __FUNCTION__, compact('tipo', 'id', 'fecha_inicio', 'fecha_fin', 'titulo', 'descripcion', 'encargado', 'prioridad', 'proyeccion', 'url')); $returnMessage = ""; $handlerAttachmentCore = new AttachmentCore(); $handlerRequestCore = new RequestCore(); $handlerUserCore = new UserCore(); $handlerFlowSettingsCore = new FlowSettingsCore(); // Tomar datos de aprobador $flow = Flow::find(FLOW_TAREAS); $creador = User::find($encargado); if ($creador) { $jefe = User::find($creador->user_reports_to); if (!$jefe) { $jefe = User::find($flow->flow_administrator); } // Crear solicitud $request_flow = $flow->flow_id; $request_id = $handlerRequestCore->getLastGeneralRequestId() + 1; $inner_request_id = $handlerRequestCore->getLastGeneralRequestId($request_flow) + 1; $request_name = "Aprobación: " . $titulo; $request_description = "Aprobación de tarea: " . $descripcion; $request_createdby = $creador->user_id; $request_assignedto = $jefe->user_id; $handlerRequestCore->createNewRequest($request_id, $inner_request_id, $request_flow, $request_name, $request_description, $request_createdby, $request_assignedto); Tarea::create(["ef_id" => $request_id, "ext_id" => $id, "tipo" => $tipo, "titulo" => $titulo, "descripcion" => $descripcion, "encargado" => $request_createdby, "aprobador_1" => $request_assignedto, "aprobador_2" => "", "fecha_inicio" => $fecha_inicio, "fecha_fin" => $fecha_fin, "prioridad" => $prioridad, "proyeccion" => $proyeccion]); RequestMetadataCore::set($request_id, "APR-DOBLE-APROBACION", "No"); RequestMetadataCore::set($request_id, "APR-APROBADO", "No"); RequestMetadataCore::set($request_id, "APR-COMENTARIO", ""); //Tomar archivo de campo url y adjuntar if ($url != '') { $tmpFileName = basename($url); file_put_contents($tmpFileName, fopen($url, 'r')); $filetype = FlowSettingsCore::get($request_flow, "APR_FILE_ADJUNTO"); $handlerAttachmentCore->addAttachmentToRequest($request_id, $filetype, dirname(__FILE__) . "/" . $tmpFileName, $_SESSION["environment_path"], "admin", "Adjunto de tarea"); } } else { $returnMessage = "ERROR: Usuario " . $encargado . " no existe en BPM. Imposible continuar"; } return $returnMessage; }
function requisicionFinalizada($requestId) { $messageArray = array("message_value" => "Solicitud finalizada con éxito!", "message_type" => "success"); $request = Request::find($requestId); // Enviar mails $emails = []; $user = User::find(Request::find($requestId)->request_createdby); if ($user) { if (filter_var($user->user_email, FILTER_VALIDATE_EMAIL)) { $emails[] = ['email' => $user->user_email]; } } $user = User::find(\RequestMetadataCore::get($requestId, "ADQ-APROBADOR-REQUISICION")); if ($user) { if (filter_var($user->user_email, FILTER_VALIDATE_EMAIL)) { $emails[] = ['email' => $user->user_email]; } } $subject = "AVISO: Requisición finalizada"; $requisicion = Requisicion::where('ef_id', $requestId)->first(); MailController::sendGeneralMail($emails, $subject, view('Adquisiciones.Emails.requisicion_cancelada', compact('request', 'requisicion'))); return $messageArray; }
<?php use EasyFlow\Master\Models\Flow; use EasyFlow\Master\Models\Task; use EasyFlow\Master\Models\User; use EasyFlow\Master\Controllers\LogController; use EasyFlow\Master\Controllers\MailController; require_once dirname(__DIR__) . "/includes/configuration.php"; try { $flows = Flow::all(); foreach ($flows as $flow) { $admin = User::find($flow->flow_administrator); $open_tasks = Task::where('task_flow', $flow->flow_id)->where(function ($query) { $query->open(); })->with(['request', 'step', 'user'])->get(); $html = view('email.daily_admin_summary', compact('flow', 'admin', 'open_tasks')); MailController::sendGeneralMail([["email" => $admin->user_email]], "Resumen de tareas abiertas - " . $flow->flow_name . " - " . date("Y-m-d"), $html); } LogController::logCron('Cron ejecutado con éxito (JobDailyAdminSummary.php)', [], 'INFO'); } catch (Exception $e) { LogController::logCron('Error al ejecutar cron (JobDailyAdminSummary.php)', ['error' => $e->getMessage()], 'ERROR'); }
<?php use EasyFlow\Master\Models\Flow; use EasyFlow\Master\Models\Task; use EasyFlow\Master\Models\User; use EasyFlow\Master\Controllers\LogController; use EasyFlow\Master\Controllers\MailController; require_once dirname(__DIR__) . "/includes/configuration.php"; try { $flows = Flow::all(); foreach ($flows as $flow) { $users = Task::select('task_assignedto')->where('task_flow', $flow->flow_id)->where(function ($query) { $query->open(); })->distinct('task_assignedto')->groupBy('task_assignedto')->get(); foreach ($users as $user_task) { $user = User::find($user_task->task_assignedto); $open_tasks = Task::where('task_flow', $flow->flow_id)->where('task_assignedto', $user->user_id)->where(function ($query) { $query->open(); })->with(['request', 'step'])->get(); $html = view('email.daily_user_summary', compact('user', 'open_tasks')); MailController::sendGeneralMail([["email" => $user->user_email]], "Tareas de usuario abiertas - " . date("Y-m-d"), $html); } LogController::logCron('Cron ejecutado con éxito (JobDailyUserSummary.php)', [], 'INFO'); } } catch (Exception $e) { LogController::logCron('Error al ejecutar cron (JobDailyUserSummary.php)', ['error' => $e->getMessage()], 'ERROR'); }
public function recibirOrdenCompra() { $input = Request::createFromGlobals(); $handlerWebServiceCore = new WebServiceCore(); $handlerRequestCore = new RequestCore(); $requisicionesRecibidas = []; $recepcionesEfectivas = []; foreach ($input->lineas as $linea) { if ($linea['esta_recepcion'] > 0) { $linea_ordencompra = OrdenCompraLinea::with(['linea_requisicion.requisicion', 'producto'])->find($linea['id']); // Consumir Web Service de recepción haciendas if ($linea_ordencompra->linea_requisicion->requisicion->id_clase == 1) { $wsdl = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_RECIBEOCHACIENDAS_WSDL"); $operation = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_RECIBEOCHACIENDAS_OPERATION"); $namespace = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_RECIBEOCHACIENDAS_NAMESPACE"); $soapAction = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_RECIBEOCHACIENDAS_SOAPACTION"); $params = ['Longvarchar' => json_encode(['HcHacId' => $linea_ordencompra->linea_requisicion->bodega_haciendas, 'Pro' => [['ProId' => $linea_ordencompra->producto->codigo, 'ProCan' => $linea['esta_recepcion']]]])]; $result = $handlerWebServiceCore->callWebService($wsdl, $operation, $namespace, $soapAction, $params, true); if (!$result) { return 'Error al consumir servicio de Kardex. Imposible continuar'; } if ($result['Gx_msg'] != '') { return $result['Gx_msg']; } } $recepcion_efectiva = RecepcionEfectiva::create(['id_ordencompra' => $linea['id_ordencompra'], 'id_ordencompra_linea' => $linea['id'], 'fecha' => date('Y-m-d'), 'cantidad' => $linea['esta_recepcion']]); if ($input->tipo_factura == 'fisica') { $recepcion_efectiva->update(['num_documento' => $input->num_factura]); } else { $recepcion_efectiva->update(['id_documento' => $input->factura]); } $recepcionesEfectivas[] = $recepcion_efectiva; $requisicionesRecibidas[$linea_ordencompra->linea_requisicion->requisicion->id][] = ['producto' => $linea_ordencompra->producto->codigo . ' - ' . $linea_ordencompra->producto->nombre, 'observacion' => $linea_ordencompra->linea_requisicion->observacion_creador, 'cantidad' => $linea['esta_recepcion']]; } } // Validar si la orden se ha recibido completamente y actualizar estado $ordencompra = OrdenCompra::with(['lineas', 'recepciones_efectivas'])->find($input->id_ordencompra); $estado = 'T'; foreach ($ordencompra->lineas as $linea) { if ($linea->cantidad_recibida < $linea->cantidad) { $estado = 'P'; break; } } $ordencompra->update(['estado' => $estado]); // Consumir web service de recepción bpcs $ordencompra->fresh(); $wsdl = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_ESTADOSOC_WSDL"); $operation = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_ESTADOSOC_OPERATION"); $namespace = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_ESTADOSOC_NAMESPACE"); $soapAction = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_ESTADOSOC_SOAPACTION"); $params = ['Hph_phord' => $ordencompra->ext_id, 'Tipo' => 'UPOR', 'Estado' => $ordencompra->recibido_totalmente ? 3 : 2, 'Cantidad' => $ordencompra->cantidad_recibida]; $result = $handlerWebServiceCore->callWebService($wsdl, $operation, $namespace, $soapAction, $params, true); if (!$result) { return 'Error al consumir servicio de actualización de estado BPCS. Imposible continuar'; } if ($result['Mensaje'] != '') { return $result['Mensaje']; } foreach ($requisicionesRecibidas as $id_requisicion => $lineas_requisicion) { // Notificar a los usuarios $requisicion = Requisicion::find($id_requisicion); $usuario = User::find($requisicion->id_solicitante); $jefe = $usuario->boss; $users_email = []; $users_email[] = ['email' => $usuario->user_email]; if ($jefe) { $users_email[] = ['email' => $jefe->user_email]; } $users_email[] = ['email' => '*****@*****.**']; foreach ($users_email as $user) { MailController::sendGeneralMail([$user], 'Líneas de requisición ' . $requisicion->id . ' recibidas', view('Adquisiciones.Emails.lineas_requisicion_recibidas', compact('requisicion', 'usuario', 'lineas_requisicion'))); } } // Generar PDF y adjuntar a requisiciones asociadas. Guardar el path del archivo en el campo description // de las recepciones para asociarlo $pdf = $this->generarPDFRecepcion($ordencompra); // Adjuntar a requisiciones foreach ($requisicionesRecibidas as $id_requisicion => $lineas) { $requisicion = Requisicion::find($id_requisicion); (new \AttachmentCore())->addAttachmentToRequest($requisicion['ef_id'], \FlowSettingsCore::get(FLOW_ADQUISICIONES, 'ADQ_FILE_CONTABILIDAD'), $pdf, APP_ENVPATH, $_SESSION['user_id'], "Documento de contabilidad"); } // Si la orden de compra fue recibida completamente cerrar la solicitud / las solicitudes para la requisición $ef_requests = []; if ($ordencompra->estado == 'T') { $ordencompra = OrdenCompra::with('lineas.linea_requisicion.requisicion.ef_request')->find($ordencompra->id); foreach ($ordencompra->lineas as $linea_ordencompra) { $ef_requests[] = $linea_ordencompra->linea_requisicion->requisicion->ef_request->request_id; } $ef_requests = array_unique($ef_requests); foreach ($ef_requests as $request_id) { $requisicion_recibida = true; // Verificar si todas las líneas de la requisición asociada están recibidas $requisicion = Requisicion::where('ef_id', $request_id)->with('lineas.lineas_ordencompra')->first(); foreach ($requisicion->lineas as $linea_requisicion) { foreach ($linea_requisicion->lineas_ordencompra as $linea_ordencompra) { if ($linea_ordencompra->cantidad_recibida < $linea_ordencompra->cantidad) { $requisicion_recibida = false; } } } // Cerrar si la requisición está recibida if ($requisicion_recibida) { $result = $handlerRequestCore->closeRequest($request_id, $_SESSION['user_id']); } } } }
<?php use EasyFlow\Master\Models\Flow; use EasyFlow\Master\Models\Task; use EasyFlow\Master\Models\User; use EasyFlow\Master\Controllers\LogController; use EasyFlow\Master\Controllers\MailController; require_once dirname(__DIR__) . "/includes/configuration.php"; try { $wsdl = 'http://192.168.17.15/bpcstools/apusercontrasenias.aspx?wsdl'; $operation = 'Execute'; $namespace = 'BpcsToolsNovo'; $soapAction = 'BpcsToolsNovoaction/APUSERCONTRASENIAS.Execute'; $params = []; $usuarios = (new \WebServiceCore())->callWebService($wsdl, $operation, $namespace, $soapAction, $params, true); $usuarios = json_decode($usuarios['Longvarchar']); // Read all users, if it exists in EasyFlow then update // We have to update the password (comes raw, we have to md5 it) // Also, the additional data # 1 is the employee code in HR, so we have to update it too foreach ($usuarios as $usuario) { $ef_user = User::find(strtolower($usuario->Usuario)); if ($ef_user) { $ef_user->update(['user_pass' => md5($usuario->PassWord), 'user_additional_data_1' => $usuario->Codigo]); } } LogController::logCron('Cron ejecutado con éxito (JobDailyAdminSummary.php)', [], 'INFO'); } catch (Exception $e) { LogController::logCron('Error al ejecutar cron (JobDailyAdminSummary.php)', ['error' => $e->getMessage()], 'ERROR'); }
<?php use EasyFlow\Master\Models\Flow; use EasyFlow\Master\Models\Task; use EasyFlow\Master\Models\User; use EasyFlow\Novopan\Models\Reclamos\Accion; use EasyFlow\Master\Controllers\LogController; use EasyFlow\Master\Controllers\MailController; require_once dirname(__DIR__) . "/includes/configuration.php"; try { $usuarios = Accion::lists('responsables'); $usuarios = $usuarios->unique(); foreach ($usuarios as $usuario) { $user = User::find($usuario); $acciones = Accion::with('reclamos')->where('responsables', $usuario)->where('estado', '!=', 'cerrada')->get(); if (count($acciones) > 0) { $html = view('Reclamos.Emails.daily_action_summary', compact('user', 'acciones')); MailController::sendGeneralMail([["email" => $user->user_email]], "Acciones correctivas - " . date("Y-m-d"), $html); } } } catch (Exception $e) { LogController::logCron('Error al ejecutar cron (JobDailyActionSummary.php)', ['error' => $e->getMessage()], 'ERROR'); }
public function generarOrdenCompra() { $input = Request::createFromGlobals(); $returnArray = array("status" => true, "message" => ""); $requestCore = new \RequestCore(); $arrayRequisiciones = []; $ordenes_compra = $this->getOrdenesCompra($input->request_id); $handlerWebServiceCore = new WebServiceCore(); foreach ($ordenes_compra as $orden_compra) { $clase = Clase::find($orden_compra->id_clase); if ($orden_compra->ext_id == '') { $wsdl = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_WSDL"); $operation = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_OPERATION"); $namespace = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_NAMESPACE"); $soapAction = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_SOAPACTION"); $params = ['Tipo' => 'OCRE', 'Hph_phwhse' => $orden_compra->bodega, 'Hph_phvend' => $orden_compra->proveedor->codigo, 'Hph_phbamt' => $orden_compra->valor_total, 'Hpo_pprod' => $clase->bien_economico, 'Hpo_pqord' => $orden_compra->cantidad_total, 'Hpo_pecst' => $orden_compra->valor_total, 'Hpo_podesc' => 'Orden de compra BPM - ' . $orden_compra->id]; $result = $handlerWebServiceCore->callWebService($wsdl, $operation, $namespace, $soapAction, $params, true); if (!$result) { $returnArray['status'] = false; $returnArray['message'] = 'No se pudo consumir el servicio web para creación de orden de compra'; return; } if ($result['Longvarchar'] != '') { $returnArray['status'] = false; $returnArray['message'] = 'Error BPCS: ' . $result['Longvarchar']; return; } $numero_oc = $result['Hph_phord']; // Cambiar estado de orden de compra $orden_compra->update(['estado' => 'G', 'fecha_creacion_erp' => date('Y-m-d H:i:s'), 'id_creador' => $_SESSION['user_id'], 'ext_id' => $numero_oc]); // Agregar recepción planificada del total de OC RecepcionPlanificada::create(['id_ordencompra' => $orden_compra->id, 'fecha' => date('Y-m-d', strtotime('+' . $orden_compra->tiempo_entrega . ' day')), 'observacion' => 'Entrega total estimada de la orden de compra']); // Llenar arreglo con número de requisiciones correspondientes foreach ($orden_compra->lineas as $linea) { $arrayRequisiciones[] = $linea->linea_requisicion->requisicion->id; } // Guardar registros de precio en la base de datos foreach ($orden_compra->lineas as $linea) { ProductoPrecio::create(['id_producto' => $linea->id_producto, 'id_proveedor' => $orden_compra->id_proveedor, 'fecha' => date('Y-m-d H:i:s'), 'precio' => $linea->valor, 'tiempo' => $orden_compra->tiempo_entrega]); } // Notificar a responsable(s) de bodega $responsableArray = explode(',', $orden_compra->clase->responsable_bodegas); // Notificar a usuarios creadores de requisición foreach ($orden_compra->lineas as $linea) { $responsableArray[] = $linea->linea_requisicion->requisicion->id_solicitante; } $responsableArray = array_unique($responsableArray); foreach ($responsableArray as $responsable) { $usuario = User::find($responsable); if ($usuario) { MailController::sendGeneralMail([['email' => $usuario->user_email]], 'Nueva Orden de Compra generada - ' . $orden_compra->clase->nombre, view('Adquisiciones.Emails.orden_compra_interna', compact('usuario', 'orden_compra'))); } } // Notificar a proveedor // Consultar la cotización seleccionada para la OC $cotizacion_seleccionada = Cotizacion::with(['lineas.linea_ordencompra.producto', 'contacto.proveedor'])->whereEstado('S')->whereIdOrdencompra($orden_compra->id)->first(); MailController::sendGeneralMail([['email' => $cotizacion_seleccionada->contacto->email]], 'Nueva orden de compra', view('Adquisiciones.Emails.orden_compra_proveedor', compact('orden_compra', 'cotizacion_seleccionada'))); } } // Mover ef_requests correspondientes $arrayRequisiciones = array_unique($arrayRequisiciones); foreach ($arrayRequisiciones as $id_requisicion) { $requisicion = Requisicion::find($id_requisicion); $task = $requisicion->ef_request->open_tasks[0]; $this->generarOrdenCompraPDF($task->task_request); // Completar tareas diferentes a la actual // (No se completa la actual porque EF lo hace por default) if ($task->task_id != $input->task_id) { $requestCore->completeTask($task->task_request, $task->task_id, $input->flow_id, $input->step_id, $input->user_id, 'Orden de compra generada en el ERP', 'next'); } // Generar PDF de orden de compra y adjuntar a solicitud $this->generarOrdenCompraPDF($task->task_request); } return $returnArray; }
public static function ingresarRequisicionesYSolicitudes($datos_requisicion) { $handlerRequestCore = new \RequestCore(); $handlerUserCore = new \UserCore(); $handlerFlowCore = new \FlowCore(); $handlerFlowSettingsCore = new \FlowSettingsCore(); // Tomar cada una de las requisiciones del arreglo de entrada foreach ($datos_requisicion as $requisicion) { // Extraer datos de cabecera y líneas $cabecera = $requisicion['cabecera']; $lineas = $requisicion['lineas']; $clase = Clase::find($cabecera['id_clase']); // Validaciones $aprobadores = explode(',', $clase->aprobador_requisicion); if (count($aprobadores) == 0) { return 'No existen aprobadores para la clase "' . $clase->nombre . '". Imposible continuar'; } // Si ya se estableció un solicitante y el valor no está vacío lo busco en EasyFlow // Si este último no existe en EF asignar el primer usuario aprobador como solicitante if (isset($cabecera['id_solicitante']) && !empty($cabecera['id_solicitante'])) { $solicitante = User::with('area')->find($cabecera['id_solicitante']); } if (!$solicitante) { return 'No existe el usuario en el BPM, imposible continuar'; } // Paso personalizado para cada clase $flow = Flow::find(FLOW_ADQUISICIONES); $first_step = $flow->flow_first_step; if ($clase->primer_paso != null || $clase->primer_paso == '' || $clase->primer_paso != 0) { $step = Step::whereStepFlow($flow->flow_id)->whereStepId($clase->primer_paso)->first(); if ($step) { $first_step = $step->step_id; } } // Crear solicitud EF $request_flow = $flow->flow_id; $request_id = $handlerRequestCore->getLastGeneralRequestId() + 1; $inner_request_id = $handlerRequestCore->getLastGeneralRequestId($request_flow) + 1; if ($clase->id == 11) { $request_name = $request_description = 'Requisición - ' . $solicitante->user_name . ' - Hacienda: ' . ucwords(strtolower($cabecera['nombre_cc'])); } else { $request_name = $request_description = 'Requisición - ' . $solicitante->user_name . ' - Departamento: ' . ucwords(strtolower($cabecera['nombre_cc'])); } $request_createdby = $solicitante->user_id; // Si el aprobador de requisición está seteado como 'boss' if ($clase->aprobador_requisicion == 'boss') { // Si el usuario tiene seteado un aprobador if ($solicitante->user_reports_to != '') { // Si este aprobador existe $user_reports_to = User::find($solicitante->user_reports_to); if ($user_reports_to) { $request_assignedto = $user_reports_to->user_id; } else { $request_assignedto = $solicitante->user_id; } } else { $request_assignedto = $solicitante->user_id; } } else { $request_assignedto = $clase->aprobador_requisicion; } $request_start_step = $clase->primer_paso; $handlerRequestCore->createNewRequest($request_id, $inner_request_id, $request_flow, $request_name, $request_description, $request_createdby, $request_assignedto, $request_start_step); // Crear cabecera de requisición $requisicionCabecera = Requisicion::create(array('ef_id' => $request_id, 'ext_id' => isset($cabecera['ext_id']) ? $cabecera['ext_id'] : null, 'id_clase' => $clase->id, 'fecha_inicio' => date('Y-m-d H:i:s'), 'fecha_estimada_fin' => isset($cabecera['fecha_estimada_fin']) ? $cabecera['fecha_estimada_fin'] : null, 'fecha_fin' => null, 'id_solicitante' => $solicitante->user_id, 'nombre_solicitante' => $solicitante->user_name, 'id_cc' => isset($cabecera['id_cc']) ? $cabecera['id_cc'] : $solicitante->area->id, 'nombre_cc' => isset($cabecera['nombre_cc']) ? $cabecera['nombre_cc'] : $solicitante->area->nombre, 'descripcion' => isset($cabecera['descripcion']) ? $cabecera['descripcion'] : null, 'observaciones' => isset($cabecera['observaciones']) ? $cabecera['observaciones'] : null, 'prioridad' => isset($cabecera['prioridad']) ? $cabecera['prioridad'] : null, 'id_proveedor' => isset($cabecera['id_proveedor']) ? $cabecera['id_proveedor'] : null, 'estado' => 'I')); // Crear líneas de requisición foreach ($lineas as $linea) { RequisicionLinea::insert(array('id_requisicion' => $requisicionCabecera->id, 'ext_id' => isset($linea['ext_id']) ? $linea['ext_id'] : null, 'id_producto' => $linea['id_producto'], 'observacion_creador' => isset($linea['observacion_creador']) ? $linea['observacion_creador'] : null, 'cantidad' => $linea['cantidad'], 'estado' => 'I', 'bodega_haciendas' => isset($linea['bodega_haciendas']) ? $linea['bodega_haciendas'] : null, 'papel_cara' => isset($linea['papel_cara']) ? $linea['papel_cara'] : null, 'papel_laminas' => isset($linea['papel_laminas']) ? $linea['papel_laminas'] : null)); } // Asignar variables de solicitud RequestMetadataCore::set($request_id, 'ADQ-CLASE', $clase->id); RequestMetadataCore::set($request_id, 'ADQ-ORIGEN', $clase->origen_requisicion); RequestMetadataCore::set($request_id, 'ADQ-TIPO', $clase->tipo); RequestMetadataCore::set($request_id, 'ADQ-RESPONSABLE-COMPRAS', $clase->responsable_compras); RequestMetadataCore::set($request_id, 'ADQ-RESPONSABLE-BODEGAS', $clase->responsable_bodegas); RequestMetadataCore::set($request_id, 'ADQ-APROBADOR-REQUISICION', $clase->aprobador_requisicion); RequestMetadataCore::set($request_id, 'ADQ-REQ-APROBADA', 'No'); if ($clase->id == '1') { RequestMetadataCore::set($request_id, 'ADQ-APROBADOR-COTIZACION', $clase->aprobador_requisicion); } else { RequestMetadataCore::set($request_id, 'ADQ-APROBADOR-COTIZACION', $solicitante->user_id); } // Ruteo especial: // Papel: No requiere consolidación, sí requiere confirmación // Comerciales: No requiere consolidación, sí requiere confirmación $requiere_confirmacion = 'No'; $requiere_consolidacion = 'Si'; if ($requisicionCabecera->id_clase == 2) { $requiere_confirmacion = 'Si'; $requiere_consolidacion = 'No'; } if ($requisicionCabecera->id_clase == 3 || $requisicionCabecera->id_clase == 4 || $requisicionCabecera->id_clase == 5 || $requisicionCabecera->id_clase == 6) { $requiere_confirmacion = 'Si'; $requiere_consolidacion = 'No'; } RequestMetadataCore::set($request_id, 'ADQ-REQUIERE-CONFIRMACION', $requiere_confirmacion); RequestMetadataCore::set($request_id, 'ADQ-REQUIERE-CONSOLIDACION', $requiere_consolidacion); $requisicion = Requisicion::with('lineas.producto')->find($requisicionCabecera->id); // Establecer usuario responsable // Si son productos comerciales el responsable es el usuario creador if ($requisicion->id_clase == 3 || $requisicion->id_clase == 4 || $requisicion->id_clase == 5 || $requisicion->id_clase == 6) { $handlerRequestCore->updatePic($request_id, $solicitante->user_id); } else { $handlerRequestCore->updatePic($request_id, $clase->responsable_compras); } /* // Emitir aviso a aprobador si el usuario ha solicitado algún producto más de una vez en este mes // (se excluyen haciendas) if($requisicion->id_clase != '1'){ // Obtener los mails de los aprobadores $emails = []; $aprobadores_array = explode(',', $clase->aprobador_requisicion); foreach ($aprobadores_array as $id_aprobador) { if($id_aprobador == 'boss') { // Si el usuario tiene seteado un aprobador if($solicitante->user_reports_to != ''){ // Si este aprobador existe $user_reports_to = User::find($solicitante->user_reports_to); if($user_reports_to) { $id_aprobador = $user_reports_to->user_id; } else { $id_aprobador = $solicitante->user_id; } } else { $id_aprobador = $solicitante->user_id; } } $aprobador = User::find($id_aprobador); $emails[] = ['email'=>$aprobador->user_email]; } foreach ($requisicion->lineas as $linea) { $lineas_producto = RequisicionLinea::whereHas('requisicion',function($query){ $curMonth = strtotime(date('Y-m')); $query->where('fecha_inicio', '>=', date('Y-m', $curMonth)) ->where('fecha_inicio', '<', date('Y-m', strtotime('+ 1 month',$curMonth))); })->where('id_producto', '=', $linea->id_producto)->count(); if($lineas_producto > 1){ $emailContentHtml = 'Estimado aprobador <br /><br /> El usuario '.$solicitante->user_name.' ha creado la requisición '.$requisicion->id.', la cual contiene el producto '.$linea->producto->codigo.' - '.$linea->producto->nombre.'. Este producto ya ha sido solicitado previamente en este mes. Por favor realice la gestión adecuada para no comprar este producto de manera innecesaria.<br /><br /> Atentamente <br /> Novopan del Ecuador S.A.'; MailController::sendGeneralMail($emails, 'Requisición de producto repetido' , $emailContentHtml); } } } */ } }
public function getFormData() { $input = Request::createFromGlobals(); $reclamo = Reclamo::find($input->id); $clases = Clase::all(); $regiones = Region::all(); $problemas = Problema::all(); if (count($problemas) > 0) { $causas = $this->getCausas($problemas->first()->id); } else { $causas = []; } $acciones = Accion::all(); $decisiones = Solucion::all(); $usuarios = User::noAdmin()->get(); return ['clases' => $clases, 'regiones' => $regiones, 'problemas' => $problemas, 'causas' => $causas, 'acciones' => $acciones, 'decisiones' => $decisiones, 'usuarios' => $usuarios]; }