Reputation: 1
Hope someone can help me wrap my head around this. I'm trying to trigger a Case Status change if a Customer interaction (email) is received.
Below is the code written to date:
function afterSubmit(type)
{
//load the case record
var caseRecord = nlapiLoadRecord('supportcase', nlapiGetRecordId());
//Get the Case Status of the assoicated Case
var caseStatus = caseRecord.getFieldValue('status');
//Get the Message value
var incomming = caseRecord.getFieldValue('incomingmessage');
//Check current Status is none of Completed or Closed
if(caseStatus != '4' && caseStatus != '5')
{
// If there is any activity
if(incomming != '')
{
// Load the message record
var message = nlapiGetNewRecord();
// Get the ID of the activity associated with the message
var activity = message.getFieldValue('activity');
if (activity)
{
// If the activity is a case, load the record and change the status.
try
{
var caseRecord = nlapiLoadRecord('supportcase', activity);
caseRecord.setFieldValue('status',20);
nlapiSubmitRecord(caseRecord);
}
// If the activity is not a Case, log a warning message
catch(exec)
{
nlapiLogExecution('DEBUG', 'Warning','Activity Record is not a Case');
}
}
else
{
return false;
}
}
else
{
return false;
}
}
}
Note: Case Status 4 = Completed Case Status 5 = Closed Case Status 20 = Customer Reply Received What is happening is? Once I save the case and I generate a mail to the customer i.e. case logged email. The case status is updated to "Customer Reply Received"
Upvotes: 0
Views: 1163
Reputation: 5231
Firstly, can I just point out that
if(caseStatus != '4' || caseStatus != '5')
will always be true
. You're testing whether caseStatus is NOT EQUAL TO 4 OR NOT EQUAL TO 5. So if it is equal to 4 it will be not equal to 5, therefore true, and vice versa. So I think what you were trying to do is:
if(caseStatus != '4' && caseStatus != '5')
or:
if(!(caseStatus == '4' || caseStatus == '5'))
With that out the way, it looks like you're loading the case and checking for any activity and changing the status based on that. When you send a customer an email you are creating activity so there will always be activity and therefore the status will always be updated to '20'. However, there seems to be some code missing because at the start of your script you set both message
and caseRecord
to the same thing so I might be misreading what you're doing.
Upvotes: 1