even though he has a valid point, he can't always be right
Just tell him that.
Discussing and negotiating with your child are fine, if that is your parenting style. It needs to go along side an understanding that your decision is final (since you are the adult so will have a more sophisticated understanding of a situation) so when you say no, that is not up for discussion. When you have said neither yes or no, then we can talk, discuss and negotiate. But no means no and will not change.
You also sound like your need to establish consequences. So if not taking stuff off the child (I don't do that either), then what? I'd be furious if the rest of the family missed out on a meal in a restaurant because of DS7's behaviour.
What were the consequences for your son in this situation?
My 7 year old (I also have children aged 12 11 and 2) would have been immediately sent to his room, seperated and isolated from the "fun" of the rest of the household. I would not have tolerated any voiced dislike of the meal served at home, because he lost any right to complain when he stopped us staying in the restaurant. He'd have lost his place for turn-taking. So his brother would get first go on the Xbox, his sister first go on the kindle. And generally id have given him a pissed off very disappointed attitude.
In addition I would expect a heart-felt and genuine apology. Alongside some (unprompted) verbal explanation that shows he understands the resons for my disappointment in his behaviour.
If he spoilt a trip out to a restaurant that was meant to be in celebration of something, I'd also expect an apology card/letter to the person affected.