/** * 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 requisiciones correspondientes en un arreglo * @return Array */ public function getRequisiciones() { $input = Request::createFromGlobals(); $requisiciones = Requisicion::getRequisicionesParaConsolidar($input->id); foreach ($requisiciones as $requisicion) { foreach ($requisicion->lineas as $linea) { $linea->seleccionada = false; $linea->mejor_proveedor_precio = $linea->producto->getMejorProveedorPrecio(); $linea->mejor_proveedor_tiempo = $linea->producto->getMejorProveedorTiempo(); $linea->ultimo_precio = null; $linea->precio_promedio = null; if (count($linea->mejor_proveedor_precio) > 0) { $linea->ultimo_precio = Producto::getUltimoPrecio($linea->producto->id, $linea->mejor_proveedor_precio->id); $linea->precio_promedio = Producto::getPrecioPromedio($linea->producto->id, $linea->mejor_proveedor_precio->id); } $linea->tiempo_entrega = null; if (count($linea->mejor_proveedor_tiempo) > 0) { $linea->tiempo_entrega = Producto::getTiempoPromedio($linea->producto->id, $linea->mejor_proveedor_tiempo->id); } } } return $requisiciones; }