I see now... you have your trigger for setting the PromoCode set to only trigger when the session variable is not set. This happens when the page first opens and then it can't be reset. Instead the trigger should be based on the submission of the promocode like I have it now.
It seems to be working as you want it to now.