AgileApps Support Wiki Pre Release

Create a Compound Document Template

From AgileApps Support Wiki
Revision as of 23:25, 23 May 2012 by imported>Aeric

A compound print template lets you combine multiple templates into a single output file.

Compound print templates have multiple uses:

Create a single file composed of multiple documents
When processing an order, you might need to generate an inventory-pull sheet, a customer invoice, and a shipping sheet. Each of those would be a separate template, but they can all be printed at one time in a single, compound document. (The templates can be of different types, as well. One might be a Word document, while another is an HTML template.)
Create a single document composed of multiple parts
For example, when printing an order form, a cover page with logo images and boilerplate could be in the first section, and the logic for looping through order items could be in a second section. A designer working on the layout of the cover page could then ignore the logic, which could be reused in different templates.
(See Compound Template Example: A Two-Part Order Form.)

Notepad.png

Note: Every template prints on a new page, so that strategy is only useful for a multi-page invoice.

Any combination of the above
The output of the compound document is a single file. What goes into that file is up to you. You can create any combination of documents and document components you want, using Print Template Variables to access information from the record you are processing, any records it looks up to, and any records that are related to it.
Learn more:

Considerations

  • __TBD: Is the compound template created by reference or by value-copy? (What happens when a new version of a component is uploaded?)__
  • Compound documents are always queued
  • __TBD: Monitoring? Popup message or email?__
  • When generated. they are saved in Documents > Export Data folder

To create a compound print template:

  1. Go to {object} > Customize this Object > Print Templates
  2. Click [New Template]
  3. Specify Type as Compound
    An [Add Template] button appears.
  4. Click the button to add a new template to the list of components

Thumbsup.gif

Tip: Add templates in the order you want them to appear. It is not possible to rearrange the order later.

To remove a component template:

  • Select the empty row at the top of the template selection field.
    When saved, that row is removed from the compound template.
Compound Template Example
A Two-Part Order Form:

This example breaks the Sample Print Template for an Order Invoice into three parts, so that the processing-logic is confined to a single module:

__TBD: Does this work? Or do all components need to be in an <html>...</html> package? If so, how are page breaks prevented? How are they forced?__

Header Component:

<syntaxhighlight lang="xml" enclose="div">

<html><head> <title></title> <style>

div {  
     padding-top: 5px;  
     padding-bottom: 5px;  
     padding-right: 5px;  
     padding-left: 30px;  
     border: 3px;  

margin-top: 5%; margin-right: 40%; margin-bottom: 5%; margin-left: 5%;

   }

</style>

</head><body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">

<img width="100" height="100" src="http://justanothermobilemonday.com/Wordpress/wp-content/uploads/2009/10/android-robot-logo2.jpg" alt="Company logo" />    <---- Company Logo Here
$company.name

$company.street  
$company.city, $company.state,
$company.country - $company.zip

 
 (Phone): $user.phone



Order Invoice

Invoice Date: $Orders.date_created



Bill To:
$Orders.account.name - $Orders.account.number

$Orders.account.street
$Orders.account.city, $Orders.account.state,
$Orders.account.country - $Orders.account.zip

(Phone): $Orders.account.phone


Invoice #: $Orders.order_number
 

</syntaxhighlight>

Logic Component:

<syntaxhighlight lang="xml" enclose="div">
<tbody> </tbody>
  1. foreach( $OrderItems_record in $OrderItems )
  1. end
Quantity Product Unit Price Amount
$OrderItems_record.item_quantity $OrderItems_record.related_to_ProductInventory.product_name $OrderItems_record.item_price $OrderItems_record.total
  Sub Total $Order.grid_comptn_f5631e34b39f4ba39a98559c7215a3b4
  Tax $Orders.grid_tax_f5631e34b39f4ba39a98559c7215a3b4
  Shipping $Orders.grid_shipping_f5631e34b39f4ba39a98559c7215a3b4
  TOTAL AMOUNT DUE $Orders.grid_net_total_f5631e34b39f4ba39a98559c7215a3b4

</syntaxhighlight>

Footer Component:

<syntaxhighlight lang="xml" enclose="div">



Payment Due upon receipt
Thank you for your business!

</body> </html> </syntaxhighlight>