| How To Use Control Files
   Control files allow you to attach a script to any field or form in the Collect! system. The script
  can do logical processing and then it can write the result onto the screen or into the database. This
  requires that you are familiar with Collect!'s  Printable Field codes and that you have  access rights
  to modify field properties in your database.
   Control files open up a host of customization possibilities that let you tailor Collect! to suit
  your exacting requirements. To help understand how control/script files can help, here are two real
  life scenarios.
   Scenario 1: An international collections user wants to automatically select the correct  operator
  based on the country the  debtor resides in.
   Solution: A control file attached to the Country field. When data entry personnel completes the
  Country field and presses Tab or Enter, the control file runs, and the correct operator is selected
  for the account.
   Scenario 2: Some  accounts require special attention. We want the status field on the Debtor form to
  change color when the account is delinquent.
   Solution: A control file attached to the Debtor form that changes the color of the status field
  depending on its value.
   These simple examples show how control files can let you customize Collect! to an amazing level of
  detail.
 Control File Operations  Control files can perform various operations:
    
    Edit data in the database.Change field attributes such as visibility, color, and captions.Display a message to the end user.Do whatever  reports can do - define variables and equations, perform calculations, write
        results to the database or display them to the screen.Work at the Form and Field level. 
  Control files attached to forms are invoked just before the form is displayed.
 Control file attached to fields are invoked as the user exits the field. Field level control files
  will execute on leaving a field if the field data has changed.
 
 User level 99 does not read control files. Please sign in as a user other than level 99 if
          you are using control files.  
 Edit And Set Commands In Control Files  Control files support the @EDIT and @SET commands.
    @EDIT  This command edits the data in a database field. After changing the data in the field the record is
  immediately written to the database.
   Syntax: @EDITde.u1 =  {value}
   value can be a variable, a database field or a date.
 
 If you are changing more than one field in a record at a time, use the @SET command to alter
         the fields in the record, and only on the last change should you use the @EDIT command. 
 Typically control files use the @SET command. The @EDIT command is only needed when you
          actually want to physically write an updated record to the database. Since control files
          trigger off the 'current' record, you should generally use the @SET command and only use the
          @EDIT command when altering data in related records like  Clients,  Attachments, Transactions,
          etc. 
 You can use @EDITFULL where applicable. Please refer to the Help Topic
          How To Use The Report Writer Commands for more information.    @SET  This command changes the value in the selected field of the database record, but does not write the
  record to disk until you exit from the form.
   Syntax: @SETde.na = {value}
   value can be a variable, and database field or a date.
  
 Log To Notes  You should use @SET when your control file is on a field and you also want to Log to Notes when
  modifications have occurred. For instance, the Set Timezone sample uses a control file on the
  Debtor Home field to change the Time Zone. By using @SET in the control file, instead of @EDIT, we
  ensure that changes to the  phone number are still logged to notes.
  
 Changing Field Attributes With Control Files  Field attributes can be changed through control files:
 
    ColorRightsCaption or AliasRequired Pick List   Syntax: @SETde.na{attribute} = {value}
    COLOR  Setting this attribute changes the color of a field. Colors are defined as #RRGGBB in hexadecimal
  form, as in standard HTML color usage.
   Syntax: @SETde.na.color = #RRGGBB
   RR is a hexadecimal Red color component between 0 and 255 (0 to FF hex).GG is a hexadecimal Green color component between 0 and 255 (0 to FF hex).
 BB is a hexadecimal Blue color component between 0 and 255 (0 to FF hex).
   Example:
 // control file to set color of Debtor Name field
@SETde.na.color = #3399FF
// End of file
  Please refer to an online Color Chart for a quick reference to sample colors that you may use and
  to Using Color In Collect! for additional examples.
 
 You cannot change the color of a pick list field using a control file. You need to set the
          RGB values on the pick list. Please refer to the Help topic  How To Use Pick Lists for more
          information.    RIGHTS  Set this attribute to control whether a field on a form is hidden, read only or able to be edited
  by the user.
   Rights are defined as:
 
    0 = Full1 = No Delete2 = Read Only3 = No Access // Set at FORM level to grant Read Only access to the Debtor Status field
