belongsToMany('App\Subpedido', 'productos_subpedidos')->withPivot(["cantidad", "notas"]); } public function proveedor() { return $this->belongsTo('App\Proveedor'); } public function pagaTransporte() { return !($this->bono || Str::contains($this->categoria, 'SUBSIDIADO')); } //Este método permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda) public function scopeFiltrar($query, FiltroDeProducto $filtros) { return $filtros->aplicar($query); } public static function getPaginar(Request $request) { return $request->has('paginar') && intval($request->input('paginar')) ? intval($request->input('paginar')) : self::$paginarPorDefecto; } public static function productosFilaID() { return Producto::pluck('id', 'fila',)->all(); } public static function productosIDFila() { return Producto::pluck('fila', 'id',)->all(); } public static function productosIDNombre() { return Producto::pluck('nombre', 'id',)->all(); } static public function cantidadesPorBarrio() { $barrios = DB::table('grupos_de_compra') ->where('nombre') ->pluck('id', 'nombre'); $columnasBarrios = $barrios->map(function ($id, $nombre) { return DB::raw("SUM(CASE WHEN subpedidos.grupo_de_compra_id = $id AND subpedidos.aprobado = 1 THEN producto_subpedido.cantidad ELSE 0 END) as `$nombre`"); })->toArray(); return DB::table('productos') ->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id') ->join('subpedidos', 'subpedidos.id', '=', 'producto_subpedido.subpedido_id') ->select(array_merge( ['productos.nombre as Product'], $columnasBarrios )) ->groupBy('productos.id', 'productos.nombre') ->get(); } }