Article Details
Id:21248
Product:finPOWER Connect
Type:NEW
Version:4.01.00
Opened:06/03/2024
Closed:06/03/2024
Released:29/04/2024
Job: J033029

Business Layer; Documents; Utility function added to publish a Document and return it's binary file data

A new utility business layer function has been added to aid the creation of an ad-hoc document and return it's binary file data.

The new method is:

  • finBL.DocumentFunctions.CreateUnsavedDocumentFromDocumentExecute

The following is a sample "General" type Script, demonstrating the use of this new function:

Public Function Main(parameters As ISKeyValueList) As Boolean
  
  Dim FileData As Byte()
  Dim FileName As String
  Dim ParametersKvl As ISKeyValueList 

  ' Assume Success
  Main = True
  
  ParametersKvl = finBL.CreateKeyValueList()
  With ParametersKvl 
    .SetString("LetterContent", "this is an ad-hoc document")
  End With
  
  Main = finBL.DocumentFunctions.CreateUnsavedDocumentFromDocumentExecute("SAMPLE", ParametersKvl, FileData ,FileName)
  
  If Main Then
    Main = finBL.Runtime.FileUtilities.WriteFileFromByteArray("c:\temp\Sample.pdf", FileData)
  End If

End Function

The following sample Document is coded "SAMPLE" and is based on the "Client Letter" Document (changed to a "General" Document) and therefore contains a "LetterContent" bookmark:

Option Explicit On
Option Strict On

' Objects
Private mDocument As finDocumentRO

Public Function Main(source As Object, eventId As String, eventArgs As ISKeyValueList, ByRef handled As Boolean, parameters As Object, ByRef returnValues As ISKeyValueList, ByRef text As String) As Boolean

  Dim Success As Boolean
  Dim WordDocument As ISWordDocument 

  ' Assume Success
  Success = True

  ' Initialise
  mDocument = finBL.Documents(Mid(ScriptInfo.ScriptId, 10))

  ' Get Constants
  With ScriptInfo.Constants
  End With

  ' Handle Events
  Select Case eventId
    Case "Publish"
      Success = CreateDocument(DirectCast(parameters, ISKeyValueList), WordDocument)

      ' Return Word Document
      returnValues.SetObject("WordDocument", WordDocument)
  End Select

  Return Success

End Function

'#################################################################
' Create Document
'#################################################################
Private Function CreateDocument(parameters As ISKeyValueList,
                                ByRef wordDocument As ISWordDocument) As Boolean

  Dim di As finDocumentRecipientDetailsItem  
  Dim Success As Boolean
  Dim WordDocumentBookmarks As ISWordDocumentBookmarks

  ' Assume Success
  Success = True
  
  ' Create Document Recipient Details
  Success = mDocument.CreateAdHocDocumentRecipientDetailsItem(di, parameters)

  ' Get Bookmarks
  WordDocumentBookmarks = di.WordDocument.GetBookmarks()

  ' Replace Standard Bookmarks
  Success = di.UpdateStandardBookmarks(WordDocumentBookmarks)

  ' Replace Custom Bookmarks
  If Success Then
    ReplaceBookmarks(di, WordDocumentBookmarks)
  End If

  ' Update Bookmarks
  If Success Then
    Success = di.WordDocument.UpdateBookmarks(WordDocumentBookmarks)
  End If

  ' Record Word Document
  If Success Then
    wordDocument = di.WordDocument
  End If

  Return Success

End Function

'#################################################################
' CUSTOM BOOKMARKS
'#################################################################
Private Function ReplaceBookmarks(di As finDocumentRecipientDetailsItem,
                                  wordDocumentBookmarks As ISWordDocumentBookmarks) As Boolean

  Dim Success As Boolean

  ' Assume Success
  Success = True

  ' Parameters
  If Success Then
    With wordDocumentBookmarks
      .SetContentString("LetterContent", di.Parameters.GetString("LetterContent"))
    End With
  End If

  Return Success

End Function