@SETde.sta.rights = 2
// End of file
   CAPTION OR ALIAS  Set this attribute to change the label of a field.
   Example:
 // Set this at FORM level in the Attachment form to change the label of the Index 1 field.
@SETat.i1.caption = "Driver's License"
@SETat.i2.alias   = "VIN #"
// End of file
 Multi-word captions need to be put in quotes.    REQUIRED  Set this attribute to change whether or not a field needs to be filled in before leaving the form.
 
    0 = Not Required1 = Required   Example:
 // Set this at FORM level in the Attachment form to set the requirement for the Index 1 field.
// Also, set this at the field level for the Type field for when the field changes.
@SETat.i1.required = 0
@SETat.i1.required = 1 if ( @at.ty = "2" )
// End of file
 Fields that are set to No Access or Read Only cannot be set to required as the user
          won't have the ability to edit the field.    PICK LIST  Set this attribute to add a pick list to a field.
   Example:
 // Set this at FORM level in the Attachment form to change the pick list of the Index 1 field.
@SETat.i1.picklist = 1.pck
// End of file
 
 Conditional Statements  You can use IF statements to conditionally set the value or attribute of a field.
   If you are conditionally setting the attribute, then you need to set a default attribute for when
  the condition is false.
   Example:
 @SETde.sta.color = #FFFFFF
@SETde.sta.color = #3399FF if ( @de.sta = LEG )
@SETde.clo.rights = 3
@SETde.clo.rights = 0 if ( @de.mo = Closed )
@SETde.st.caption = "State"
@SETde.st.caption = "Province" if ( @de.cou = Canada )
@SETde.de.required = 0
@SETde.de.required = 1 if ( @de.rc = x )
@SETde.u1.picklist = " "
@SETde.u1.picklist = 1.pck if ( @de.cl = 101 )
 
 Control File Limitations  At present, control files are not pre-processed like reports are. As a result, each line is read
  individually.
   Any multi-line commands like the following will not work in a control file:
 
    @include@inc@if@while@sql, unless the query is on one line  
 Control File Examples  The following snippets give examples of ways that you can use control files in some common situations.
   This is a fairly technical subject. Writing the scripts for control files requires a familiarity
  with the various commands that can be used in the report writer. You may have to experiment a bit
  to get the results you need.
      If the status is PRA, we may want to make the color of the Status field green.
   Set at FORM level.
 @SETde.sta.color = #FFFFFF
@SETde.sta.color = #00FF00  if (@de.sta = PRA)
   Debtor Delinquent  This Control File will change the color of the Debtor Delinquent field on the Debtor form.
   Set at FORM level.
 @SETde.de.color = #00FFFF
@SETde.de.color = #99FF99 if (@de.de > @d-30)
  When the Debtor Delinquent is within the past month, the color of the field changes to green. When
  the Debtor is over a month delinquent, the color of the field changes to blue.
    Debtor Range  This Control File can be used to identify Debtors in a range of file numbers. Different colors can
  be used to indicate different ranges.
   Set at FORM level.
 @SETde.na.color = #CCFF00  if (@de.fi < 11000)
@SETde.na.color = #CC99FF  if (@de.fi = 11000 .. 13999)
@SETde.na.color = #FFCCCC  if (@de.fi = > 13999)
  This snippet changes the color of the Debtor Name field (@de.na) depending on the Debtor File Number
  (@de.fi).
    Attachment  This Control File changes the  labels of fields on the Attachment form depending on the value chosen
  from the Class field  pick list. For the examples below to work, the Class field pick list needs to
  be edited to add Invoice and Assets to the existing list.
   Set at FORM level.
   Here is an example of script to change the caption of the Index 1 field to Invoice # or Assets and
  the caption of the File field to View Invoice or View Assets. Notice that strings are enclosed
  in quotes.
 @SETat.i1.caption = "Index 1"
