Кстати, ошибка смешная =)
В целом у вас все ок.
Но сама ошибка, говорит о том, что переменная еще не определна, значит косяк в условии else
Нооо... И там вроде все ок, кроме одного, что в функции ground_shipping , в условии else возвращается не cost =)))
а сost =)
Чувствуете разницу ?)