travelleddoor84
travelleddoor84

Reputation: 1

SuiteScript : Update Case record Status - If Customer Message received

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

Answers (1)

Krypton
Krypton

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

Related Questions