@SETat.fi.caption = "File"
@SETat.i1.caption = "Invoice #" if (@at.cl = Invoice)
@SETat.fi.caption = "View Invoice" if (@at.cl = Invoice)
@SETat.i1.caption = "Assets" if (@at.cl = Assets)
@SETat.fi.caption = "View Assets" if (@at.cl = Assets)
  If the user chooses 'Invoice' from the Class field pick list (@at.cl), the caption of the Index 1
  field (at.i1) will change to "Invoice #" and the text in the File field will read "View Invoice".
   If the user chooses 'Assets' from the Class field pick list, the caption of the Index 1 field (at.i1)
  will change to "Assets" and the text in the File field will read "View Assets".
    Debtor Other Phone Number Written to User 1 Field  This Control File will put the Debtor Other Phone number in the  Transaction form in the User 1 field.
 
 By default, Collect!'s Check reports use User 1 for the Check Number. If you plan to use the
          check printing features, you would need to modify the check reports to take the check number
          from one of the other User fields on the Transaction form.   Set at FORM level
 @EDITtr.u1 = @de.ot
  This control file will run whenever the transaction is opened to view.
    Using Variables with Control Files  You can also use variables with control files. The following snippets are set at the FORM level,
  using variables. In this example, the color of the Status field will change to GREEN if there have
  been more than 3 phone calls made to the debtor.
 @varPHO# = 0
@de.con no total where ( @co.ty = Phone )
@varPHO = @(varPHO+1) if ( @co.do = Yes )
@de.con
@SETde.sta.color = #FFFFFF
@SETde.sta.color = #00FFFF if ( @varPHO > 3 )
   Pick List  Use these commands to dynamically attach a Pick List to a field.
   Example 1:
   Set at FORM level.
 @SETde.st.picklist = 1.pck
@SETde.st.picklist = states if ( @de.cou = US )
  In the example above, the pick list (1.pck or states) needs to already exist in the system so that
  you can use it. For more information about creating a pick list please refer to  How To Use Pick Lists.
   Example 2:
   Set at FIELD level with conditions declared with an IF statement.
 @SETde.st.picklist = " "
@SETde.st.picklist = 15.pck if (@de.zi = 04000 .. 16999)
@SETde.st.picklist = 11.pck if (@de.zi = 89000 .. 95999)
  For the above example the following two pick lists were created.
 "New York"
"Maine"
"Washington DC"
"New Jersey"
"California"
"Nevada"
"Arizona"
  Please refer to How To Use Pick Lists for information on creating these pick lists.
  
 Messaging  You can use a control file to display a message to the end user when a certain condition is
  encountered.
   For example:
   This control file will display a message alerting the operator that the account has been worked
  today.
   Set at the FORM level.
 @tvarText* = ""
