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 getOrdenesCompra($ef_id) { $ordenes_compra = OrdenCompra::getOrdenesCompraParaAprobacionOrdenCompra($ef_id); foreach ($ordenes_compra as &$orden_compra) { $orden_compra->cotizaciones = Cotizacion::with(['ordencompra', 'contacto.proveedor', 'lineas.linea_ordencompra.producto', 'lineas.linea_ordencompra.linea_requisicion'])->whereIdOrdencompra($orden_compra->id)->get(); // Traer precio promedio / ultimo precio foreach ($orden_compra->cotizaciones as &$cotizacion) { foreach ($cotizacion->lineas as &$linea) { $linea->precio_promedio = Producto::getPrecioPromedio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); $linea->ultimo_precio = Producto::getUltimoPrecio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); } } } return $ordenes_compra; }
public function storeMaterialOficina() { $input = Request::createFromGlobals(); // Validaciones para materiales de oficina // Revisar que el código no se repita entre los otros materiales de oficina $tmp_record = Producto::where('codigo', $input->codigo)->whereHas('clases', function ($query) use($input) { return $query->where('id_clase', 11); // Clase para materiales de oficina })->first(); if ($tmp_record) { return new AjaxResponse('error', 'Ese código de producto ya existe'); } $record = Producto::create(['origen' => 'oficina', 'codigo' => $input->codigo, 'nombre' => $input->nombre, 'precio_promedio' => 0, 'dias_promedio' => 0, 'meses_inventario' => 0, 'stock_minimo' => 0, 'stock_maximo' => 0, 'stock_actual' => 0, 'stock_transito' => 0, 'consumo_promedio' => 0, 'unidad' => $input->unidad, 'sugerido' => 0]); $record->clases()->attach(11); // Clase para materiales de oficina return new AjaxResponse('success', '', $record); }
public function getProductos() { $returnData = []; $input = Request::createFromGlobals(); // Get all records $records = Producto::with('consumos', 'clases')->whereHas('clases', function ($query) use($input) { $query->whereIdClase($input->clase); }); $returnData['total'] = $records->count(); // Filter results if ($input->searchString != '') { $records->where(function ($query) use($input) { $query->where('nombre', 'LIKE', '%' . $input->searchString . '%')->orWhere('codigo', 'LIKE', '%' . $input->searchString . '%'); }); } $returnData['filtered'] = $records->count(); // Get the actual data with limits $records->skip($input->displayStart)->take($input->recordsPerPage); // Añade el proveedor favorito a resultados $returnData['records'] = $records->get(); return $returnData; }
public function getTableData() { $input = Request::createFromGlobals(); $returnData = []; // Get all records $records = Producto::where('id', '>', 0); if ($input->clase != '') { $records->whereHas('clases', function ($query) use($input) { $query->where('id_clase', $input->clase); }); } $returnData['total'] = $records->count(); // Filter results if ($input->searchString != '') { $records->where(function ($query) use($input) { $query->where('codigo', 'LIKE', '%' . $input->searchString . '%')->orWhere('nombre', 'LIKE', '%' . $input->searchString . '%'); }); } $returnData['filtered'] = $records->count(); // Get the actual data with limits $records->skip($input->displayStart)->take($input->recordsPerPage)->orderBy('codigo'); $returnData['records'] = $records->get(); return $returnData; }
public function getHistoricoPrecioProducto() { $input = Request::createFromGlobals(); $graphArray = []; $graphArray['chart']['type'] = 'spline'; $graphArray['title']['text'] = 'Historial de precios'; $graphArray['xAxis']['type'] = 'datetime'; $graphArray['xAxis']['dateTimeLabelFormats']['month'] = '%e. %b'; $graphArray['xAxis']['dateTimeLabelFormats']['year'] = '%b'; $graphArray['xAxis']['title']['text'] = 'Fecha'; $graphArray['yAxis']['title']['text'] = 'Precio'; $graphArray['yAxis']['min'] = 0; $graphArray['yAxis']['plotLines'] = [['value' => Producto::getPrecioPromedio($input->producto, $input->proveedor), 'dashStyle' => 'shortdash', 'color' => 'red', 'width' => 2, 'label' => ['text' => 'Precio promedio']]]; // Build data for series $serie = []; $graphData = []; $precios = ProductoPrecio::where('id_proveedor', $input->proveedor)->where('id_producto', $input->producto)->orderBy('fecha')->get(); foreach ($precios as $precio) { $graphData[] = [strtotime($precio->fecha) * 1000, $precio->precio]; } $serie = ['name' => 'Precio', 'data' => $graphData]; $graphArray['series'][] = $serie; return $graphArray; }
public function getDatosAdicionalesOC($ordenes_compra) { foreach ($ordenes_compra as $orden_compra) { // Sacar los mejores proveedores por cada línea foreach ($orden_compra->lineas as $linea) { $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); } } $cotizaciones = Cotizacion::with(['lineas.linea_ordencompra.producto', 'contacto.proveedor'])->where('id_ordencompra', $orden_compra->id)->get(); // Traer precio promedio / ultimo precio /* foreach ($cotizaciones as &$cotizacion) { foreach ($cotizacion->lineas as &$linea) { $linea->precio_promedio = Producto::getPrecioPromedio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); $linea->ultimo_precio = Producto::getUltimoPrecio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); } } */ $orden_compra->cotizaciones = $cotizaciones; } return $ordenes_compra; }
public function getCotizaciones($ef_id) { $returnArray = []; $ordenes_compra = $this->getOrdenesCompra($ef_id); foreach ($ordenes_compra as $orden_compra) { $cotizaciones = Cotizacion::with(['lineas.linea_ordencompra.producto', 'contacto.proveedor'])->where('id_ordencompra', $orden_compra->id)->get(); // Traer precio promedio / ultimo precio foreach ($cotizaciones as &$cotizacion) { foreach ($cotizacion->lineas as &$linea) { $linea->precio_promedio = Producto::getPrecioPromedio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); $linea->ultimo_precio = Producto::getUltimoPrecio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); } } $returnArray[] = ['orden_compra' => $orden_compra->id, 'cotizaciones' => $cotizaciones, 'motivo' => $orden_compra->observacion_seleccionador_cotizacion]; } return $returnArray; }
public function getCotizaciones($ef_id) { $ordenes_compra = OrdenCompra::getOrdenesCompraParaAprobacionCotizacion($ef_id); foreach ($ordenes_compra as &$orden_compra) { $orden_compra->cotizaciones = Cotizacion::with(['ordencompra', 'contacto.proveedor', 'lineas.linea_ordencompra.producto', 'lineas.linea_ordencompra.linea_requisicion.requisicion.ef_request'])->whereIdOrdencompra($orden_compra->id)->get(); // Traer precio promedio / ultimo precio foreach ($orden_compra->cotizaciones as &$cotizacion) { foreach ($cotizacion->lineas as &$linea) { $linea->precio_promedio = Producto::getPrecioPromedio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); $linea->ultimo_precio = Producto::getUltimoPrecio($linea->linea_ordencompra->producto->id, $cotizacion->contacto->proveedor->id); } } if (!($aprobada = RequestMetadataCore::get($orden_compra->lineas[0]->linea_requisicion->requisicion->ef_request->request_id, 'ADQ-COT-APROBADA'))) { RequestMetadataCore::set($orden_compra->lineas[0]->linea_requisicion->requisicion->ef_request->request_id, 'ADQ-COT-APROBADA', 'Si'); } $orden_compra->aprobada = $aprobada; } return $ordenes_compra; }
$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]); } } }