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 processAllEmails($mailbox, $emails, $rucReceptor) { $returnArray = array("status" => true, "html" => ""); $handlerUserCore = new UserCore(); rsort($emails); $returnArray["html"] .= ' <table class="table table-condensed table-striped"> <thead> <tr> <th>ID</th> <th>Remitente</th> <th>Fecha</th> <th>Docs.</th> <th>Estado</th> <th>Proc.</th> </tr> </thead> <tbody>'; foreach ($emails as $email_number) { $status = ''; // Traer datos generales de e-mail $overview = imap_fetch_overview($mailbox, $email_number, 0); //$message = imap_fetchbody($mailbox, $email_number, 2); $structure = imap_fetchstructure($mailbox, $email_number); $attachments = getEmailAttachments($mailbox, $email_number, $structure); $returnArray["html"] .= '<tr>'; $returnArray["html"] .= '<td style="font-size: 11px;">' . $email_number . '</td>'; $returnArray["html"] .= '<td style="font-size: 11px;">' . $overview[0]->from . '</td>'; $returnArray["html"] .= '<td style="font-size: 11px;">' . date("Y-m-d", strtotime($overview[0]->date)) . '</td>'; $returnArray["html"] .= '<td style="font-size: 11px;">' . count($attachments) . '</td>'; $status .= '<ul class="pointmark" style="margin: 0px;">'; if (count($attachments) > 0) { // Leer cada adjunto XML y procesarlo foreach ($attachments as $attachment) { if (strtolower($attachment["xml_extension"]) == "xml") { $validArray = processXmlString($attachment["xml_attachment"], $attachment["pdf_attachment"], $attachment["pdf_extension"], $rucReceptor, $attachment["xml_basename"]); $processed = $validArray["status"]; } if ($processed) { $status .= "<li>Adjunto XML (" . $attachment["xml_basename"] . "): Procesado con éxito</li>"; } else { $status .= "<li>" . $validArray["html"] . "</li>"; } } } else { $status .= "<li>E-mail no tiene adjuntos</li>"; $processed = false; $usuarioDefault = FlowSettingsCore::get(FLOW_RECEPCIONDOCUMENTOS, "RDE_DEF_ASIGNACION"); $usuarioData = $handlerUserCore->getUserData($usuarioDefault); $email = $usuarioData["user_email"]; $html = 'Estimado usuario<br /><br /> Le informamos que tiene un nuevo documento electrónico descargable en el buzón. Por favor ingrese a revisarlo y darle tratamiento'; MailController::sendGeneralMail([["email" => $email]], "Nuevo documento electrónico descargable", $html); } $status .= '</ul>'; if (FlowSettingsCore::get(FLOW_RECEPCIONDOCUMENTOS, "RDE_MC_PRUEBAS") != "1") { setEmailRead($email_number, $rucReceptor); } else { imap_clearflag_full($mailbox, $email_number, "\\Seen"); } $returnArray["html"] .= '<td style="font-size: 11px;">' . $status . '</td>'; if ($processed) { $returnArray["html"] .= '<td><span class="awe-ok" style="color: #6b9b20;"></span></td>'; } else { $returnArray["html"] .= '<td><span class="awe-remove" style="color: #d43f3f;"></span></td>'; } $returnArray["html"] .= '</tr>'; } $returnArray["html"] .= "</table>"; return $returnArray; }
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'); }
public function enviarMailCotizacion($cotizacion) { MailController::sendGeneralMail([['email' => $cotizacion->contacto->email]], 'Ingreso de cotización', view('Adquisiciones.Emails.cotizacion', compact('cotizacion'))); }
<?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\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 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 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; }
<?php require_once 'configuration.php'; use EasyFlow\Master\Controllers\MailController; MailController::sendGeneralMail([["email" => $_REQUEST["email"]]], "Correo de prueba", "Este es un correo de prueba");