Please see the recipe Document per Repeated Item for an introduction to this concept.
Now, following on from the above discussion, suppose we need a separate document for each of the sureties, but only if a particular surety has a net asset value of $100,000 or more. The template itself will remain unchanged except that a SetMultipleDocumentFilter command will be applied to it. Here follows the original example, slightly modified and incorporating with this new command:
I,
<<Surety[$SuretyNumber]/SuretyFirstNames>><<Surety[$SuretyNumber]/SuretySurname>>(Born on<<FormatDate(Surety[$SuretyNumber]/SuretyDOB, “dd MMMM yyyy”)>>) hereby declare blah blah.
blahMy net assets are $
<<FormatNumber(Surety[$SuretyNumber]/NetAssets)>>
<<SetMultipleDocumentFilter(NetAssets >= 100000)>>Signed:
<<Surety[$SuretyNumber]/SuretyFirstNames>><<Surety[$SuretyNumber]/SuretySurname>>
This would result in one document being produced for each surety, but only if that particular surety’s net asset value is greater than $100,000.
This is fine so long as the minimum net asset value is always going to be $100,000. But suppose you want the user (i.e. the person running the template) to be able to set this minimum value from one application to another. You would then have a data element called something like MinimumAssetValue which is captured in the interview outside the scope of the sureties, and the resulting template snippet would look like this:
<<CaptureDataElement(MinimumAssetValue,Decimal)>>I,
<<Surety[$SuretyNumber]/SuretyFirstNames>><<Surety[$SuretyNumber]/SuretySurname>>(Born on<<FormatDate(Surety[$SuretyNumber]/SuretyDOB, “dd MMMM yyyy”)>>) hereby declare blah blah.
blahMy net assets are $
<<FormatNumber(Surety[$SuretyNumber]/NetAssets)>>
<<SetMultipleDocumentFilter(NetAssets >= ../MinimumAssetValue)>>Signed:
<<Surety[$SuretyNumber]/SuretyFirstNames>><<Surety[$SuretyNumber]/SuretySurname>>
You will notice the ../ before MinimumAssetValue. This is because the scope of the data elements in the condition is by default the repeating data element – in this case Surety. In order to reference a data element higher in the XML hierarchy, the ../ notation is used. A fairly comprehensive discussion of this is contained in the recipe Working with repeated elements under the heading Referencing Non-repeating elements within a ForEach block.




