Solved

Email Agent Revisited

Posted on 2004-08-10
7
231 Views
Last Modified: 2013-12-18
I fully understand this agent is coded very poorly.  The problem I have is I don't have the time to go back and rewrite the code.  I really need to put a PartNumber in the subject field.  There is a form with a Approve action button on it.  The action button is pressed it runs this agent.  I need to get the PartNumber off the form and place it in the subject line in the email.  We have looked at this before, but it did not work correctly.  Also when the agent sends out the email it is from the last person to save the agent, It should be from the database.

This is a large agent so I going to place all the code in here.

Declarations **************

Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocument
Dim mailDoc As NotesDocument
Dim approverFieldList(6) As String
Dim approverList(6) As String

Initialize********************************

Sub Initialize
 Call InitializeGlobals()

 If dc.SaveOnlyFlag(0) <> "1" Then
      
    If IsRejected(dc) Then
       Call SendRejectionNoticeToInspector
    Else
       recipient = WhoAmIMailingTo()
                  
      If recipient = dc.ApprovalInspectedBy(0) Then
          SendLinkToInspector(recipient)
      Elseif recipient <> "" Then
          SendLinkToApprover(recipient)
      End If
    End If
End If
End Sub

InitializeGlobals**************************************

Function InitializeGlobals
      Set session = New NotesSession
      Set db = session.CurrentDatabase
      Set dc = session.DocumentContext
      Set mailDoc = db.CreateDocument()
      
      approverFieldList(0) = "AssignedQE"
      approverFieldList(1) = "AssignedPME"
      approverFieldList(2) = "AssignedPEDE"
      approverFieldList(3) = "AssignedQEMan"
      approverFieldList(4) = "AssignedPMEMan"
      approverFieldList(5) = "AssignedPEDEMan"
      For i = 0 To 5
            approverList(i) = ""
      Next
      
End Function

WhoAmIMailingTo********************************

Function WhoAmIMailingTo As String
      Dim item As NotesItem
      WhoAmIMailingTo = ""
      
      'If signed by last approver then mail goes back to the inspector
      If dc.HasItem("ApprovalPEDESignatureMan") Then
            Set item = dc.GetFirstItem("ApprovalPEDESignatureMan")
            If item.text <> "" Then
                  WhoAmIMailingTo = dc.ApprovalInspectedBy(0)
            Else
                  
                  For i = 0 To 5
                        approverList(i) = dc.GetItemValue(approverFieldList(i))(0)
                  Next
                  For i = 5 To 0 Step -1  'send mail to next approver
                        
                        If approverList(i) <> "" Then
                              WhoAmIMailingTo = approverList(i)
                              Exit For
                        End If
                        
                  Next
            End If
            
      Else
                                For i = 0 To 5
                  approverList(i) = dc.GetItemValue(approverFieldList(i))(0)
            Next
            For i = 5 To 0 Step -1  'send mail to next approver
                  
                  If approverList(i) <> "" Then
                        WhoAmIMailingTo = approverList(i)
                        Exit For
                  End If
                  
            Next
            
      End If
      
      
End Function

SendLinkToApprover******************************

Function SendLinkToApprover(recipient As String)
      Dim rtitem As NotesRichTextItem
      
      mailDoc.SendTo = recipient
      mailDoc.Subject = "A Metrology Specification Requires Your Approval"
      
      Set rtitem = mailDoc.CreateRichTextItem("Body")
      Call rtitem.AppendText("Click on the link below to access the approval document")
      Call rtitem.AddNewLine(2)
      
      linkString =  "https://knetus4.place.lexmark.com" & dc.HTTPDbLoc(0) & "/0/" & dc.DocID(0) & "?EditDocument"
      Call rtitem.AppendText(linkstring)
      mailDoc.Send(False)
      
End Function

There are a couple more, but I think if we can get SendLinkToApprover to work the others should be simple to fix.  In the mailDoc.Subject = "A Metrology Specification" & PartNum & " Requires Your Approval"  I need to get the value of PartNum off the form.  I also need for the emails be from the database and not the last person who saved the agent.

0
Comment
Question by:Jaziar
7 Comments
 
LVL 24

Expert Comment

by:HemanthaKumar
ID: 11763113
Use a global variable called partnum and populate it from the document in the initialize...

or use another parameter in the function SendLinkToApprover, and pass the partnum

~Hemanth

0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 11763205
I don't understand. We solved this issue, didn't we??
    mailDoc.Subject = "A Metrology Specification" & doc.PartNum(0) & " Requires Your Approval"

Emails will never be from the database, unless you create an additional User-ID, give it sifficent rights in the database and on the server, and sign the agent with that ID.
0
 

Author Comment

by:Jaziar
ID: 11763528
sjef bosman I thought we did as well, but it never worked.  

I placed  mailDoc.Subject = "A Metrology Specification" & doc.PartNum(0) & " Requires Your Approval"
in the agent and here we work off templates because we don't have access to the act. database.  It replicated the next day and the agent failed.
0
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 
LVL 31

Accepted Solution

by:
qwaletee earned 500 total points
ID: 11763604
OK, here's throwing bad code after bad, but it will work, using LexECRNum...

Function SendLinkToApprover(recipient As String)

     mailDoc.Principal = "the mail in name for your database, so it does not come from agent signer"

     Dim rtitem As NotesRichTextItem
     
     mailDoc.SendTo = recipient
     mailDoc.Subject = "A Metrology Specification Requires Your Approval - " & dc.LexECRNum(0)
     
     Set rtitem = mailDoc.CreateRichTextItem("Body")
     Call rtitem.AppendText("Click on the link below to access the approval document")
     Call rtitem.AddNewLine(2)
     
     linkString =  "https://knetus4.place.lexmark.com" & dc.HTTPDbLoc(0) & "/0/" & dc.DocID(0) & "?EditDocument"
     Call rtitem.AppendText(linkstring)
     mailDoc.Send(False)
     
End Function
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 11763606
Did the agent fail on that specific line?? What was the errormessage in the log database? There could have been other reasons. Did you include error-handling in your code?

In every function, have something like
    On Error Goto onerror
...
exitsub:
    Exit Sub

onerror:
    Dim msg As String
    msg= Error$ & " on line " & Erl
    MessageBox msg
    Error Err, msg
End Sub

You'll see all the lines where the error took place. Isn't it possible to run the agent manually? Using the Debugger?
0
 

Author Comment

by:Jaziar
ID: 11772103
This worked bad code or not.  The ending result is they are off my back.

Thanks
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 11772181
Congrats! :)
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Adjusting times for a meeting room 3 142
Invoke VBA from lotusscript after mailmerge 11 236
Synchronize IBM notes Internet Password with AD 9 375
See used databases in Domino 8 102
For Desktop Techs: How to retain a user's Notes configuration data when swapping out the end user's computer. (Assuming that you are not upgrading to a completely different version of Notes client) All you need to do is: 1) install Notes o…
For beginners of Lotus Notes user this is important to know about the types of files and their location supported by IBM Notes. Mostly users are unaware about how many file types are created and what their usages are. This Article is fully dedicated…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now