Difference between revisions of "Create a Compound Document Template"

From AgileApps Support Wiki
imported>Aeric
imported>Aeric
m (Text replace - 'print template' to 'Document Template')
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
A compound print template lets you combine multiple templates into a single output file.  
A compound Document Template lets you combine multiple templates into a single output file.
<noinclude>__TOC__</noinclude>
====About Compound Document Templates====
Compound Document 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.) 


Compound print templates have multiple uses:
:;Create a single document composed of multiple parts:
:;Create a single document composed of multiple parts:
:: For example, when printing an order form, logo images and boilerplate could be in the first and last sections, the middle section could contain the logic for looping through order items to create a table. A designer working on the layout of the headers and footers could then do so without regard for the logic--and the logic could be reused in different templates.  
:: 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 [[#Example: A Two-Part Order Form|Example: A Two-Part Order Form]].)


:;Create a single file composed of multiple documents:
{{Note|Every template prints on a new page, so that strategy is only useful for a multi-page invoice.}}  
::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. 
 
:{{TBD|Is it possible to combine different kinds of templates?}}


:;Any combination of the above:
:;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.
:: 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 Document 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:''
::''Learn more:''
:::* [[Print Templates#Insert Images, Charts, and Template Variables|Insert Images, Charts, and Template Variables]]
:::* [[Document Templates#Insert Images, Charts, and Template Variables|Insert Images, Charts, and Template Variables]]
:::* [[Print Templates#Finding and Using Related Record Variables|Finding and Using Related Record Variables]]
:::* [[Document Templates#Finding and Using Related Record Variables|Finding and Using Related Record Variables]]
 
====Working with Compound Document Templates====
'''Considerations'''
:* A compound template contains references to its component templates. So updating a component-template automatically updates all compound templates it is used in.
:* Compound documents are always queued. An email is sent when processing is finished.
:* Generated documents are saved in '''Documents > Export Data''' folder. The email contains a link.


'''To create a compound print template:'''
'''To create a compound Document Template:'''
# Go to '''{object} > Customize this Object > Print Templates'''
# Go to '''{object} > Customize this Object > Document Templates'''
# Click '''[New Template]'''
# Click '''[New Template]'''
# Specify '''Type''' as '''Compound'''<br>An '''[Add Template]''' button appears.
# Specify '''Type''' as '''Compound'''<br>An '''[Add Template]''' button appears.
Line 27: Line 36:
:* '''Select the empty row''' at the top of the template selection field.<br>When saved, that row is removed from the compound template.
:* '''Select the empty row''' at the top of the template selection field.<br>When saved, that row is removed from the compound template.


'''Considerations'''
====Example: A Two-Part Order Form====
:* {{TBD|Is the compound template created by reference or by value-copy? (What happens when a new version of a component is uploaded?)}}
This example breaks the [[Document Templates#Sample Document Template for an Order Invoice|Sample Document Template for an Order Invoice]] into two parts, so that the processing logic is confined to a single module:
 
'''Cover Page 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">
 
<div style="width:100%">
 
<img  width="100" height="100"  src="http://justanothermobilemonday.com/Wordpress/wp-content/uploads/2009/10/android-robot-logo2.jpg" alt="Company logo" />&nbsp;&nbsp;&nbsp; <---- Company Logo Here<br/>
<font size="5"><b>$company.name</b></font><b><br />
<br/>
$company.street&nbsp;&nbsp;<br>
$company.city, $company.state, <br>
$company.country - $company.zip
&nbsp;<br>
&nbsp;(Phone): $user.phone
<hr width="100%" size="1" />
<br />
 
<h2 align="center">Order<b> Invoice</b></h2>
<p></p>
<p align="center"><b>Invoice Date:</b> $Orders.date_created </p>
 
<br/><br/>
<b><u>Bill To: </u></b><br />
<font size="2">$Orders.account.name - $Orders.account.number</font></b>
<br />$Orders.account.street<br />
$Orders.account.city,&nbsp;$Orders.account.state, <br>
$Orders.account.country - $Orders.account.zip<br />
 
(Phone): $Orders.account.phone <br />
<br />
<br />
<b>Invoice #: $Orders.order_number <br />
</b>&nbsp;
</p>
</body>
</html>
</syntaxhighlight>
 
'''Logic Component:'''
:<syntaxhighlight lang="xml" enclose="div">
<html>
<body>
 
<table border="1" cellpadding="5" cellspacing="0" width="600">
<tbody>
<tr>
    <th>Quantity</th>
    <th>Product </th>             
    <th>Unit Price</th>
    <th>Amount</th>
</tr>
</tbody>
 
#foreach( $OrderItems_record in $OrderItems )
<tr>
<td width="350">$OrderItems_record.item_quantity</td>
<td width="100" align="CENTER">$OrderItems_record.related_to_ProductInventory.product_name</td>
<td width="100" align="CENTER"> $OrderItems_record.item_price</td>
<td width="100" align="CENTER"> $OrderItems_record.total    </td>
</tr>
#end
 
<tr>
<td colspan="2">&nbsp;</td>
<td style="border: solid 1px #000000;" align="Right">Sub Total</td>
<td style="border: solid 1px #000000;" align="center">$Order.grid_comptn_f5631e34b39f4ba39a98559c7215a3b4</td>
</tr>
 
<tr>
<td colspan="2">&nbsp;</td>
<td style="border: solid 1px #000000;" align="Right">Tax</td>
<td style="border: solid 1px #000000;" align="center">$Orders.grid_tax_f5631e34b39f4ba39a98559c7215a3b4</td>
</tr>


<!--
<tr>
::(See [[#ex1|Example: A Two-Part Order Form]].)
<td colspan="2">&nbsp;</td>
<span id="ex1"></span>'''Example: A Two-Part Order Form'''
<td style="border: solid 1px #000000;" align="Right">Shipping</td>
:--Break existing order template into two parts
<td style="border: solid 1px #000000;" align="center">$Orders.grid_shipping_f5631e34b39f4ba39a98559c7215a3b4</td>
</tr>


::(See [[#ex2|Example: Combining Multiple Documents]].)
<tr>
<span id="ex2"></span>'''Example: Combining Multiple Documents'''
<td colspan="2">&nbsp;</td>
:--
<td style="border: solid 1px #000000;" align="Right"><b>TOTAL AMOUNT DUE</b></td>
-->
<td style="border: solid 1px #000000;" align="center"><b>$Orders.grid_net_total_f5631e34b39f4ba39a98559c7215a3b4</b></td>
</tr>   
</table>
</body>
</html>
</syntaxhighlight>

Latest revision as of 23:36, 12 November 2013

A compound Document Template lets you combine multiple templates into a single output file.

About Compound Document Templates

Compound Document 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 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 Document 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:

Working with Compound Document Templates

Considerations

  • A compound template contains references to its component templates. So updating a component-template automatically updates all compound templates it is used in.
  • Compound documents are always queued. An email is sent when processing is finished.
  • Generated documents are saved in Documents > Export Data folder. The email contains a link.

To create a compound Document Template:

  1. Go to {object} > Customize this Object > Document 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.

Example: A Two-Part Order Form

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

Cover Page Component:

<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">

<div style="width:100%">

<img  width="100" height="100"  src="http://justanothermobilemonday.com/Wordpress/wp-content/uploads/2009/10/android-robot-logo2.jpg" alt="Company logo" />&nbsp;&nbsp;&nbsp; <---- Company Logo Here<br/>
<font size="5"><b>$company.name</b></font><b><br />
<br/>
$company.street&nbsp;&nbsp;<br>
$company.city, $company.state, <br>
$company.country - $company.zip
 
&nbsp;<br>
&nbsp;(Phone): $user.phone
<hr width="100%" size="1" />
<br />

<h2 align="center">Order<b> Invoice</b></h2>
<p></p>
<p align="center"><b>Invoice Date:</b> $Orders.date_created </p>

<br/><br/>
<b><u>Bill To: </u></b><br />
<font size="2">$Orders.account.name - $Orders.account.number</font></b>
<br />$Orders.account.street<br />
$Orders.account.city,&nbsp;$Orders.account.state, <br>
$Orders.account.country - $Orders.account.zip<br /> 

(Phone): $Orders.account.phone <br />
<br />
<br />
<b>Invoice #: $Orders.order_number <br />
</b>&nbsp;
</p>
</body>
</html>

Logic Component:

<html>
<body>

<table border="1" cellpadding="5" cellspacing="0" width="600">
<tbody>
<tr>
    <th>Quantity</th>
    <th>Product </th>               
    <th>Unit Price</th>
    <th>Amount</th>
</tr>
</tbody>

#foreach( $OrderItems_record in $OrderItems )
<tr>
<td width="350">$OrderItems_record.item_quantity</td>
<td width="100" align="CENTER">$OrderItems_record.related_to_ProductInventory.product_name</td>
<td width="100" align="CENTER"> $OrderItems_record.item_price</td>
<td width="100" align="CENTER"> $OrderItems_record.total    </td>
</tr>
#end

<tr>
<td colspan="2">&nbsp;</td>
<td style="border: solid 1px #000000;" align="Right">Sub Total</td>
<td style="border: solid 1px #000000;" align="center">$Order.grid_comptn_f5631e34b39f4ba39a98559c7215a3b4</td>
</tr>

<tr>
<td colspan="2">&nbsp;</td>
<td style="border: solid 1px #000000;" align="Right">Tax</td>
<td style="border: solid 1px #000000;" align="center">$Orders.grid_tax_f5631e34b39f4ba39a98559c7215a3b4</td>
</tr>

<tr>
<td colspan="2">&nbsp;</td>
<td style="border: solid 1px #000000;" align="Right">Shipping</td>
<td style="border: solid 1px #000000;" align="center">$Orders.grid_shipping_f5631e34b39f4ba39a98559c7215a3b4</td>
</tr>

<tr>
<td colspan="2">&nbsp;</td>
<td style="border: solid 1px #000000;" align="Right"><b>TOTAL AMOUNT DUE</b></td>
<td style="border: solid 1px #000000;" align="center"><b>$Orders.grid_net_total_f5631e34b39f4ba39a98559c7215a3b4</b></td>
</tr>     
</table>
</body>
</html>