home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 April A / Pcwk4a98.iso / Lotus / Notes46 / LOTUS026.DSK / APPROVE4.NTF (.txt) next >
Lotus Notes Database  |  1997-08-20  |  310KB  |  2,950 lines

  1. Approval Cycle (R4)
  2. #1StdR4Approval
  3. CN=Lotus Notes Template Development/O=Lotus Notes
  4. 19zS+
  5. VoE!    
  6. 5i4XM
  7. Z||,}
  8. La03[
  9. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Catherine Duffy/O=IrisLotus NotesCN=Catherine Duffy/O=IrisLotus NotesCN=Lotus Notes Template Development/O=Lotus Notes
  10. #######################################
  11. 5i4XM
  12. $Modified
  13.     1S2S3S
  14. $TITLE$FormPrivs$FormUsers$Body$Flags$Class$Modified$Comment$AssistTrigger$AssistType$AssistFlags$UpdatedBy$$FormScript_O
  15.     0SL1S3724
  16. $TITLE
  17. CN=Catherine Duffy/O=Iris##########################################################
  18. EnterCommentsEnterCommentsCD
  19. CN=Catherine Duffy/O=IrisCN=Lotus Notes Template Development/O=Lotus Notes######################################
  20. Application Profiles|ApplicationProfilesd
  21. WorkflowObject$Conflict$REF
  22. ApplicationProfile
  23.     L1S2S3S1
  24. WorkflowObject
  25. WorkflowObjectApproval Form Name&
  26. Used for lookups and creation of profile docsY
  27. CN=Catherine Duffy/O=IrisCN=Lotus Notes Template Development/O=Lotus Notes##########################
  28. All Requests|All
  29. RequesterNameRequestDateWorkflowObjectStatusNextApprover$Conflict$REF
  30. ApplicationProfile
  31.     L1S2S3S1a
  32. RequesterNameRequestDateWorkflowObjectStatusNextApprover
  33. RequesterName
  34. RequesterName
  35. RequestDate
  36. RequestDate
  37. WorkflowObject
  38. WorkflowObject
  39. Status
  40. Status
  41. NextApprover
  42. NextApprover
  43. @RequesterNameRequesterRequestDateDateWorkflowObjectRequest TypeStatusStatusNextApproverNext Approver&
  44. This lists all requests - the columns can be sorted on the flyY
  45. Debbie BrancoCN=Lotus Notes Template Development/O=Lotus Notes#######################################################
  46. Z||,}
  47. wwwwww
  48. wwwww
  49. Paul DiCristinaCN=Catherine Duffy/O=Iris############################################
  50. O=Lotus Notes
  51. O=Lotus Notes
  52. PURSAFO
  53. |.:#U
  54. O=Lotus Notes
  55. CN=Lotus Notes Template Development/O=Lotus Notes
  56. PURSAFO
  57. Fde!f^^
  58. $ACLDigest
  59.  EnterComments'++LotusScript Development Environment:2:5:(Options):0:66
  60. '++LotusScript Development Environment:2:5:(Forward):0:1
  61. Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
  62. '++LotusScript Development Environment:2:5:(Declarations):0:2
  63. '++LotusScript Development Environment:2:2:BindEvents:1:129
  64. Private Sub BindEvents(Byval Objectname_ As String)
  65.      Static Source As NOTESUIDOCUMENT
  66.      Set Source = Bind(Objectname_)
  67.      On Event Queryopen From Source Call Queryopen
  68. End Sub
  69. '++LotusScript Development Environment:2:2:Queryopen:1:12
  70. Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
  71.      
  72.      
  73. End Sub
  74. FlowControl
  75.     1S2S
  76. Enter any comments below:
  77. d_ApprComment
  78. d_ApprComment
  79.     3S4S6S8S
  80. d_ApprComment
  81. FlowControl
  82.     1S2S
  83. Categori_ze`
  84. _Edit Document
  85. Send Docu_ment
  86. _Forward
  87. _Move to Folder...
  88. _Remove from Folder`
  89. O=Lotus Notes
  90. O=Lotus Notes
  91. PURSAFO
  92. |.:#U
  93. O=Lotus Notes
  94. CN=Lotus Notes Template Development/O=Lotus Notes
  95. PURSAFO
  96. Fde!f^^
  97. $TITLE
  98. $Info
  99. $$Script_O
  100. $$ScriptName
  101. $$FormScript
  102. $$$FormScript_O
  103. $Body
  104. $ACTIONS
  105. Create Application Profile6
  106. Application Profile
  107.     9S11S12S13S14S
  108. Categori_ze
  109. _Edit Document
  110. Send Docu_ment
  111. _Forward
  112. _Move to Folder...
  113. _Remove from Folder...
  114. Instructions 
  115.     0S0E
  116.     9S11S12S13S14S
  117. O=Lotus Notes
  118. O=Lotus Notes
  119. PURSAFO
  120. |.:#U
  121. O=Lotus Notes
  122. CN=Lotus Notes Template Development/O=Lotus Notes
  123. PURSAFO
  124. Fde!f^^
  125. \b*|=
  126. $Index
  127. $Formula
  128. $FormulaClass
  129. $ViewFormat
  130. $Comment
  131. $ACTIONS
  132. Categori_ze
  133. _Edit Document
  134. Send Docu_ment
  135. _Forward
  136. Create New Request
  137. tList
  138. ApplicationProfiles
  139.     1S2S6S8S10S
  140. tList
  141. Error
  142. An error has occured.  Please try again.
  143. tList
  144.     0R1S2S9S15S17S21S
  145. DocType
  146. New Request
  147. Choose one of the following:
  148.     0RR1S2S3S7S9S11S15S18S
  149. DocType
  150.     0RR4S
  151. _Move to Folder...
  152. _Remove from Folder...
  153. Instructions 
  154.     0S0E
  155. O=Lotus Notes
  156. O=Lotus Notes
  157. PURSAFO
  158. |.:#U
  159. O=Lotus Notes
  160. CN=Lotus Notes Template Development/O=Lotus Notes
  161. PURSAFO
  162. Fde!f^^
  163. $Index
  164. $Formula
  165. $FormulaClass
  166. $ViewFormat
  167. $Comment
  168. $ACTIONS
  169. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  170. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  171. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  172. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  173. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  174. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  175. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  176. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  177. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  178. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  179. CN=Catherine Duffy/OU=NAHQ/O=LotusCN=Lotus Notes Template Development/O=Lotus Notes######
  180. DisplayCommentsDisplayCommentsCD
  181. Lotus NotesCN=Lotus Notes Template Development/O=Lotus Notes########################################################
  182. CN=Ryan Jansen/O=IrisCN=Lotus Notes Template Development/O=Lotus Notes
  183. ##########################################################
  184. Debbie BrancoCN=Lotus Notes Template Development/O=Lotus Notes####
  185. Process Past Due Approvals
  186. Sends e-mail when approval date has passed.1SfL3
  187. CN=Ryan Jansen/O=IrisCN=Lotus Notes Template Development/O=Lotus NotesF
  188. ########################################################
  189. 19zS+
  190. (ApproverInfo)(ApproverInfo)CD
  191. Lotus NotesCN=Lotus Notes Template Development/O=Lotus Notes##################################
  192. (ApproverRetrievalInfo)(ApproverRetrievalInfo)CD
  193. Lotus NotesCN=Lotus Notes Template Development/O=Lotus Notes
  194. ##########################################################
  195. O=Lotus Notes
  196. O=Lotus Notes
  197. PURSAFO
  198. |.:#U
  199. O=Lotus Notes
  200. CN=Lotus Notes Template Development/O=Lotus Notes
  201. PURSAFO
  202. Fde!f^^
  203. sZ%!ZM}
  204. ?B_8;
  205. $Flags
  206. O=Lotus Notes
  207. O=Lotus Notes
  208. PURSAFO
  209. |.:#U
  210. O=Lotus Notes
  211. CN=Lotus Notes Template Development/O=Lotus Notes
  212. PURSAFO
  213. Fde!f^^
  214. sZ%!ZM}
  215. $Flags
  216. O=Lotus Notes
  217. O=Lotus Notes
  218. PURSAFO
  219. |.:#U
  220. O=Lotus Notes
  221. CN=Lotus Notes Template Development/O=Lotus Notes
  222. PURSAFO
  223. Fde!f^^
  224. sZ%!ZM}
  225. $Flags
  226. O=Lotus Notes
  227. O=Lotus Notes
  228. PURSAFO
  229. |.:#U
  230. O=Lotus Notes
  231. CN=Lotus Notes Template Development/O=Lotus Notes
  232. PURSAFO
  233. Fde!f^^
  234. sZ%!ZM}
  235. $Flags
  236. O=Lotus Notes
  237. O=Lotus Notes
  238. PURSAFO
  239. |.:#U
  240. O=Lotus Notes
  241. CN=Lotus Notes Template Development/O=Lotus Notes
  242. PURSAFO
  243. Fde!f^^
  244. sZ%!ZM}
  245. Yo?`v
  246. 3:=4t"
  247. BJ=Xg
  248. $Flags
  249. O=Lotus Notes
  250. O=Lotus Notes
  251. PURSAFO
  252. |.:#U
  253. O=Lotus Notes
  254. CN=Lotus Notes Template Development/O=Lotus Notes
  255. PURSAFO
  256. Fde!f^^
  257. sZ%!ZM}
  258. $Flags
  259. O=Lotus Notes
  260. O=Lotus Notes
  261. PURSAFO
  262. |.:#U
  263. O=Lotus Notes
  264. CN=Lotus Notes Template Development/O=Lotus Notes
  265. PURSAFO
  266. Fde!f^^
  267. sZ%!ZM}
  268. v=,<    
  269. $Flags
  270. O=Lotus Notes
  271. O=Lotus Notes
  272. PURSAFO
  273. |.:#U
  274. O=Lotus Notes
  275. CN=Lotus Notes Template Development/O=Lotus Notes
  276. PURSAFO
  277. Fde!f^^
  278. sZ%!ZM}
  279. S}-|Ot+
  280. $Flags
  281. O=Lotus Notes
  282. O=Lotus Notes
  283. PURSAFO
  284. |.:#U
  285. O=Lotus Notes
  286. CN=Lotus Notes Template Development/O=Lotus Notes
  287. PURSAFO
  288. Fde!f^^
  289. sZ%!ZM}
  290. $Flags
  291. O=Lotus Notes
  292. O=Lotus Notes
  293. PURSAFO
  294. |.:#U
  295. O=Lotus Notes
  296. CN=Lotus Notes Template Development/O=Lotus Notes
  297. PURSAFO
  298. Fde!f^^
  299. sZ%!ZM}
  300. $Flags
  301. O=Lotus Notes
  302. O=Lotus Notes
  303. PURSAFO
  304. |.:#U
  305. O=Lotus Notes
  306. CN=Lotus Notes Template Development/O=Lotus Notes
  307. PURSAFO
  308. Fde!f^^
  309. sZ%!ZM}
  310. $Flags
  311.  DisplayComments'++LotusScript Development Environment:2:5:(Options):0:66
  312. '++LotusScript Development Environment:2:5:(Forward):0:1
  313. Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
  314. '++LotusScript Development Environment:2:5:(Declarations):0:2
  315. '++LotusScript Development Environment:2:2:BindEvents:1:129
  316. Private Sub BindEvents(Byval Objectname_ As String)
  317.      Static Source As NOTESUIDOCUMENT
  318.      Set Source = Bind(Objectname_)
  319.      On Event Queryopen From Source Call Queryopen
  320. End Sub
  321. '++LotusScript Development Environment:2:2:Queryopen:1:12
  322. Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
  323.      
  324.      
  325. End Sub
  326. ApprName
  327. ApprName1
  328. ApprStatus
  329. ApprStatus1
  330. ApprStatus1
  331.     3S4S6S8S
  332. ApprDate
  333. ApprDate1
  334. ApprComment
  335. ApprComment1
  336. ApprNamej
  337. ApprName
  338.     6S7S9S15S18S22SApprName2
  339. Status
  340. ApprNamej
  341. ApprStatus
  342.     1S2S8S9S11S17S20S24S
  343. Status
  344. Status
  345.     0R3S4S6S8S
  346. ApprStatus2
  347. ApprStatus2
  348.     3S4S6S8S
  349. ApprStatus2
  350. ApprDate
  351.     3S4S6S8S14S17S
  352. ApprDate2
  353. ApprStatus2
  354. ApprComment
  355.     3S4S6S8S14S17S
  356. ApprComment2
  357. ApprNamej
  358. ApprName
  359.     6S7S9S15S18S22SApprName3
  360. Status
  361. ApprNamej
  362. ApprStatus
  363.     1S2S8S9S11S17S20S24S
  364. Status
  365. Status
  366.     0R3S4S6S8S
  367. ApprStatus3
  368. ApprStatus3
  369.     3S4S6S8S
  370. ApprStatus3
  371. ApprDate
  372.     3S4S6S8S14S17S
  373. ApprDate3
  374. ApprStatus3
  375. ApprComment
  376.     3S4S6S8S14S17S
  377. ApprComment3
  378. ApprNamej
  379. ApprName
  380.     6S7S9S15S18S22SApprName4
  381. Status
  382. ApprNamej
  383. ApprStatus
  384.     1S2S8S9S11S17S20S24S
  385. Status
  386. Status
  387.     0R3S4S6S8S
  388. ApprStatus4
  389. ApprStatus4
  390.     3S4S6S8S
  391. ApprStatus4
  392. ApprDate
  393.     3S4S6S8S14S17S
  394. ApprDate4
  395. ApprStatus4
  396. ApprComment
  397.     3S4S6S8S14S17S
  398. ApprComment4
  399. ApprNamej
  400. ApprName
  401.     6S7S9S15S18S22SApprName5
  402. Status
  403. ApprNamej
  404. ApprStatus
  405.     1S2S8S9S11S17S20S24S
  406. Status
  407. Status
  408.     0R3S4S6S8S
  409. ApprStatus5
  410. ApprStatus5
  411.     3S4S6S8S
  412. ApprStatus5
  413. ApprDate
  414.     3S4S6S8S14S17S
  415. ApprDate5
  416. ApprStatus5
  417. ApprComment
  418.     3S4S6S8S14S17S
  419. ApprComment5
  420. Categori_ze
  421. _Edit Document
  422. Send Docu_ment
  423. _Forward
  424. _Move to Folder...
  425. _Remove from Foldert
  426. O=Lotus Notes
  427. O=Lotus Notes
  428. PURSAFO
  429. |.:#U
  430. O=Lotus Notes
  431. CN=Lotus Notes Template Development/O=Lotus Notes
  432. PURSAFO
  433. Fde!f^^
  434. $TITLE
  435. $Info
  436. $$Script_O
  437. $$ScriptName
  438. $$FormScript
  439. $$$FormScript_O
  440. $Body
  441. $ACTIONS
  442. Times New Roman
  443. Task List
  444. &Switch To
  445. About Approval Cycle
  446. ___OOO
  447. %12-/H
  448. !G,$W,#I4)X6(H,4W,4G98X<6h*#x+$g9)w8(h.6u-2g<5w<4>B=YA
  449. WC9iB.xC-iF8wH8jT>zR<rd?
  450. 2L3;FK=Dj=C:FQ8Qp<b
  451. GEHXHGLQLZSKEKUVKSGRYYWWgJEvIEiTHyWFfLRwKSgYWwZV[cXtfYPZjl\dWfphhhvigkqlysjhktvlsjtxyww
  452.     What does this database do?
  453.     This database provides a place from which organizations can manage their electronic approvals.  Using the ApprovalLogic subform, a different form can be designed for each type of approval while all approval forms use the same approval logic.  Consequently, when an organization changes its approval policies, only the ApprovalLogic subform will need to be changed, allowing for fast response to changing business needs.
  454.     Who will use this database?
  455.     Designers will derive several benefits from using this database:
  456.     They will not need to rewrite approval logic for each approval form because it is already provided in a subform
  457.     The approval logic provided on the subform is extremely flexible.  Because all approval situations are not identical, the designer will fill out an application profile for each approval form, which tells the ApprovalLogic subform how this particular approval should be processed
  458.     When organizational approval policy changes, the designer does not need to change every form.  Instead they can either edit the application profile documents or if necessary, they can modify the ApprovalLogic subform.
  459.     People who submit or approve electronic forms will benefit from the use of consistant methods.
  460.     When to use this database?
  461.     Use this database whenever you need electronic approval forms.
  462.     Where to find more information?
  463.     More information can be found in the Help Using document.  Click the Instructions button on any view for help.
  464.     Access Control
  465.     Very Important:  
  466.     Access level should be 
  467.     Author
  468.      for all users of this database.  This will prevent unauthorized editing or approval of documents within the database.  The Author fields within the forms govern who will be able to edit/approve requests.  Errors will occur if someone with Editor access attempts to approve a request when they are not an authorized approver of that document.
  469. O=Lotus Notes
  470. O=Lotus Notes
  471. PURSAFO
  472. |.:#U
  473. O=Lotus Notes
  474. CN=Lotus Notes Template Development/O=Lotus Notes
  475. PURSAFO
  476. Fde!f^^
  477. tu5Imo
  478. $Info
  479. $Body
  480. Times New Roman
  481. Using Approval Cycle
  482. ___OOO
  483. %12-/H
  484. !G,$W,#I4)X6(H,4W,4G98X<6h*#x+$g9)w8(h.6u-2g<5w<4>B=YA
  485. WC9iB.xC-iF8wH8jT>zR<rd?
  486. 2L3;FK=Dj=C:FQ8Qp<b
  487. GEHXHGLQLZSKEKUVKSGRYYWWgJEvIEiTHyWFfLRwKSgYWwZV[cXtfYPZjl\dWfphhhvigkqlysjhktvlsjtxyww
  488.     There are three steps to follow to use this application:  (1) the designer creates one Application Profile document to define each type of approval that the workplace will need;  (2) s/he creates one form for each application profile that has been defined;  (3) the users create approval documents from those forms.
  489. For Designers
  490. Creating Electronic Approval Forms
  491.     1.    Determine the first form that the workplace will need (e.g., Travel Authorization).  
  492.     2.    From the Application Profile view, click the Create Application Profile action.  Fill out the profile completely; it will define how the approval cycle for this form will work.
  493.     Note:
  494.       Do not use 
  495.     @Domain
  496.      when entering approver names.  Any domain added will be stripped off and may cause complications when attempting to route a request. 
  497.     Cursor down to the "Terminology" section.  In the left column, notice terms such as "New", "Open", "Awaiting Approval", "Approved", etc.  If your workplace uses different terminology (such as "Initiated" instead of "New"), replace the term in the right column with the one used by your workplace.  
  498.     Save the new document.
  499.     4.    Choose Create-->Design-->Form.  Add the ApprovalLogic subform.  
  500.     5.    Choose Design-->Form Properties and give the form a name that is the (exact) same name as the type of approval in the Application Profile document (e.g., Travel Authorization).
  501.     6.    In the Form Properties InfoBox, deselect "Include in [Create] Menu." 
  502.     7.    Add the fields you need for your type of approval (for example, a Travel Authorization only includes Travel related information) above or below the approval subform.  You don't need to include any approval logic, since that is covered by the subform you added in step 2.
  503.     8.    In the programmer's pane (the lower pane of the form design window), click on the arrow next to the word Define: 
  504.     and select "(Form)".
  505.       This will provide a box where you can enter a window title.  Enter an appropriate window title (e.g., "Travel Authorization").
  506.     9.    Choose File-->Save to save your new form.  Then choose File-->Close.
  507.     10.    Repeat steps 2 - 9  for each form you need to create.
  508.     To create new requests, see the 
  509.     Users
  510.      section below.
  511. Processing Past Due Approvals
  512.     There is a scheduled agent in this template called "Process Past Due Approvals".  This Agent will send a reminder to the approver if s/he misses the approval deadline.  You must edit the Agent and set it up to run on your server.
  513.     1.    Choose View-->Agents
  514.     2.    Double-click on the Process Past Due Approvals agent
  515.     3.    Click the Schedule button
  516.     4.    Type the name of the server on which the agent should run.
  517. For Users
  518. Creating a Request for Approval
  519.     1.    From the All Requests view or Next Approver view, click Create New Request.
  520.     2.    Select the type of request that you want to create.
  521.     3.    Click OK.
  522.     4.    Fill out the document.  If the application profile was set up to allow the user to edit the approver's name, you will see a button at the top of the document entitled "Edit Approver List".  Click the button and enter an approver's name.  
  523.     Note:  
  524.     Do not use 
  525.     @Domain
  526.      when entering approver names.  Any domain added will be stripped off and may cause complications when attempting to route a request.  Also, only enter Person-names as approvers.  Group names are not supported.
  527.     5.    Click Submit for Approval
  528. Approving or Denying a Request
  529.     1.    Review the document.
  530.     2.    Click Approve or Deny.
  531.     3.    If you are 
  532.     prompted for comments, enter them in the dialog box and click OK.  Notification will be sent to the appropriate person(s). 
  533. O=Lotus Notes
  534. O=Lotus Notes
  535. PURSAFO
  536. |.:#U
  537. O=Lotus Notes
  538. CN=Lotus Notes Template Development/O=Lotus Notes
  539. PURSAFO
  540. Fde!f^^
  541. $Info
  542. $Body
  543. '++LotusScript Development Environment:2:5:(Options):0:66
  544. '++LotusScript Development Environment:2:5:(Forward):0:1
  545. Declare Sub Initialize
  546. Declare Sub ApproveTheRequest(n)
  547. Declare Sub SetNextApprover(n)
  548. Declare Sub DenyTheRequest(n)
  549. Declare Sub SetDueDate(n)
  550. Declare Sub SendNotification(n)
  551. '++LotusScript Development Environment:2:5:(Declarations):0:10
  552. Dim s As NotesSession
  553. Dim db As NotesDatabase
  554. Dim view As NotesView
  555. Dim note As NotesDocument
  556. Dim maildoc As NotesDocument
  557. Dim item As NotesItem
  558. Dim rtitem As NotesRichTextItem
  559. Dim documents As NotesDocumentCollection
  560. Dim dtToday As NotesDateTime
  561. Dim dtDue As NotesDateTime
  562. Dim dtSet As NotesDateTime
  563. Dim StatusList As Variant
  564. Dim RoutingMethod As Variant
  565. Dim LastApprover As Variant
  566. Dim ApprName As Variant
  567. Dim tmpList() As Variant
  568. Dim MaxApprovers As Variant
  569. Dim DueDate As Variant
  570. Dim LateAction As Variant
  571. Dim ApprStatus As Variant
  572. '++LotusScript Development Environment:2:2:Initialize:1:10
  573. Sub Initialize
  574.      On Error Goto ProcessError
  575.      Set s = New NotesSession    
  576.      Set db = s.CurrentDatabase
  577.      Set dtToday = New NotesDateTime("today")
  578.      Set dtDue = New NotesDateTime("today")
  579.      Set dtSet = New NotesDateTime("today")
  580.      dtToday.SetNow
  581.      Set documents = db.Search("@Today => @Date(DueDate) & @Member(Status; StatusList) = 3", Nothing, 0)
  582.      
  583.      For d = 1 To documents.Count
  584.           Set note = documents.GetNthDocument(d)
  585.           MaxApprovers = note.MaximumApprovers
  586.           DueDate = note.DueDate
  587.           ApprStatus = note.ApprStatus
  588.           ApprName = note.ApprName
  589.           LateAction = note.LateAction
  590.           StatusList = note.StatusList
  591.           RoutingMethod = note.RoutingMethod
  592.           For n = 0 To Ubound(DueDate)
  593.                dtDue.LocalTime = DueDate(n)
  594.                If dtToday.TimeDifference(dtDue) => 0 And ApprStatus(n) = "None" Then
  595.                     Select Case LateAction(n)
  596.                     Case "Approval"
  597.                          dtSet.SetNow
  598.                          ApproveTheRequest(n)
  599.                          note.Save True, True
  600.                     Case "Denial"
  601.                          DenyTheRequest(n)
  602.                          note.Save True, True
  603.                     Case "Notification"
  604.                          SendNotification(n)
  605.                     End Select
  606.                End If
  607.           Next
  608.      Next      
  609.      Exit Sub
  610. ProcessError:
  611.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Initialize"
  612.      Exit Sub
  613. End Sub
  614. '++LotusScript Development Environment:2:2:ApproveTheRequest:1:8
  615. Sub ApproveTheRequest(n)
  616.      On Error Goto ProcessError
  617. 'Set approval status for the current approver
  618.      ApprStatus(n) = "Expired"
  619.      note.ApprStatus = ApprStatus
  620.      
  621. 'Set approval date for the current approver
  622.      ApprDate = note.ApprDate
  623.      ApprDate(n) = dtToday.LSLocalTime
  624.      note.ApprDate = ApprDate
  625.      
  626. 'Set the next approver, the expiration and send mail to the appropriate person(s)          
  627.      SetNextApprover(n)
  628.      If RoutingMethod(0) = "Serial" Then 
  629.           If Not LastApprover Then SetDueDate(n)              
  630.      End If
  631.      If RoutingMethod(0) = "Serial" Or LastApprover Then SendNotification(n)
  632.      Exit Sub
  633. ProcessError:
  634.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"ApproveTheRequest"
  635.      Exit Sub
  636. End Sub
  637. '++LotusScript Development Environment:2:2:SetNextApprover:1:8
  638. Sub SetNextApprover(n)
  639.      On Error Goto ProcessError
  640. 'Initialize the LastApprover flag     
  641.      LastApprover = False
  642.      
  643.      Select Case RoutingMethod(0)
  644. 'If RoutingMethod is serial then NextApprover is simply the next in the list          
  645.      Case "Serial"
  646.           If n = Ubound(ApprName) Then
  647. 'StatusQualifier is only used while the approval cycle is active
  648.                note.RemoveItem("StatusQualifier")
  649.                LastApprover = True
  650.           Else
  651.                NextApprover = ApprName(n + 1)
  652.                note.NextApprover = NextApprover
  653.                note.StatusQualifier = "by " & NextApprover
  654.           End If
  655.      Case "Parallel"
  656. 'Remove CurrentUser from the ApproverList and reset NextApprover to the new list
  657.           ApproverList = note.NextApprover
  658.           ListMax = Ubound(ApproverList)
  659.           Redim tmpList(ListMax)
  660.           x = 0
  661.           For y = 0 To ListMax
  662.                If ApproverList(y) <> ApprName(n) Then
  663.                     tmpList(x) = ApproverList(y)
  664.                     x = x + 1
  665.                End If
  666.           Next
  667.           If x = 0 Then
  668.                tmpList(x) = "None"
  669.                LastApprover = True
  670.           End If
  671.           note.NextApprover = tmpList
  672.      End Select
  673.      
  674. 'If this is the last approver then reset the status and remove the NextApprover field     
  675.      If LastApprover Then
  676.           note.Status = StatusList(7)
  677.           note.RemoveItem("NextApprover")
  678.      End If
  679.      Exit Sub
  680. ProcessError:
  681.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"SetNextApprover"
  682.      Exit Sub
  683. End Sub
  684. '++LotusScript Development Environment:2:2:DenyTheRequest:1:8
  685. Sub DenyTheRequest(n)
  686.      On Error Goto ProcessError
  687. 'Set the approval status, date, and comment for current approver, remove status qualifier and next approver, and set LastApprover flag
  688.      ApprStatus(n) = "Expired"
  689.      note.ApprStatus = ApprStatus         
  690.      note.Status = StatusList(6)
  691.      note.RemoveItem("StatusQualifier")
  692.      note.RemoveItem("NextApprover")              
  693.      LastApprover = True
  694.      
  695. 'Set approval date for the current approver
  696.      ApprDate = note.ApprDate
  697.      ApprDate(n) = dtToday.LSLocalTime
  698.      note.ApprDate = ApprDate
  699.      
  700. 'Send notification          
  701.      SendNotification(n)
  702.      Exit Sub
  703. ProcessError:
  704.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"DenyTheRequest"
  705.      Exit Sub
  706. End Sub
  707. '++LotusScript Development Environment:2:2:SetDueDate:1:8
  708. Sub SetDueDate(n)
  709.      On Error Goto ProcessError
  710.      ApprWin = note.ApprWin
  711.      ListMax = Cint(MaxApprovers(0)) - 1
  712.      Redim tmpList(ListMax)
  713.      
  714. 'Adjust today by the number of days to get the date on which it expires     
  715.      Redim tmpList(n + 1)
  716.      x = 0
  717.      Forall d In DueDate
  718.           tmpList(x) = d
  719.           x = x + 1
  720.      End Forall
  721.      Adjustment = ApprWin(n + 1)
  722.      dtSet.AdjustDay(Cint(Adjustment))
  723.      tmpList(n + 1) = dtSet.LSLocalTime
  724.      
  725.      note.DueDate = tmpList    
  726.      Exit Sub
  727. ProcessError:
  728.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"SetDueDate"
  729.      Exit Sub
  730. End Sub
  731. '++LotusScript Development Environment:2:2:SendNotification:1:8
  732. Sub SendNotification(n)
  733.      
  734. 'Instantiate the object variables for the maildoc note that we will create and its Body field     
  735.      Set maildoc = New NotesDocument(db)
  736.      Set rtitem = New NotesRichTextItem(maildoc, "Body")
  737.      DueDate = note.DueDate
  738.      WorkflowObject = note.WorkflowObject
  739.      
  740. 'If this is the last approver then mail is sent to the requester
  741.      If LastApprover Then
  742.           RequesterName = note.RequesterName
  743.           SendTo = RequesterName(0)
  744.           Select Case LateAction(n)
  745.           Case "Approval"
  746.                StatusString = "approved"
  747.                tmpFlowStatus = "Your " & WorkflowObject(0) & " was automatically approved for " & ApprName(n)
  748.           Case "Denial"
  749.                StatusString = "denied"
  750.                tmpFlowStatus = "Your " & WorkflowObject(0) & " was automatically denied for " & ApprName(n)
  751.           End Select
  752.           Subject = "The past due approval of your " & WorkflowObject(0) & " has been " & StatusString
  753.           maildoc.FlowStatus = tmpFlowStatus
  754.      Else
  755.           If LateAction(n) = "Notification" Then 
  756.                SendTo = ApprName(n)
  757.                Subject = WorkflowObject(0) & " requires your approval by " & Format(DueDate(n), "Long Date")
  758.                maildoc.DueDate = Format(DueDate(n), "Long Date")
  759.           Else
  760.                SendTo = ApprName(n + 1)
  761.                Subject = WorkflowObject(0) & " requires your approval by " & Format(DueDate(n + 1), "Long Date")
  762.                maildoc.DueDate = Format(DueDate(n + 1), "Long Date")
  763.           End If
  764.           maildoc.FlowStatus = "Please follow this doclink to the " & WorkflowObject(0) & " and either approve or deny it."
  765.      End If
  766.      
  767.      On Error Resume Next
  768.      
  769. 'Send it, attaching the form if NotificationMethod = "Send"
  770.      NotificationMethod = note.NotificationMethod
  771.      Select Case NotificationMethod(0)
  772.      Case "Send"         
  773.           note.SendTo = SendTo
  774.           note.Subject = Subject
  775.           note.save True, True
  776.           Call note.Send (True)
  777.      Case "Share"
  778. 'Put a doclink in the Body field and populate the other fields on the Bookmark mail form
  779.           Call rtitem.AppendDocLink(note, "DocLink to " & WorkflowObject(0))
  780.           maildoc.InheritedDbTitle = db.Title
  781.           maildoc.Form = "Bookmark"
  782.           maildoc.SendTo = SendTo
  783.           maildoc.Subject = Subject
  784.           Call maildoc.Send (False)
  785.      End Select
  786.      
  787. End Sub
  788. O=Lotus Notes
  789. O=Lotus Notes
  790. PURSAFO
  791. |.:#U
  792. O=Lotus Notes
  793. CN=Lotus Notes Template Development/O=Lotus Notes
  794. PURSAFO
  795. Fde!f^^
  796. $TITLE
  797. $AssistType
  798. $AssistLastRun
  799. $AssistDocCount
  800. $Comment
  801. $AssistFlags
  802. $AssistTrigger
  803. $AssistInfo
  804. $AssistQuery
  805. $AssistAction
  806. $AssistAction_Ex
  807. $Flags
  808. ed$UpdatedBy$ACLDigest$Signature$DesignVersion$Version$Formula$FormulaClass$Collation$TITLE$Info$Flags$$Script_O$$ScriptName$$FormScript$$$FormScript_Od_ApprComment$Body$ACTIONS$Index$ViewFormat$Comment$Collation1$Collation2$Collation3$Collation4$Collation5$Collation6$Collation7$Collation8$Collation9$Collation10IconBitmap$Fonts$AssistType$AssistLastRun$AssistDocCount$AssistFlags$AssistTrigger$AssistInfo$AssistQuery$AssistAction$AssistAction_Ex$AssistRunInfo$AssistVersion$p_WorkflowObject_Op_ApprovalWindowp_MaximumApproversApprovalDate1ApprovalDate2ApprovalDate3ApprovalDate4ApprovalDate5FunctionPositionListElement1_1ListElement1_2ApprovalWindowListElement1ListElement2ListElement3ListElement1_3ListElement1_4$dApprovalWindow_O$dExpirationAction_OdApprovalWindowApprovalWindow1ApprovalWindow2ApprovalWindow3ApprovalWindow4ApprovalWindow5$dApprWindow_O$dExpireAction_OdApprWindowdListElement1dListElement2dListElement3dListElement4dListElement5ApprWindow1ApprWindow2ApprWindow4ApprWindow5ApprWindow3$d_ApprWindow_O$d_ExpireAction_Od_ApprWindow$d_ApproverSource_O$ApprName1_Od_ListElement1ApprWin1d_ListElement2ApprWin2d_ListElement3ApprWin3d_ListElement4ApprWin4d_ListElement5ApprWin5APPRWIN$WindowTitle$Script$$WorkflowObject$WorkflowObject_O$$MaximumApprovers$MaximumApprovers_OWorkflowObjectRoutingMethodNotificationMethodMaximumApproversEditableListCommentsAllowedFormAdminPromptTitleFinalDestinationDbStatusListWintmpWintmpNametmpFunctiontmpSourcetmpLateActiontmpSourceFieldtmpSourcePathtmpSourceViewtmpSourceServertmpListElementtmpRetrievalKeyApprDateAuthorizedEditorsRequestIdRequesterNameRequestDateStatusStatusQualifierNextApproverApprNameApprFunctionLateActionApprStatus
  809. La03[
  810. Application ProfileApplicationProfileC
  811. CN=Don Hatch/O=IrisCN=Lotus Notes Template Development/O=Lotus Notes##################################################
  812. VoE!    
  813. Next Approver|NextApprover
  814. NextApproverRequesterNameRequestDateWorkflowObjectStatus$Conflict$REF
  815. ApplicationProfile
  816. Status
  817. StatusListv
  818.     L1S2S3S4S5S9S11S12S1a
  819. NextApproverRequesterNameRequestDateWorkflowObjectStatus
  820. RequesterName
  821. RequesterName
  822. RequestDate
  823. RequestDate
  824. WorkflowObject
  825. WorkflowObject
  826. Status
  827. Status
  828. NextApproverRequesterNameRequesterRequestDateDateWorkflowObjectRequest TypeStatusStatus&
  829. This lists all requests - the columns can be sorted on the flyY
  830. CN=Catherine Duffy/O=IrisCN=Lotus Notes Template Development/O=Lotus Notes
  831. ##########################################################
  832. ApprovalLogicCUAN3
  833. CN=Catherine Duffy/O=IrisCN=Lotus Notes Template Development/O=Lotus Notes############
  834. ##########################################################
  835. ##########################################################
  836. ##########################################################
  837. ##########################################################
  838. ##########################################################
  839. ##########################################################
  840. ##########################################################
  841. ##########################################################
  842. ##########################################################
  843. ##########################################################
  844. ##########################################################
  845. ##########################################################
  846. ##########################################################
  847. ##########################################################
  848. ##########################################################
  849. ##########################################################
  850. ##########################################################
  851. ##########################################################
  852. ##########################################################
  853. ##########################################################
  854. Application Profile
  855. Times New Roman
  856. '++LotusScript Development Environment:2:5:(Options):0:66
  857. Option Public
  858. '++LotusScript Development Environment:2:5:(Forward):0:1
  859. Declare Sub GetApproverDetails(i As Integer)
  860. '++LotusScript Development Environment:2:5:(Declarations):0:10
  861. Dim w As NotesUIWorkspace
  862. Dim doc As NotesUIDocument    
  863. Dim note As NotesDocument
  864. Dim SourceList() As Variant
  865. Dim NameList() As Variant
  866. Dim EditApprList() As Variant
  867. Dim FunctionList() As Variant
  868. Dim WinList() As Variant
  869. Dim LateActionList() As Variant
  870. Dim SourceServerList() As Variant
  871. Dim SourcePathList() As Variant
  872. Dim SourceViewList() As Variant
  873. Dim SourceFieldList() As Variant
  874. Dim ListElementList() As Variant
  875. Dim RetrievalKeyList() As Variant
  876. Dim ListMax As Integer
  877. Dim DocWasSaved As Variant
  878. '++LotusScript Development Environment:2:2:GetApproverDetails:1:8
  879. Sub GetApproverDetails(i As Integer)
  880.      On Error Goto ProcessError
  881. 'Fields which begin with d_ will become temporary fields in the approval document.
  882. 'They will be deleted in that doc's QueryClose event.
  883. 'Fields which begin with tmp are temporary to the profile doc and are deleted on its QueryClose.
  884. 'All other fields are copied directly to the Approval doc.     
  885.      
  886.      Editable = note.EditableList
  887.      MaxApprovers = note.MaximumApprovers
  888. 'Subtract 1 to make it zero based
  889.      ListMax = Cint(MaxApprovers(0)) - 1
  890.      
  891. 'Populate ApproverLabel (for use in the dialog boxes)
  892.      note.tmpApproverLabel = "Approver" & Str(i + 1)
  893.      
  894. 'Redefine size of array to equal MaxApprovers     
  895.      Redim SourceList(ListMax)
  896.      Redim NameList(ListMax)
  897.      Redim EditApprList(ListMax)
  898.      Redim FunctionList(ListMax)
  899.      Redim WinList(ListMax)
  900.      Redim LateActionList(ListMax)
  901. 'Retrieve existing field values     
  902.      ApprSource = note.d_ApprSource    
  903.      ApprName = note.d_ApprName
  904.      ApprFunction = note.d_ApprFunction
  905.      ApprWin = note.ApprWin
  906.      LateAction = note.d_LateAction
  907.      EditAppr = note.EditAppr
  908.      For a = 0 To Ubound(EditAppr)
  909.           EditApprList(a) = EditAppr(a)
  910.      Next
  911. 'Populate arrays with the values - we use a holding array instead of the retrieved variant array because
  912. 'the ubound of the retrieved variant array is likely to increase (up to MaxApprovers) and it was not defined
  913. 'as a dynamic array     
  914.      For y = 0 To ListMax
  915.           If Ubound(ApprSource) >= y Then SourceList(y) = ApprSource(y)
  916.           If Ubound(ApprName) >= y Then NameList(y) = ApprName(y)
  917.           If Ubound(ApprFunction) >= y Then FunctionList(y) = ApprFunction(y)
  918.           If Ubound(ApprWin) >= y Then WinList(y) = ApprWin(y)
  919.           If Ubound(LateAction) >= y Then LateActionList(y) = LateAction(y)
  920.      Next
  921. 'Populate defaults
  922.      If SourceList(i) = "" Then
  923.           If i = 0 Then
  924.                note.tmpSource = "Defined"
  925.                note.tmpName = ""
  926.                note.tmpFunction = "Manager"
  927.                note.tmpWin = 5
  928.                note.tmpLateAction = "Notification"
  929.           Else
  930.                note.tmpSource = SourceList(i-1)
  931.                note.tmpName = ""
  932.                note.tmpFunction = FunctionList(i-1)
  933.                note.tmpWin = WinList(i-1)
  934.                note.tmpLateAction = LateActionList(i-1)
  935.           End If
  936.      Else
  937.           note.tmpSource = SourceList(i)
  938.           
  939.           If Not ( (NameList(i) = "Entered when submitted") Or (NameList(i) = "Retrieved from database") ) Then
  940.                note.tmpName = NameList(i)             
  941.           Else
  942.                note.tmpName = ""
  943.           End If
  944.           
  945.           note.tmpFunction = FunctionList(i)
  946.           note.tmpWin = WinList(i)
  947.           note.tmpLateAction = LateActionList(i)    
  948.      End If
  949.      doc.reload
  950.      
  951. 'Display Dialog box     
  952.      If w.DialogBox("(ApproverInfo)", True, True) = False Then Exit Sub
  953. 'Add retrieved values to lists          
  954.      tmpSource = note.tmpSource
  955.      SourceList(i) = tmpSource(0)
  956.      Select Case SourceList(i)
  957.      Case "Entered"
  958.           NameList(i) = "Entered when submitted"
  959.           EditApprList(i) = Cstr(i + 1)
  960.      Case "Retrieved"
  961.           NameList(i) = "Retrieved from database"
  962.           EditApprList(i) = ""
  963.      Case Else
  964.           tmpName = Evaluate("@Name([CN]; tmpName)", note)
  965.           NameList(i) = tmpName(0)
  966.           If Editable(0) = "Yes" Then 
  967.                EditApprList(i) = Cstr(i + 1)
  968.           Else
  969.                EditApprList(i) = ""
  970.           End If
  971.      End Select
  972.      tmpFunction = note.tmpFunction
  973.      FunctionList(i) = tmpFunction(0)
  974.      tmpWin = note.tmpWin
  975.      WinList(i) = tmpWin(0)
  976.      tmpLateAction = note.tmpLateAction
  977.      LateActionList(i) = tmpLateAction(0)
  978. 'Assign list arrays back to the note fields          
  979.      note.d_ApprSource = SourceList
  980.      note.d_ApprName = NameList
  981.      note.EditAppr = EditApprList
  982.      note.d_ApprFunction = FunctionList
  983.      note.ApprWin = WinList
  984.      note.d_LateAction = LateActionList
  985.      
  986. 'If source = Retrieved then check where retrieved from
  987.      Redim SourceServerList(ListMax)
  988.      Redim SourcePathList(ListMax)
  989.      Redim SourceViewList(ListMax)
  990.      Redim SourceFieldList(ListMax)
  991.      Redim ListElementList(ListMax)
  992.      Redim RetrievalKeyList(ListMax)
  993.      SourceServer = note.d_SourceServer
  994.      SourcePath = note.d_SourcePath
  995.      SourceView = note.d_SourceView
  996.      SourceField = note.d_SourceField
  997.      ListElement = note.d_ListElement
  998.      RetrievalKey = note.d_RetrievalKey
  999.      For y = 0 To ListMax
  1000.           If Ubound(SourceServer) >= y Then SourceServerList(y) = SourceServer(y)
  1001.           If Ubound(SourcePath) >= y Then SourcePathList(y) = SourcePath(y)
  1002.           If Ubound(SourceView) >= y Then SourceViewList(y) = SourceView(y)
  1003.           If Ubound(SourceField) >= y Then SourceFieldList(y) = SourceField(y)
  1004.           If Ubound(ListElement) >= y Then ListElementList(y) = ListElement(y)
  1005.           If Ubound(RetrievalKey) >= y Then RetrievalKeyList(y) = RetrievalKey(y)
  1006.      Next
  1007.      tmpSource = note.tmpSource
  1008.      If tmpSource(0) = "Retrieved" Then
  1009.           If SourcePathList(i) = "" Then 
  1010.                If (i = 0) Or (SourcePathList(0) = "") Then
  1011.                     note.tmpSourceServer = ""
  1012.                     note.tmpSourcePath = "names.nsf"
  1013.                     note.tmpSourceView = "($Users)"
  1014.                     note.tmpSourceField = "Manager"
  1015.                     note.tmpListElement = "1"
  1016.                     note.tmpRetrievalKey = "RequesterName"
  1017.                Else
  1018.                     note.tmpSourceServer = SourceServerList(i-1)
  1019.                     note.tmpSourcePath = SourcePathList(i-1)
  1020.                     note.tmpSourceView = SourceViewList(i-1)
  1021.                     note.tmpSourceField = SourceFieldList(i-1)
  1022.                     note.tmpListElement = ListElementList(i-1)
  1023.                     note.tmpRetrievalKey = RetrievalKeyList(i-1)
  1024.                End If
  1025.           Else
  1026.                note.tmpSourceServer = SourceServerList(i)
  1027.                note.tmpSourcePath = SourcePathList(i)
  1028.                note.tmpSourceView = SourceViewList(i)
  1029.                note.tmpSourceField = SourceFieldList(i)
  1030.                note.tmpListElement = ListElementList(i)
  1031.                note.tmpRetrievalKey = RetrievalKeyList(i)
  1032.           End If
  1033.           doc.reload
  1034.           If w.DialogBox("(ApproverRetrievalInfo)", True, True) = True Then
  1035.                tmpSourceServer = note.tmpSourceServer
  1036.                SourceServerList(i) = tmpSourceServer(0)
  1037.                tmpSourcePath = note.tmpSourcePath
  1038.                SourcePathList(i) = tmpSourcePath(0)
  1039.                tmpSourceView = note.tmpSourceView
  1040.                SourceViewList(i) = tmpSourceView(0)
  1041.                tmpSourceField = note.tmpSourceField
  1042.                SourceFieldList(i) = tmpSourceField(0)
  1043.                tmpListElement = note.tmpListElement
  1044.                ListElementList(i) = tmpListElement(0)
  1045.                tmpRetrievalKey = note.tmpRetrievalKey
  1046.                RetrievalKeyList(i) = tmpRetrievalKey(0)
  1047.           End If
  1048.      Else
  1049.           SourceServerList(i) = ""
  1050.           SourcePathList(i) = ""
  1051.           SourceViewList(i) = ""
  1052.           SourceFieldList(i) = ""
  1053.           ListElementList(i) = ""
  1054.           RetrievalKeyList(i) = ""
  1055.      End If
  1056.      
  1057.      note.d_SourceServer = SourceServerList
  1058.      note.d_SourcePath = SourcePathList
  1059.      note.d_SourceView = SourceViewList
  1060.      note.d_SourceField = SourceFieldList
  1061.      note.d_ListElement = ListElementList
  1062.      note.d_RetrievalKey = RetrievalKeyList
  1063.      
  1064.      doc.reload
  1065.      If doc.EditMode Then doc.refresh
  1066.      Exit Sub
  1067. ProcessError:
  1068.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"GetApproverDetails"
  1069.      Exit Sub
  1070. End Sub
  1071. (    X    X    X
  1072. H    H    P    
  1073. -h    #8
  1074. tmpName
  1075.  ApplicationProfile'++LotusScript Development Environment:2:5:(Options):0:66
  1076. '++LotusScript Development Environment:2:5:(Forward):0:1
  1077. Declare Sub Postopen(Source As Notesuidocument)
  1078. Declare Sub Postmodechange(Source As Notesuidocument)
  1079. Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
  1080. Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
  1081. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1082. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1083. Private Sub BindEvents(Byval Objectname_ As String)
  1084.      Static Source As NOTESUIDOCUMENT
  1085.      Set Source = Bind(Objectname_)
  1086.      On Event Postopen From Source Call Postopen
  1087.      On Event Postmodechange From Source Call Postmodechange
  1088.      On Event Queryclose From Source Call Queryclose
  1089.      On Event Querysave From Source Call Querysave
  1090. End Sub
  1091. '++LotusScript Development Environment:2:2:Postopen:1:12
  1092. Sub Postopen(Source As Notesuidocument)
  1093.      On Error Goto ProcessError 
  1094.      Set w = New NotesUIWorkspace
  1095.      Set doc = source
  1096.      Set note = source.Document
  1097.      If Not(doc.EditMode) Then note.SaveOptions = "0"
  1098.      
  1099.      doc.AutoReload = False
  1100.      
  1101.      DocWasSaved = False
  1102.      Exit Sub
  1103. ProcessError:
  1104.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Postopen"
  1105.      Exit Sub
  1106. End Sub
  1107. '++LotusScript Development Environment:2:2:Postmodechange:1:12
  1108. Sub Postmodechange(Source As Notesuidocument)
  1109.      On Error Goto ProcessError
  1110.      If doc.EditMode Then
  1111.           note.SaveOptions = "1"
  1112.           doc.reload
  1113.      End If
  1114.      Exit Sub
  1115. ProcessError:
  1116.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Postmodechange"
  1117.      Exit Sub
  1118. End Sub
  1119. '++LotusScript Development Environment:2:2:Queryclose:1:12
  1120. Sub Queryclose(Source As Notesuidocument, Continue As Variant)
  1121.      On Error Goto ProcessError
  1122.      If DocWasSaved = False Then Exit Sub
  1123.      
  1124.      ItemList = note.Items
  1125.      Forall n In ItemList
  1126.           If Ucase(Left(n.Name, 3)) = "TMP" Then n.Remove
  1127.      End Forall
  1128.      
  1129.      note.Save True, True
  1130.      Exit Sub
  1131. ProcessError:
  1132.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Queryclose"
  1133.      Exit Sub
  1134. End Sub
  1135. '++LotusScript Development Environment:2:2:Querysave:1:12
  1136. Sub Querysave(Source As Notesuidocument, Continue As Variant)
  1137.      Dim NoApprName As Integer
  1138.      
  1139.      On Error Goto ProcessError
  1140.      MaxApprovers = note.MaximumApprovers
  1141.      If MaxApprovers(0) = ""Then
  1142.           Messagebox "What is the maximum number of approvers for this type of approval?", 0,_
  1143.           "Required Field"
  1144.           source.GoToField("MaximumApprovers")
  1145.           continue = False
  1146.           Exit Sub
  1147.      End If
  1148.      
  1149.      ApprName = note.d_ApprName
  1150.      
  1151.      NoApprName = False
  1152.      If Cint(MaxApprovers(0))  <= Ubound(ApprName) + 1Then
  1153.           For n = 1 To Cint(MaxApprovers(0))
  1154.                If ApprName(n-1) = "" Then
  1155.                     NoApprName = True
  1156.                     Exit For
  1157.                End If
  1158.           Next
  1159.      Else
  1160.           NoApprName = True
  1161.      End If
  1162.      
  1163.      If NoApprName Then     
  1164.           Messagebox "You must specify approver details for " & MaxApprovers(0) & " approvers or change the value of # of approvers.", 0, "Application Profile"
  1165.           continue = False
  1166.      Else
  1167.                'remove extra approver fields in case the user changed the number of maximum approvers
  1168.           ListMax = Cint(MaxApprovers(0)) - 1
  1169.      'Redefine size of array to equal MaxApprovers     
  1170.           Redim SourceList(ListMax)
  1171.           Redim NameList(ListMax)
  1172.           Redim EditApprList(ListMax)
  1173.           Redim FunctionList(ListMax)
  1174.           Redim WinList(ListMax)
  1175.           Redim LateActionList(ListMax)     
  1176.           Redim SourceServerList(ListMax)
  1177.           Redim SourcePathList(ListMax)
  1178.           Redim SourceViewList(ListMax)
  1179.           Redim SourceFieldList(ListMax)
  1180.           Redim ListElementList(ListMax)
  1181.           Redim RetrievalKeyList(ListMax)
  1182.      'get the existing data
  1183.           ApprSource = note.d_ApprSource    
  1184.           ApprName = note.d_ApprName
  1185.           ApprFunction = note.d_ApprFunction
  1186.           ApprWin = note.ApprWin
  1187.           LateAction = note.d_LateAction
  1188.           EditAppr = note.EditAppr
  1189.           SourceServer = note.d_SourceServer
  1190.           SourcePath = note.d_SourcePath
  1191.           SourceView = note.d_SourceView
  1192.           SourceField = note.d_SourceField
  1193.           ListElement = note.d_ListElement
  1194.           RetrievalKey = note.d_RetrievalKey
  1195.      'copy the array values
  1196.           On Error Resume Next
  1197.           For y = 0 To ListMax
  1198.                SourceList(y) = ApprSource(y)
  1199.                NameList(y) = ApprName(y)
  1200.                FunctionList(y) = ApprFunction(y)
  1201.                WinList(y) = ApprWin(y)
  1202.                LateActionList(y) = LateAction(y)
  1203.                EditApprList(y) = EditAppr(y)
  1204.                SourceServerList(y) = SourceServer(y)
  1205.                SourcePathList(y) = SourcePath(y)
  1206.                SourceViewList(y) = SourceView(y)
  1207.                SourceFieldList(y) = SourceField(y)
  1208.                ListElementList(y) = ListElement(y)
  1209.                RetrievalKeyList(y) = RetrievalKey(y)          
  1210.           Next
  1211.      'send new data back to fields
  1212.           note.d_ApprSource = SourceList
  1213.           note.d_ApprName = NameList
  1214.           note.EditAppr = EditApprList
  1215.           note.d_ApprFunction = FunctionList
  1216.           note.ApprWin = WinList
  1217.           note.d_LateAction = LateActionList
  1218.           note.d_SourceServer = SourceServerList
  1219.           note.d_SourcePath = SourcePathList
  1220.           note.d_SourceView = SourceViewList
  1221.           note.d_SourceField = SourceFieldList
  1222.           note.d_ListElement = ListElementList
  1223.           note.d_RetrievalKey = RetrievalKeyList
  1224.           DocWasSaved = True 
  1225.      End If
  1226.      Exit Sub
  1227. ProcessError:
  1228.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Querysave"
  1229.      Exit Sub
  1230. End Sub
  1231. ^(    4/
  1232. G@    [T    qT    
  1233. G@    [D
  1234. G@    [t
  1235. G@    [4
  1236. G@    [d
  1237. '++LotusScript Development Environment:2:5:(Options):0:66
  1238. '++LotusScript Development Environment:2:5:(Forward):0:1
  1239. Declare Sub Exiting(Source As Field)
  1240. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1241. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1242. Private Sub BindEvents(Byval Objectname_ As String)
  1243.      Static Source As FIELD
  1244.      Set Source = Bind(Objectname_)
  1245.      On Event Exiting From Source Call Exiting
  1246. End Sub
  1247. '++LotusScript Development Environment:2:2:Exiting:1:12
  1248. Sub Exiting(Source As Field)
  1249.      On Error Goto ProcessError
  1250.      WorkflowObject = doc.FieldGetText("WorkflowObject")
  1251.      If WorkflowObject = "" Then
  1252.           Messagebox "Please enter the name of the form which requires approval.", 0,_
  1253.           "Required Field"
  1254.           doc.GoToField("WorkflowObject")
  1255.      End If
  1256.      Call doc.FieldSetText("PromptTitle", WorkflowObject + " Approval")
  1257.      Exit Sub
  1258. ProcessError:
  1259.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Exiting WorkflowObject"
  1260.      Exit Sub
  1261. End Sub
  1262. '++LotusScript Development Environment:2:5:(Options):0:66
  1263. '++LotusScript Development Environment:2:5:(Forward):0:1
  1264. Declare Sub Exiting(Source As Field)
  1265. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1266. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1267. Private Sub BindEvents(Byval Objectname_ As String)
  1268.      Static Source As FIELD
  1269.      Set Source = Bind(Objectname_)
  1270.      On Event Exiting From Source Call Exiting
  1271. End Sub
  1272. '++LotusScript Development Environment:2:2:Exiting:1:12
  1273. Sub Exiting(Source As Field)
  1274.      On Error Goto ProcessError
  1275.      MaxApprovers = doc.FieldGetText("MaximumApprovers")    
  1276.      If MaxApprovers = "" Then
  1277.           Messagebox "What is the maximum number of approvers for this type of approval?", 0,_
  1278.           "Required Field"
  1279.           doc.GoToField("MaximumApprovers")
  1280.           Call doc.FieldSetText("MaximumApprovers", "5")
  1281.           Exit Sub
  1282.      End If
  1283.      Exit Sub
  1284. ProcessError:
  1285.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Exiting MaximumApprovers"
  1286.      Exit Sub
  1287. End Sub
  1288. Application Profile
  1289.     Basics
  1290. What is the name of the form which requires approval (i.e., Purchase Requisition, Time Sheet...)?
  1291.     Approval form name:
  1292. WorkflowObject
  1293. Is this a Serial (one at a time) or Parallel (all at once) route?
  1294.     Routing type:
  1295. Serial
  1296. RoutingMethod
  1297. One after the other | SerialAll at Once | Parallel
  1298. When an someone needs to approve a form, they are sent an email.  Should this email consist of a doclink to the original document which they must approve or should the entire document be sent?
  1299.     Routing delivery:
  1300. Share
  1301. NotificationMethod
  1302. Doclink | Share
  1303.     Approval List
  1304.     Approver details
  1305.     ( must be filled in! )
  1306. What is the maximum number of individauals who will need to approve this form?
  1307.     # of approvers:
  1308. MaximumApprovers
  1309. 12345
  1310. '++LotusScript Development Environment:2:5:(Options):0:66
  1311. '++LotusScript Development Environment:2:5:(Forward):0:1
  1312. Declare Sub Click(Source As Button)
  1313. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1314. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1315. Private Sub BindEvents(Byval Objectname_ As String)
  1316.      Static Source As BUTTON
  1317.      Set Source = Bind(Objectname_)
  1318.      On Event Click From Source Call Click
  1319. End Sub
  1320. '++LotusScript Development Environment:2:2:Click:1:12
  1321. Sub Click(Source As Button)
  1322.      On Error Goto ProcessError
  1323.      tmpFunction = note.tmpFunction
  1324.      If tmpFunction(0) = "" Then note.tmpFunction = "Manager"
  1325.      
  1326.      Call GetApproverDetails(0)
  1327.      Exit Sub
  1328. ProcessError:
  1329.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Approver 1 Button"
  1330.      Exit Sub
  1331. End Sub
  1332. New Button
  1333. Need a newer version of Notes to execute this button.
  1334.     0S0E
  1335.     Approver 1...
  1336. FieldValue
  1337. d_ApprName
  1338.     1S2S6S
  1339. SourceValue
  1340. d_ApprSource
  1341.     0R1S2S6S
  1342. SourceValue
  1343. Defined
  1344. FieldValue
  1345. Not defined yet
  1346. SourceValue
  1347. Retrieved
  1348. Retrieved from 
  1349. d_SourcePath
  1350. SourceValue
  1351. Entered
  1352. Entered when submitted
  1353. FieldValue
  1354.     0RR3S4S5S6S7S8S9S10S12S14S15S16S18S19S20S24S27S28S29S31S33StmpName1
  1355. d_ApprFunction
  1356. tmpFunc1
  1357. Should the submitter of the form be allowed to modify the Approver list?
  1358.     Is the list editable:
  1359. EditableList
  1360. Yes | YesNo | No
  1361. MaximumApproversX
  1362.     4S5S
  1363. '++LotusScript Development Environment:2:5:(Options):0:66
  1364. '++LotusScript Development Environment:2:5:(Forward):0:1
  1365. Declare Sub Click(Source As Button)
  1366. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1367. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1368. Private Sub BindEvents(Byval Objectname_ As String)
  1369.      Static Source As BUTTON
  1370.      Set Source = Bind(Objectname_)
  1371.      On Event Click From Source Call Click
  1372. End Sub
  1373. '++LotusScript Development Environment:2:2:Click:1:12
  1374. Sub Click(Source As Button)
  1375.      On Error Goto ProcessError
  1376.      If note.tmpFunc1(0) = "" Then
  1377.           Msgbox "Please enter the Approver Information in order."
  1378.           Exit Sub
  1379.      End If
  1380.      Call GetApproverDetails(1)
  1381.      Exit Sub
  1382. ProcessError:
  1383.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Approver 2 Button"
  1384.      Exit Sub
  1385. End Sub
  1386. New Button
  1387. Need a newer version of Notes to execute this button.
  1388.     0S0E
  1389.     Approver 2...
  1390. FieldValue
  1391. d_ApprSourcej
  1392. d_ApprName
  1393. Not defined yet
  1394.     1S2S8S9S11S17S20S24S
  1395. SourceValue
  1396. d_ApprSource
  1397.     0R1S2S8S11S
  1398. SourceValue
  1399. Defined
  1400. FieldValue
  1401. Not defined yet
  1402. SourceValue
  1403. Retrieved
  1404. Retrieved from 
  1405. d_SourcePath
  1406. SourceValue
  1407. Entered
  1408. Entered when submitted
  1409. FieldValue
  1410.     0RR3S4S5S6S7S8S9S10S12S14S15S16S18S19S20S26S29S33S34S35S37S39S
  1411. tmpName2
  1412. d_ApprSourcej
  1413. d_ApprFunction
  1414.     6S7S9S15S18S22StmpFunc2
  1415. MaximumApproversX
  1416.     4S5S
  1417. '++LotusScript Development Environment:2:5:(Options):0:66
  1418. '++LotusScript Development Environment:2:5:(Forward):0:1
  1419. Declare Sub Click(Source As Button)
  1420. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1421. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1422. Private Sub BindEvents(Byval Objectname_ As String)
  1423.      Static Source As BUTTON
  1424.      Set Source = Bind(Objectname_)
  1425.      On Event Click From Source Call Click
  1426. End Sub
  1427. '++LotusScript Development Environment:2:2:Click:1:12
  1428. Sub Click(Source As Button)
  1429.      On Error Goto ProcessError
  1430.      If note.tmpFunc2(0) = "" Then
  1431.           Msgbox "Please enter the Approver Information in order."
  1432.           Exit Sub
  1433.      End If
  1434.      Call GetApproverDetails(2)
  1435.      Exit Sub
  1436. ProcessError:
  1437.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Approver 3 Button"
  1438.      Exit Sub
  1439. End Sub
  1440. New Button
  1441. Need a newer version of Notes to execute this button.
  1442.     0S0E
  1443.     Approver 3...
  1444. FieldValue
  1445. d_ApprSourcej
  1446. d_ApprName
  1447. Not defined yet
  1448.     1S2S8S9S11S17S20S24S
  1449. SourceValue
  1450. d_ApprSource
  1451.     0R1S2S8S11S
  1452. SourceValue
  1453. Defined
  1454. FieldValue
  1455. Not defined yet
  1456. SourceValue
  1457. Retrieved
  1458. Retrieved from 
  1459. d_SourcePath
  1460. SourceValue
  1461. Entered
  1462. Entered when submitted
  1463. FieldValue
  1464.     0RR3S4S5S6S7S8S9S10S12S14S15S16S18S19S20S26S29S33S34S35S37S39S
  1465. tmpName3
  1466. d_ApprSourcej
  1467. d_ApprFunction
  1468.     6S7S9S15S18S22StmpFunc3
  1469. MaximumApproversX
  1470.     4S5S
  1471. '++LotusScript Development Environment:2:5:(Options):0:66
  1472. '++LotusScript Development Environment:2:5:(Forward):0:1
  1473. Declare Sub Click(Source As Button)
  1474. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1475. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1476. Private Sub BindEvents(Byval Objectname_ As String)
  1477.      Static Source As BUTTON
  1478.      Set Source = Bind(Objectname_)
  1479.      On Event Click From Source Call Click
  1480. End Sub
  1481. '++LotusScript Development Environment:2:2:Click:1:12
  1482. Sub Click(Source As Button)
  1483.      On Error Goto ProcessError
  1484.      If note.tmpFunc3(0) = "" Then
  1485.           Msgbox "Please enter the Approver Information in order."
  1486.           Exit Sub
  1487.      End If
  1488.      Call GetApproverDetails(3)
  1489.      Exit Sub
  1490. ProcessError:
  1491.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Approver 4 Button"
  1492.      Exit Sub
  1493. End Sub
  1494. New Button
  1495. Need a newer version of Notes to execute this button.
  1496.     0S0E
  1497.     Approver 4...
  1498. FieldValue
  1499. d_ApprSourcej
  1500. d_ApprName
  1501. Not defined yet
  1502.     1S2S8S9S11S17S20S24S
  1503. SourceValue
  1504. d_ApprSource
  1505.     0R1S2S8S11S
  1506. SourceValue
  1507. Defined
  1508. FieldValue
  1509. Not defined yet
  1510. SourceValue
  1511. Retrieved
  1512. Retrieved from 
  1513. d_SourcePath
  1514. SourceValue
  1515. Entered
  1516. Entered when submitted
  1517. FieldValue
  1518.     0RR3S4S5S6S7S8S9S10S12S14S15S16S18S19S20S26S29S33S34S35S37S39S
  1519. tmpName4
  1520. d_ApprSourcej
  1521. d_ApprFunction
  1522.     6S7S9S15S18S22StmpFunc4
  1523. MaximumApproversX
  1524.     4S5S
  1525. '++LotusScript Development Environment:2:5:(Options):0:66
  1526. '++LotusScript Development Environment:2:5:(Forward):0:1
  1527. Declare Sub Click(Source As Button)
  1528. '++LotusScript Development Environment:2:5:(Declarations):0:2
  1529. '++LotusScript Development Environment:2:2:BindEvents:1:129
  1530. Private Sub BindEvents(Byval Objectname_ As String)
  1531.      Static Source As BUTTON
  1532.      Set Source = Bind(Objectname_)
  1533.      On Event Click From Source Call Click
  1534. End Sub
  1535. '++LotusScript Development Environment:2:2:Click:1:12
  1536. Sub Click(Source As Button)
  1537.      On Error Goto ProcessError
  1538.      If note.tmpFunc4(0) = "" Then
  1539.           Msgbox "Please enter the Approver Information in order."
  1540.           Exit Sub
  1541.      End If
  1542.      Call GetApproverDetails(4)
  1543.      Exit Sub
  1544. ProcessError:
  1545.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Approver 5 Button"
  1546.      Exit Sub
  1547. End Sub
  1548. New Button
  1549. Need a newer version of Notes to execute this button.
  1550.     0S0E
  1551.     Approver 5...
  1552. FieldValue
  1553. d_ApprSourcej
  1554. d_ApprName
  1555. Not defined yet
  1556.     1S2S8S9S11S17S20S24S
  1557. SourceValue
  1558. d_ApprSource
  1559.     0R1S2S8S11S
  1560. SourceValue
  1561. Defined
  1562. FieldValue
  1563. Not defined yet
  1564. SourceValue
  1565. Retrieved
  1566. Retrieved from 
  1567. d_SourcePath
  1568. SourceValue
  1569. Entered
  1570. Entered when submitted
  1571. FieldValue
  1572.     0RR3S4S5S6S7S8S9S10S12S14S15S16S18S19S20S26S29S33S34S35S37S39S
  1573. tmpName5
  1574. d_ApprSourcej
  1575. d_ApprFunction
  1576.     6S7S9S15S18S22StmpFunc5
  1577. d_ApproverSource
  1578. Manual
  1579.     1S2S3S4S
  1580. Options
  1581.     Options
  1582. Do you want each Approvers to have the option of entering comments?
  1583.     Approvers enter comments:
  1584. CommentsAllowed
  1585. Yes | YesNo | No
  1586. Occasionally, a workflow becomes stalled and someone must resolve the problem then cause the flow to resume.  This person is typically associated with the business group which requires the approval, such as Purchasing, Payroll, Human Resources, etc., and has the authority to take any action on the document.  What person or group will perform this administrative function?
  1587.     Form administrator:
  1588. FormAdmin
  1589. What text would you like to appear in the title bar of prompt boxes issued by this form?
  1590.     Prompt caption:
  1591. PromptTitle
  1592. If this form will be emailed to another database once approval is complete, enter the Mail-in Database name here.
  1593.     Mail-in database:
  1594. FinalDestinationDb
  1595.     Terminology
  1596. What terminology does your workplace use for "New" (e.g., To Be Opened, Initiated, Latest, etc.)
  1597. What terminology does your workplace use for "Open" (e.g., Current, Valid, etc.)
  1598.     Open
  1599. What terminology does your workplace use for "Awaiting Approval" (e.g., Unprocessed, To Be Done, etc.)
  1600.     Awaiting Approval
  1601. What terminology does your workplace use for "Approved" (e.g., Signed, Passed, etc.)
  1602.     Approved
  1603. What terminology does your workplace use for "Denied" (e.g., Not Approved, Approval Withheld, etc.)
  1604.     Denied
  1605. What terminology does your workplace use for "Withdrawn" (e.g., Removed, Retracted, etc.)
  1606.     Withdrawn
  1607. What terminology does your workplace use for "Closed" (e.g., Ended, Concluded, etc.)
  1608.     Closed
  1609. What terminology does your workplace use for "Complete" (e.g., Concluded, Ended, etc.)
  1610.     Complete
  1611. Awaiting Approval
  1612. Approved
  1613. Denied
  1614. Withdrawn
  1615. Closed
  1616. Complete
  1617.     1S2R3S4R5S6R7S8R9S10R11S12R13S14R
  1618. StatusListj
  1619. There must be one status corresponding with each listed on the form.{
  1620.     6S7S9S14SStatusList
  1621. Closer 
  1622.     0S0E
  1623. _Edit Document
  1624. Categori_ze
  1625. Send Docu_ment
  1626. _Forward
  1627. _Move to Folder...
  1628. _Remove from Folder
  1629. O=Lotus Notes
  1630. O=Lotus Notes
  1631. PURSAFO
  1632. |.:#U
  1633. O=Lotus Notes
  1634. CN=Lotus Notes Template Development/O=Lotus Notes
  1635. PURSAFO
  1636. Fde!f^^
  1637. $p_WorkflowObject_O
  1638. p_ApprovalWindow
  1639. p_MaximumApprovers
  1640. ApprovalDate1
  1641. ApprovalDate2
  1642. ApprovalDate3
  1643. ApprovalDate4
  1644. ApprovalDate5
  1645. FunctionPosition
  1646. ListElement1_1
  1647. ListElement1_2
  1648. ApprovalWindow
  1649. ListElement1
  1650. ListElement2
  1651. ListElement3
  1652. ListElement1_3
  1653. ListElement1_4
  1654. $dApprovalWindow_O
  1655. $dExpirationAction_O
  1656. dApprovalWindow
  1657. ApprovalWindow1
  1658. ApprovalWindow2
  1659. ApprovalWindow3
  1660. ApprovalWindow4
  1661. ApprovalWindow5
  1662. $dApprWindow_O
  1663. $dExpireAction_O
  1664. dApprWindow
  1665. dListElement1
  1666. dListElement2
  1667. dListElement3
  1668. dListElement4
  1669. dListElement5
  1670. ApprWindow1
  1671. ApprWindow2
  1672. ApprWindow4
  1673. ApprWindow5
  1674. ApprWindow3
  1675. $d_ApprWindow_O
  1676. $d_ExpireAction_O
  1677. d_ApprWindow
  1678. $d_ApproverSource_O
  1679. $ApprName1_O
  1680. d_ListElement1
  1681. ApprWin1
  1682. d_ListElement2
  1683. ApprWin2
  1684. d_ListElement3
  1685. ApprWin3
  1686. d_ListElement4
  1687. ApprWin4
  1688. d_ListElement5
  1689. ApprWin5
  1690. APPRWIN
  1691. $TITLE
  1692. $Info
  1693. $WindowTitle
  1694. $Script
  1695. $$Script_O
  1696. $$ScriptName
  1697. $$FormScript
  1698. $$$FormScript_O
  1699. $$WorkflowObject
  1700. $WorkflowObject_O
  1701. $$MaximumApprovers
  1702. $MaximumApprovers_O
  1703. $Body
  1704. $ACTIONS
  1705.  (ApproverInfo)
  1706. tmpSource
  1707. Defined
  1708. ApprovalDoc
  1709.     3S4S5S6S8S
  1710.  @  @@ @` @
  1711. @@ @@@@@`@@
  1712. `@ `@@`@``@
  1713. tmpSource
  1714. ApprovalDoc
  1715.     1S2S
  1716. Source of name:
  1717. If window is missed:
  1718. Approval window:
  1719. Approver function:
  1720. day(s)
  1721. tmpWin
  1722. Please enter an approval window.{
  1723. tmpWin
  1724. Approval window must be at least one day{
  1725.     3S4S6S11StmpWin
  1726. tmpName
  1727. tmpName
  1728. tmpName
  1729. tmpSource
  1730. Defined
  1731. Please click the button to add the Approver's Name, or change the source.
  1732.     3S4S5S6S7S8S10S18S
  1733. tmpFunction
  1734. Please enter the function of this approver (ex. Manager).
  1735.     0R3S4S6S11StmpFunction
  1736. tmpSource
  1737. tmpSource
  1738. ApprovalDoc
  1739. tmpSource
  1740. Defined in this Profile | Defined
  1741. Entered on the form by the submitter | Entered
  1742. Retrieved from a database | Retrieved
  1743.     3S4S6S8S9S10S11S12S
  1744. tmpLateAction
  1745. Approve the form | ApprovalReject the form | DenialSend a reminder | NotificationDo nothing | Nothing
  1746. tmpApproverLabel
  1747. tmpApproverLabel
  1748. Approver name:
  1749. tmpName
  1750.     1S2S3S6S7S
  1751.  @  @@ @` @
  1752. @@ @@@@@`@@
  1753. `@ `@@`@``@
  1754. ficationDo nothi
  1755. O=Lotus Notes
  1756. O=Lotus Notes
  1757. PURSAFO
  1758. |.:#U
  1759. O=Lotus Notes
  1760. CN=Lotus Notes Template Development/O=Lotus Notes
  1761. PURSAFO
  1762. Fde!f^^
  1763. ApprWin1
  1764. $TITLE
  1765. $Info
  1766. $$ScriptName
  1767. tmpWin
  1768. $Body
  1769.  (ApproverRetrievalInfo)
  1770. Source Db Server:
  1771. Element in List:
  1772. Source Doc Field:
  1773. Source Db View:
  1774. Manager
  1775. tmpSourceField
  1776. Please enter the the field name from which the data will be retrieved.{
  1777.     3S4S6S11StmpSourceField
  1778. names.nsf
  1779. tmpSourcePath
  1780. Please enter the database path as directoryfilename.nsf.{
  1781.     3S4S6S11StmpSourcePath
  1782. ($Users)
  1783. tmpSourceView
  1784. Please enter the view from which the data will be retrieved.{
  1785.     3S4S6S11StmpSourceView
  1786. tmpSourceServer
  1787. tmpListElement
  1788. If this field is a text list, please enter the element in the list.  If it is not a text list, enter 1.
  1789. tmpListElementX
  1790. Please enter a number.{
  1791.     3S4S6S11S19S24StmpListElement
  1792. tmpApproverLabel
  1793. tmpApproverLabel
  1794. Source Db Path:
  1795. Key Field:
  1796. RequesterName
  1797. tmpRetrievalKey
  1798. Please enter the name of the field on the approval form which will be used a a key to retrieve the data.{
  1799.     3S4S6S11StmpRetrievalKey
  1800. O=Lotus Notes
  1801. O=Lotus Notes
  1802. PURSAFO
  1803. |.:#U
  1804. O=Lotus Notes
  1805. CN=Lotus Notes Template Development/O=Lotus Notes
  1806. PURSAFO
  1807. Fde!f^^
  1808. r!,Hi
  1809. ueJ''
  1810. 2vs]S
  1811. ApprWin1
  1812. tmpWin
  1813. $TITLE
  1814. $Info
  1815. $$ScriptName
  1816. $Body
  1817. Categori_ze
  1818. _Edit Document
  1819. Send Docu_ment
  1820. _Forward
  1821. Create New Request"
  1822. tList
  1823. ApplicationProfiles
  1824.     1S2S6S8S10S
  1825. tList
  1826. Error
  1827. An error has occured.  Please try again.
  1828. tList
  1829.     0R1S2S9S15S17S21S
  1830. DocType
  1831. New Request
  1832. Choose one of the following:
  1833.     0R1S2S3S7S9S11S13S
  1834. DocType
  1835.     0R4S
  1836. when syncronous commands work, don't do ENVIRONMENT
  1837.     0R1S
  1838. @V4Command([Compose]; DocType);
  1839.     0R1S
  1840. FIELD WorkflowObject := DocType
  1841.     0R1S
  1842. _Move to Folder...
  1843. _Remove from Folder...
  1844. Instructions 
  1845.     0S0E
  1846. O=Lotus Notes
  1847. O=Lotus Notes
  1848. PURSAFO
  1849. |.:#U
  1850. O=Lotus Notes
  1851. CN=Lotus Notes Template Development/O=Lotus Notes
  1852. PURSAFO
  1853. Fde!f^^
  1854. $Index
  1855. $Formula
  1856. $FormulaClass
  1857. $ViewFormat
  1858. $Comment
  1859. $ACTIONS
  1860. "MS Sans Serif
  1861. '++LotusScript Development Environment:2:5:(Options):0:74
  1862. Option Public
  1863. '++LotusScript Development Environment:2:5:(Forward):0:1
  1864. Declare Sub GetApproverNames(x)
  1865. Declare Sub IdentifyUser
  1866. Declare Sub SetNextApprover
  1867. Declare Sub SetDueDate
  1868. Declare Sub SendNotification
  1869. Declare Sub ResetAuthorNames
  1870. Declare Sub LoadDisplayFields
  1871. Declare Sub InitializeNewDoc
  1872. '++LotusScript Development Environment:2:5:(Declarations):0:10
  1873. '-----OBJECT VARIABLES-----
  1874. Dim w As NotesUIWorkspace
  1875. Dim doc As NotesUIDocument
  1876. Dim note As NotesDocument
  1877. Dim profile As NotesDocument
  1878. Dim maildoc As NotesDocument
  1879. Dim s As NotesSession
  1880. Dim db As NotesDatabase
  1881. Dim view As NotesView
  1882. Dim item As NotesItem
  1883. Dim dt As NotesDateTime
  1884. Dim db1 As NotesDatabase
  1885. Dim view1 As NotesView
  1886. Dim note1 As NotesDocument
  1887. '------DATA VARIABLES
  1888. Dim StatusList As Variant
  1889. Dim Status As Variant
  1890. Dim WorkflowObject As Variant
  1891. Dim PromptTitle As Variant
  1892. Dim MaxApprovers As Variant
  1893. Dim RoutingMethod As Variant
  1894. Dim DueDate As Variant
  1895. Dim ApprName As Variant
  1896. '------PROCESSING VARIABLES
  1897. Dim CurrentApprover As Variant
  1898. Dim NextAppr As Variant
  1899. Dim ApprovalCount As Variant
  1900. Dim NextApprover As Variant
  1901. Dim CurrentUser As String
  1902. Dim ApproverList() As Variant
  1903. Dim Action As Variant
  1904. Dim LastApprover As Integer
  1905. Dim DocWasSaved As Variant
  1906. Dim tmpList() As Variant
  1907. Dim tmpList1() As Variant
  1908. Dim SourceServer As Variant
  1909. Dim SourcePath As Variant
  1910. Dim SourceView As Variant
  1911. Dim SourceKey As Variant
  1912. Dim SourceField As Variant
  1913. Dim SourceElement As Variant
  1914. Dim PreviousDb As Variant
  1915. Dim PreviousView As Variant
  1916. Dim PreviousKey As Variant
  1917. '++LotusScript Development Environment:2:2:GetApproverNames:1:8
  1918. Sub GetApproverNames(x)
  1919.      On Error Goto ProcessError
  1920.      Print "GettingApproverNames"
  1921.      
  1922.      KeyValue = note.GetItemValue(SourceKey(x))
  1923.      ListElement = Cint(SourceElement(x)) - 1
  1924.      
  1925. 'Do not get the input db, view, and note again unless it is different from the previous ones
  1926.      If PreviousDb <> SourceServer(x) & SourcePath(x) Then
  1927.           Set db1 = New NotesDatabase(SourceServer(x), SourcePath(x))
  1928.           
  1929.           'If for some reason the database isn't found, post an error to user and abort
  1930.           If (db1 Is Nothing) Then
  1931.                Messagebox "Could not proceed, database not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1932.                doc.close
  1933.                Print
  1934.                End
  1935.           End If          
  1936.           
  1937.           Set view1 = db1.GetView(SourceView(x))
  1938.           
  1939.           'If for some reason the view isn't found, post an error to user and abort
  1940.           If (view1 Is Nothing) Then
  1941.                Messagebox "Could not proceed, view not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1942.                doc.close
  1943.                Print
  1944.                End
  1945.           End If
  1946.           
  1947.           Set note1 = view1.GetDocumentByKey(KeyValue(0),False)
  1948.           
  1949.           'If for some reason the document isn't found, post an error to user and abort
  1950.           If (note1 Is Nothing) Then
  1951.                Messagebox "Could not proceed, document not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1952.                doc.close
  1953.                Print
  1954.                End
  1955.           End If
  1956.      Else
  1957.           If PreviousView <> SourceView(x) Then 
  1958.                Set view1 = db1.GetView(SourceView(x))
  1959.                
  1960.                'If for some reason the view isn't found, post an error to user and abort
  1961.                If (view1 Is Nothing) Then
  1962.                     Messagebox "Could not proceed, view not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1963.                     doc.close
  1964.                     Print
  1965.                     End
  1966.                End If
  1967.                
  1968.                Set note1 = view1.GetDocumentByKey(KeyValue(0),False)
  1969.                
  1970.                'If for some reason the document isn't found, post an error to user and abort               
  1971.                If (note1 Is Nothing) Then
  1972.                     Messagebox "Could not proceed, document not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1973.                     doc.close
  1974.                     Print
  1975.                     End
  1976.                End If
  1977.           Else
  1978.                If PreviousKey <> SourceKey(x) Then Set note1 = view1.GetDocumentByKey(KeyValue(0),False)
  1979.                
  1980.                'If for some reason the document isn't found, post an error to user and abort
  1981.                If (note1 Is Nothing) Then
  1982.                     Messagebox "Could not proceed, document not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1983.                     doc.close
  1984.                     Print
  1985.                     End
  1986.                End If
  1987.           End If
  1988.      End If
  1989.      
  1990. 'Get the name and put it in the appropriate ApprName field               
  1991.      If Not( note1.HasItem(SourceField(x))) Then
  1992.           Messagebox "Could not proceed, field not found. Please contact " + note.FormAdmin(0), 0 + 64, "Design Error"
  1993.           doc.close
  1994.           Print
  1995.           End
  1996.      End If
  1997.      
  1998.      NameList = note1.GetItemValue(SourceField(x))
  1999.      ApprName(x) = NameList(ListElement)
  2000.      note.ApprName = ApprName
  2001.      ApprName = Evaluate("@Name([CN]; ApprName)", note)
  2002.      note.ApprName = ApprName
  2003.      
  2004. 'Hold the current values as Previous so they can be used in the next loop to compare to new current               
  2005.      PreviousDb = SourceServer(x) & SourcePath(x)
  2006.      PreviousView = SourceView(x)
  2007.      PreviousKey = SourceKey(x)
  2008.      Exit Sub
  2009. ProcessError:
  2010.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"GetApproverNames"
  2011.      Exit Sub
  2012. End Sub
  2013. '++LotusScript Development Environment:2:2:IdentifyUser:1:8
  2014. Sub IdentifyUser
  2015.      On Error Goto ProcessError
  2016.      Print "IdentifyingUser"
  2017.      
  2018.    Builds an array called ApproverList, which is the list of remaining approvers.
  2019.    Determines the number (position) of the current and next approver.
  2020. %ENDREM
  2021.      
  2022. 'Initilize array bounds to the largest it can be (MaxApprovers - 1 because ApproverList is zero based)     
  2023.      ListMax = Cint(MaxApprovers(0)) - 1
  2024.      Redim ApproverList(ListMax)
  2025.      ApprStatus = note.ApprStatus
  2026.      ApprName = note.ApprName
  2027.      CurrentApprover = 0
  2028.      x = 0
  2029. 'Populate the array with all names with status = "None" and set CurrentApprover to whatever number in the list it is
  2030.      For n = 0 To ListMax
  2031.           If ApprStatus(n) = "None" Then
  2032.                If ApprName(n) = CurrentUser Then CurrentApprover = n
  2033.                ApproverList(x) = ApprName(n)
  2034.                x = x + 1
  2035.           End If
  2036.      Next
  2037. 'Reset the bounds of the array to fit its actual size     
  2038.      Redim Preserve ApproverList(x-1)
  2039.      
  2040.      If Action(0) = "Submit" Then
  2041.           NextAppr = CurrentApprover
  2042.      Else
  2043.           NextAppr = CurrentApprover + 1
  2044.      End If
  2045.      Exit Sub
  2046. ProcessError:
  2047.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"IdentifyUser"
  2048.      Exit Sub     
  2049. End Sub
  2050. '++LotusScript Development Environment:2:2:SetNextApprover:1:8
  2051. Sub SetNextApprover
  2052.      On Error Goto ProcessError
  2053.      Print "SettingNextApprover"
  2054.      
  2055. 'Initialize the LastApprover flag     
  2056.      LastApprover = False
  2057.      
  2058.      Select Case RoutingMethod(0)
  2059. 'If RoutingMethod is serial then NextApprover is simply the next in the list          
  2060.      Case "Serial"
  2061.           If NextAppr > Ubound(ApprName) Then
  2062. 'StatusQualifier is only used while the approval cycle is active
  2063.                note.RemoveItem("StatusQualifier")
  2064.                LastApprover = True
  2065.           Else
  2066.                NextApprover = ApprName(NextAppr)
  2067.                note.NextApprover = NextApprover
  2068.                note.StatusQualifier = "by " & NextApprover
  2069.           End If
  2070.      Case "Parallel"
  2071.           Select Case Action(0)
  2072. 'If submitting - the next approver is all approvers               
  2073.           Case "Submit"
  2074.                note.NextApprover = ApproverList
  2075. 'If Approving - remove CurrentUser from the ApproverList and reset NextApprover to the new list
  2076.           Case "Approve"
  2077.                ListMax = Ubound(ApproverList)
  2078.                Redim tmpList(ListMax)
  2079.                x = 0
  2080.                For y = 0 To ListMax
  2081.                     If ApproverList(y) <> CurrentUser Then
  2082.                          tmpList(x) = ApproverList(y)
  2083.                          x = x + 1
  2084.                     End If
  2085.                Next
  2086.                If x = 0 Then
  2087.                     tmpList(x) = "None"
  2088.                     LastApprover = True
  2089.                End If
  2090.                note.NextApprover = tmpList
  2091.           End Select
  2092.      End Select
  2093.      
  2094. 'If this is the last approver then reset the status and remove the NextApprover field     
  2095.      If LastApprover Then
  2096.           If Action(0) = "Approve" Then note.Status = StatusList(7)
  2097.           note.RemoveItem("NextApprover")
  2098.      End If
  2099.      Exit Sub
  2100. ProcessError:
  2101.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"SetNextApprover"
  2102.      Exit Sub
  2103. End Sub
  2104. '++LotusScript Development Environment:2:2:SetDueDate:1:8
  2105. Sub SetDueDate
  2106.      On Error Goto ProcessError
  2107.      Print "SettingDueDate"
  2108.      
  2109.      ApprWin = note.ApprWin
  2110.      ListMax = Cint(MaxApprovers(0)) - 1
  2111.      Redim tmpList(ListMax)
  2112.      
  2113. 'Adjust today by the number of days to get the date on which it expires     
  2114.      
  2115.      Select Case RoutingMethod(0)
  2116. 'If Parallel - adjust all dates          
  2117.      Case "Parallel"
  2118.           For n = 0 To ListMax
  2119.                Adjustment = ApprWin(n)
  2120.                dt.AdjustDay(Int(Adjustment))
  2121.                tmpList(n) = dt.LSLocalTime
  2122.                dt.SetNow
  2123.           Next
  2124. 'If Serial - only adjust the date for the Next Approver          
  2125.      Case "Serial"
  2126.           DueDate = note.DueDate
  2127.           Redim tmpList(NextAppr)
  2128.           x = 0
  2129.           Forall d In DueDate
  2130.                tmpList(x) = d
  2131.                
  2132.                If (tmpList(x) = "") Then
  2133.                     tmpList(x) = dt.LSLocalTime
  2134.                End If
  2135.                
  2136.                x = x + 1
  2137.           End Forall
  2138.           Adjustment = ApprWin(NextAppr)
  2139.           dt.AdjustDay(Int(Adjustment))
  2140.           tmpList(NextAppr) = dt.LSLocalTime
  2141.      End Select
  2142.      
  2143.      note.DueDate = tmpList
  2144. 'The following field is only used for display in the ToDo view of the mail file     
  2145.      note.DueDateTime = note.DueDate
  2146.      Exit Sub
  2147. ProcessError:
  2148.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"SetDueDate"
  2149.      Exit Sub
  2150. End Sub
  2151. '++LotusScript Development Environment:2:2:SendNotification:1:8
  2152. Sub SendNotification
  2153.      Print "SendingNotification"
  2154.      
  2155. 'Instantiate the object variables for the maildoc note that we will create and its Body field     
  2156.      Set maildoc = New NotesDocument(db)
  2157.      Set rtitem = New NotesRichTextItem(maildoc, "Body")
  2158.      DueDate = note.DueDate
  2159.      
  2160. 'If this is the last approver then mail is sent to the requester
  2161. 'The Recipient variable is used in the Messagebox at the end of this sub, to tell the user who mail was sent to
  2162.      If LastApprover Then
  2163.           RequesterName = note.RequesterName
  2164.           SendTo = RequesterName(0)
  2165.           Recipient = RequesterName(0)
  2166.           Select Case Action(0)
  2167.           Case "Approve"
  2168.                StatusString = "approved"
  2169.                tmpFlowStatus = "Approval of your " & WorkflowObject(0) & " is complete.  "
  2170.           Case "Deny"
  2171.                StatusString = "denied"
  2172.                tmpFlowStatus = WorkflowObject(0) & " has been denied by " & CurrentUser
  2173.           Case "Withdraw"
  2174.                StatusString = "withdrawn"
  2175.                tmpFlowStatus = "Your " & WorkflowObject(0) &_
  2176.                " has been withdrawn.  You may be able to resubmit it at another time.  "
  2177.           End Select
  2178.           Subject = "Your " & WorkflowObject(0) & " has been " & StatusString
  2179.           maildoc.FlowStatus = tmpFlowStatus
  2180.      Else
  2181. 'If there are more approvers we need the appropriate expire date because we put in on the message         
  2182.           Select Case RoutingMethod(0)
  2183. 'If it is Serial - mail gets sent to the NextApprover                        
  2184.           Case "Serial"
  2185.                SendTo = NextApprover
  2186.                Recipient = NextApprover
  2187. 'If it is Parallel - mail gets sent to all approvers               
  2188.           Case "Parallel"     
  2189.                SendTo = ApproverList
  2190.                Recipient = "all Approvers"
  2191.           End Select
  2192.           Subject = WorkflowObject(0) & " requires your approval by " & Format(DueDate(NextAppr), "Long Date")
  2193.           maildoc.DueDate = Format(DueDate(NextAppr), "Long Date")
  2194.           maildoc.FlowStatus = "Please follow this doclink to the " & WorkflowObject(0) & " and either approve or deny it."
  2195.      End If
  2196.      
  2197.      On Error Goto ErrorSending
  2198.      
  2199. 'Send it, attaching the form if NotificationMethod = "Send"
  2200.      NotificationMethod = note.NotificationMethod
  2201.      Select Case NotificationMethod(0)
  2202.      Case "Send"         
  2203.           note.SendTo = SendTo
  2204.           note.Subject = Subject
  2205.           note.save True, True
  2206.           Call note.Send (True)
  2207.      Case "Share"
  2208. 'Put a doclink in the Body field and populate the other fields on the Bookmark mail form
  2209.           Call rtitem.AppendDocLink(note, "DocLink to " & WorkflowObject(0))
  2210.           maildoc.InheritedDbTitle = db.Title
  2211.           maildoc.Form = "Bookmark"
  2212.           maildoc.SendTo = SendTo
  2213.           maildoc.Subject = subject
  2214.           'If the request is being denied we update the Bookmark document field with the name of the object
  2215.           'plus the Request Date and Request ID
  2216.           If (StatusString="denied") Then
  2217.                maildoc.InheritedSubject=WorkflowObject(0)+" Requested On "+Cstr(note.RequestDate(0))
  2218.           End If          
  2219.           Call maildoc.Send (False)
  2220.      End Select
  2221.      
  2222. 'Display a message telling the user that mail has been sent and to whom     
  2223.      Messagebox "Notification has been sent to " & Recipient & ".", 0 + 64, PromptTitle(0)
  2224.      
  2225.      Exit Sub
  2226.      
  2227. ErrorSending:
  2228.      Messagebox "FYI:  " & Recipient & " could not be notified via email at this time.", 0 + 64, PromptTitle(0)
  2229.      Exit Sub    
  2230.      
  2231. End Sub
  2232. '++LotusScript Development Environment:2:2:ResetAuthorNames:1:8
  2233. Sub ResetAuthorNames
  2234.      On Error Goto ProcessError
  2235.      Print "ResettingAuthorNames"
  2236.      
  2237. 'Get the field values needed to do this     
  2238.      FormAdmin = note.FormAdmin
  2239.      RequesterName = note.RequesterName
  2240.      NewStatus = note.Status
  2241.      NextApprover = note.NextApprover
  2242.      
  2243. 'Reset the upper bound of tmpList to the total number of NextApprovers + 1     
  2244.      Redim tmpList(Ubound(NextApprover) + 1)
  2245.      
  2246.      Select Case NewStatus(0)
  2247. 'If approvals are done - the FormAdmin is the only editor          
  2248.      Case StatusList(6), StatusList(7)
  2249.           note.AuthorizedEditors = FormAdmin(0)
  2250. 'If approvals are not started - the Requester is the only editor
  2251.      Case StatusList(0), StatusList(1)
  2252.           note.AuthorizedEditors = RequesterName(0)
  2253.      Case Else
  2254.           tmpList(0) = FormAdmin(0)
  2255.           x = 1
  2256.           Forall n In NextApprover
  2257.                tmpList(x) = n
  2258.                x = x + 1
  2259.           End Forall
  2260.           note.AuthorizedEditors = tmpList
  2261.      End Select
  2262.      Exit Sub
  2263.      
  2264. ProcessError:
  2265.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"ResetAuthorNames"
  2266.      Exit Sub
  2267. End Sub
  2268. '++LotusScript Development Environment:2:2:LoadDisplayFields:1:8
  2269. Sub LoadDisplayFields
  2270.      On Error Goto ProcessError
  2271.      ListMax = Cint(MaxApprovers(0)) - 1
  2272.      
  2273.      Status = note.Status
  2274.      If (Status(0) = StatusList(0)) Or (Status(0) = StatusList(1)) Or (Status(0) = "") Then
  2275.           ApprWin = note.ApprWin
  2276.           Redim tmpList(Ubound(ApprWin))
  2277.           x = 0
  2278.           Forall w In ApprWin
  2279.                tmpList(x) = w & " days"
  2280.                x = x + 1
  2281.           End Forall
  2282.           note.d_DueDate = tmpList
  2283.      Else
  2284.           DueDate = note.DueDate
  2285.           Redim tmpList(Ubound(DueDate))
  2286.           x = 0
  2287.           Forall d In DueDate
  2288.                tmpList(x) = Format(d, "Short Date")
  2289.                x = x + 1
  2290.           End Forall
  2291.           note.d_DueDate = tmpList
  2292.      End If
  2293.      
  2294.      If doc.IsNewDoc Then Exit Sub
  2295.      
  2296.      Redim tmpList(ListMax)
  2297.      Redim tmpList1(ListMax)
  2298.      NextApprover = note.NextApprover
  2299.      Status = note.Status
  2300.      ApprStatus = note.ApprStatus
  2301.      ApprName = note.ApprName
  2302.      x = 0
  2303.      y = 0
  2304.      For i = 0 To ListMax
  2305.           NameValue = ApprName(i)
  2306.           If ApprStatus(i) = "None" Then
  2307. 'Build FutureApprover list - all names with blank status, except if they are in the NextApprover list
  2308.                IsFuture = True            
  2309.                Forall n In NextApprover
  2310.                     If NameValue = n Then IsFuture = False
  2311.                End Forall
  2312.                If IsFuture Then
  2313.                     tmpList(x) = NameValue
  2314.                     x = x + 1            
  2315.                End If
  2316.           Else
  2317. 'Build PastApprover list - all names which have a status
  2318.                tmpList1(y) = NameValue
  2319.                y = y + 1
  2320.           End If
  2321.      Next
  2322.      
  2323.      If tmpList(0) = "" Then 
  2324.           note.d_FutureApprovers = "None"
  2325.      Else
  2326.           note.d_FutureApprovers = tmpList
  2327.      End If
  2328.      If tmpList1(0) = "" Then
  2329.           note.d_PastApprovers = "None"
  2330.      Else
  2331.           note.d_PastApprovers = tmpList1
  2332.      End If
  2333.      If Status(0) = StatusList(6) Or Status(0) = StatusList(7) Then
  2334.           If tmpList1(0) <> "" Then note.d_Approvers = tmpList1
  2335.      Else
  2336.           If tmpList1(0) <> "" Then note.d_Approvers = tmpList
  2337.      End If
  2338.      Exit Sub
  2339.      
  2340. ProcessError:
  2341.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"LoadDisplayFields"
  2342.      Exit Sub
  2343. End Sub
  2344. '++LotusScript Development Environment:2:2:InitializeNewDoc:1:8
  2345. Sub InitializeNewDoc
  2346.      On Error Goto ProcessError
  2347. 'If the profile indicates that ApproverNames are retrieved from another db then
  2348. 'get the ApproverNames.  This needs to be done after the global variables (above) are set.     
  2349.      note.Status = StatusList(0)
  2350.      SourceServer = note.d_SourceServer
  2351.      SourcePath = note.d_SourcePath
  2352.      SourceView = note.d_SourceView
  2353.      SourceKey = note.d_RetrievalKey
  2354.      SourceField = note.d_SourceField
  2355.      SourceElement = note.d_ListElement
  2356.      ApprName = note.d_ApprName
  2357.      note.ApprName = ApprName
  2358.      ApprFunction = note.d_ApprFunction
  2359.      note.ApprFunction = ApprFunction
  2360.      LateAction = note.d_LateAction
  2361.      note.LateAction = LateAction
  2362.      
  2363.      ApprSource = note.d_ApprSource
  2364.      x = 0
  2365.      Forall n In ApprSource
  2366.           If n = "Retrieved" Then GetApproverNames(x)
  2367.           x = x + 1
  2368.      End Forall
  2369.      ListMax = Cint(MaxApprovers(0)) - 1
  2370.      Redim tmpList(ListMax)
  2371.      
  2372. 'Initialize all approval statuses to "None" (they must have a non blank value)          
  2373.      For x = 0 To ListMax
  2374.           tmpList(x) = "None"
  2375.      Next
  2376.      note.ApprStatus = tmpList
  2377.      
  2378. 'Initialize all approval dates to yesterday (they must have a date value)          
  2379.      Set dt = New NotesDateTime("")
  2380.      dt.SetNow
  2381.      dt.AdjustDay(-1)
  2382.      For x = 0 To ListMax
  2383.           tmpList(x) = dt.LSLocalTime
  2384.      Next
  2385.      note.ApprDate = tmpList          
  2386.      
  2387. 'Initialize all approval comments to " "
  2388.      For x = 0 To ListMax
  2389.           tmpList(x) = " "
  2390.      Next
  2391.      note.ApprComment = tmpList
  2392.      Exit Sub
  2393. ProcessError:
  2394.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"InitializeNewDoc"
  2395.      Exit Sub
  2396. End Sub
  2397. ApprName
  2398. ApprovalLogic'++LotusScript Development Environment:2:5:(Options):0:66
  2399. '++LotusScript Development Environment:2:5:(Forward):0:1
  2400. Declare Sub Postopen(Source As Notesuidocument)
  2401. Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
  2402. Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
  2403. Declare Sub Postrecalc(Source As Notesuidocument)
  2404. '++LotusScript Development Environment:2:5:(Declarations):0:2
  2405. '++LotusScript Development Environment:2:2:BindEvents:1:129
  2406. Private Sub BindEvents(Byval Objectname_ As String)
  2407.      Static Source As NOTESUIDOCUMENT
  2408.      Set Source = Bind(Objectname_)
  2409.      On Event Postopen From Source Call Postopen
  2410.      On Event Querysave From Source Call Querysave
  2411.      On Event Queryclose From Source Call Queryclose
  2412.      On Event Postrecalc From Source Call Postrecalc
  2413. End Sub
  2414. '++LotusScript Development Environment:2:2:Postopen:1:12
  2415. Sub Postopen(Source As Notesuidocument)
  2416.      On Error Goto ProcessError     
  2417.      Print "Opening Document"
  2418.      
  2419.      DocWasSaved = False
  2420.      
  2421. 'Instantiate object variables     
  2422.      Set w = New NotesUIWorkspace    
  2423.      Set doc = source
  2424.      Set note = source.Document
  2425.      Set db = note.ParentDatabase
  2426.      Set s = New NotesSession
  2427.      
  2428. 'Turn off AutoReload to speed up response time     
  2429.      source.AutoReload = False
  2430.      
  2431.      If source.IsNewDoc Then
  2432. 'Make sure that the doc was created from the Action, not from the Create menu (the designer might see this while testing)
  2433. 'This is because on a new doc we don't know the form name yet so we don't know which profile to used
  2434. 'The profile name is the same as the form name and is passed in using an Environment variable     
  2435.           DocType = s.GetEnvironmentString("DocType")
  2436.           Call s.SetEnvironmentVar("DocType", "None")
  2437.           If DocType = "None" Or Isempty(DocType) Then
  2438.                Messagebox "This Document must be created via the Create New Request action."_
  2439.                & "  Please remove it from the Create Menus.", 0, "Error"
  2440.                Continue = False
  2441.                source.Close
  2442.                Exit Sub
  2443.           End If
  2444. 'Retrieve the profile and copy all of its items to this document.  These are used to set up the doc and some are
  2445. 'deleted in QueryClose.     
  2446.           Set view = db.GetView("Application Profiles")
  2447.           Set profile  = view.GetDocumentByKey(DocType,False)
  2448.           If profile Is Nothing Then
  2449.                Messagebox "This application will not execute correctly without an application profile.", 0 + 64, "Design Error"
  2450.                doc.close
  2451.                Print
  2452.                Exit Sub
  2453.           Else
  2454.                profile.RemoveItem("Form")
  2455.                Call profile.CopyAllitems(note)
  2456.           End If
  2457.           FormAdmin = note.FormAdmin
  2458.           If FormAdmin(0) = "" Then note.FormAdmin = db.Managers
  2459.           note.RequesterName = s.CommonUserName
  2460.      End If
  2461.      
  2462. 'Set up global variables     
  2463.      CurrentUser = s.CommonUserName    
  2464.      StatusList = note.StatusList
  2465.      WorkflowObject = note.WorkflowObject
  2466.      PromptTitle = note.PromptTitle
  2467.      MaxApprovers = note.MaximumApprovers
  2468.      RoutingMethod = note.RoutingMethod
  2469.      
  2470. 'Set up defaults          
  2471.      If source.IsNewDoc Then
  2472. 'This needs to be done after the globals are set up               
  2473.           InitializeNewDoc
  2474.      Else
  2475.           note.RemoveItem("Action")
  2476.           note.RemoveItem("SaveOptions")    
  2477.      End If
  2478.      
  2479.      If source.EditMode Then
  2480. 'Reload the data from the note to the document     
  2481.           source.Reload
  2482. 'Refresh the document to reset HideWhens and computed fields               
  2483.           source.Refresh
  2484.      End If
  2485.      
  2486. 'Clear the status bar     
  2487.      Print
  2488.      Exit Sub
  2489.      
  2490. ProcessError:
  2491.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Postopen"
  2492.      Exit Sub
  2493. End Sub
  2494. '++LotusScript Development Environment:2:2:Querysave:1:12
  2495. Sub Querysave(Source As Notesuidocument, Continue As Variant)
  2496.      On Error Goto ProcessError     
  2497.      Print "Verifying"
  2498.      
  2499. 'Set DocWasSaved so that QueryClose knows to remove the temporary fields     
  2500.      DocWasSaved = True
  2501.      
  2502. 'If the save was not via an action then we do not need to do this
  2503.      If Not note.HasItem("Action") Then Exit Sub
  2504.      
  2505. 'Get the fields we need     
  2506.      Action = note.Action
  2507.      Status = note.Status
  2508.      ListMax = Cint(MaxApprovers(0)) - 1
  2509.      
  2510. 'Instantiate the date object variable and set it to now
  2511.      Set dt = New NotesDateTime("")
  2512.      dt.SetNow
  2513.      
  2514. 'This subroutine sets up the variables needed in the other subroutines     
  2515.      IdentifyUser
  2516.      
  2517.      Select Case Action(0)
  2518.      Case "Submit"
  2519. 'If you are resubmitting then remove existing status fields          
  2520.           If (Status(0) = StatusList(4)) Or (Status(0) = StatusList(5)) Then
  2521.                For n = 1 To 5
  2522.                     note.RemoveItem("ApprStatus")
  2523.                     note.RemoveItem("ApprDate")
  2524.                     note.RemoveItem("ApprComment")
  2525.                Next
  2526.           End If
  2527. 'Reset the request date to today and the status to awaiting approval
  2528.           note.RequestDate = dt.LSLocalTime
  2529.           note.Status = StatusList(2)
  2530. 'Set the next approver(s), then expiration and send mail to the appropriate person(s)          
  2531.           SetNextApprover         
  2532.           SetDueDate
  2533.           SendNotification
  2534.      Case "Approve"
  2535. 'Set approval status for the current approver
  2536.           ApprStatus = note.ApprStatus
  2537.           ApprStatus(CurrentApprover) = StatusList(3)
  2538.           note.ApprStatus = ApprStatus
  2539. 'Set approval date for the current approver
  2540.           ApprDate = note.ApprDate
  2541.           ApprDate(CurrentApprover) = dt.LSLocalTime
  2542.           note.ApprDate = ApprDate
  2543. 'Set comment value for the current approver
  2544.           NewComment = note.d_ApprComment
  2545.           ApprComment = note.ApprComment
  2546.           ApprComment(CurrentApprover) = NewComment(0)
  2547.           note.ApprComment = ApprComment
  2548. 'Set the next approver, the expiration and send mail to the appropriate person(s)          
  2549.           SetNextApprover
  2550.           If RoutingMethod(0) = "Serial" Then 
  2551.                If Not LastApprover Then SetDueDate              
  2552.           End If
  2553.           If RoutingMethod(0) = "Serial" Or LastApprover Then SendNotification
  2554.      Case "Deny"
  2555. 'Set the approval status, date, and comment for current approver, remove status qualifier and next approver, and set LastApprover flag
  2556.           ApprStatus = note.ApprStatus
  2557.           ApprStatus(CurrentApprover) = StatusList(4)
  2558.           note.ApprStatus = ApprStatus         
  2559.           note.Status = StatusList(6)
  2560.           note.RemoveItem("StatusQualifier")
  2561.           note.RemoveItem("NextApprover")              
  2562.           LastApprover = True
  2563. 'Set approval date for the current approver
  2564.           ApprDate = note.ApprDate
  2565.           ApprDate(CurrentApprover) = dt.LSLocalTime
  2566.           note.ApprDate = ApprDate
  2567. 'Set comment value for the current approver
  2568.           NewComment = note.d_ApprComment
  2569.           ApprComment = note.ApprComment
  2570.           ApprComment(CurrentApprover) = NewComment(0)
  2571.           note.ApprComment = ApprComment
  2572. 'Send notification          
  2573.           SendNotification
  2574.      End Select
  2575.      
  2576. 'Print this message to the status bar because saving can take some time     
  2577.      Print "Saving"
  2578.      
  2579. 'Reload data from the note to the document (if you do not - what's on the document will overwrite everything we just did)     
  2580.      source.Reload
  2581.      Exit Sub
  2582. ProcessError:
  2583.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Querysave"
  2584.      Exit Sub
  2585. End Sub
  2586. '++LotusScript Development Environment:2:2:Queryclose:1:12
  2587. Sub Queryclose(Source As Notesuidocument, Continue As Variant)
  2588.      On Error Goto ProcessError
  2589.      If (source.EditMode = False) Or (DocWasSaved = False) Then
  2590.           Exit Sub
  2591.      Else
  2592.           Print "Closing"
  2593.      End If
  2594.      
  2595. 'Set the subject field     
  2596.      RequestDate = note.RequestDate
  2597.      RequesterName = note.RequesterName
  2598.      note.Subject = WorkflowObject(0) & " requested by " & RequesterName(0) &_
  2599.      " on " & Format(RequestDate(0), "Short Date")
  2600.      
  2601. 'Remove the Action field and any field that begins with d_
  2602. 'This includes all temporary fields and all display only fields
  2603. '(a backend save will save computed for display fields unless you do this)     
  2604.      note.RemoveItem("Action")
  2605.      ItemList = note.Items
  2606.      Forall n In ItemList
  2607.           If Left(n.Name, 2) = "d_" Or Left(n.Name, 2) = "D_" Then n.Remove
  2608.      End Forall
  2609.      
  2610. 'We reset the author names here because the backend lets you save the doc after you have removed
  2611. 'yourself from the AuthorNames field.     
  2612.      ResetAuthorNames
  2613.      
  2614.      note.save True, True
  2615.      Print
  2616.      Exit Sub
  2617. ProcessError:
  2618.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"Queryclose"
  2619.      Exit Sub
  2620. End Sub
  2621. '++LotusScript Development Environment:2:2:Postrecalc:1:12
  2622. Sub Postrecalc(Source As Notesuidocument)
  2623.      On Error Goto ProcessError
  2624.      Action = note.Action
  2625.      If Action(0) <> "EditApprover" Then Exit Sub
  2626.      note.RemoveItem("Action")
  2627.      
  2628.      If Isempty(note.tmpApprNumber) Then Exit Sub
  2629.      ApprNumber = note.tmpApprNumber
  2630.      i = Cint(ApprNumber(0)) - 1
  2631.      
  2632.      ApprName = note.ApprName
  2633.      ApprFunction = note.ApprFunction
  2634.      ApprWin = note.ApprWin
  2635.      LateAction = note.LateAction
  2636.      ApprStatus = note.ApprStatus
  2637.      note.tmpApproverLabel = "Approver" & ApprNumber(0)
  2638.      note.tmpSource = "ApprovalDoc"
  2639.      note.tmpName = ApprName(i)
  2640.      note.tmpFunction = ApprFunction(i)
  2641.      note.tmpWin = ApprWin(i)
  2642.      note.tmpLateAction = LateAction(i)
  2643.      
  2644.      doc.reload
  2645.      
  2646.      If w.DialogBox("(ApproverInfo)", True, True) = False Then Exit Sub
  2647.      
  2648.      NewName = note.tmpName
  2649.      NewFunction = note.tmpFunction
  2650.      NewWin = note.tmpWin
  2651.      NewLateAction = note.tmpLateAction     
  2652.      
  2653.      ApprName(i) = NewName(0)
  2654.      ApprFunction(i) = NewFunction(0)
  2655.      ApprWin(i) = NewWin(0)
  2656.      LateAction(i) = NewLateAction(0)
  2657.      
  2658.      note.ApprName = ApprName
  2659.      note.ApprFunction = ApprFunction
  2660.      note.ApprWin = ApprWin
  2661.      note.LateAction = LateAction     
  2662.      note.ApprStatus = ApprStatus
  2663.      
  2664.      doc.reload
  2665.      Exit Sub
  2666. ProcessError:
  2667.      Msgbox "Error (" & Cstr(Err) & " ) -> " & Error$(Err),16,"PostRecalc"
  2668.      Exit Sub
  2669. End Sub
  2670. [t    Kh
  2671. Kt    ,\
  2672. AuthorizedEditors
  2673.     4S6S
  2674. AuthorizedEditors
  2675.     Request ID
  2676. RequestId
  2677. WorkflowObject
  2678. HeaderTitle
  2679. __________________________________________________________________________________
  2680. Status
  2681. StatusListv
  2682.     4S6S7S
  2683.     Requested By
  2684. RequesterName
  2685. RequesterName
  2686. Status
  2687. StatusListv
  2688.     4S6S7S
  2689.     Requested By
  2690. RequesterName
  2691. d_RequesterName
  2692.     Request Date
  2693. RequestDate
  2694.     Status
  2695. Status
  2696. Status
  2697. StatusQualifier
  2698. StatusQualifier
  2699. Status
  2700. StatusListv
  2701. Status
  2702. StatusListv
  2703.     4S6S7S8S9S13S15S16S
  2704. Paintbrush cann
  2705. this file becaus
  2706.  created using a
  2707.  of Windows earl
  2708.  3.0.
  2709. Save As
  2710.  From
  2711. Copy To
  2712. Save Colors As
  2713. Printing '%s' on
  2714. on %s
  2715. Page %d of
  2716. % donelNot enoug
  2717.  to print.
  2718. more application
  2719. rease available 
  2720.     Requestor    Previous Approvers    Current Approver    Future Approvers
  2721. RequesterName
  2722. d_Requester_1
  2723. ApprStatus
  2724. ApprName
  2725. ApprStatus
  2726. ApprName
  2727. ApprStatus
  2728. ApprName
  2729. ApprStatus
  2730. ApprName
  2731. ApprStatus
  2732. ApprName
  2733.     1S2S6RS19E12S14S15S17S19S26S27RS19E35S38S41S42S44RS24E46S52S55S59S60RS19E68S71S74S75S77RS24E79S85S88S92S93RS19E101S104S107S108S110RS24E112S118S121S125S126RS19E134S137S140S141S143RS24E145S
  2734. tempj
  2735.     0R6S7S9S11Sd_PastApprovers
  2736. NextApprover
  2737. NextApprover
  2738. ApprName
  2739. NextApprover
  2740. d_PastApprovers
  2741.     1S2S8S9S10S12S
  2742.     0R3S4S6S8S
  2743. d_FutureApprovers
  2744. Status
  2745. StatusListv
  2746.     4S6S7S
  2747. Status
  2748. StatusListv
  2749.     4S6S7S
  2750. Paintbrush cann
  2751. this file becaus
  2752.  created using a
  2753.  of Windows earl
  2754.  3.0.
  2755. Save As
  2756.  From
  2757. Copy To
  2758. Save Colors As
  2759. Printing '%s' on
  2760. on %s
  2761. Page %d of
  2762. % donelNot enoug
  2763.  to print.
  2764. more application
  2765. rease available 
  2766. Status
  2767. StatusListv
  2768. Status
  2769. StatusListv
  2770.     4S6S7S8S9S13S15S16S
  2771.     Requester     Approvers
  2772. RequesterName
  2773. d_Requester_2
  2774. ApprName
  2775. d_Approvers
  2776. Additional Information
  2777.     Approver Name
  2778.     Approver Function
  2779.     Due Date
  2780.     Expiration Action
  2781.     Status
  2782. }#D*}#
  2783.     Date
  2784. ApprName
  2785. ApprName
  2786. ApprFunction
  2787. ApprFunction
  2788. DueDate
  2789. ApprWin
  2790.  days
  2791. DueDate
  2792. D0S0V
  2793.     9S10S12S16S17S19S23S
  2794. d_DueDate
  2795. LateAction
  2796. LateAction
  2797. ApprStatus
  2798. ApprStatus
  2799. }#D*}#
  2800. ApprStatus
  2801. ApprDate
  2802. D0S0V
  2803. ApprStatus
  2804. ApprDate
  2805. D0S0V
  2806. ApprStatus
  2807. ApprDate
  2808. D0S0V
  2809. ApprStatus
  2810. ApprDate
  2811. D0S0V
  2812. ApprStatus
  2813. ApprDate
  2814. D0S0V
  2815.     1S2S8S10S11S13S15S21S24S27S28RS15E36S39S42S43S44S45S47RS20E49S57S60S2E64S67S68RS15E76S79S82S83S84S85S87RS20E89S97S100S2E104S107S108RS15E116S119S122S123S124S125S127RS20E129S137S140S2E144S147S148RS15E156S159S162S163S164S165S167RS20E169S177S180S2E184S
  2816. ApprDatej
  2817. ApprDatej
  2818.     0R6S7S9S11S15S
  2819. d_ApprDate
  2820. _________________________________________________________________________________
  2821. Close
  2822. Action
  2823.     1S2S3S
  2824. Edit Documentu 
  2825.     0S0E
  2826. Status
  2827. StatusListv
  2828. AuthorizedEditors
  2829.     4S6S7S8S9S14S18S
  2830. Edit Approver List
  2831. EditableList
  2832. ApprName
  2833. Approver 
  2834. EditAppr^
  2835.     1S2S5S6S8S10S11S12S
  2836. EditWhom
  2837. PromptTitle
  2838. Please choose the approver which you would like to edit.
  2839.     0RR1S2S5S6S8S10S12S16S19S
  2840. tmpApprNumber
  2841. EditWhom
  2842. ApproverG
  2843. EditWhom
  2844. EditWhom
  2845. ApprNamev
  2846.     0RR1S2S3S9S12S18S22S26S
  2847. Action
  2848. EditApprover
  2849.     0RR1S2S3S
  2850. Status
  2851. StatusListv
  2852. RequesterName
  2853. FormAdmin
  2854. EditableList
  2855. EditAppr^
  2856.     5S7S8S9S10S11S12S13S14S15S16S18S19S26S29S30S31S34S35S37S38S39S40S44S45S
  2857. Submit for Approval
  2858. ApprName
  2859. Entered when submittedG
  2860. PromptTitle
  2861. Please use the "Edit Approver List" button to enter a valid approver name.
  2862.     6S9S15S17S21S
  2863. Action
  2864. Submit
  2865.     0RR1S2S3S
  2866. SaveOptions
  2867.     0R1S2S3S
  2868. Status
  2869. StatusListv
  2870. RequesterName
  2871. FormAdmin
  2872.     5S7S8S9S10S11S12S13S14S15S16S18S19S26S29S30S31S
  2873. Approve_:
  2874. Action
  2875. Approve
  2876.     0RR1S2S3S
  2877. SaveOptions
  2878.     0R1S2S3S
  2879. CommentsAllowed
  2880. EnterComments
  2881. PromptTitle
  2882.     0RR3S4S6R10S11S12S15S
  2883. NextApprover
  2884. FormAdmin
  2885.     6S9S10S11S
  2886. Deny6
  2887. Action
  2888.     0RR1S2S3S
  2889. SaveOptions
  2890.     0R1S2S3S
  2891. CommentsAllowed
  2892. EnterComments
  2893. PromptTitle
  2894.     0RR3S4S6R10S11S12S15S
  2895. NextApprover
  2896. FormAdmin
  2897.     6S9S10S11S
  2898. View Comments
  2899. DisplayComments
  2900.     4S5S6S
  2901. SaveOptions
  2902.     0R1S2S3S
  2903. ApprComment
  2904.     7S8S
  2905. O=Lotus Notes
  2906. O=Lotus Notes
  2907. PURSAFO
  2908. |.:#U
  2909. O=Lotus Notes
  2910. CN=Lotus Notes Template Development/O=Lotus Notes
  2911. PURSAFO
  2912. Fde!f^^
  2913. ApprDate
  2914. $TITLE
  2915. $Info
  2916. $Script
  2917. $$Script_O
  2918. $$ScriptName
  2919. $$FormScript
  2920. $$$FormScript_O
  2921. RequestDate
  2922. $Body
  2923. $ACTIONS
  2924. 03/19/96 09:11:58 AM Lotus Notes updated [OtherDomainServers]
  2925. 09/29/95 12:13:52 PM Catherine Duffy/Iris updated [-Default-]
  2926. 09/29/95 12:13:44 PM Catherine Duffy/Iris updated LocalDomainServers
  2927. 09/28/95 08:45:57 PM Catherine Duffy/Iris updated [OtherDomainServers]
  2928. 09/28/95 08:45:47 PM Catherine Duffy/Iris updated [OtherDomainServers]
  2929. 09/28/95 08:45:45 PM Catherine Duffy/Iris updated [LocalDomainServers]
  2930. 09/28/95 08:45:42 PM Catherine Duffy/Iris updated [-Default-]
  2931. 09/28/95 08:45:37 PM Catherine Duffy/Iris updated LocalDomainServers
  2932. 09/28/95 08:45:34 PM Catherine Duffy/Iris updated -Default-
  2933. 09/28/95 04:23:31 PM Lotus Notes updated LocalDomainServers
  2934. 09/28/95 04:23:05 PM Lotus Notes updated [LocalDomainServers]
  2935. 09/28/95 04:23:02 PM Lotus Notes updated [OtherDomainServers]
  2936. 09/28/95 04:22:38 PM Lotus Notes updated LocalDomainServers
  2937. 09/28/95 04:22:34 PM Lotus Notes updated [LocalDomainServers]
  2938. 09/28/95 04:22:31 PM Lotus Notes updated [OtherDomainServers]
  2939. 09/28/95 04:22:25 PM Lotus Notes added [OtherDomainServers]
  2940. 09/28/95 04:22:25 PM Lotus Notes added [LocalDomainServers]
  2941. 09/28/95 04:22:25 PM Lotus Notes added LocalDomainServers
  2942. 09/28/95 04:22:25 PM Lotus Notes added [-Default-]
  2943. 09/28/95 04:20:32 PM Lotus Notes updated -Default-
  2944. 09/28/95 04:20:25 PM Lotus Notes deleted LocalDomainServers
  2945. -Default-
  2946. [-Default-]
  2947. LocalDomainServers
  2948. [LocalDomainServers]
  2949. [OtherDomainServers]
  2950.