I'm not crazy about this style of looping. You should be able to do something like `CHARGE_FOR.map |key, value|` and then not need the index inside that.

But more importantly, I'm not crazy that CHARGE_FOR is set up as a hash. I think it would be better if it were set up as a simple array of symbols, and persist the string version of the symbol to the DB instead of an integer. (I'm not sure if Oracle can handle enum fields, but it would be good to put that restriction in the DB layer as well).