[{TableOfContents }]
!!!DEFINE USER CALCULATIONS
[{Image src='IMUC.JPG' width='360' align='right' link='attach/IMUC/IMUC.JPG'}]

UserCalcs may be defined within the Define UserCalcs (IMUC) form. This screen will allow
you to create the lines, variables, commands, etc. for each UserCalc.  The definition data for the Define User Calculations screen is stored in the [P2K_AM_USER_CALCS] tables.

;[User Calc|USER_CALC_CODE]: This field refers to the user-defined name given to the UserCalc. Once the UserCalc has been created it can be edited, however, you can not edit it once the UserCalc is in production. You have to Un-Publish it on [IMUCA] first. As with Benefit and Attendance UserCalcs, we recommend that a naming convention be used for Workflow UserCalcs. For example, AT is used for the Attendance application, BE for the Benefits application and WF for the Workflow application. This will allow for efficient queries once the UserCalc list becomes large.  See [special characters|NAMING CONVENTION] section for naming rules.

;[Description|DESCRIPTION]: The description field may be used to further define the purpose of the UserCalc in more detail than is available in the UserCalc name.

;[Product|PRODUCT_CODE]: The product indicates which module the UserCalc has been defined for. For example, PR-Payroll, BE-Benefits, AT- Attendance, FC-Forecasting & Costing and WF-Workflow.\\  \\With respect to Workflow, this field specifies the table code on which the workflow trigger is located. This field should be identical to the name of the "Table" in [IMWA]. In all cases except workflow, it is the application that controls which fields in which tables will be accessible by the UserCalc. For example, in an Attendance UserCalc, the Leave Accrual Table would be accessible, but not benefits information.

;[Status|USER_CALC_STATUS]: This field describes the status of the UserCalc. The following values are available.
|Under Construction|This status value indicates that the UserCalc has not been completed and therefore will not be published.
|Being Tested      |This status value indicates that the UserCalc has been completed, compiled and is being tested by the user who created it. It will not be published.
|To Be Published   |This status value indicates that the UserCalc is ready for publishing. You can not set the user calc to this value manually.
|In Production     |This status value indicates that the UserCalc has already been published and is in use.

;[User Calc Type|USER_CALC_TYPE]: The 'type' of UserCalc defines what values may be used/passed between UserCalcs and what capabilities may be performed. Three types are available:
|Qualifiers | Used to reduce the number of employees or calculations processed by the UserCalc.
|Functions  | Used to perform a calculation or query, and return a value to the calculation. The Attendance and Benefits Applications use Functions exclusively.
|Calculations| Used as the main program area, and may call Qualifiers and Functions in order to perform some kind of customized action or operation. Calculations are only performed in the Payroll Calculation, and Forecasting and Costing applications.

;[Return Value|RETURN_VALUE_TYPE]: The return value is used by Functions and Qualifiers to define what type of value will be returned by the Function or Qualifier UserCalc. If the UserCalc type is Qualifier, the return value will be set to Boolean. If the UserCalc type is Function, the user may choose Boolean, Char(acter), Date or Number as the type of value that will be returned.

;[Usage|USER_CALC_USAGE]:The Usage field defines whether or not the UserCalc will be used to print a disbursement message. Disbursement messages are lines of information that will print on the employee's payroll stub/deposit stub.
|Disbursement Message|the UserCalc will be executed when UPDISB is run.
|Not Specified|Use this or leave it blank for most purposes.
|Secondary WF |This option tells the Work Flow engine that this User Calc is ONLY to be called from another user calc and should NOT be fired on its own by the triggering product.

%%strike %%strike ;[Compile|]: This button allows the user to check the syntax of a UserCalc by creating the SQL code. This step does not ensure accuracy of the UserCalc, it merely checks that there are no UserCalc language errors such as incorrect syntax or infinite loops.
%%strike ;[Publish UserCalc|]: If the user is signed-on as 'P2K' then a UserCalc may be re-published directly in the IMUC form if it was already 'In Production' and needed to be re-validated. If a user has taken a copy of an 'In Production' UserCalc and wishes to test it without losing the original UserCalc, then they may publish it. This means that wherever the original UserCalc is referenced, [{$applicationname}] will now use the newly published version.%%

----
!!Lines tab

The data shown in this tab is stored in the [P2K_AM_USER_CALC_DETAILS] table.

