Today I found something that worked, for today, at least. I made a list of two things I wanted to get done: His haircut and buying a present for his friend's birthday. I added a third item that my son would love to do and I wanted to do with him anyway: minigolf. I drew little pictures next to each of the three tasks so he could read it better. I showed him my list. He "read" it. I asked something like, "How can we get these three things done on the list?" I expected him to argue about getting a haircut and shopping.
He surprised me by saying, "Let's play minigolf first. Then we buy the present. Then a haircut. Ok, Mom?" "Ok! Great idea!"
We stuck to the list! We got it all done! No complaining! Yay!