(1)Chapter 4 – Advanced Form Design Concepts
There is a huge amount of customization that can be done with the Report Designer, and basic quote forms only scratch
the surface. Learning how to use the advanced functionality of the Report Designer in tandem with Quosal can produce
amazing results. This chapter is an overview of the main concepts you’ll need to know:
More about Data Bindings
Most tags in Quosal have names that are descriptive enough to be self‐explanatory, such as [QuoteToCustomer.City] or
[QuoteItemsList.PrintedPrice]. There are also several custom tags available at each level of the quote (except for
financing). Custom tags are very commonly used for more advanced projects where data needs to be stored that does
not fit within a pre‐defined tag. Custom tags are also important for scripting, where a script might calculate a value
based on certain aspects of the quote, then populate that value into a custom field that can then be pulled onto the
quote form.
Any given tag represents one out of five different kinds of data:
Strings (“I’m a string!”)
Decimals (4363.326)
Boolean values (True/False)
Pictures
Dates
The screenshot below shows a selection of custom fields available on the item level:
On the quote level, each tag represents one piece of information, such as [QuoteName]. This is because there is only
one quote. Conversely, a quote typically has several tabs, and on each tab, there are several items. For this reason,
QuoteTabsList and QuoteItemsList level tags, such as [QuoteTabsList.TabName], represent several pieces of information,
kind of like an array or list.
For a quote that has 5 tabs (Cover Letter, Executive Summary, Project Outline, Pricing, Terms), [QuoteTabsList.TabName]
equals the name of each of those tabs, and depending on the situation it can display one, or all, or anything in between.
(2)Filter Strings
Filter strings do exactly what you would expect. They give you an easy way to set conditions that filter out information
you don’t need on a specific section of your quote. The filter string for any ‘detail report’ band is located in the Tasks
menu. You can either edit the string within the Tasks menu, or click on the [∙∙∙] button to the right of ‘Filter String’ to
open up the Filter String Editor, which is a visual representation of the conditions.
In the screenshot above, the filter string has been set to look for tabs where the [IsEmpty] Boolean condition is False,
which asks the question of each tab: “Is this empty?” and looks for the answer “no” in order to display the tab. The
second condition is that the [TabName] tag should be equal to ‘Cover Letter’. This means that only a tab with the exact
name ‘Cover Letter’ will print. Because these conditions are connected by ‘And’ in red at the top left corner, it means
that both must be true in order to print a tab.
Filter strings are powerful tools for creating complex functionality. You can create groups of statements connected by
‘Or’ or ‘And’, as well as nesting these groups within each other.
QuoteTabsList filter strings commonly include logic for [IsPrinted], [IsOptional], [IsEmpty], and [IsTotalsIncluded].
(3)Formatting Rules
Formatting rules are accessed through the property grid in the report designer and act as a property on the element
that can change other properties (formatting) of the element based on the conditional statement in the formatting rule.
The quote form as a whole has a list of formatting rules (rules available in report), which can be accessed through the
‘Formatting Rule Sheet Editor’ (Edit Rule Sheet…). This is where rules are edited and new ones are created. Those rules
can then be added to elements (Rules applied to a control). Each formatting rule can be added to multiple different
elements, and elements can have multiple formatting rules applied to them.
(4)Formatting Rules Cont.
To create a new formatting rule, click on the green + symbol in the top left corner of the Formatting Rule Sheet Editor.
There are several steps to creating a formatting rule, and the interface makes the most sense when you work from the
bottom up (Design, then Data, then Behavior).
First, you need to give your new formatting rule a name. Spaces are not supported and each name must be unique.
Next, Data Source must be set to ‘Quote Data’. Data Member refers to the level of the quote you need to access. If you
are accessing the quote main level, this can be left blank.
Finally, set the condition and formatting for your rule. If you click into the condition field, you’ll see the [∙∙∙] button
appear on the right. If you click there, it will open the ‘Condition Editor’ window, which helps you build your conditional
statement. If you already know exactly what you need to write, you can just type directly into the condition field without
opening the editor.
Once your condition is set, choose the formatting that you want to have applied to your target element(s) when the
rule’s condition is met. At the bottom of the window, you can see a preview of your chosen formatting with the rule’s
name used as example text.
(5)Formatting Rules Cont.
Below is the Condition Editor. The textbox at the top is where you can manually type in your condition. Right below,
there is a set of math operator buttons to choose from. Double‐click any one of these to add it to your condition. Below
these, the left box is a menu, which displays the contents of the selected option in the middle box. The right box displays
descriptions of the selected item where applicable. ‘Fields’ displays the full list of available fields for the ‘Data Member’
that was set in the ‘Formatting Rule Sheet Editor’. Double‐clicking on a field in the list adds it to your condition.
(6)Calculated Fields
Occasionally, you will need a piece of data that is not already in the field list. In many cases, it is possible to use the fields
you do have in order to calculate the missing piece of information using a calculated field. To create a new calculated
field, right click in the field list and click ‘Add Calculated Field’. You can also click on ‘Edit Calculated Fields…’ to open the
Calculated Field Collection Editor, which allows you to edit all the calculated fields on the form.
Once you have created a calculated field, the property
grid will change to show you the properties of your
new calculated field. Start at the bottom of the panel
with the ‘Design’ section by giving your new field a
name. Next, set the data member. If you need to use
quote level information, leave this blank. If you need
tab level, change it to QuoteTabsList, and if you need
item level, change it to QuoteItemsList and so on.
Finally, you’ll need to set your Expression and Field
Type. Choose the field type first. In most cases, you’ll
be working with numbers, specifically monetary
values. ‘Double’ is what you’ll want to use in these
cases.
If you click on the Expression Field and click the [∙∙∙]
symbol, the Expression Editor opens. This editor is
basically identical to the Condition Editor for creating
formatting rules. In the example to the left, a
‘DownPayment’ calculated field has been created,
which takes the [QuoteTotal] field and multiplies it by
0.3, arriving at a number that is 30% of the original
quote total.
(7)Format Strings
Formatting data (strings, decimals, etc) is done with the Format String Editor, which can be found in the Tasks menu of a
selected element. To get to the Tasks menu, click on the [>] symbol in the top right corner of the selected element. The
Format String can be edited directly from this menu, or you can click on the [∙∙∙] button on the right to expand the
Format String Editor.
Within the editor, you can choose from several different
categories of formatting. For the ‘DownPayment’
calculated field that was created previously, we’ll
choose to format it as currency. The currency category
has some Standard Types to choose from. There is also
an additional tab for ‘Custom’ currency formatting that
you may choose to select. ‘c’ is a common formatting
standard for currency, since it will change how the field
is formatted based on which currency is selected on the
quote. At the top of the editor, you’ll see a preview of
the formatting you’ve chosen.
In addition to the formatting within the editor, you can
also add additional formatting to the beginning or end
of your data by typing it in the Fomat String field
outside of the curly braces. Here we have added a label
for our down payment.
(8)
Running Sums
Running sums allow you to total up the value of a field in the footer of a Detail Report section in the Report Designer.
This is used mostly for cases where the total amount needed is not a pre‐defined field in Quosal like [QuoteTotal] or
[RecurringTotal]. A running sum will only total up whatever has been cycled through in the detail portion of the Detail
Report, so if a Detail Report filters out certain tabs on a quote, only the tabs that make it through that filter will
contribute to the running sum total.
In the screenshot below, a running sum of the tab level optional amount field is being calculated. You can access
running sums, as well as a number of other summary functions in the Tasks menu of an element. When you are using a
running sum, any formatting that you have added to the format string in the Tasks menu is overridden by whatever
format is set in the Summary Editor’s format string field.
(9)Terms and Recurring Modifications
Terms and Recurring is mostly used to set up term options for financing or recurring payments, but it can also be used as
a way to manipulate the quote total, a specific tab’s total, or to display values that may not be easily calculated
otherwise.
There are two common things we do with terms and recurring other than their intended functionality:
Down Payment / Remaining Balance values, and ‘total investment’, which is generally the quote one‐time total and the
total of all recurring payments rolled into one number.
To show a Down Payment / Remaining Balance table with terms and recurring, you’ll create two term options – one for
the down payment and one for the remaining balance. The term options will be almost identical, except for their names
and the ‘Principal Discount Percent’ value. There is a ‘Down Payment’ field on term options, but it is for a static dollar
amount rather than a percentage, which is why we won’t use it in this case. So for our ‘30% Down Payment’, we’ll
discount the total amount by 70% to arrive at our 30% remainder. For the ‘Remaining Balance’ term option, simply do
the opposite. Both term options should have the same group name set.
In the screenshot below, we can see that some modifications to the basic form are needed for this display. We must
remove the ‘No. of Payments’ columns since they are not relevant in this case, and also remove the word ‘Financing’
from the end of the term option group name.
(10)Terms and Recurring Modifications Cont.
In order to show a ‘Total Investment’ amount on the form, we need to use a special functionality of terms and recurring
called ‘Spread Fee’. Spread fee takes the principal amount from the Payment Amount Details section and adds it to the
Recurring Amounts section by dividing the principal amount by the recurring duration, then adding it to the ‘Recurring
Total’, thereby spreading the one‐time total across all of the recurring payments.
In this situation we’re not really interested in the fact that the one‐time amount is spread across the individual
payments. Because the one‐time amount is spread across the payments, the result is that the total one‐time amount is
now added to the ‘Total of Recurring Payments’, highlighted below.
This number is the total one‐time + (recurring payments x recurring duration), and if you want to show your customer
exactly how much they will be paying over the course of a certain period of time, including their initial charges, that’s
what you would need to show.
(11)Terms and Recurring Modifications Cont.
Let’s take a look at how this displays on the basic quote form.
In the screenshot above, we can see that several changes need to be made on the basic quote form in order for this to
display correctly. ‘Recurring Payments’ needs to be removed from the end of the group name, the ‘No. of Payments’
columns need to be removed since they aren’t relevant, and we also need to change which tag is printing in the amount
column. It’s currently displaying the ‘Recurring Total’ for each period (in this case, month). We need it to show the ‘Total
of Recurring Payments’ amount instead, which we highlighted on the previous page. In the Report Designer, ‘Total of
Recurring Payments’ is the [RecurringTotalAggregated] field in QuoteFinancingList. The screenshot below shows the
table with the necessary fixes made:
End of Chapter 4