Changes

Jump to: navigation, search

Advanced Logic

1,286 bytes added, 18:18, 13 August 2014
no edit summary
'''Advanced Logic''' gives [[System Administrator]]s a higher level of control over the entire interface.
This feature allows control of the [[visibility ]] and/or access to [[Interfaces|interface]] elements such as buttons or tabs based on [[Administrator|administrator]] defined conditions.
[[Image:AdvancedLogicAdvancedLogicAugust2014.png|link=]]
==Location==
This feature is available in 3 places:
# '''Advanced Logic''' link on the [[Global Settings]] page (In the [[Business & System Configuration]] section) - to establish system-wide rules.
# '''Advanced Logic''' link on the '''Settings''' Page within each [[Universal Tracking Application]] - for rules specific the to each UTA.# In the [[:Category:Personal Transactions|Transaction Types]] section on [[Global Settings]] - for both ''People'' and ''Company'' Transaction Types
==Overview==
'''Object''': The object that is being controlled.<br />
'''Condition''': A logical statement that when true will make the object statement true, and when false will make the object statement false.
''For example, you can disable the '''Delete''' button when viewing '''Contacts''' at Level 1 for [[User]]s in a specific [[Role|role]] by using the '''Advanced Logic''' setting on the [[Global Settings]] page.
:[[Image:AdvancedLogicDCAdvancedLogicDCAugust2014.PNGpng|link=]]
''In the above example, users who are in the role ID 1234 "Program Director" or role ID 1235 "Applicant" will be prevented from deleting contacts at Level 1{{l1}}.''
==Sample Conditional Statements==
 
'''NOTE:''' When possible, avoid using IDs (i.e., typeid, statusid). Using field names rather than IDs allows for better readability and cloning.
 
* Using role name vs. role id
!@me.inRole(Organization Contact)@
rather than
'instr('@me.rolelist@',',10733,')=0'
 
 
* Not true for the Level 1 template with typeid ''12345''
'@opportunity.typeid@'<>'12345'
or
'@opportunity.typeid@'Not In('12345')
 
 
* True if the Level 1 status is 'Draft':
'@opportunity.status@'='Draft'
or
'@opportunity.status@' In ('Draft')
 
 
* True unless the Level 1 status is 'Draft' or 'Open':
'@opportunity.status@' Not In ('Draft','Open')
 
 
* True if the Level 1 statusid is 765 or 766
'@opportunity.statusid@' In ('765','766')
 
 
* True if the Level 1 statusid is NOT 765 or 766
'@opportunity.statusid@' Not In ('765','766')
 
 
* True when current user is in the role ''Program Director'' or ''Applicant'':
@me.inRole(Program Director)@ OR @me.inRole(Applicant)@
 
 
* False when current user is in both the roles ''Program Director'' and ''Applicant'':
!@me.inRole(Program Director)@ AND !@me.inRole(Applicant)@
 
 
* For a advanced logic based the '''startdate''' or '''enddate''' standard fields:
::* Use ''''@fullstartdate@'''' rather than ''''@startdate@'''' and ''''@fullenddate@'''' rather than ''''@enddate@''''.
:''This will format the stored date as yyyy-mm-dd so it can be compared using < and >.''
'@fullstartdate@' >= '2009-05-01'
 
 
* True if today's date is after the Start Date:
now()>'@fullstartdate@'
 
 
* Never True
1=0
 
 
* Always True
1=1
 
 
 
'''<u>IMPORTANT</u>'''
 
The syntax used will vary depending on which '''Object''' is being controlled.<br>
For example, consider the '''Show Level 3 New Button'''. This button is shown when you are viewing a Level 2 record.
* If you want to control the visibility of the Level 3 New button based on the status of the '''Level 2''' item you would use:
'@statusid@' In ('765','766')
 
 
* If you want to control the visibility of the Level 3 New button based on the status of the '''Level 1''' item you would use:
'@opportunity.statusid@' In ('765','766')
==Sample Conditional Statements==
* '''<nowiki>'@opportunity.typeid@'<>'12345'</nowiki>'''
:: - not true for the Level 1 template with typeid ''12345''
:: - alternately you could use '''<nowiki>'@opportunity.typeid@'Not In('12345')</nowiki>'''
* '''<nowiki>'@opportunity.statusid@'='765'</nowiki>'''
:: - true if the Level 1 statusid is 765
* '''<nowiki>'@opportunity.statusid@' In ('765','766')</nowiki>'''
:: - true if the Level 1 statusid is 765 or 766
* '''<nowiki>'@opportunity.statusid@' Not In ('765','766')</nowiki>'''
:: - true if the Level 1 statusid is NOT 765 or 766
* '''<nowiki>instr(concat(',','@me.rolelist@',','),',1234,') OR instr(concat(',','@me.rolelist@',','),',1235,')</nowiki>'''
:: - true for role IDs 1234 and 1235
:::Note: ''concat(',','@me.rolelist@',',')'' creates a list of all the roleid's associated with the current user, and ''instr'' tests to see if the roleid you specified is in the list.
* '''1=0''' - never true
==See Also==
For help constructing logical statements for '''Advanced Logic''':
* [[Determining the typeid]]
* [[Determining the statusid]]
* [[Determining the roleid]]
* [[Visibility Condition]] (for more examples)
To see the options available for Advanced Logic settings, visit our [[Advanced Logic Options]] page.
 
* [[Boolean Operators]]
* [[UTA Settings Page]]
* [[inRole]]
[[Category:Global Settings]][[Category:UTA Settings]][[Category:Universal Tracking Application]][[Category:Advanced Logic]]
8,849
edits

Navigation menu