Refactor/in memory models and synchronous getters

NB: clear storage. so far everything works fine, online and offline. though there are lil Todos to be complete.

ALSO: i noticed that most time we don't used factories to access objects, like instead of using ProductTypeFactory.get, getAll(), storageService is used this defeats the aim of having factories, cause Factory attaches the complete object and does some validations etc does not exist at storageService layer, hence we end up having objects in inconsistent state(sometimes with object, sometimes with uuid). also since this project has grown so big, before creating a function pls make sure it does not exist already al discuss with other to be sure. found out we have a lot of code duplication, functions with different names but do similar things if not exactly same.

thanks.


graph visibility should not be tied to stock out alert visibility & vice versa - they are separate features.
graph should show if there are any stock counts
stock out alerts should show only if the most recent stockcount is complete