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; }
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 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 ''; }
function crearDocumentoContingencia($arrayCabecera, $xmlContent, $rideContent, $rideExtension) { $numFactura = $arrayCabecera["estab"] . $arrayCabecera["ptoEmi"] . $arrayCabecera["secuencial"]; // Guardar archivos en directorio de temporales $xmlFile = dirname(__FILE__) . "/facturas/contingencia/" . $numFactura . "-" . date("Ymdhis") . ".xml"; file_put_contents($xmlFile, $xmlContent); $pdfFile = ""; if (!empty($rideExtension) && !empty($rideContent)) { $pdfFile = dirname(__FILE__) . "/facturas/contingencia/" . $numFactura . "-" . date("Ymdhis") . "." . $rideExtension; file_put_contents($pdfFile, $rideContent); } // Verificar el usuario creador / al que se asignará $creador = Responsable::whereRuc($arrayCabecera['ruc'])->lists('responsable')->implode(','); if (empty($creador)) { $creador = FlowSettingsCore::get(FLOW_RECEPCIONDOCUMENTOS, "RDE_DEF_ASIGNACION"); } OtroDocumento::create(["clase" => "C", "tipo" => $arrayCabecera["tipo_doc"], "numero" => $numFactura, "proveedor" => $arrayCabecera["razonSocial"], "path_xml" => $xmlFile, "path_pdf" => $pdfFile, "usuario" => $creador, "estado" => 0]); }
/** * Consolida las requisiciones correspondientes y mueve las solicitudes en EF * @return Array */ public function consolidarRequisiciones() { $returnArray = array('status' => true, 'message' => ''); $input = Request::createFromGlobals(); $requestCore = new \RequestCore(); $flow = $_SESSION['user_flow']; $step = FlowSettings::get($_SESSION['user_flow'], 'ADQ_STEP_CONSOLIDATION'); $requisiciones = Requisicion::getRequisicionesParaConsolidar(); $ordenescompra = OrdenCompra::getOrdenesCompraParaConsolidar(); // Tomar la tarea actual, si no está completada salir foreach ($requisiciones as $requisicion) { if ($requisicion->asignada_totalmente == 0) { $returnArray['status'] = false; $returnArray['message'] = 'La requisición ' . $requisicion->id . ' no se encuentra asignada por completo. No se puede continuar'; return $returnArray; } } // Cambiar estado de las ordenes de compra cuyas requisiciones estén totalmente asignadas foreach ($ordenescompra as $ordencompra) { $ordencompra->estado = 'C'; $ordencompra->save(); } foreach ($requisiciones as $requisicion) { // Solo completar tareas de requisiciones asignadas totalmente if ($requisicion->asignada_totalmente == 1) { // Cambiar estado a 'C' (Consolidada) $requisicion->estado = 'C'; $requisicion->save(); $task = $requisicion->ef_request->open_tasks[0]; // 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, 'Requisición consolidada por el usuario ' . $_SESSION['user_id'], 'next'); } } } return $returnArray; }
/** * Devuelve las ordenes de compra que cumplan con las siguientes características * - Que la ef_request de su requisición esté en el proceso de 'Adquisiciones' * - Que la ef_request de su requisición esté en el paso de 'Recepción' * - Que su estado sea 'G' (Generada) * @return Consolidaciones */ public static function getOrdenesCompraParaRecepcion($ef_id) { // Filtro de estado $query = self::estado('G'); // Filtro de status de solicitud EF $flow = FLOW_ADQUISICIONES; $step = FlowSettings::get($flow, 'ADQ_STEP_RECEPCION_OC'); $query->whereHas('lineas.linea_requisicion.requisicion.ef_request.open_tasks', function ($query) use($flow, $step) { $query->whereTaskFlow($flow)->whereTaskStep($step); })->whereHas('lineas.linea_requisicion.requisicion', function ($query) use($ef_id) { return $query->whereEfId($ef_id); }); $query->with(['proveedor', 'lineas.linea_requisicion.requisicion', 'lineas.producto', 'recepciones_efectivas', 'recepciones_planificadas']); return $query->get(); }
<?php use EasyFlow\Master\Models\Request; use EasyFlow\Master\Models\Connector; use EasyFlow\Master\Controllers\LogController; require_once dirname(dirname(__DIR__)) . "/includes/configuration.php"; try { $periodosArray = []; $periodos_bpcs = Connector::connect(\FlowSettingsCore::get(FLOW_RECLAMOS, 'REC_CONN_PERIODOS_BPCS')); $first_request = Request::where('request_flow', FLOW_RECLAMOS)->first(); $first_year = date('Y', strtotime($first_request->request_start_date)); $first_month = date('m', strtotime($first_request->request_start_date)); $first_date = strtotime($first_year . '-' . $first_month); foreach ($periodos_bpcs->data as $periodo) { if (strtotime($periodo['PLYEAR'] . '-' . $periodo['PLPERD']) >= $first_date) { $start = substr($periodo['PLSDAT'], 0, 4) . '-' . substr($periodo['PLSDAT'], 4, 2) . '-' . substr($periodo['PLSDAT'], 6, 2); $end = substr($periodo['PLEDAT'], 0, 4) . '-' . substr($periodo['PLEDAT'], 4, 2) . '-' . substr($periodo['PLEDAT'], 6, 2); $periodosArray[] = ['name' => 'Período BPCS: ' . $periodo['PLYEAR'] . '-' . $periodo['PLPERD'] . ' (Desde ' . $start . ' hasta ' . $end . ')', 'shortname' => $periodo['PLYEAR'] . '-' . $periodo['PLPERD'], 'start' => $start, 'end' => $end]; } } // Write file file_put_contents(APP_ENVPATH . '/includes/InterfaceData/Periodos.json', json_encode($periodosArray)); } catch (Exception $e) { LogController::logCron('Error al ejecutar cron (JobDailyActionSummaryi.php)', ['error' => $e->getMessage()], 'ERROR'); echo $e->getMessage(); }
public function AprobarCotizacion() { $input = Request::createFromGlobals(); $returnArray = array("status" => true, "message" => ""); $requestCore = new \RequestCore(); $arrayRequisiciones = []; // Traer ordenes de compra $ordenes_compra = $this->getCotizaciones($input->request_id); foreach ($ordenes_compra as $orden_compra) { // Iterar las cotizaciones foreach ($orden_compra->cotizaciones as $cotizacion) { if ($cotizacion->estado == "S") { // Depende del siguiente paso: // - Si es selección de proveedor cambiar el estado de OC a 'I' - Ingresada // - Si es generación de OC cambiar el estado a 'A' - Aprobada. Copiar cantidades de Cotización if ($input->step_id == FlowSettings::get($_SESSION['user_flow'], 'ADQ_STEP_SELECCIONPROV')) { $cotizacion->ordencompra->update(['estado' => 'I']); } else { // Actualizar cabecera de OC $cotizacion->ordencompra->update(['id_proveedor' => $cotizacion->contacto->id_proveedor, 'forma_pago' => $cotizacion->forma_pago, 'tiempo_entrega' => $cotizacion->tiempo_entrega, 'bodega' => FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_BODEGA_DEFAULT_OC"), 'id_aprobador_cotizacion' => $_SESSION['user_id'], 'id_aprobador_ordencompra' => $_SESSION['user_id'], 'estado' => 'A']); // Actualizar líneas de OC foreach ($cotizacion->lineas as $linea) { $linea->linea_ordencompra->update(['cantidad' => $linea->cantidad, 'valor' => $linea->valor_unitario_final, 'observacion' => $linea->observacion, 'estado' => 'A']); } } // Llenar arreglo con número de requisiciones correspondientes foreach ($cotizacion->lineas as $linea) { $arrayRequisiciones[] = $linea->linea_ordencompra->linea_requisicion->requisicion->id; } } } } // 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]; // Completar tareas diferentes a la actual // (No se completa la actual porque EF lo hace por default) if ($task->task_id != $input->task_id) { // TODO: Este valor cambia de acuerdo al siguiente paso if ($input->step_id == FlowSettings::get($_SESSION['user_flow'], 'ADQ_STEP_SELECCIONPROV')) { $description = 'Cotización no aprobada'; } else { $description = 'Cotización aprobada por el usuario ' . $_SESSION['user_id']; } $requestCore->completeTask($task->task_request, $task->task_id, $input->flow_id, $input->step_id, $input->user_id, $description, 'next'); } } return $returnArray; }
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']); } } } }
public function generarPDF() { $input = Request::createFromGlobals(); $requisicion = Requisicion::findByEFID($input->request_id); $filename = APP_TMPPATH . 'requisicion.pdf'; PDFController::generatePDF(view('Adquisiciones.PDF.requisicion', ['requisicion' => $requisicion]), false, $filename); (new \AttachmentCore())->addAttachmentToRequest($input->request_id, \FlowSettingsCore::get(FLOW_ADQUISICIONES, 'ADQ_FILE_REQUISICION'), $filename, APP_ENVPATH, $_SESSION['user_id'], "Requisición " . $requisicion->id); return array("status" => true, "message" => ""); }
$productos = Connector::connect(FlowSettings::get(FLOW_ADQUISICIONES, 'ADQ_CONNECTION_PRODUCTOS_HACIENDAS')); $productos = $productos->data; //******************************************************************* // 2. Ingreso y datos calculados //******************************************************************* foreach ($productos as $producto_bpcs) { //*********************************************** // Ingreso de datos básicos //*********************************************** // Ingreso los artículos a la base del BPM $producto = Producto::firstOrNew(['origen' => $clase->origen_productos, 'codigo' => $producto_bpcs['HCPROID']]); if (!$producto->id) { $producto->save(); } $producto->nombre = $producto_bpcs['HCPRONOC']; $producto->unidad = $producto_bpcs['HCPROUNM']; $producto->tipo = $producto_bpcs['HCPROBIE']; $producto->save(); // Sincronizo las clases del producto $producto->clases()->sync([$clase->id]); } // Consultar y actualizar stocks desde web service $result = Connector::connect(FlowSettings::get(FLOW_ADQUISICIONES, 'ADQ_CONNECTION_STOCKS_HACIENDAS')); $result = $result->data; $result = json_decode($result['Longvarchar']); foreach ($result as $producto) { $producto_bpm = Producto::where('codigo', $producto->HaKaCId)->where('origen', $clase->origen_productos)->first(); $producto_bpm->update(['stock_actual' => $producto->HaKacSto]); } } }
public function generarOrdenCompraPDF($request_id) { $ordenes_compra = OrdenCompra::whereHas('lineas.linea_requisicion.requisicion', function ($query) use($request_id) { return $query->where('ef_id', $request_id); })->with(['proveedor', 'lineas.linea_requisicion.requisicion', 'lineas.producto'])->get(); foreach ($ordenes_compra as $orden_compra) { $filename = APP_TMPPATH . 'requisicion.pdf'; PDFController::generatePDF(view('Adquisiciones.PDF.orden_compra', ['orden_compra' => $orden_compra]), false, $filename); (new \AttachmentCore())->addAttachmentToRequest($request_id, \FlowSettingsCore::get(FLOW_ADQUISICIONES, 'ADQ_FILE_ORDENCOMPRA'), $filename, APP_ENVPATH, $_SESSION['user_id'], "Orden de Compra " . $orden_compra->id); } }
/** * Devuelve las requisiciones que cumplan con las siguientes características * - Que su ef_request esté en el proceso de 'Adquisiciones' * - Que su ef_request esté en el paso de 'Aprobar requisición' * - Que su estado sea 'A' (Aprobado) * - Que su origen y clase sea igual al origen de la requisición con $id_padre (opcional) * @param String $id_padre * @return Requisiciones */ public static function getRequisicionesParaConsolidar($id_padre = '') { // Filtro de estado $query = self::estado('A'); // Filtro de clase $requisicion_padre = Requisicion::find($id_padre); if ($requisicion_padre) { $query->whereIdClase($requisicion_padre->id_clase); } // Filtro de status de solicitud EF $flow = FLOW_ADQUISICIONES; $step = FlowSettings::get($flow, 'ADQ_STEP_SELECCIONPROV'); $query->whereHas('ef_request.open_tasks', function ($query) use($flow, $step) { $query->whereTaskFlow($flow)->whereTaskStep($step); }); // Agregar relaciones $query->with(['ef_request.open_tasks', 'proveedor', 'clase'])->with(['lineas' => function ($query) { $query->with('producto')->where('estado', '!=', 'I'); }]); return $query->get(); }
public function AprobarOrdenCompra() { $input = Request::createFromGlobals(); $returnArray = array("status" => true, "message" => ""); $requestCore = new \RequestCore(); $arrayRequisiciones = []; // Traer ordenes de compra $ordenes_compra = OrdenCompra::getOrdenesCompraParaAprobacionOrdenCompra($input->request_id); foreach ($ordenes_compra as $orden_compra) { // Depende del siguiente paso: // - Si es selección de proveedor cambiar el estado de OC a 'C' - Consolidada // - Si es generación de OC cambiar el estado a 'O' - orden de compra aprobada. Copiar cantidades de Cotización if ($input->step_id == FlowSettings::get($_SESSION['user_flow'], 'ADQ_STEP_SELECCIONPROV')) { $orden_compra->update(['estado' => 'C']); } else { // Actualizar cabecera de OC $orden_compra->update(['id_aprobador_ordencompra' => $_SESSION['user_id'], 'estado' => 'O']); // Actualizar líneas de OC foreach ($orden_compra->lineas as $linea) { $linea->update(['estado' => 'O']); // Llenar arreglo con número de requisiciones correspondientes $arrayRequisiciones[] = $linea->linea_requisicion->requisicion->id; } } } // 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]; // Completar tareas diferentes a la actual // (No se completa la actual porque EF lo hace por default) if ($task->task_id != $input->task_id) { // TODO: Este valor cambia de acuerdo al siguiente paso if ($input->step_id == FlowSettings::get($_SESSION['user_flow'], 'ADQ_STEP_SELECCIONPROV')) { $description = 'Orden de Compra no aprobada'; } else { $description = 'Orden de Compra aprobada por el usuario ' . $_SESSION['user_id']; } $requestCore->completeTask($task->task_request, $task->task_id, $input->flow_id, $input->step_id, $input->user_id, $description, 'next'); } } return $returnArray; }
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" => ""]; }
public function generarPDF() { $input = Request::createFromGlobals(); $task = Task::find($input->task_id); if ($task->task_step == \FlowSettingsCore::get(FLOW_RECEPCIONDOCUMENTOS, 'RDE_FILE_OUTPUT_STEP')) { $documento = Documento::with(['lineas.lineas_distribucion', 'lineas_distribucion'])->whereEfId($input->request_id)->first(); $filename = APP_TMPPATH . 'distribucion.pdf'; PDFController::generatePDF(view('RecepcionDocumentos.PDF.distribucion_costo', ['documento' => $documento]), false, $filename); (new \AttachmentCore())->addAttachmentToRequest($input->request_id, \FlowSettingsCore::get(FLOW_RECEPCIONDOCUMENTOS, 'RDE_FILE_OUTPUT'), $filename, APP_ENVPATH, $_SESSION['user_id'], 'Formulario de distribución'); } return array("status" => true, "message" => ""); }