(WIP) Cdodge/shopping cart rewrite

I'm not sure if we are going to use CSV reporting feature, so I'd keep it for now