Пример #1
0
 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);
 }
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
<?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')));
 }
Пример #6
0
<?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');
}
Пример #7
0
 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']);
             }
         }
     }
 }
Пример #8
0
<?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();
 }
Пример #10
0
 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;
 }
Пример #11
0
<?php

require_once 'configuration.php';
use EasyFlow\Master\Controllers\MailController;
MailController::sendGeneralMail([["email" => $_REQUEST["email"]]], "Correo de prueba", "Este es un correo de prueba");