@tvarText2* = ""
@varDate! = @d
@tvarText = "Don't phone this debtor. Already worked today."
@tvarText2 = @tvarText if (@de.wo = @varDate)
@message(@tvarText2)
    Message Displayed by Control File
  
 Troubleshooting Control Files  Control Files take effect ONLY when you are signed in as a user with a level other than 99. If you
  are signed in as an operator with  User Level 99, you will not see any changes you have made to field
  labels and you will not invoke any code to edit fields and perform calculations. Please make sure
  your operators have a valid User Level other than 99.
  
 Run Contact Plan From Control File  You can run a  contact plan from a control file using the command @RUNPLAN
   Syntax: @RUNPLAN({record},{planID}) {if ( @var = n )}
   {record} = Either Client or Debtor{planID} =  Contact plan code
 {if conditional} is optional and behaves normally
   Example: @RUNPLAN(Client,REV)
   This would run the REV contact plan on the Client who is current when the report or control file
  is executed.
   {planID} can also be a variable.
   For example, @RUNPLAN(Debtor,@varPlan) where @varPlan is set elsewhere in the
  report.
   The optional "if" conditional works just as it does normally.
   For example: @RUNPLAN(Debtor,CLO) if ( @de.ow < 1.00 )
  
 Attaching A Control File To A Form   
    Right click in the form, not on a field, and select Properties from the choices that are
        displayed. This will bring up the  Access Rights form for the form you are on.
 You can Right click on any gray area of the form.      Check the Name field in the Access Rights form. It should display the name of the form you
        want to attach the Control File to.
      
        Or pull down the  System menu and choose  Layout and Languages, Form properties. The
            Access Rights form will be displayed. Check the Name field as described above.Double-click in the Control File field to open the Control File editor or choose a button as
        described below.Refer to sample files for guidelines.Press F8 to save your Control File. The next time you enter the form, it will be
        activated. 
 Control files at the form level run unconditionally. You can only set conditions based on
          field values in control files attached to individual fields.  
 Attaching A Control File To A Field   
    Right click in the field you want to attach the Control File to. Select Properties from the
        choices that are displayed. This will bring up the  Access Rights form for the field that is
        currently selected. Check the Name field in the Access Rights form. It should display the name
        of the field you want to attach the Control File to.
      
        Or pull down the  System menu and choose  Layout and Languages, Field properties. The
            Access Rights form will be displayed. Check the Name field as described above.Double-click in the Control File field to open the Control File editor or choose a button as
        described below.Refer to sample files for guidelines. Press F8 to save your Control File. The field will
        display the changes when you exit from it. 
 Control file attached to fields are invoked as the user exits the field. Field level control
          files will execute on leaving a field if the field data has changed.  
 Saving Control Files  When you create a Control File, Collect! gives it a number and a *.ctf extension. Control files are
  stored in the MASTERDB\control sub-directory of Collect!  (i.e. ..\Collect\masterdb\control\1.ctf)
  
 Buttons On The Control File Field  In the  Access Rights form, the Control File field has four buttons to the right of it.
   Use these buttons to do the following:
 
    Open a filePrint a fileDelete a fileSelect a .ctf file from the Collect\masterdb\control folder    Open a File  If the File field already contains the name of Control File, click this button to open the file in
  the Control File editor. You can modify the file if needed.
   If the File field is empty, selecting the Open button will open a new Control File for you to create.
    Print a File  To Print the displayed Control File select the Print button.
    Delete a File  To delete the Control File select the button with the stylized X on it. This prompts you to delete
  the file.
    Select an Existing Control File  To attach an existing Control File select the Magnifying Glass button. Collect! will open a dialog
  displaying the  contents of the Collect\masterdb\control folder. Control Files have a .ctf extension.
 
 You should already know which file you want to select.  
 Time Zone Alert Example  This section explains how to use a  pick list and control file to alert operators to timezones. It
  changes the color of the Debtor Home Phone field to red when it is no longer acceptable to phone.
  This requires familiarity with using the  Access Rights form to create pick lists and control files
  and to attach them to fields and forms.
   Managers with accounts in several states or countries often seek a way to alert operators using
  timezone information. Perhaps it is too early or too late to phone a particular area. Using a pick
  list and control file, it is easy to alert your operators to changes in Timezones so that they know
  when it is acceptable to phone an account.
 
 This example uses the internal pick list on the Debtor Timezone field. 
 The Collect! Member Center has some utility scripts for changing the time zone field
         automatically when the debtor form is loaded or when the phone fields or zip field is changed.
         By default, Collect! is setup to change the time zone based on the basic North America time
         zones. It does not factor in daylight savings.
         
         Click here for scripts that can factor in daylight savings or zip codes.  
 Time Zone Pick List  Collect! ships with an internal  pick list attached to the Debtor Time zone field. To use this example,
  simply pick the appropriate timezone for each account.
 
 To view the pick list, you can open the  Access Rights for the Debtor's Timezone field and
        select the folder icon next to the pick list field.   This is a simple list of timezone values taken from standard timezone tables. It accurately represents
  the different time zones in relation to Greenwich Mean Time.
    Pick List for Debtor Timezone"0" Local Time
