I've spent some spare cycles looking into this problem in more detail. I started playing around with Settings > Picklist Editor to see if I could get it to work for uitype 16 and discovered the following:<br><div><br>
</div><div>(uitype 15)</div><div><div>mysql> desc vtiger_taskstatus;</div></div><div><div>+------------------+--------------+------+-----+---------+----------------+</div><div>| Field | Type | Null | Key | Default | Extra |</div>
<div>+------------------+--------------+------+-----+---------+----------------+</div><div>| taskstatusid | int(19) | NO | PRI | NULL | auto_increment |</div><div>| taskstatus | varchar(200) | YES | | NULL | |</div>
<div>| presence | int(1) | NO | | 1 | |</div><div>| picklist_valueid | int(19) | NO | | 0 | |</div><div>+------------------+--------------+------+-----+---------+----------------+</div>
</div><div><br></div><div>(uitype 16)</div><div><div><div>mysql> desc vtiger_status;</div><div>+-------------+--------------+------+-----+---------+----------------+</div><div>| Field | Type | Null | Key | Default | Extra |</div>
<div>+-------------+--------------+------+-----+---------+----------------+</div><div>| statusid | int(19) | NO | PRI | NULL | auto_increment |</div><div>| status | varchar(200) | NO | | | |</div>
<div>| sortorderid | int(19) | NO | | 0 | |</div><div>| presence | int(1) | NO | | 1 | |</div><div>+-------------+--------------+------+-----+---------+----------------+</div>
</div><br></div><div><div>mysql> desc vtiger_picklist;</div><div>+------------+--------------+------+-----+---------+----------------+</div><div>| Field | Type | Null | Key | Default | Extra |</div>
<div>+------------+--------------+------+-----+---------+----------------+</div><div>| picklistid | int(19) | NO | PRI | NULL | auto_increment |</div><div>| name | varchar(200) | NO | UNI | NULL | |</div>
<div>+------------+--------------+------+-----+---------+----------------+</div></div><div><br></div><div><div>mysql> desc vtiger_role2picklist;</div><div>+-----------------+--------------+------+-----+---------+-------+</div>
<div>| Field | Type | Null | Key | Default | Extra |</div><div>+-----------------+--------------+------+-----+---------+-------+</div><div>| roleid | varchar(255) | NO | PRI | NULL | |</div>
<div>| picklistvalueid | int(11) | NO | PRI | NULL | |</div><div>| picklistid | int(11) | NO | PRI | NULL | |</div><div>| sortid | int(11) | YES | | NULL | |</div>
<div>+-----------------+--------------+------+-----+---------+-------+</div></div><div><br></div><div>1. The picklists themselves do not know what uitype they are. I can use SHOW COLUMNS to determine this at runtime, or I could add a column to vtiger_picklist to remember this setting.</div>
<div><br></div><div>2. The visiblity/sorting information is found in multiple locations. I think it might make life a little easier to create vtiger_role2picklist entries for the H1/Organisation role (or other placeholder role) and use those when uitype 16 is encountered.</div>
<div><br></div><div>3. Since we have picklistid in vtiger_role2picklist, couldn't we simply use the picklist tableid primary key instead of manufacturing a globally unique picklistvalueid?</div><div><br></div><div>4. Maybe vtiger_role2picklist should be used only for visibility and not for sorting? It seems likely that sort order is non-deterministic for roles that inherit other roles.</div>
<div><br></div><div>Anyway, looking for some feedback before I press on with this line of investigation. Per Srihari's poll two weeks ago, I assume vtiger is planning to do some development in this area? Don't want to step on any toes or write code that will need to be rewritten for a future release.</div>