Ejemplo n.º 1
0
 public function getDatosProducto()
 {
     $input = Request::createFromGlobals();
     $proveedores = [];
     $lista_proveedores = ProductoPrecio::select('id_proveedor')->with('proveedor')->whereIdProducto($input->id)->groupBy('id_proveedor')->get();
     foreach ($lista_proveedores as $proveedor) {
         $proveedores[] = ['id_proveedor' => $proveedor->id_proveedor, 'codigo_proveedor' => $proveedor->proveedor->codigo, 'nombre_proveedor' => $proveedor->proveedor->nombre, 'id_producto' => $input->id, 'nombre_producto' => $input->nombre, 'ultimo_precio' => Producto::getUltimoPrecio($input->id, $proveedor->id_proveedor), 'precio_promedio' => Producto::getPrecioPromedio($input->id, $proveedor->id_proveedor)];
     }
     $requisiciones = RequisicionLinea::with('requisicion')->whereIdProducto($input->id)->get();
     $ordenes_compra = OrdenCompra::whereHas('lineas', function ($query) use($input) {
         $query->whereIdProducto($input->id);
     })->with(['lineas' => function ($query) use($input) {
         $query->whereIdProducto($input->id);
     }])->with('proveedor')->get();
     return ['proveedores' => $proveedores, 'requisiciones' => $requisiciones, 'ordenes_compra' => $ordenes_compra];
 }
 /**
  * Crea una orden de compra con el ID y líneas, o adjunta líneas a una OC
  * @param String $oc 
  * @param String $lineas 
  * @return void
  */
 public function crearOrdenCompraAjax()
 {
     $input = Request::createFromGlobals();
     $oc = $input->oc;
     $lineas = $input->lineas;
     // Validar que no se combinen líneas de requisición de un proveedor ya asignado con otro proveedor
     // o con líneas de requisición que no tengan proveedor
     $proveedoresArray = [];
     $lineasArray = explode(',', $lineas);
     foreach ($lineasArray as $idLinea) {
         $linea_requisicion = RequisicionLinea::with('requisicion')->find($idLinea);
         if ($linea_requisicion->requisicion->proveedor) {
             $proveedoresArray[] = $linea_requisicion->requisicion->id_proveedor;
         } else {
             $proveedoresArray[] = 0;
         }
     }
     $proveedoresArray = array_unique($proveedoresArray);
     if (count($proveedoresArray) > 1) {
         return array('status' => false, 'message' => 'Algunas de las líneas ya tienen proveedor asignado. No se pueden combinar con líneas no asignadas');
     }
     $requisicion = Requisicion::find($input->id);
     if ($oc == 'nueva_oc') {
         $orden_compra = OrdenCompra::create(array('ext_id' => '', 'id_clase' => $requisicion->id_clase, 'moneda' => 'dolar', 'fecha_inicio' => date('Y-m-d H:i:s'), 'fecha_fin' => '', 'estado' => 'I'));
         if ($proveedoresArray[0] != 0) {
             $orden_compra->id_proveedor = $proveedoresArray[0];
             $orden_compra->save();
         }
         $id = $orden_compra->id;
     } else {
         $id = $oc;
     }
     foreach ($lineasArray as $idLinea) {
         $linea_requisicion = RequisicionLinea::with('requisicion')->find($idLinea);
         OrdenCompraLinea::create(array('id_ordencompra' => $id, 'id_linea_requisicion' => $idLinea, 'id_producto' => $linea_requisicion->id_producto, 'cantidad' => $linea_requisicion->cantidad, 'valor' => 0, 'observacion' => $linea_requisicion->requisicion->observacion_creador, 'estado' => 'I'));
     }
     return $this->getFormDataAjax();
 }