Melt the butter in a saucepan and cook the onion until soft and translucent.
Add the garlic and ginger and cook for about a minute before stirring in the spices and tomato purée.
Add the chopped tomatoes, cream and stock, let the sauce simmer gently for 5 minutes, then blend it until smooth.
Season the sauce with salt and freshly ground pepper, add the sweet potato, cover with a lid and let it simmer for about 10 minutes. The sauce should be bubbling.
Add the cauliflower and continue cooking, still covered, for about 6 minutes - or until the sweet potato is tender. The cauliflower can keep a little bite.
Add the drained butter beans, heat the dish through and season to taste with the sugar and a little more spice if needed.
Serve with pan-fried flatbreads, rice and crème fraîche.