implemented the transaction_choose_plan

this allows the customer to choose a different plan. Checks to make sure changing plans from a higher to a lower one doesn't cause issues.