Ejemplo n.º 1
0
 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 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;
 }
Ejemplo n.º 5
0
 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;
 }