Professional Documents
Culture Documents
TFNA - OP.00 TFN Advanced Operations
TFNA - OP.00 TFN Advanced Operations
00
Audience
This guide is designed for the following audience:
System Administrators
Pronto Xi users responsible for developing and maintaining external facing forms
IT Managers
Overview
In this guide you will learn how to:
set up printers
develop advanced templates for purchase orders and payslips using the Output Designer
set up a workflow including email, print and PDF
advanced troubleshooting
Prerequisites
It is assumed that you have:
Pronto Xi 720 or higher installed. (Note: TrueForm Neo can be installed back to version 670.8 of Pronto Xi, however would require a
deployment pack)
PDF viewer installed
TrueForm Neo version 2 installed
a good understanding of Pronto Xi navigation
completed training for the System Administration module
completed TrueForm Neo Introduction training
an understanding of Pronto Xi layouts
an understanding of managing server operating systems
TFNA.OP.10.00 Scenario
The following scenario has been established to demonstrate realistic implementation requirements and to reflect the data set up in the
Pronto Xi training data set.
For all of the steps and tasks shown throughout this guide, where the user is required to enter data, these are all based on the fictitious Fred
Kirks Enterprises requirements as per the scenario below, which is expanded throughout the various sections of the guide. You will need to
set up your data based on your business needs.
Background
You have just completed a workshop with Fred Kirks Enterprises (see below for the results). You now need to set up TrueForm Neo to
meet the specific requirements.
Fred Kirks Enterprises has two business divisions for which you need to configure external facing forms:
Fred Kirks are an environmentally conscious company and would prefer to use email and be paperless where possible. They do,
however, need to set up a printer for the main office, called printer1. This printer needs to print both landscape and portrait forms.
Form requirements
Fred Kirks requires the following forms:
Fred Kirks uses the standard sales order (tax invoice, credit note and picking slip), EFT remittance and customer statement forms,
however, they want customised purchase orders and payslips. You need to set up the custom design templates for purchase orders and
payslips.
They have provided you with sample input files for each of these forms that you can use when you develop the workflows and design
template elements.
All of the required input files are located in the _c:\tfn\inputfiles_ directory in the training environment.
Workflow requirements
When printing, the following options should be available:
Fred Kirks Enterprises uses two corporate logos; one for each business division. You need to create a variable to display the logo based
on the company in Pronto Xi from which the document has been produced.
The two business divisions are:
TrueForm Neo should already be installed, however the following additional configuration steps are required.
Scenario
Fred Kirks has provided input files to use to develop their workflow and design templates.
The first template you will set up is the purchase order. You need to open the purchase order sample data.
All required input files are stored in the c:\TFN\InputFiles directory.
Procedures have an .ndp extension and include both the workflow and any design components and can also contain embedded Design
layouts. They may also referenced Linked/Shared components which are held outside of the procedure and referenced via the Linked
Shared Component found under the General Tab of Components.
Steps
Steps
4 Navigate to and select the input file called Advanced-C2A-Purchase.txt then click Open
Steps
Use the Output Designer to design your form template. Before you can open the Output Designer, you must add a design component to
your procedure.
Before you design a form template, you need to add a design component to your procedure and then create the mapping blocks that
you will use in your template.
Scenario
Fred Kirks would like a purchase order to be in landscape.
1. select the data from which you want the forms generated
2. create the mapping blocks that you will use for the layout of your design template
3. add a design template
4. select the print queue to use for the form
Steps
5 Click OK.
The Description field in the procedure reflects the name you entered on the Components screen.
8 Click OK
12 Click OK
The index in TrueForm Neo starts at 0, however, the index from Pronto Xi starts at 1. Any layout coordinates in Pronto Xi need to have
1 removed from the position code. For example, if the Customer field was on Row 1, column 20 in TrueForm Neo, it would exist on Row
0, column 19 in the Pronto Xi layout.
You can rename mapping blocks by double-clicking the mapping block to open the properties, then changing the name.
Scenario
For the purchase order for Fred Kirks, block the following data. You will then use these to create the purchase order template.
Your blocked data will look like the following:
Steps
2 Create the mapping blocks in the following table by left-clicking on the start of the field then right-clicking on the end of the
field.
The following screen is displayed which allows entry of the mapping block name, value for Repagination and a read only
summary of the block position, length and height.
3 In TrueForm Neo, the data fields are not organised into sections such as header, lines or totals. You can use any data field
anywhere in a form template. To easily identify the location of a field in the Pronto layout, prefix the mapping block name
with H (header), L (line) or T (total) to correspond with the header, line and totals sections in the Pronto Xi layout. Since the
mapping blocks are sorted alphabetically, this also means all of the similar fields are grouped together.
To visually assist you with determining the position of the field, the coordinates at the top of the screen are updated as you
move the cursor moves over the cells within the grid.
Company H_CompanyCode Displays the three character company code 0,0 0,2
Code
Document H_DocType Displays a single character identifier for the 0,3 0,3
Type document type. This is used in the workflow to
determine the type of document to be printed.
Document H_DocDesc Prints the full description of the document 0,4 0,28
Description printed. This field is automatically populated by
Pronto Xi.
Our H_CompanyName Prints the full company name as entered in Pronto Xi. 0,89 0,128
Company
Name
Supplier H_SupplierAddressBlock Prints the supplier name and address. 3,9 9,38
Address
block
Delivery H_DeliveryAddress Prints the delivery address from the purchase order. 3,59 9,89
Address
Supplier Fax H_SupplierFax Prints the supplier fax number. 10,28 10,48
Line Marker L_LineMarker Displays a single character to define the type of line 18,0 67,0
generated from Pronto Xi:
N — Note line
S — Special
C — Charge
SPACE – Normal
Steps
2 Click
to delete
The following message is displayed.
3 Click OK.
Scenario
The purchase order for Fred Kirks is to be in landscape so you need to change the paper orientation.
Steps
3 Click OK.
The Select Printer screen is displayed.
4 Click Printer.
The Print screen is displayed.
6 Click Properties.
The Landscape Document Properties screen is displayed.
8 Click OK
Steps
1 On the List of Actions tab, double-click the Design component in the Fred Kirks Purchase Order component (Print/Export
component).
In the Properties pane, the paper orientation is set to Landscape (11.69in Width and 8.27in Height).
For more information about the Output Designer, see the TrueForm Neo Operations Guide.
Scenario
Fred Kirks would like to include a header on their purchase orders. The header will include a logo, their company name, address,
email address and website, and the supplier and deliver to addresses.
Embedded - If you move or copy the procedure, the logo is not affected. If you update the logo, however, you need to update
the image in all design templates. Embedded logos also increase the size of the procedure.
External - If you update the logo, you need to update it only once and the change will flow through to all templates that
reference the logo. If you move the procedure to another server, you need to manually move the logo because it is not included
in the template.
Scenario
Fred Kirks has two different logos they want to print on their forms, depending on the company code in the document. You need to
set up a logo variable based on the input data.
As Fred Kirks has two logos, you need to use an expression to determine which logo to display.
For Fred Kirks, you will use an external image. Once created, it will look like the following:
Steps
Toolbar
Insert menu
Right-click menu
2 Select External
This setting retains the original aspect when you resize the image.
If time allows, change the sizing method and view the results when the image is resized.
6 Click OK
7 Preview the form and confirm that the image displays correctly.
The output should look like the following.
As Fred Kirks has two logos, you need to use an expression to determine which logo to display.
9 Click the green tick icon next to the External field to open the Expression Builder.
The Conditional Expressions screen is displayed.
You can build the conditional logic for the logo using one of the following expressions:
If Then Else
Switch
Use a Switch statement when there is more than one condition to check.
To cater for future growth of the business and the possibility of more business divisions, you will use a Switch statement.
The Switch statement works by starting at the top and working through each expression and if true, stops on that particular
expression. If none of the statements are true, the final true result is used.
The syntax of the Switch statement is as follows:
=switch
(
Boolean, trueExp,
Boolean, trueExp,
Boolean, trueExp
true, trueExp,
)
This means if the company code is C3A, use logo C:\TFN\Logo\Fred Kirks Furniture rental.jpg, otherwise use C:
\TFN\Logo\Fred Kirks Furniture.jpg.
Example: If any additional company divisions require a different logo, you can add them as a separate line in the Switch
statement. You would substitute "Logo Full Path inserted here" with the actual path of the image.
=Switch
(
Variable!H_CompanyCode.Value = "C3A", "C:\TFN\Logo\Fred Kirks
Furniture rental.jpg",
Variable!H_CompanyCode.Value = "C4A", "logo full path
inserted here",
true, "C:\TFN\Logo\Fred Kirks Furniture.jpg"
)
Steps
1 Insert a table.
The New Table screen is displayed.
3 Click OK.
The table is displayed in the template.
4 Increase the width of the table by selecting the right handle and dragging with the mouse.
You can also set the table width using the Table Properties screen by right-clicking the table then selecting Table
Properties.
You can then change the width on the Name/Position tab.
Steps
3 Click OK
Scenario
You need to remove the border around the table.
Once removed, the purchase order will look like the following:
Steps
1 Right-click the text field then select Properties (not Table Properties).
The Textbox Properties screen is displayed
You can control individual borders, however, changing the Default border to None automatically updates all borders on the
field
4 Click OK
Scenario
Fred Kirks wants to include an email and web address in the header of their forms. This address is not stored in Pronto Xi.
You need to add new rows to the H_OurCompanyAddress block for the email address and website. For purchase orders, the email
address is purchasing@fredkirks.train.me.
The purchase order will look like the following:
Steps
2 Click OK.
A footer row is inserted in the table
6 Click OK
9 Click OK.
11 Preview the purchase order. It should look like the following image.
Add hyperlinks
You can add a hyperlink to text in a document. When someone clicks on the text in a pdf, the hyperlink is opened.
Scenario
Fred Kirks would like a hyperlink on the web address that
points to www.fredkirks.com.au.
Steps
5 Click PDF.
When you add a hyperlink to the text, the colour remains black. If required, you can change the text colour to blue to indicate
that the text has a hyperlink
Steps
1 Add a rectangle for the colour background behind the detail section of the form
2 Add a rectangle for the colour background behind the document description, that is, PURCHASE ORDER.
3 Add a single line of text (on top of the document description rectangle) that uses the H_DocDesc mapping block. This will
print the document description (PURCHASE ORDER). However, if you print a different type of purchase order from Pronto Xi
(for example, a purchase order return), the text is automatically updated
When you create a text field and move it behind the rectangle, if both elements have a Zindex (layering) of 1, the text is hidden behind
the rectangle. Before you move the text box behind the rectangle, change the Zindex of the text box ( Name and Position tab on the
Textbox Properties screen) to have a Zindex of 2.
Colour Description
Linen
A standard .net colour pallette colour.
Fred Kirks Enterprises wants both the supplier and deliver to address blocks included on the purchase order. Unfortunately, some
of the data entry for these addresses is not correct and there are blank lines where they should not be. You need to suppress the
blank lines.
Add tables for the supplier and deliver to addresses to the template and then suppress the blank lines in each table.
The form will look like the following:
Steps
By default, the table is added with a header row. Instead of removing the header row as you did for H_OurCompanyAddress,
you are going to change the header to show the text Supplier.
4 Remove the border from the header and detail rows of the table.
When you block data in TrueForm Neo, a blank row is still considered to be data. To remove the blank lines, you need to
suppress them. If you enable repagination, this can cause issues as the blank rows are considered data
7 Click OK
8 Change the Zindex for the table to sit on top of the shaded rectangle
11 Add text fields for purchase order number, purchase order date, warehouse code and supplier terms as shown in the
following image.
You need to change the Zindex of the text field to a number greater than the rectangle. The Zindex is set on the Name
/Position tab on the Textbox Properties screen.
Now that you have completed the header for the form, you need to add a table for the detail section and perform the following:
Add a table
Suppress blank lines in a table
Remove row borders
Format and align data in a table
Change height of a table
Repaginate a form
Concatenate multiple description lines into a single line
Control behaviour of special, note and charge lines
Insert rows in a table
Add a table
Scenario
The detail in the purchase order is included in a table. You need to add a table for the detail section.
Once done, the form will look like the following:
Steps
1 Add a table with columns in the order specified in the following image.
Text Change to
Scenario
The purchase order before blank lines have been deleted:
Steps
Scenario
Fred Kirks Enterprises wants a clean look for their forms so want to remove the borders between the rows. The column borders,
however, need to remain. You will remove the horizontal borders between the rows and keep the column borders.
Once complete, the purchase order will look like the following:
Steps
1 Multi-select the text fields by either using the lasso (click and drag) or by holding down Control and clicking on each of the
text fields
5 Preview the document. The output should look like the following.
Now you are going to add the left/right borders back in.
7 Press Enter.
The Group Selection Properties screen is displayed
Fred Kirks would also like a solid line at the bottom of the table. You have turned off the bottom border of the text field
so it is not currently displayed.
If you turn on the bottom border again, it will show for each row of the table. To show the border for the bottom row only,
you need to add a footer row
14 Remove the borders from this row, leaving the top border only.
15 To show the table footer, reduce the height of the row to 0.1pt.
Scenario
The next task is to:
In TrueForm Neo, all data is treated as a string until it is converted into another format using the conversion functions within the
Expression Builder.
To change the formatting of the numeric columns (Ordered Qty, Item Price and Line Total), you need to convert them to a decimal.
Steps
6 Click OK twice
TrueForm Neo uses standard .net formatting functions. There are some formats included on the Text Box
Properties screen, however, you can find additional formats at https://msdn.microsoft.com/en-us/library
/dwhawy9k(d=printer,v=vs.110).aspx.
Alternatively, you can search for .net numeric formats on the Internet.
8 On the Textbox Properties screen, in the Format field, select #,##0.00 to show the decimal places.
The formatting of the data seems OK because repagination is not enabled. However, if you enable repagination and there
are blank values, when a blank is converted to a decimal, it shows as a 0. If you enable repagination, you need to change this
expression to be conditional based on the field being populated or not null.
When you use an expression, you need to specify the format in the expression because the format on the Text Box
Properties screen is not used.
Steps
4 Click OK
Repaginate a form
For the Fill table to height option to work in Change height of a table section above, you must enable repagination. Repagination
enables TrueForm Neo to determine how many lines of data will fit on a page, and if needed create additional pages.
Repagination is also required if you use multiple page templates. This is covered later in Using templates. When you turn on
repagination, you must enable at least one table, usually the detail table in the centre of the page. If no table is selected, the preview
output is blank.
Scenario
Once the Fill table to height option has been selected and repagination has been done, the form will look like the following:
Steps
You now need to allow the detail table to be repaginated. This table can then calculate how many rows of data can fit on the
page.
5 Click OK
Steps
1 Open the Textbox Properties screen for the Item Description field
4 Preview the output. The three lines of description are concatenated into a single line.
In TrueForm Neo, the additional line types are handled by inserted rows, which along with a display condition, control when the new
row is inserted. This also allows you to control the behaviour of each line type separately.
S — Special
C — Charge
N — Note line
You can add any additional line types as required, however, you need to insert additional rows for these values.
The selected purchase order input file has the following different types of lines:
Note (N)
Special (S)
Standard (blank)
Scenario
The purchase order form will look like the following:
Steps
1 Select the row after which you want to insert a new row
This row, however, is inserted after every row as there is no control on the visibility.
You can modify the visibility expression to show only when the marker is equal to S.
The new row is inserted and will be displayed only when the L_LineMarker = S. However, there are now two lines for the
special line. This is because the special line is now showing for the newly inserted line as well as the original line. You need to
add a visibility expression against the original line. This time place the condition on the first detail row.
You can write the expression in two ways:
1 Check to see if the This means that if you use any new line types that are not catered for in the design, they
marker is equal to will not be printed. This method provides full control over the line types that will be
spaces visible.
If there are additional line types, you will need to update the templates.
2 Check to see if the This means that all line types except the one specified will be printed. If you create a new
marker is not equal line type, it is shown without any layout changes.
to S However, if you need to control the behaviour of the new line independently then you
need to insert it as a new row.
For Fred Kirks Enterprises, you want full control of the rows printed so you will use the first option: Check to see if the
marker is equal to spaces.
As you already have a visibility condition on the row, you need to modify the expression.
7 Change the If Then Else to use a Switch statement. Use the following syntax:
=switch(
String.IsNullOrEmpty({L_SupplierItemCode})
and String.IsNullOrEmpty({L_OurItemCode})
and String.IsNullOrEmpty({L_ItemDescription1}),true,
String.IsNullOrEmpty({L_LineMarker}), false,
true, true
)
11 Copy the field data from the first row in each column for all inserted rows.
The note line does not have a supplier Item Code, Out Item Code, Ordered Qty, UOM, Item Price or Line Total, so you do
not need to add these fields.
Copy and Paste can be used to replace the contents of cells within the table.
Right click on the cell to copy from and Right click > Copy or Edit > Copy.
Right click on the cell to replace and select paste. A message is displayed indicating that the contents will be replaced.
15 Remove the horizontal borders on the text fields to be consistent with the remainder of the table
Scenario
Fred Kirks would like to include the following purchase order totals at the bottom of the last page and a page number on all pages:
Subtotal
GST
Order Total
Steps
1 In the bottom right corner of the page, add text boxes for the label and value for the following fields:
Label Value
Subtotal T_Subtotal
GST T_Tax
2 Change the format of the fields to numeric formatting. For more information, see Format and align data in a table.
You can enter c in the Format field to format the field as currency using the currency sign from the regional and language
option. Only some of the formatting options are displayed in the Format field, however, you can use any .net formatting
functions.
When you use repagination to calculate the number of rows of data per page, the number of pages is likely be different in TrueForm
Neo and Pronto Xi.
Steps
2 Create the following expression using the @PageNumber and @TotalPage variables from the Globals folder:
={@PageNumber} + " of " + {@TotalPages}
Templates are configured for single page, first page, middle page, last page and an additional page for the terms and conditions. If your
document has multiple pages, you should use a multi-page input file.
Scenario
When Fred Kirks produces multiple page documents, they want to use a different template for each page so that details can be
selectively changed based on the page of the template.
For example, the middle page of a purchase order does not need the address details at the top, so to save space, these details will
not be displayed.
Once completed, your document will look like the following:
Page 1:
Page 2:
Steps
When you preview the second page of the document, the OurCompanyAddress, SupplierAddress and DeliveryAddress
blocks are incorrect. These blocks need to source the data from the first page only.
6 Click OK
7 Repeat steps 5 and 6 to select Use data from first page only for the SupplierAddress
8 Preview your output. It should look the same as the following image.
Create templates
To control each page of the template, you need to create a template for the First Page, Middle Pages, Single Page and Last Page.
Scenario
The following details are required:
Single Page
Full header
Full footer
First Page
Full header
Continuation Footer
Middle Page
Continuation Header
Continuation Footer
Last Page
Continuation Header
Full footer
Where:
Full header includes all details including Supplier and Deliver To address
Continuation header includes only the document description
Full Footer includes the subtotal, GST and order total
Continuation footer includes the page number and the text Continued on next page…
Steps
5 Click Select
Single Page
First Page
Middle Pages
Last Page
9 In the Repagination area, select the matching template for Single Page, First Page, Middle Pages and Last Page.
10 Click Close.
Now that you have set up the templates, each template is shown as a separate tab. Each template is independent.
11 Change the First Page to have no totals at the bottom and the text Continued on next page….
12 Change the Middle Page to have address details at the top and no totals and the text Continued on next page….
13 Change the Last Page to have no address details at the top, but totals at the bottom.
When you remove an element from the template, for example, the address details at the top of the page, increase the table
height to take advantage of the extra space.
14 Modify the table height for each of the templates to fit the available space on the page
Page 2:
The template order can be moved by clicking and dragging the template to the required position.
Scenario
Change the template order to show the templates in the following order:
1. First Page
2. Middle Page
3. Last Page
4. Single Page
Steps
2 Drag the template to the required position. The template order should be updated to reflect the below:
Payslips are generated from the Print Payslip and Other Advices (PAY M092) function in Pronto Xi and use the Z type layout. Due to the
way the data structure is required for TrueForm Neo, the width of the input file has been increased. Each line of data has also been tagged
to enable it to be linked to a specific queue.
Scenario
Now that your purchase order template is complete and ready for Fred Kirks user acceptance testing, you are going to create your
payslip templates.
To maintain the payslip format in Pronto Xi, you need to set the Z type payslip layout in Pronto Xi.
Scenario
This has already been set up for Fred Kirks Enterprises so you do not need to perform these steps.
Steps
1 In Pronto Xi, select Human Resource Management > Wages & Salary Payroll Menu > System Payroll Administration > Payroll
Parameters > Control Record (PAY M022).
The Control Record screen is displayed.
3 Click OK
Steps
Steps
the header, which is static text and does not grow or shrink
an expandable section below the header, which can grow and shrink depending on the number of lines in the input data
Each line of data is tagged with a four character code on each line in position 284. For a list of tags, see Insert rows to control
visibility. This particular input file contains the following markers:
Employee Name and EmployeeAddressBlock Displays the name and address for 4,14 8,46
address the employee.
Set up a header
Change the date format
Scenario
The payslip header for Fred Kirks will look like the following:
Set up a header
Using the skills you have developed when you set up the purchase order in Design a form template set up the payslip header.
Steps
3 Add conditional logic based on the company code being either C2A or C3A to switch the change with the logo
4 When initially blocking the data, the company code was missed. Add another mapping block 0,0 to 0,2.
Fred Kirks would like to format the date fields in a different format to that provided by Pronto Xi. They would like the dates
presented on the payslips as the full date as shown in the Pay Date field in the following image.
Steps
1 Open the Textbox Properties screen for the Pay Date value field
2 In the Expression Builder, select the ConvertToDateTime function then select the required date variable field.
=Convert.ToDateTime(Variable!PayDate.Value)
Try the other date formats and see what affect it has on the date
Add a table
Insert rows to control visibility
Span text across multiple columns
Format the fields
Exclude lines from a table
Add a table
Scenario
You need to add a table that will contain the payslip detail
Steps
1 Add a table to the middle of the page, that contains all 7 blocks in order.
To be able to control the behaviour of each line independently of each other, you need to insert a row for each different line type. The
row visibility will be based on the marker mapping block created in Create mapping blocks.
The inserted row needs a visibility condition to show based on the line marker block.
You can use the following line types within a payslip. Each of these different line types needs an inserted row to match.
Scenario
Not all tags have been used in the input data supplied. When Fred Kirks wants to use the payslips, you would need to add all line
types.
Tag Description
WAGE All time based and leave earnings line, such as normal hours.
SUPR Superannuation
HLAF Less after tax deduction header – prints before the LAFT lines
HBNK Bank account details header – printed before the start of the BANK lines
BANK Bank detail lines – displays all the bank account details, including the five bank account splits and the primary account
details.
The first row you will show is for the WAGE tag. This is the first row of data contained in the input data that is currently loaded.
Steps
2 Select a row in the table and add a visibility condition on the Table Properties screen.
This row will be displayed only when the marker is equal to WAGE in the input data.
The expression must contain the following logic:
If the line marker is equal to WAGE, show the line (return a false) otherwise, hide the line (return a
true)
The syntax in the Expression Builder is:
This process is similar to adding additional line types to the purchase order.
First, you need to determine which line is found next in the input data.
Steps
2 Click the TrueForm Neo icon in the Windows taskbar then display the Builder.
Even though the Output Designer and the Builder are different processes, you need to close any screens before
moving to the other process
4 Take note of the next line marker in the list after WAGE.
5 Open the Output Designer by selecting the TrueForm Neo icon on the Windows taskbar
6 Right-click the table row and select Insert Row After to insert a new row into the table
7 Repeat the steps in Display a row conditional on a marker to add a visibility condition to this row, however, the marker is
THRS.
8 Preview the document. A new line has been added to the table.
There are now two lines in the table. The first row shows only when the marker is WAGE. The second row shows only when the
marker is THRS.
9 Add an additional line with the appropriate visibility expression for each line in the input data.
It also means you can control the formatting for each line.
Steps
4 Click OK.
Scenario
In the case of Fred Kirks payslip, you want the Total Hours word (BlockA with a line type of THRS) to span two
columns.
The output will look like the following:
Steps
4 Click OK.
The table now shows BlockC and BlockD combined into a single cell for the THRS row only.
Now that you have added the Total Hours wording under BlockC, it is clear that it is in the wrong position. It should be under
BlockA.
10 Add the total hours figures for Worked and Paid (BlockC and BlockD) in the required cells in the table.
The design should look like the following:
13 For each inserted row and line marker, check the mapping blocks in the Builder and populate the data into the cells as
required.
The next line of data in the mapping blocks is HPBF.
14 Take note of which blocks the data is located in, and then map into the required locations on the payslip. It can sometimes
be difficult to establish which line type is on each line. A useful technique is to add a column at the end of the detail table
that displays the marker tags when you preview the document.
Right-click the last column then select Insert Column After to add another column to the table. Double-click on the
newly added column then add the field marker expression (=Fields!Marker.Value).
Copy and paste this value to all rows of the table. For ease of use, you can also right-click the cell then select Paste.
A prompt is displayed asking to replace contents of cell. Click Yes.
Remove this column from your template when you have finished setting up the template.
Even though HPBF is showing as the next line when you preview the design, the inserted row for HPBF is not the
row immediately below the THRS row in the table design. The order in which the rows are displayed is dependent
on the order in which the data is structured, not the order in which the rows are inserted in the table design.
15 Check the Visibility condition on each row to determine which row is for HPBF. The Hidden (Initial Visibility) field expression
is checking for the HPBF marker.
For Fred Kirks Enterprises, the sample data provided does not contain all the different types of lines for payslips. You can
configure these at a later date.
Any of the header fields, for example HLEAV, allow you to enter the column headings for the section, for example,
entitlement, accrued and so on. You can also control the size and formatting of the header row independently.
Steps
1 Format all numeric fields as numeric fields with two decimal places
2 Apply padding to each field (2pt from left for left aligned fields, and 2pt from right for right aligned fields).
Scenario
Fred Kirks loves the new payslip layout, however, they do not want to show any personal leave or long service leave on the payslip.
You need to modify the visibility expression on the LEAV lines to exclude these entitlement types. By default, all leave entitlements
from Pronto Xi will be printed on the payslips.
Steps
=switch
(
{Marker} = "LEAV" and InStr(UCase({BlockA}), "PERSONAL") >
0
or InStr(UCase({BlockA}), "LONG") >0, true,
{Marker} = "LEAV", false,
true, true
)
Where:
If the Marker = LEAV and PERSONAL or LONG is found (greater than zero) in the description the expression, returns the
value True (True = hidden).
If the MARKER = LEAV (remembering the above condition was not met), returns a value of False (False = displayed).
Without this line, the other LEAV lines, for example annual leave, are not shown.
If the above items are not valid, the expression will fall to the catch all, which will return the value of true, which will hide
the line (only show this row when the marker = LEAV).
Once the design components have been completed, a workflow needs to be created that will drive the steps of the print job.
All standard procedures in TrueForm Neo require a dynamic data view component.
creates multiple individual data views (sets) based on criteria that specifies where the Input data should be split
creates an index with a record for each set of data containing a predefined key
Scenario
Now that we have the two customised design components completed for Fred Kirks (purchase order and payslip),
Fred Kirks requires the following to be set up:
email documents back to the user's email address. This is driven by a user selecting a queue at print time called
0-int-email
email documents externally to customers/suppliers and employees. This is driven by a user selecting a queue at
print time called 0-ext-email
PDF created for archive purposes. PDFs are automatically created and are not dependent on any queue
selection at print time
Print to a physical printer as required. This is based on a user selecting a printer with tfn in the name
A data view is an individual company that has been extracted from the input data. The content in a data view is determined by the
dynamic data view mapping blocks included in the dynamic data view name. These mapping blocks determine where the original input
data (spool file) is to be split to create individual output files that can then be emailed or printed individually.
Example: You have a 10 page spool file that contains multiple purchase orders for multiple suppliers. You want to split this input
data into separate output files.
In the table below, the last three columns indicate sample dynamic data view names and show the sets (data views) that are
created if you use this particular name for the dynamic data view
Example: If you
do not include any mapping blocks in the dynamic data view name, a single output file is generated that contains all purchase
orders for all suppliers.
use only the DV_Account mapping block in the dynamic data view name, multiple output files each containing all purchase
orders for a single supplier are generated.
use DV_Account and DV_DocNo mapping blocks in the dynamic data view name, multiple output files each containing a single
purchase order for a single supplier are generated.
If you do not set this correctly, the repagination and line totals are not calculated correctly.
You can include multiple dynamic data views within a procedure. If this is required, make sure you use a unique name for each data
view and index. You might want to send individual payslips separately for each employee, but you want to send all sales invoices
for a single customer in the one email.
Steps
3 Click OK
4 Rename the component to Split data into sets based on the account code and document number. Rename the generic
description of components. This description is listed in the event logs and will help you troubleshoot issues.
The first line of all standard input data is the same and is reserved for the mapping blocks required for the index. These are
fields such as Company Code, Live or Test, Document Type and Account Code. As these fields are in the same position across
all forms, the same workflow can be used for all.
Do not change the information in the first line of an input file. If you use custom input data, make sure the first line
contains the standard information.
For example, when you created the account mapping block, the name of the block was DV_Account [|16481128|DV_Account]. 16481128
is the unique identifier for the DV_Account mapping block.
You can create two mapping blocks with the same name in different components because each will have a unique identifier. However,
as a best practice, you should not create mapping blocks with the same name. You should prefix mapping block names with DL and DV.
You cannot change a mapping block's unique identifier. When you save a component, take care if you are referencing other
components' mapping blocks as the unique identifier is different.
If a mapping block has the wrong identifier, remove it then select it again from the correct mapping block location.
The mapping blocks in a dynamic data view are different to the mapping blocks used for the design components.
Steps
1 Expand the Split data into sets based on the account code and document number > Input Data View Name component
If no data is displayed, either the data view name is not set to InputData, or you have not loaded data into the
procedure
Document DV_DocType Manually entered code that is populated from: 0,3 0,3
Marker
purchase orders (P)
invoices (I)
customer statements (C)
remittances (E)
Document DV_DocDesc Manually entered description of the document that you 0,4 0,26
Description want to print/use in TrueForm Neo, for example, tax
invoice or credit note.
Order DV_DocNo Displays the order number or statement date. 0,49 0.58
Number
Layout DV_LayoutSource Displays the layout source for the order that was printed, 0,133 0,133
Source (Sales for example, service invoices would have a source of U.
Order Only)
Layout Type DV_LayoutType Displays the layout type for the order that was printed, for 0,134 0,134
example picking slips would have a type of K and delivery
documents would have a type of D.
Fred Kirks would like to split the input data by account and document number. This means the dynamic data view name
needs to include both the DV_Account and the DV_DocNo mapping blocks. These mapping blocks determine how the
input data is split.
4 In the Dynamic Data View Name field, enter the required name of the dynamic data view.
Start the dynamic data view name with DDV_. This makes it easy to identify data in the Data Viewer tab that was created as
part of the dynamic data view process as it is prefixed with a DDV_.
6 In the Index name field, enter Index. This does not need to be changed unless there are multiple Dynamic data views within a
single procedure
Run a component
You can run any component in the workflow individually based on the current loaded data and the variable values. This is useful when
you test individual parts of the workflow.
Steps
1 Right-click the Split data into sets based on the account code and document number component then select Run this
Component. Alternatively, you can press F5 to run the selected component.
When you run this component, the sets (dynamic data views) and an index for the data are created.
The prefix for the data view listed in the left hand pane is DDV_ because it was created using the dynamic data view process
Example: If the name of the index in the Data Viewer is index[10], this indicates that there are currently 10 unique sets of data in the
currently loaded input file.
You can then use a data loop component to define the actions to perform on each unique record in the index. You should include all
actions that need to be repeated for each record as part of the data loop.
This would include any logic based on document type or printing and emailing. Any components that are not in the data loop are
performed only once.
Example: If you have a spool file with ten separate payslips, the loop functions are performed ten times; once for each data view
(payslip)
Scenario
You need to set up the Fred Kirks workflow with a data loop.
Steps
2 In the Description field, enter Loop through each record of the index
5 The order of the fields within the index is the same as the dynamic data view. Arrange the workflow to see both mapping
blocks.
Scenario
Move the two design components (Fred Kirks Payslip and Fred Kirks Purchase Order) into the List of Actions under Loop through
each record of the index
Steps
1 Move the two design components (Fred Kirks Payslip and Fred Kirks Purchase Order) into the List of Actions under Loop
through each record of the index.
To move a component, click and hold then drag it to Add a Component.
If Then Else
Multiple Choice (Switch statement)
In order to render a payslip and purchase order only for the correct document types, you need to add two If Then Else components that
check the document type.
When within the data loop, you should use the mapping blocks only from the data loop component. If you use any other
mapping blocks (for example, the dynamic data view blocks) they will not be updated as the loop moves to a new record in
the index. This results in the same value being used for each record in the loop, for example, the subject in an email might be
incorrect as it is referencing the first record in the index only.
Steps
1 Add a Conditional Control > If Then Else component to the Loop through each record of the index > List of Actions
component.
3 In the Test field, enter the required expression to check for a document type of Z (payslip) from the data loop (block will be
prefixed with a DL_).
4 Move the Design component for payslips into the True component of the If Then Else statement.
5 Repeat steps 1 to 4 for the purchase order, however, use the document type of P for purchase order.
Alternatively, you could have the decision for the purchase order under the False component of the Check document type for
Payslip (nested If Then Else), however, for readability you have added it to the same level on the tree.
You can also generate multiple outputs. For example, you can generate both PRN and PDF, which would print to a printer and also
create a PDF file.
The output specified in the Design > Output/Export field, does not allow you to conditionally control the output type. If you want to use
conditional control (for example, you might want to print only under certain circumstances otherwise create a PDF), then you can use
the printer tree to define your requirements.
The Printer Tree in the standard components is set up to print to a printer and generate a PDF when the Windows queue name to
which the document is printed starts with tfn.
If any entries in the Printer Tree are invalid, the default output (Design > Output/Export) is used.
You need to modify the Printer Tree for Fred Kirks Payslip to output to a printer only when the system variable queuename
contains tfn_
Steps
You need to specify a printer name. When you select the printer in the Printer Tree field, there is no conditional logic, so you
need to set up the printer.
4 Change the test to check the system variable QueueName includes tfn_.
5 In the Printer field, select the printer to print the document to.
In a standard procedure, this is set using a variable value.
For the purpose of this training, select the printer called printer.
7 Click OK
8 Change the standard output settings (Design > Output/Export) for each design component to:
Setting Change
The logic in this workflow will firstly check the Printer Tree settings. If valid (true), then the document is printed to a printer
and a PDF is generated. If not valid (false), then the standard design output settings are applied, that is, only a PDF is
generated. This means that if the printer settings are invalid, then the printer tree is ignored and the standard design output
settings are used.
9 Repeat the above steps (1-8) for the Purchase Order design template
Next, you will convert the PDF Path and PDF File Name values to variables so they can be set in one location and then referenced as
required. You can then use these values elsewhere in the logic, for example, you can use these variable values for the attachment when
sending an email.
Variables are values that you can set and include in the logic and then used as required. You should set up any value that is going to be
used more than once as a user variable.
You can view the variables by clicking the variables icon on the toolbar. You can use variables within variables. For example, you could
have a variable to set the subject of an email, and then have separate variables to update this per document type.
VAR_PDFPath
VAR_PDFName
Steps
1 Add two Variables > Create/Append a User Variable components to Loop through each record of the index > List of
Actions.
Placement of the variables is very important as they need to exist in the workflow before they are referenced.
3 Move the variables to before the design components in the workflow by clicking and dragging the design components to the
Add a Component in the List of Actions. This places the design components at the bottom of the List of Actions componen
If these variables need to be specific to a document type (for example, PDF for payroll needs to be stored in a secure folder),
you should move the user variable to the conditional logic based on the document type. If you do this, make sure the
Appends if exists field is set to No. If this value is set to Yes, the new value is appended to the existing value.
Example: If a variable is set to TAX INVOICE - 123 and you append PAYSLIP - 04 Sept to it, it would become TAX INVOICE -
123PAYSLIP - 04 Sept.
You must run a variable before you can use it in the workflow.
The value of these variables can be viewed using the Variables icon on the top toolbar.
Next, you will update the existing references to the PDF Path and PDF Name to use these variables.
When using variables, the current value for the variable is displayed on the Variables screen.
Steps
1 Expand the Loop through the record of index > List of Actions > Check document type for Payslip > True > Fred Kirks
Payslip component.
7 Repeat steps 4 to 6 to change the Export File Name to use the VAR_PDFName variable.
8 Click OK
12 Repeat steps 10 and 11 to change the Export File Name to the VAR_PDFName variable.
Now that you have created the variables, they can be used to reference the PDF Path and PDF Name for the other document
types as long as they share a common index
At this point, you should do some testing to see how the workflow setup is going.
You can selectively test the logic for individual components using the Run this Component function.
Do not run the data loop during testing as it will run all records within the index. This will generate and print all output as
defined in the procedure. You should run the design component only.
You have already run the dynamic data view and the index has already been created. You can check this on the Data Viewer tab.
Scenario
As the payslip input data is already loaded, you will test the payslips first.
Steps
1 Right-click Check document type for Payslip then select Run this Component
By default, the Event Viewer is sorted oldest to newest. Click Event Message at the top of the data grid
to change the sort order.
4 If there are errors, debug the workflow using the information provided in the Event Viewer.
The generated PDF should look like the following.
When you designed the purchase order and payslip templates in the earlier sections, you set the data in the design component to
InputData. This is common practice when designing new forms as the dynamic data views (sets of data) don't exist yet.
The PDF that you just created included all three payslips even though you ran the payslip design template only once. This is because
the data view is set as InputData and not the dynamic data view. If a procedure is based on InputData, the design is based on the data
selected in TrueForm Neo rather the data that was split using the dynamic data view so all documents are sent to everyone.
If this document was emailed, all employees would receive the same PDF with all payslips.
If you copy and paste the value from this field, the mapping blocks will be incorrect and will be based on the dynamic data
view rather than the data loop. Ensure that the mapping blocks specified within the data view name reference the DL_
mapping blocks not the DV_ mapping blocks.
You can set the data view name by either selecting a value from the menu or by using a variable. Selecting a particular dynamic data
view from the menu prevents other sets from being printed, however, the value is hardcoded to only that set of data. This is appropriate
for testing, however, you must ensure you change this back to the dynamic data view value, otherwise the static dynamic data view
name might not be found when the input data changes.
You are going to create a variable for the dynamic data view name that matches the dynamic data view name specified in the dynamic
data view component.
The name of the dynamic data view is used for every design component as part of the workflow so you will create a variable that you
can reuse.
Scenario
Change the data source for both the purchase order and payslip to use the dynamic data view name. You can see the name in the
Split data into sets based on the account code and document number component.
This new variable can be added to the Group Variables (same location as the PDF name and PDF Path) added in above step.
Steps
1 In the Loop through each record of the index > List of Actions > List of Actions , add a Variables > Create/Append a User
Variable component with the following settings:
Setting Add
Value Enter DDV_ then the DL_Account mapping block _ the DL_DocNo mapping block
2 Update the Data View Name for both the purchase order and payslip design components to reference the user variable.
4 Confirm that the PDF has been created successfully. This should show only a single PDF, which is the current record of the
index
TrueForm Neo comes with a set of standard design components in both portrait and landscape (where applicable), which are mapped
based on the Pronto Xi layouts.
Scenario
The other forms that Fred Kirks has requested are standard designs. You need to add an If Then Else component and then load a
standard design component for each requested form. These forms should all be in portrait.
Steps
1 Add a Conditional Control > If Then Else component under Loop through each record of the index > List of Actions.
2 Set up the Description and Test as per the purchase order and payslip, however, the document type is I for sales order.
3 Repeat steps 1 and 2 to add an If Then Else component for EFT remittances (type E) and customer statements (type S).
Steps
1 Copy the Elegant Portrait Sales Order template (Elegant – Portrait – Sales Order.ndc) from the following directory to the
Server\Components Directory.
C:\Program Files > PRONTO > TrueForm_Neo > Content > Design Components > Portrait
2 Expand the Check document type for Sales Order > True component
3 Double click Add a Component then from General select the Linked Shared Component.
5 Select the Elegant – Portait – Sales Order.ndc file which was copied into the Server\Components directory in step 1 above.
6 Click Link
The workflow will look like the following:
7 Review the Printer Tree and values, such as PDF path and name, that have been loaded as part of the saved component.
When reviewing the Printer Tree for a Shared Component, the following process applies:
Right click on the Linked Shared Component and select Edit a linked Component here
A new session of TrueForm Neo will be spawned containing just the Linked component.
Modify the linked Component as required, and when complete, use the Save Component option from the toolbar, or via
the right click menu.
Steps
2 Run the Dynamic Data View component to create the individual data views.
Sets based on the new input data and the index are created.
3 Expand the Loop through each record of the index component (data loop component)
The TrueForm Neo Operations Guide covered the logic to set up user email and external email so you will use a saved component with
this logic as it is the same for each site.
This component will email a copy of the PDF internally back to the user
This component will email externally to the customer/supplier/employee
Steps
1 Expand the Loop through each record of the index > List of Actions component
The Email components for internal and external email component is added to the procedure.
Scenario
The queue name requested by Fred Kirks Enterprises for this purpose is called 0-int-email. This value is pre-populated but can be
changed if required.
For training purposes, the server address has been pre-populated, however, you can change the email server name or settings.
Steps
1 Expand the Email components for internal and external email > This component will email a copy of the PDF internally
back to the user > True > Send an Email with Security component.
Setting Change
Description This can be changed as required and is used within the Event Log
3 Save the procedure and publish it to the print 0-int-email queue on the Server tab
This workflow performs a check based on the input data to determine whether the document was produced from Live or Test to
prevent any emails being sent inappropriately.
For Fred Kirks, base this logic on whether or not the company name includes TEST.
The standard procedure uses the System Control Status field (blank = Live, T = Test) from the Company Name and Address (SYS
M101) function in Pronto Xi.
Steps
1 Expand the Email components for internal and external email > This component will email externally to the customer
/supplier/employee > True > Check for LIVE or TEST component
4 Click OK
If you want to perform multiple checks on the file, use a Multiple Choice component instead of an If Then Else.
5 Specify the workflow for the True condition, that is, the company name includes TEST. If the condition is true, you want to
email the document back to the user
6 Expand the Check for Live or Test > True > Send an Email with Security component.
Setting Change
Body Enter The attached document was printed from the test company and has been emailed internally
only
If false, you want to check the email for a valid email address and then send the email. Since this workflow is checking
multiple conditions for a valid email address, a Multiple Choice component has been used.
A Multiple Choice component allows you to select Any of or All of by selecting an option at the top of the Multiple Choice
Table screen.
8 Expand the Check for Live or Test > False > Multiple Choices component.
9 Populate the first two expressions in the Multiple Choice component to check the DL_Email1 and DL_Email2 mapping
blocks.
Based on the setting of Any of, if email address 1 or 2 are populated, the logic in the component of the Multiple Choices
component is used.
10 Expand the Check for Live or Test > False > Multiple Choices > True > Send an Email with Security component.
Setting Change
12 Expand the Check for Live or Test > False > Multiple Choices > False > Send an Email with Security component.
Setting Change
14 On the Server tab, publish the procedure to a new queue for external emailing. Based on the above logic, the queue name is
0-ext-email.
Both print queues are now displayed on the Server tab.
Steps
The Test button on the Server tab can be used to send sample files to the TrueForm Neo print queue.
Steps
1 Select Test.
The Select Text File screen is displayed.
2 Select the folder icon and use the browse tool to locate the Advanced-C2A-Payslip.txt sample file
The log files are cleared when a procedure is transferred to a queue. However, you can manually clear the job by opening the
text file, selecting the log, deleting the contents then saving the file.
Steps
1 On the Server tab, highlight the required queues by holding Shift and selecting the required print queues.
3 Click Transfer.
The selected queues are updated based on the current open procedure.
The Transfer Status is changed to Success when the procedures are transferred.
Steps
Scenario
Fred Kirks wants to use their logo and some word art for their sample terms and conditions.
The sample PDF is located in a file called c:\TFN\Terms.pdf.
You need to modify the logic to use the PDF Merge component to merge the existing PDF created based on the Design components
with the terms and conditions PDF.
You can add terms and conditions to a document in one of two ways:
In the Output Designer, you can add up to five additional pages containing the terms and conditions or other information as required.
Steps
5 Click OK
11 Publish the procedure to the print queue using the Server tab.
12 Test the document by sending a purchase order spool file to the queue
13 Open the PDF and check that the terms and conditions have been added.
The other option for including terms and conditions is to merge a terms and conditions PDF with the existing document PDF that is
automatically created for every print job. This method is also useful if you require a specific font or logo for the terms and conditions.
You can use a PDF merge component for this task.
You need to temporarily rename the existing PDF to perform the merge. You then need to change the name back to the original PDF
name to keep the remaining logic standard. This is because you cannot merge a PDF into the original file name.
Steps
1 Expand the Loop through each record of the Index > List of Actions > Check document type for Purchase Order > True
component
Field Enter
Steps
1 Expand the Loop through each record of the Index > List of Actions > Check document type for Purchase Order > True
component
2 Add a PDF > Merge PDF Files component to the conditional logic for purchase orders
3 In the Description field, enter Merge original PDF with terms and conditions
4 In the Input Files field, enter the path and file name for the files to be merged. Each PDF to be merged is listed on a separate
line.
On the first line, use the PDFPath and PDFName user variables for the location of the generated documents.
On the second line, enter the full path of the Terms.pdf file (c:\TFN\Terms.pdf).
5 In the Output File field, select the VAR_TempFileName variable that you just created.
Steps
1 Expand the Loop through each record of the Index > List of Actions > Check document type for Purchase Order > True
component
3 In the Description field, enter Copy temp file back to original PDF Name to keep remaining logic standard
Component Detail
Target File Name Select the PDFPath and PDFName user variables
This removes the temporary PDF that is used for the merge.
6 Review the Event Log to confirm that this has been successful.
Add password mapping block to dynamic data view and data loop
Set PDF password against design component using printer tree
Scenario
Fred Kirks would like to email payslips, however, some of the employees have concerns about the security of the PDFs being sent
through email. You have explained that the PDFs can be encrypted using passwords and 128-bit encryption.
Modify the existing logic for payslips to password protect the files when they are created.
Steps
2 On the List of Actions tab, open the Dynamic Data View mapping blocks.
3 Create a new mapping block called DV_Password for the text highlighted in the preceding image (1,104 to 1,120).
6 Click index[1].
The DV_Password field is now included as part of the index.
Next, you need to open the mapping blocks from within the data loop and map the new DV_Password block. This defaults to
the bottom of the existing mapping blocks.
Steps
Owner Password — a password that is set once and not changed. This is the master password that can open any
PDFs created by Pronto Xi. It can be used if a user changes or forgets their password. This password should be kept
confidential and never changed.
User Password — a unique password per user that is set based on the mapping block you have created and data
that is maintained in Pronto Xi.
You can also use a mapping block that is based on information in the spool file, such as the employee number, postcode or
annual salary.
When you print from TrueForm Neo, the driver settings determine the behaviour of the print job. This includes orientation/aspect,
black and white, output tray and duplex.
If there are a mix of outputs, for example some documents are in portrait and some in landscape, you need to configure two printers
and then modify the workflow to determine which print queue to use. The same process applies for colour or black and white printing.
You should differentiate between the landscape and portrait printers in the name. You could append _L to the end of landscape print
queues to make it easy to identify. For example, for Fred Kirks the portrait printer is printer and the landscape printer is printer_L
Scenario
For Fred Kirks, all documents are portrait except the purchase order, which is landscape.
In Set up the document output, you set up the printer tree for purchase orders with a hardcoded printer value. However, Fred Kirks
has more than one printer, so you need to change this value to a variable to determine the printer name.
Print jobs from Pronto Xi are sent to a shared printer queue on the TrueForm Neo server called tfn_printer and tfn_printer1. The
two print queues that point to the physical printer are called printer and printer1.
The standard components determine the printer to use based on the expression that uses the print queue the job was received on
in Windows, and then uses an expression to strip tfn_ from the start, resulting in the out queue name.
tfn_ is a queue that is published from TrueForm Neo on the Server tab and has the Neodocs port, while the other queue is manually
created in Windows and points to the IP address of the printer. The Mid function is the same as a Substring function and returns
part of the string.
Using a variable, you will perform a Substring (Mid function) to remove the prefix, so the remaining value is the printer name.
You also need to create a variable for the landscape printer name, which you can use for any documents produced in this format.
The end result is two variables created. When input data is received on the tfn_printer1 queue, two variables are created that each
results in:
a. printer1 (portrait)
b. printer1_L (landscape).
You can then specify the required variable per document type depending on whether it is required in portrait or landscape.
Steps
Value Details
4 Use the Mid function to remove the tfn_ at the start of the queue name.
Len Returns the length of the string, that is, the length of the queue len(str)
name for example, tfd_printer.
This expression is saying:
=Mid(tfd_printer, 4,11)
The result is the printer name of printer.
5 To create a similar variable for landscape, copy the existing variable by pressing Control and dragging it
to Add a Component.
Value Detail
If you do not run the variables, they are not available for use.
8 For the purchase order, open the Printer Tree and change the Printer value to the new landscape
variable.
9 Repeat steps 1 to 7 for the other design components, however select the portrait printer variable
printer
printer_L
TrueForm Neo comes with standard procedures to use with the functionality in Pronto Xi for TrueForm Neo preview, send email and
send fax.
Preview - Used in conjunction with TrueForm Neo preview in Pronto Xi. Input data is rendered into a PDF and saved into a
predefined location. Pronto Xi polls the directory for any changes, and when the PDF is found, it is opened using the default PDF
viewer. If required, you can also automatically remove the file when the preview process has been completed.
Email - Used in conjunction with the Send email function in Pronto Xi. Single or multiple spool files can be tagged and emailed
as a single email to an entered address. This function is good for sending one off emails or if a supplier or customer requests
multiple documents.
Send fax
Manually send faxes - Use this procedure to personalise fax content or combine multiple forms into a single fax.
Scenario
Fred Kirks would like to set up the TrueForm Neo preview. The workflow for the preview already exists in a standard procedure. You
just need to insert the design components.
If you have already set up design components, you can save them and load them into the preview procedure.
Steps
1 For each of the design components, right-click the component then select Save this Component
2 Save each component to the desktop. Components are saved as an .ndc file
4 Under the True component for the document types used by Fred Kirks, right-click Add a Component then select Open a
Saved Component Here
6 Check the Data View Name for the design components and make sure it matches the standard template as the dynamic data
view name is set using a variable VAR_DDVName.
Regardless of the standard content, the same dynamic data view name is used, which is set as a variable value. This is set
using variable VAR_DDVName. When you load a saved component from other procedures, you need to check the data view
name to ensure that it is valid in the particular procedure.
This is set in the List of Actions - Variables related to the current record of the index in the data loop.
7 On the Server tab, create a print queue from this procedure called z-preview.
8 To test the output, copy the file called c:\TFN\InputFiles\preview.txt using a command prompt similar to the process used to
test the logic in Send sample text files to TrueForm Neo.
The preview.txt file contains the required job ticket values to use the preview procedure. These are set automatically by the
TrueForm Neo Preview (TFN E001) function.
The following values are inserted:
%cpParam — Preview directory specified in the TrueForm Neo > Transmissions Settings (TFN M001) function
%cpUserData — set to the default project, or delete-preview-file after the PDF preview is closed. This is based on
the preference to Delete file after preview.
%cpUserDefData— stores the password when the Password protection preference is enabled.
%cpUserDefOptions — based on the preference for Directory per user
%cpDate — current date and time. This value is used for the PDF name.
%cpUser — user name of the person who ran the Preview functionality. This is used for the PDF name.
9 Debug any errors as required using the log file on the Server tab against the zpreview queue
When you update the design components, for example in the mail allqueue procedure, you also need to update the design
components in the preview, email and fax procedures. If you do not, you will receive different output depending on the queue
/process to which the print job is send
TFNA.OP.60.00 Troubleshooting
Complete the following troubleshooting exercises. Resolutions to these exercises can be found in Troubleshooting solutions.
Exercise 1 - problem
Exercise 2 - problem
Exercise 3 - problem
Exercise 4 - problem
Scenario
It has now been two weeks after the implementation. Fred Kirks calls and advises that someone on site has been playing in
TrueForm Neo and there are now printing issues.
For the purposes of this training, all required data has already been preloaded into the procedures provided in C:\tfn\procedures.
Exercise 1 - problem
When the purchase order print job is printed to the queue, no logos are displayed. The data has already been loaded into the
procedure.
Using procedure exercise 1, test the workflow logic and review the PDF.
Exercise 2 - problem
When the Sales order component is run by selecting Right Click > Run the component, the following error message is displayed:
Run Component ERROR: Could not find a part of the path 'C:\Program Files\Pronto\Trueform_Neo\programs\Temp Data
Files\141373194662\'.
Exercise 3 - problem
When you try to run the customer statement component, a message is displayed indicating that it is trying to print the template list.
The PDF is also not being created. It appears that the wrong output type has been used.
Exercise 4 - problem
When sending multiple page payslips, the same data (all data) is being sent to everyone.
Each person should receive only their payslip. It appears that the whole Input data is being used rather than splitting the data into the
sets created using the Dynamic data view process.
TFNA.OP.70.00 Appendix
You can use various different formats for logos in TrueForm Neo as shown in the following image. The challenge with logos is retaining the
quality while keeping the size of the logo small to reduce the size of the PDF when rendered.
Most of the common picture formats can be used however there is currently no support for vector based images, including EPS.
You can optimise larger logos. There are many free tools that provide this functionality, for example, JPEG optimizer.
http://jpeg-optimizer.com/
1 Add any single lines of text (variables) as text fields. Variables are shown with the blue icon from the mapping block pane
2 Add any blocks of data (multiple lines of fields) as tables. These show as green blocks in the Mapping Block pane
3 All lines are inserted with a thickness of 1 pt by default. The out of the box templates line thickness is .5pt
5 Any rounded corners within the out of the box components use a percentage of 15.
6 The line shading (Zebra Colour) used in the out of the box templates is Gainsboro
7 If you want to update some of the standard colours, the Find/Replace is the easiest tool to use from within the Template code.
Any fonts available in Windows are available for use in the Output Designer. If you use any fonts that are not type 1 fonts (or variation of),
they are automatically embedded into the PDF. This can cause a large increase in the PDF size.
If you use other fonts, make sure you test the PDF size before completing all forms.
Example: A PDF using Verdana at 2 pages could be 200kb and the same PDF in Arial is 28kb.
Example:
The following expression suppresses rows to exclude blanks and also any rows that have a value in the Marker mapping block:
=switch
(
String.IsNullOrEmpty({BlockA}) and String.IsNullOrEmpty({L_ItemDescOrNoteLine_B}), "true",
!String.IsNullOrEmpty({L_Marker_V}), "true",
true,"false"
)
Add this expression to the Table Row Hidden (initial visibility) field.
The Switch statement is evaluated from the top down, and stops when a condition is true.
This expression is determining the following:
Condition 1 — Is BlockA and L_ItemDescOrNoteLine_B blank? If so, return the value of True.
Condition 2 — Is L_Marker_V not blank (indicated by the ! in front of the field)? If so, return the value of True.
Example:
In the following expression, the date text box at the top of the sales order is changed based on the type of document received.
=switch
(
String.IsNullOrEmpty(Variable!H_LayoutType_JR.Value), "Invoice Date:",
Variable!H_LayoutType_JR.Value = "Q", "Quote Date:",
true, "Order Date:"
)
Invoice Date:
Quote Date:
Order Date:
Condition 1 — Is the H_LayoutType_JR variable blank. If so the value for the text field will be Invoice Date:
Condition 2 — Is the H_LayoutType_JR variable = Q. If so, the value of the text field will be Quote Date:
Example:
In the following expression, the carrier information at the bottom of a sales order is being suppressed based on the expression.
=Iif(String.IsNullOrEmpty(Variable!H_CarrierCode_BG.Value) or Variable!H_LayoutType_JR.Value = "C", true, false)
This expression uses an If statement that has the following two possible outcomes:
value if True
value if False
If the H_CarrierCode_BG value is blank or has spaces, or H_LayoutType_JR = C (credit note), then return the value of True to
hide the field, otherwise return False to show the field.
You can also use a nested If statement, that is, another If statement in the value if True or False. However, a Switch statement is a
better option in this situation as it is much easier to read.
Mid (substring)
Mid is used to return part of a string value.
The Mid function works by specifying the variable/mapping block to use, followed by the starting position and the length of the field.
Use the Len function to determine the length of a specific field.
Example:
The following expression uses the Mid function to return part of the QueueName system variable.
=Mid([|SVAR|QueueName], 5, 20)
Example:
The following expression returns the string length of Pronto Software, that is, a value of 15.
=Len("Pronto Software")
This returns the starting position of the value in a string if found. If not found, zero is returned.
Example:
If you wanted to find the starting position of Software in the string Pronto Software, you could use the following expression:
=Instr("Pronto Software","Software")
This would return a value of 8.
TrueForm Neo is maintained and updated, to include new functionality as well as address any issues within the software.
When a new version of the software is released, the following installers are available:
Installer Detail
Trueform_Neo_64.exe Installs the TrueForm Neo software, and can install all dependencies if required and
the forms pack that was current when the installer was built. The dependencies
include Visual Studio 2015, .Net 4.7 and a standard printer. The installer checks if these
already exist. If a dependency exists, it is not reinstalled. The same installer is also
used for new installs and upgrades.
Trueform_Neo_Form_Pack. Installs the most up to date forms pack, including Pronto Xi layouts, input files, design
exe components and procedures. This will update the standard content located in the C:
\Program Files\Pronto\Trueform_Neo\Content directory and will not replace any
customised content.
This does not update the customised procedures, only the content available from the
Content directory (C:\Program Files\Pronto\Trueform_Neo\Content).
The best method to request the latest version is to log a support call with Pronto
Software.
This content is updated on a regular basis. You should apply this forms pack
to any implementations of TrueForm Neo as the content might have been
updated since the full installer and update installer were built.
Before you can use TrueForm Neo, you need to activate your license key. If TrueForm Neo is unlicensed, [UNLICENSED] is displayed on
the Procedure tab when you log in.
Licensing in TrueForm Neo is linked to a particular server based on the fully qualified domain name. The licence key is a permanent key,
however, it needs to be re-issued if a server name changes or a new server is used.
There is no grace period for invalid licences. If you plan to change a server name, book a time with Pronto Software before making
the change in order to minimise down time and provide a quick turn around with a new licence key
Steps
3 In the Enter Pronto Xi Serial Number field, enter your Pronto Xi serial number then click CreateID.
You can find your Pronto Xi serial number in Pronto Xi:
4 Email both the Pronto Xi serial number and the TrueForm Neo ID to TF@pronto.net.
You will receive an email within 4hrs with your TrueForm Neo license key.
5 In the Enter Pronto Xi Serial Number field, enter your Pronto Xi serial number then click CreateID
6 In the License Key field, enter the license key that was emailed to you from Pronto Software.
If you closed the TrueForm Neo Registration screen, you need to re-enter the Enter Pronto Xi Serial Number field then click
CreateID before entering the license key
7 Click OK.
[UNLICENSED] is displayed on the Procedure tab until you close and reopen TrueForm Neo
Solution - Exercise 1
Solution - Exercise 2
Solution - Exercise 3
Solution - Exercise 4
Solution - Exercise 1
On the Single Page template in the Output Designer, the file names are missing the last character.
Solution - Exercise 2
To reproduce, run the dynamic data view and then run the conditional logic for the Portrait - Sales Order component.
Solution - Exercise 3
The Output/Export type is set to PRN. It should be set to PDF.
Solution - Exercise 4
The Data View Name on the payslip design component is set to InputData. This should be changed to use the dynamic data view
name.