Creating a message alert on AP20.1

 11 Replies
 0 Subscribed to this topic
 12 Subscribed to this forum
Sort:
Author
Messages
Eddie Smith
Advanced Member Send Private Message
Posts: 39
Advanced Member
Would like to be able to create a message alert to the AP clerk whenever a vendor is selected or entered into AP20.1 in which the vendor user field 1 value on AP10.1 is equal to "Y".  In help would be appreciated. Thanks. 
David Williams
Veteran Member Send Private Message
Posts: 1127
Veteran Member
Eddie - this is simply an OnBlur for the text field for Vendor number. When the OnBlur occurs you would run a DME in order to look up the User Field on the APVENMAST table and if the value equals 1 you can do an alert to the user with the information you want to give to them.

Do you know how to do a DME?
David Williams
Eddie Smith
Advanced Member Send Private Message
Posts: 39
Advanced Member
David-we are somewhat familar with DMEs, just enough to be dangerous. I have the following script, but obviously it's incomplete or entriely wrong. What am I missing?
function TEXT_OnBlur(_f24)
{
var sVen = lawForm.getFormValue ("text7")
//alert (sVen)

s = "http://" + window.location.host + "/servlet/Router/Data/erp?"
s += "PROD=LPRD901&FILE=APVENMAST&INDEX=VENSET1"
s += "&KEY=" APVENMAST.VENDOR-GROUP + sVen
s += "&FIELD=APVENMAST.VEN-USER-NAME-01"
s += "&OUT=CSV&DELIM=~&NOHEADER

var objhttp = new ActiveXObject("Msxml2.XMLHTTP")
objhttp.Open("GET", s, false)
objhttp.Send("UserInfo")
sReturn = objhttp.responseTEXT
alert (sReturn)
}
David Williams
Veteran Member Send Private Message
Posts: 1127
Veteran Member
Here's a DME call to get vendor class
**/
var vProd = portalWnd.oUserProfile.getAttribute("productline");
var vDmeString ="?PROD=" + vProd + "&FILE=APVENMAST&FIELD=VEN-CLASS;&INDEX=VENSET1&KEY=1=" + lawForm.getFormValue("text2") + "&XCOLS=TRUE&XKEYS=TRUE&XRELS=TRUE&XCOUNT=TRUE&XIDA=TRUE&OUT=XML"
var vDMEInfo = portalWnd.httpRequest(portalWnd.DMEPath + vDmeString)
var vObjDMEXML = new top.DataStorage(vDMEInfo);
var vRecords = vObjDMEXML.document.getElementsByTagName("RECORD");
var numRec=vRecords.length;
var vCols = vRecords[0].getElementsByTagName("COL");
var vClass = vCols[0].firstChild.data;
**/
David Williams
David Williams
Veteran Member Send Private Message
Posts: 1127
Veteran Member
I don't think you can set your onblur function to run by specific object (field). I think you will have to get the id of the textbox and perform the rest of the function based upon whether or not you're in the field you want to be.

function TEXT_OnBlur(id, row)
{
if (id != "text7") return true
-- key the rest of your function
}
David Williams
Eddie Smith
Advanced Member Send Private Message
Posts: 39
Advanced Member
Thanks David. I've never used the OnBlur function before and was getting some strange results with my code. Yours alleviated the strange results but how do I display the vendor class?
David Williams
Veteran Member Send Private Message
Posts: 1127
Veteran Member
Well, you don't want to display the vendor class - that was just a sample - but you would alert the variable used to capture the data you want.

alert ("The vendor class value is " + vClass)
David Williams
Eddie Smith
Advanced Member Send Private Message
Posts: 39
Advanced Member
Understand the Vendor class was just an example and I added an alert like yours but nothing was displayed on the form. I must be missing something?
David Williams
Veteran Member Send Private Message
Posts: 1127
Veteran Member
What value do you get when you alert numRec?
David Williams
Eddie Smith
Advanced Member Send Private Message
Posts: 39
Advanced Member
No message. I added our vendor group "ULNA" to the dme, could that have something to do with it? Below is the JAVA script I'm using.

function TEXT_OnBlur(id, row)
{
if (id !="text7")
return true
var vProd = portalWnd.oUserProfile.getAttribute("productline");
var vDmeString ="?PROD=" + vProd + "&FILE=APVENMAST&FIELD=VEN-CLASS;&INDEX=VENSET1&KEY=1=" + ULNA + lawForm.getFormValue("text7") + "&XCOLS=TRUE&XKEYS=TRUE&XRELS=TRUE&XCOUNT=TRUE&XIDA=TRUE&OUT=XML"
var vDMEInfo = portalWnd.httpRequest(portalWnd.DMEPath + vDmeString)
var vObjDMEXML = new top.DataStorage(vDMEInfo);
var vRecords = vObjDMEXML.document.getElementsByTagName("RECORD");
var numRec=vRecords.length;
var vCols = vRecords[0].getElementsByTagName("COL");
var vClass = vCols[0].firstChild.data;
alert(numRec)
}
David Williams
Veteran Member Send Private Message
Posts: 1127
Veteran Member
Check all of the index key values - like company. My sample hard coded 1 so if yours is different...
David Williams
Eddie Smith
Advanced Member Send Private Message
Posts: 39
Advanced Member
David, dummy me... of course it's so obvious now that you pointed it out. Working perfectly now. Thanks for your help.