Contract automation and calculating a value automatically
Contract automation and calculating a value automatically
Weagree’s contract automation wizard permits automatically calculating a value and inserting the result into the contract text. Such calculation operates with the calc-tag (calculation options and examples are below). The calc-tag must contain all variables as are necessary to calculate and produce the required result.
The variables may be Q&A-answers. Therefore, a calculation tag may contain global questions and local questions (which local questions may be used to reflect a value in the same contract clause).
By exception, inserting such calculation is not achieved by a dedicated button, but (given the indefinite number of possible calculations) requires that you add
Remarks:
- Like in mathematical formulae, any round brackets ( ) used within the calculation tag determine the order of the calculation.
- An edit question or choice question can be used without that answer being inserted in the contract. In such case, the answer will only be used in the calculation.
- Using brackets to open and close the calculation part of the tag permits using decimals with a full stop.
- It is possible to format the calculated value (see below)
Calculation tag structure:
[calc.<tag name>.(<calculation>)]
If formatting requirements apply to the calculation result (see also here):
[calc.<tag name>.(<calculation>).<formatting parameter>]
Examples of simple calculations:
Sum ( + ):
[calc.Example of a sum.(200+[edit.Amount 1]+[edit.Amount 2]+[gq.Value entered elsewhere])]
Example – Deduct ( – ):
[calc.Example of a deduction.(200-[edit.Amount 1]-[edit.Amount 2]-[gq.Value entered elsewhere])]
Example – Divide ( / ):
[calc.Example of a divide.(200/[edit.Amount X])]
Example – Multiply ( * ):
[calc.Example of a multiply.(200*[edit.sum1])]
Example – Combine: sum and divide ( + and / ):
[calc.Example of both sum and divide.((200+[edit.sum1]+[edit.sum2]+[gq.sumglobal])/2)]
Example – Combine a nested calculation and sum (calculation within a calculation and + ):
[calc.Calculate with existing value.(200+[calc.Example A divide])]
Possible other parameters in a calc-tag are:
| Name | Description | Usage | Result |
| Pow | Results in a specified number raised to the specified power. | Pow(3, 2) | 9d |
| Sqrt | Results in the square root of a specified number. | Sqrt(4) | 2d |
| Ceiling | Results in the smallest integer greater than or equal to the specified number. | Ceiling(1.5) | 2d |
| Max | Results in the larger of two specified numbers. | Max(1, 2) | 2 |
| Floor | Results in the largest integer less than or equal to the specified number. | Floor(1.5) | 1d |
| Min | Results in the smaller of two numbers. | Min(1, 2) | 1 |
| Round | Rounds a value to the nearest integer or specified number of decimal places. The mid number behaviour can be changed by using EvaluateOption.RoundAwayFromZero during construction of the Expression object. | Round(3.222, 2) | 3.22d |
| Truncate | Calculates the integral part of a number. | Truncate(1.7) | 1 |
| Abs | Results in the absolute value of a specified number. | Abs(-1) | 1M |
| IEEERemainder | Results in the remainder resulting from the division of a specified number by another specified number. | IEEERemainder(3, 2) | -1d |
| Log | Results in the logarithm of a specified number. | Log(1, 10) | 0d |
| Log10 | Results in the base 10 logarithm of a specified number. | Log10(1) | 0d |
| Sign | Results in a value indicating the sign of a number. | Sign(-10) | -1 |
| Cos | Results in the cosine of the specified angle. | Cos(0) | 1d |
| Sin | Results in the sine of the specified angle. | Sin(0) | 0d |
| Tan | Results in the tangent of the specified angle. | Tan(0) | 0d |
| Acos | Results in the angle whose cosine is the specified number. | Acos(1) | 0d |
| Asin | Results in the angle whose sine is the specified number. | Asin(0) | 0d |
| Atan | Results in the angle whose tangent is the specified number. | Atan(0) | 0d |
| Exp | Results in e raised to the specified power. | Exp(0) | 1d |
Example:
[calc.Example A.(([edit.value1] +([edit.value2] * 3)/2))]
[calc.const.(5000)]
Reusing an existing calculation:
[calc.Example B.([calc.Example A]+2)]
[calc.Example C.([calc.const]+[calc.Example B])]
When inserting the tag (in the template creation tool), regardless of the applicable template language or culture, any decimals must be separated with a full stop ( . ):
[calc.Example D.([calc.Example A]+2.5)]
To force the user to enter a number whether as an integer or a numeral with decimals (and not a text string with thousand-separators or spaces), the edit-question dialogue screen permits enforcing certain data formatting.
The dropdown in the edit-question dialogues screen can be set to require an integer (natural number, containing no decimals) or a numeral with decimals. In such case, the value to be entered may not contain thousand separators (or decimal, if applicable), prompting an error message during the questionnaire.