Pushing Customer Data to Numerik

Below code defines the pushing customer data to Numerik

/**

* @NApiVersion 2.1

* @NScriptType UserEventScript

*/

/*******************************************************************************

* Date : 19 July 2021

*

* Author: Jobin & Jismi IT Services LLP

* Script Description : Pushing Customer data to numerik

*

*******************************************************************************

* DEPLOYMENT: CUSTOMER

* This script summarises on pushing Customer data to numerik

*

* SCENARIO: When customer is created in netsuite, if the subsidiary is Canada, the customer is pushed to numerik

*

* *****************************************************************************

* REVISION HISTORY

*

* Revision 1.0 ${19 July 2021} JJ0131 : created

* Revision 2.0 ${28 Sep 2021} JJ0131 : Updated

*/

define([‘N/https’, ‘N/record’, ‘N/log’, ‘N/email’, ‘N/runtime’],

/**

* @param{https} https

*/

(https, record, log, email, runtime) => {

var cusname, cusadr1, cusadr2, cusadr3, cusemail, cuscity, cuscountry, cusalesrep, cusphone, cusgrp1, cusgrp2,

cusgrp4, cusgrp6, cusgrp7, cusgrp8, cusgrp9, postcode, primarycontact;

const afterSubmit = (scriptContext) => {

try {

var POST = false;

var cusrecorD = scriptContext.newRecord;

//Internalid of Canada Subsidiaries

var SUBSIDIARY = 11;

var SUBSIDIARY2 = 14;

var cusid = cusrecorD.id;

log.debug(“CUSID”, cusid);

var cusrecord = record.load({

type: record.Type.CUSTOMER,

id: cusid,

isDynamic: true

});

var entityid = cusrecord.getValue({fieldId: ‘entityid’});

var header = [];

/**SB API Key**/

//header[‘ApiKey’] = ‘Q6TZntaMU2rf2zFv1uBYtjk1AvvM5OT2rjkCieTJKN0=’;

header[‘ApiKey’] = ‘GcKVrpepGj1kwkIKNi5eNBNdnLuHgdEp3e972WrJ+qo=’;

header[‘Content-Type’] = ‘application/json’;

if (scriptContext.type === scriptContext.UserEventType.EDIT) {

log.debug(“TYPE”, scriptContext.type);

var subsid = cusrecord.getValue({fieldId: ‘subsidiary’});

/******If Subsidiary is Canada, the customer is pushed to numerik*******/

if (subsid == SUBSIDIARY || subsid == SUBSIDIARY2) {

var editresponse = https.get({

url: ‘https://numerik-publicapi-prod.azurewebsites.net/api/Customers’,

headers: header

});

var obj = JSON.parse(editresponse.body);

var numid;

//Checking Customer is existing in numerik

for (var i = 0; i < obj.length; i++) {

if (obj[i].id == cusid) {

numid = obj[i].numerikId;

log.debug(“NUMERIK”, numid)

POST = true;

}

}

CusData(cusrecord);

}

}

if (scriptContext.type === scriptContext.UserEventType.CREATE) {

log.debug(“TYPE”, scriptContext.type);

var subsid = cusrecord.getValue({fieldId: ‘subsidiary’});

if (subsid == SUBSIDIARY || subsid == SUBSIDIARY2) {

CusData(cusrecord);

POST = true;

}

} else {

}

var cusobj = [{}];

//Customer Data to be pushed to numerik

cusobj[0][“numerikId”] = 0;

cusobj[0][“id”] = cusid.toString();

cusobj[0][“name”] = cusname;

cusobj[0][“address1”] = cusadr1;

cusobj[0][“address2”] = cusadr2;

cusobj[0][“address3”] = cusadr3;

cusobj[0][“billToCity”] = cuscity;

cusobj[0][“postCode”] = postcode;

cusobj[0][“billToCountry”] = cuscountry;

cusobj[0][“email”] = cusemail;

cusobj[0][“phoneNumber”] = cusphone;

cusobj[0][“platinum”] = true;

cusobj[0][“consultant”] = primarycontact;

cusobj[0][“salesRep”] = cusalesrep;

cusobj[0][“customerGroup1”] = cusgrp1;

cusobj[0][“customerGroup2”] = cusgrp2; ////DISTRIBUTION CHANNEL

cusobj[0][“customerGroup3”] = ;

cusobj[0][“customerGroup4”] = cusgrp4; // Primary Group

cusobj[0][“customerGroup5”] = ;

cusobj[0][“customerGroup6”] = cusgrp6; //INSIDE SALES REP

cusobj[0][“customerGroup7”] = cusgrp7; // PARENT COMPANY

cusobj[0][“customerGroup8”] = cusgrp8; //Industry

cusobj[0][“customerGroup9”] = cusgrp9;

//Posting Data to numerik

if (POST === true) {

var response = https.post({

url: ‘https://numerik-publicapi-prod.azurewebsites.net/api/Customers’,

body: JSON.stringify(cusobj),

headers: header

});

log.debug(“CODE”, response.code);

}

} catch (e) {

log.debug({title: e.name, details: e.message});

log.error({title: e.name, details: e.message});

var script = runtime.getCurrentScript();

var rec = script.getParameter({

name: ‘custscript_jj_email’

});

var user = runtime.getCurrentUser();

var auth = user.id;

var env = runtime.envType;

var acnt = runtime.accountId;

var scriptid = script.id;

email.send({

author: auth,

recipients: rec,

subject: ‘Numerik Sync Failure: Customer Record ‘ + entityid,

body: ‘Account ID: ‘ + acnt + ‘n’ +

‘Environment: ‘ + env + ‘n’ +

‘Script: ‘ + scriptid + ‘n’ +

‘Error Details: ‘ + e.name + ‘n’ +

‘Error Message: ‘ + e.message

});

}

}

/****Function to get customer datas*****/

function CusData(cusrecord) {

try {

cusname = cusrecord.getText({fieldId: ‘entityid’});

cusadr1 = cusrecord.getValue({fieldId: ‘billaddr1’});

cusadr2 = cusrecord.getValue({fieldId: ‘billaddr2’});

cusadr3 = cusrecord.getValue({fieldId: ‘billaddr3’});

cusemail = cusrecord.getValue({fieldId: ’email’});

cusphone = cusrecord.getValue({fieldId: ‘phone’});

postcode = cusrecord.getValue({fieldId: ‘billzip’});

cuscity = cusrecord.getValue({fieldId: ‘billcity’});

cuscountry = cusrecord.getValue({fieldId: ‘billcountry’});

primarycontact = cusrecord.getValue(‘contact’);

cusalesrep = cusrecord.getText({fieldId: ‘salesrep’});

cusgrp1 = cusrecord.getText(‘custentity32’);

cusgrp2 = cusrecord.getText(‘custentity_distribution_channel’);

cusgrp4 = cusrecord.getText(‘custentity43’);

cusgrp6 = cusrecord.getValue(‘custentity44’);

cusgrp7 = cusrecord.getValue(‘parent’);

cusgrp8 = cusrecord.getText(‘custentity2’);

cusgrp9 = cusrecord.getText(‘custentity_rep_run’);

return cusname, cusadr1, cusadr2, cusadr3, cusemail, cuscity, cuscountry, cusalesrep, cusphone, cusgrp1, cusgrp2, cusgrp4, cusgrp6, cusgrp7, cusgrp8, cusgrp9, postcode, primarycontact;

} catch (e) {

log.debug({title: “Error@customer”, details: e.message});

log.error({title: “Error@customer”, details: e.message});

}

}

return {afterSubmit}

});

Leave a comment

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