;[Line|COMMAND_LINE]: This field defines the sequential order in which the UserCalcs will follow instructions. (00010, 00020, etc.)

;[CMD|COMMAND_CODE]: Commands are used to perform operations within a UserCalc. See detailed descriptions in the [User Calc Commands|UC COMMANDS] section. 

;[Type 1|OPERAND1_TYPE]: Operand Types declare what value the Operand will have and how to process it within the UserCalc.  See detailed descriptions in the [Operand Types|UC OPERAND TYPES] section. 

;[Operand 1|OPERAND1_LK]: Operand 1 is typically used to store the result of any line of a UserCalc, or to compare to a value in Operand2. 

;[OPER|OPERATOR_CODE]: Operators are the action to be taken in regard to the command issued and the operands indicated. See detailed description in the [Operators|UC OPERATORS] section.


;[Type^2|OPERAND2_TYPE]:Operand Types declare what value the Operand will have and how to process it within the UserCalc.

;[Operand 2|OPERAND2_LK]:Operand2 is used to compare values or assign values.

;[Type^3|OPERAND3_TYPE]:Operand Types declare what value the Operand will have and how to process it within the UserCalc.

;[Operand 3|OPERAND3_LK]:Operand 3 is used, when necessary, to further define Operand 2, or in mathematical operations. 

;[If Goto|GOTO_LINE]: The ''If Goto'' field must be completed for every line. For any IF, FREQ, PPE, BOM, or EOM command there must be a true path (If Goto), and a false path (Else Goto).\\  \\The ''If Goto'' field tells the UserCalc program which line to proceed to in a __True__ situation. In a situation without a true and false path (i.e. Let PC 110 Equal +12), only the ''If Goto'' field is mandatory.\\  \\If the ''If Goto'' column is double-clicked on the user will be taken to that line.

;[Else Goto|ELSE_LINE]: For any IF, FREQ, PPE, BOM or EOM command, the ''Else Goto'' field tells the program which line to proceed to in the __False__ situation.  If the 'Else Goto' column is double-clicked on the user will be taken to that line.

;[Description]: To make UserCalcs more easily read and maintained, a Notes field has been provided. Notes should be used to explain the calculations made and the logic of the UserCalc. If the user calc is used for workflow emails, the text of the email body is added here. 
----
!!Variables tab
Data from the Variables tab is stored in [P2K_AM_USER_CALC_VARIABLES] table. Variables are used as temporary working storage to hold values required by the UserCalc.  See the [User Calc Variables|SC_VARIABLE] Section.
;[Name|VARIABLE_NAME]:This is a user-defined name for the variable.
;[Type|VARIABLE_TYPE]:The user may choose Boolean, Number, Char(acter) or Date as the type of variable to be stored.
;[Initial Value|INITIAL_VALUE]:For Numeric Types the 'Initial Value' should be '0'.
;[Length|VARIABLE_LENGTH]:The number of characters used to make up the length of the variable is stated here.
----
!!Globals tab

Global values are used to hold information between UserCalcs. Data for UserCalc Global Variables is stored in the [P2K_AM_USER_CALC_GLOBALS] table. See the page [Global Variables|$G_VARIABLE] for additional information on Global Variables. 

;[Name|GLOBAL_NAME]:This is a user-defined name for the variable.
;[Type|GLOBAL_TYPE]:The user may choose Boolean, Number, Char(acter) or Date as the type of variable to be stored.
;[Scope|USER_CALC_SCOPE]:This provides for the ability to alter the 'Life' of a Global Variable. They can be reset at the beginning of an employee, or at the beginning of a pay. This is needed when there are multiple pays for an employee in the same pay run (Multiple Assignments). 
;[Initial Value|INITIAL_VALUE]:For Numeric types, the 'Initial Value' should be '0'.
;[Length|GLOBAL_LENGTH]: The number of characters used to make up the length of the variable is stated here.
----

!!Commands tab

Within the IMUC form users may view the commands that are available. Commands are used to perform operations within a UserCalc. See detailed descriptions in the [Commands|UC COMMANDS] section. 
%%warning This tab is for viewing purposes only; you may not edit the data.%%
----
!!Operators tab
Within the IMUC form users may view the operators that are available. See detailed descriptions in the [Operators|UC OPERATORS] section. 
%%warning This tab is for viewing purposes only; you may not edit the data.%%
----
!!View SQL tab

[CLEANUP]