Improvement of uitypes creation
Enhancement require refactoring of the current code base to achieve these goals:
- Be able to add uitypes without touching existing code.
- Any added uitype should be available for all modules.
Currently the CRMEntity class is a violation of the "Open-Closed principle" that states that systems, classes, functions, etc... should be "open for extension but closed for modification". That is because to add a new uitype, you will likely have to add code to that class. UITYPE specific code, should go into uitype specific classes and they should be independent of each other.