i'm asking for your opinion on how to managing and creating fields.
I'm working in a company creating a big Application using vTiger (a crm Based on an old Version of sugarcrm).
Most of you won't know vTiger (Version 6.5), but for me it is full of Design flaws and i Think for for use case it would be best to rewrite the app. Since IT's hard to convince the people in Charge i want to take the Initiative and Show them the beauty of laravel and the advantages of creating the app new from the ground up as it has evolved really much from the vTiger Base.
I pretty much know know how to structure it and make it testable etc. but i struggle in a specific point.
vTiger gives the ability to define so called custom fields, which are basically just db coloumns Create at runtime. I know how i would add them, but vTiger also has a Kind of powerful reporting module which allows the User to select the modules he wants to Create a Report for, select the columns/fields he want in it and how it should be filtered etc.
The Querys are generated by a messy so called QueryBuilder, which is really prone to errors.
Since the selection of columns/ fields in the reports is the only thing i can't find a good solution for is the only thing i struggle with i want to ask for an opinion.
vTiger has a table called vtiger_fields which contains every field and its type etc. This table is queried for every view you open and is the source of slowness of many of them because it isn't cached properly. I don't want to maintain fields/columns in such a way as i can't really maintain relationships in this would mean i would also need to maintain relationships in the database and all these things.
So i would add a module Layer to laravel to structure the code better, nur what i struggle with are These fields espacially for these reports.
What i thought of was to maintain the possible fields for the reports in code. But this also means i need to resolve the relationships needed.
So i'm really stuck with this and want to ask how you would implement this. How would you go about maintaing the fields? And espacially the possible relationships of fields?
I've looked into the available reporting packages and packages like e.g. voyager how they implement "dynamic fields" Bit i'm not satisfied by the way they do it.
Thank you really much on the input you give me on this and every Feedback i get. If you have any further questions i'm happy to answer them!
Thank you and best regards!