Update customers in clutch

Script for update customers in clutch when the record being edited in NetSuite or Webstore

define(['N/record', 'N/runtime', 'N/https', 'N/encode'],

    (record,runtime, https, encode) => {
            /**
             * @description the function for searching customers in clutch
             * @param- customer- passing customer id
             * @param- headerObj- passing header object
             * */

            function searchCustomers(customer, headerObj) {
                    var searchObj = JSON.stringify({
                            "filters": {
                                    "customCardNumber": customer
                            },
                            "returnFields": {
                                    "balances": true,
                                    "customer": true,
                                    "alternateCustomer": true,
                                    "giverCustomer": true,
                                    "isEnrolled": true,
                                    "customData": true,
                                    "customCardNumber": true
                            }
                    })

                    let searchRequestUrl = "https://api.clutch.com:443/merchant/search";
                    var searchResponse = https.post({
                            url: searchRequestUrl,
                            body: searchObj,
                            headers: headerObj,
                    });
                    //log.debug("searchResponse", searchResponse);
                    var card = JSON.parse(searchResponse.body)
                    var status = searchResponse.code
                    if (status === 200) {
                            var cards = card.cards
                    }
                    return cards;
            }

            /**
             * @description the function to check whether a value exists in parameter
             * @param parameter -passing parameter
             * @param parameterName - passing parameter name
             * @returns{Boolean}
             */
            function checkForParameter(parameter, parameterName) {
                    if (
                        parameter != "" &&
                        parameter != null &&
                        parameter != undefined &&
                        parameter != "null" &&
                        parameter != "undefined" &&
                        parameter != " " &&
                        parameter != false
                    ) {
                            return true;
                    } else {
                            if (parameterName)
                                    log.debug(
                                        "Empty Value found",
                                        "Empty Value for parameter " + parameterName
                                    );
                            return false;
                    }
            }

            const afterSubmit = (scriptContext) => {
                    try {
                            if (scriptContext.type === scriptContext.UserEventType.EDIT) {

                                    let currentRec = scriptContext.newRecord;
                                    var customer = currentRec.id;
                                        log.debug("customer",customer)
                                    var rewardEmail=currentRec.getValue({
                                            fieldId: 'custentity15'
                                    });
                                    var custPhone =currentRec.getValue({
                                            fieldId: 'phone'
                                    });
                                    var firstName =currentRec.getValue({
                                            fieldId: 'firstname'
                                    });
                                    var isPerson = currentRec.getValue({
                                            fieldId: 'isperson'
                                    });
                                    var lastName = currentRec.getValue({
                                            fieldId: 'lastname'
                                    });
                                    var lName = lastName.slice(0, 35);

                                    if (isPerson === 'T') {
                                            var cName = currentRec.getValue({
                                                    fieldId: 'firstname'
                                            });
                                            var fName = cName.slice(0, 35);
                                            log.debug("fName",fName)
                                    } else {
                                            var cName = currentRec.getValue({
                                                    fieldId: 'companyname'
                                            });
                                            var fName = cName.slice(0, 35);
                                            log.debug("fName",fName)
                                    }


                                    // taking headers from the configuration record
                                    var configRecord = record.load({
                                            type: 'customrecord_jj_clutch_config_record',
                                            id: 1,
                                            isDynamic: true,
                                    });
                                    var apiKey = configRecord.getValue({
                                            fieldId: 'custrecord_jj_api_key'
                                    })
                                    var secretKey = configRecord.getValue({
                                            fieldId: 'custrecord_jj_api_secret'
                                    })
                                    var brandId = configRecord.getValue({
                                            fieldId: 'custrecord_jj_brand_id'
                                    })
                                    var locationId = configRecord.getValue({
                                            fieldId: 'custrecord_jj_location_id'
                                    })
                                    var terminalId = configRecord.getValue({
                                            fieldId: 'custrecord_jj_terminal_id'
                                    })
                                    var authorization = encode.convert({

                                            string: apiKey + ':' + secretKey,

                                            inputEncoding: encode.Encoding.UTF_8,

                                            outputEncoding: encode.Encoding.BASE_64

                                    });
                                    var basicAuth = "Basic " + authorization
                                    var headerObj = {
                                            authorization: basicAuth,
                                            brand: brandId,
                                            location: locationId,
                                            terminal: terminalId
                                    };
                                    var cardNumber= searchCustomers(customer, headerObj)
                                    log.debug("cardNumber",cardNumber)

                                    if(cardNumber.length>0) {
                                            var existingCustCardNum = cardNumber[0].cardNumber
                                            log.debug("existingCustCardNum", existingCustCardNum)

                                            if (checkForParameter(lName)) {
                                                    //request object for customer update
                                                    var custUpdateObj = JSON.stringify({
                                                            "cardSetId": "SMECustomers",
                                                            "cardNumber": existingCustCardNum,
                                                            "countAsEnrollment": true,
                                                            "primaryCustomer": {
                                                                    "firstName": fName,
                                                                    "lastName": lName,
                                                                    "phone": custPhone,
                                                                    "email": rewardEmail
                                                            },
                                                            "customCardNumber": customer
                                                    })
                                            } else {
                                                    //request object for customer update
                                                    var custUpdateObj = JSON.stringify({
                                                            "cardSetId": "SMECustomers",
                                                            "cardNumber": existingCustCardNum,
                                                            "countAsEnrollment": true,
                                                            "primaryCustomer": {
                                                                    "firstName": fName,
                                                                    "phone": custPhone,
                                                                    "email": rewardEmail
                                                            },
                                                            "customCardNumber": customer
                                                    })
                                            }

                                            var updateCustUpdateUrl = "https://api.clutch.com:443/merchant/updateAccount";

                                            //customer updation
                                            var customerupdationResponse = https.post({
                                                    url: updateCustUpdateUrl,
                                                    body: custUpdateObj,
                                                    headers: headerObj,
                                            });
                                            log.debug("customerupdationResponse", customerupdationResponse)
                                    }
                            }
                    }catch(e){
                            log.debug("error",e)
                    }
            }
            return {afterSubmit}
    });

Leave a comment

Your email address will not be published. Required fields are marked *