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}
});