"13" (0) Greenwich Mean Time
"-100" (-1) SE Greenland
"-200" (-2) Atlantic Ocean
"-300" (-3) Greenland Time
"-350" (-3.5) Newfoundland Time
"-400" (-4) Atlantic Time
"-500" (-5) Eastern Standard Time
"-600" (-6) Central Standard Time
"-700" (-7) Mountain Standard Time
"-800" (-8) Pacific Standard Time
"-900" (-9) Alaska Time
"-1000" (-10) Hawaii
"-1100" (-11) Pacific Ocean
"1200" (+/-12) International Date Line
"1100" (11) Kamchatskiy, E Russia
"1000" (10) Eastern Russia, Sydney, Australia
"950" (9.5) Mid Australia
"900" (9) Japan
"800" (8) China
"700" (7) W Mongolia
"650" (6.5) Burma
"600" (6) Almaty (Alma ATA), Russia
"550" (5.5) India
"500" (5) Ural Mountains, Russia
"450" (4.5) Afghanistan
"400" (4) NW Caspian Sea
"350" (3.5) Iran
"300" (3) Moscow, Mid-East, E Africa
"200" (2) E Europe, E Central Africa
"100" (1) Mid Europe/Africa
 
 Timezone Control File  Next, open the  Access Rights form for the Debtor form and create a control file as shown below.
 // Control file for Debtor
// Please add your report snippet below.
@varZone# = -500
@varTime# = 0
@varCur# = @t
@varTime = @(de.ti-varZone)
@varTime = @varTime*100
@varCur = @(varCur+varTime)
@SETde.ho.color = #CCFFCC
@SETde.ho.color = #FF0000 if(@varCur > 170000)
@SETde.ho.color = #FF0000 if(@varCur < 080000)
@SETde.ho.color = #CCFFCC if(@varCur = 080000 .. 165959)
@SETde.ho.color = #CCFFCC if (@de.ti = Local Time)
//end of file
   Adjusting the Samples for Your Timezone  The  pick list contains all the timezones. Please find your timezone on the list and make sure that
  the value in the first column is entered in the control file as @varZone#.
   In the example, this value is "-500," that is, Eastern Standard time. So, if you are in Eastern
  Standard time, you won't have to change this.
   The control file is set to consider times between 8AM and 5PM as okay to phone. This uses the 24
  hour clock. Please adjust these as needed for your own requirements.
   For example:
   @SETde.ho.color = #FF0000 if(@varCur > 170000)
  This means after 5PM, the field will turn red.
   @SETde.ho.color = #FF0000 if(@varCur < 080000)
  This means before 8AM, the field will turn red.
   @SETde.ho.color = #CCFFCC if(@varCur = 080000 .. 165959)
  This means between 8AM and 5PM, the field will turn green.
   @SETde.ho.color = #CCFFCC if (@de.ti = Local Time)
  This means for Local Time, the field will turn green.
    Using the Timezone Pick List  Once the control file is attached to the Debtor form, select the appropriate timezone from the pick
  list.
   Behind the scenes, Collect! stores the value for this timezone and calculates its difference in
  hours from your timezone.
   If this difference means that the target timezone is earlier than 8 AM or later than 5 PM, right now,
  the debtor's Home Phone field will turn red, alerting the operator that it is too early or too late
  to phone.
   These values are set in the control file lines,
 @SETde.ho.color = #FF0000 if(@varCur > 170000)
@SETde.ho.color = #FF0000 if(@varCur < 080000)
@SETde.ho.color = #CCFFCC if(@varCur = 080000 .. 165959)
@SETde.ho.color = #CCFFCC if (@de.ti = Local Time)
  These times may be modified to suit your needs. Please note the numeric format used for the time.
 
 The Debtor Timezone field works very nicely with the  WIP List if you want to load operator's
         work queues according to timezone. Please refer to  How to Use the WIP List for more information.    Time Difference  The control file that manages Debtor timezones is called setzone.ctf and is stored in your "Collect\
  masterdb\control" folder. It automatically sets the timezone for the debtor when the debtor is opened
  or when the phone numbers are changed.
 @varZone# = -500
@varDif# = 0
//Rest of control file as shown above
//And then some additional lines as shown below.
@varDif = @(de.ti-varZone)/100
@SETde.u2.caption = Time Dif
@EDITde.u2 = @varDif if (@de.ti != Local Time)
//end of file
  This will display the number of hours that the account's Timezone differs from the Local Time. It
  also changes the label of the User 2 field to display "Time Dif."
  
 | 
Was this page helpful? Do you have any comments on this document? Can we make it better? If so how may we improve this page.
Please click this link to send us your comments: helpinfo@collect.org