[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Email Agent Revisited

Posted on 2004-08-10
7
Medium Priority
?
239 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 31

Accepted Solution

by:
qwaletee earned 2000 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

Tech or Treat!

Submit an article about your scariest tech experience—and the solution—and you’ll be automatically entered to win one of 4 fantastic tech gadgets.

Question has a verified solution.

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

Lack of Storage capacity is a common problem that exists in every field of life. Here we are taking the case of Lotus Notes Emails, as we all know that we are totally depend on e-communication i.e. Emails. This article is fully dedicated to resolvin…
Article by: Rob
Notes 8.5 Archiving Steps and Tips This article covers setting up a Notes archive, and helps understand some of the menu choices making setting up and maintaining a Notes archive file easier.
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…

650 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