You are right!
Since the sentence uses have helped, the suppose to phrase can be rewritten the way you said.
John was supposed to help Mary with shopping.
In such context, the phrase supposed to is used for the action that actually does not happen. EnglishGrammarSecrets mentions it:
Often there is a suggestion that the action 'supposed to' happen does not actually happen.
I'm supposed to be there before 8 but I'm often late.
You were supposed to phone me.
I'm supposed to be getting on a plane to Tokyo at this very minute.
Mind it that if you use be supposed to without mentioning any action in past, the meaning changes. It then represents something which is expected. Good tutorial here.