Integrate CRM to NetSuite

Jira Code: ME-51

1. Sync Customers to NetSuite when an Opportunity is created.

Oracle REST APIs in Oracle Sales Cloud to fetch the Opportunities from  Oracle Engagement   Cloud. From the fetched Opportunities we perform the Customer updation for the  Opportunities. We use Opportunity TargetPartyId to fetch the corresponding Customer.    

The PartyId of customer  available in the CRM  is  Map to NetSuite Customer  PartyId. Customer PartyId is placed in a custom Field CRM Partyid in NetSuite.

We are using the NetSuite Customer CRM Partyid and CRM Customer  PartyId to match the Customer in CRM to Customer in NetSuite. If Customer is present in NetSuite for the corresponding Customer PartyId in CRM, it load the Customer and updates customer details if any. In the else partId , if Customer is not present, creates customer with the fetched data and  PartyId is set to external id  and CRM Partyid Field in NetSuite.

2. Sync Contacts to NetSuite when an Opportunity is created.

From the fetched Opportunities we perform the Contacts updation for the  Opportunities. We use Opportunity TargetPartyId to fetch the corresponding Contacts.    

The PartyId of Contacts available in the CRM  is  Map to Netsuite Contacts   PartyId. Contacts PartyId is placed in a custom Field CRM Partyid in NetSuite.

We are using the NetSuite Contact CRM Partyid and CRM  Contact PartyId to match the  Contact in CRM to  Contacts in NetSuite. If  Contact is present in NetSuite for the corresponding  Contact PartyId in CRM, it load the  Contact and updates  Contact details if any. In the else part , if  Contact is not present, creates  Contact  with the fetched data and  PartyId is set to external id  and CRM Partyid Field in NetSuite.

3. Sync Products to Netsuite when an Opportunity is created.

Oracle REST APIs in Oracle Sales Cloud to fetch the Opportunities from  Oracle Engagement   Cloud. From the fetched Opportunities we perform the item updation for the  Opportunities. We use Opportunity InventoryItemId to fetch the corresponding products.    

The InventoryItemId of products available in the CRM  is  Map to NetSuite  Customer InventoryItemId. Product  InventoryItemId is placed in a custom Field CRM Partyid in NetSuite.

We are using the NetSuite item CRM  InventoryItemId and CRM product   InventoryItemId to match the product in CRM to items in NetSuite. If an item is present in NetSuite for the corresponding product InventoryItemId in CRM, it load the item and updates item details if any. In the else part , if an item is not present, creates an item with the fetched data and   InventoryItemId is set to external id  and CRM Partyid Field in NetSuite.

/**
 * @NApiVersion 2.x
 * @NScriptType ScheduledScript
 * @NModuleScope SameAccount
 */
/**
 * Script Description
 * Script to Integrate Customers,Contacts,products to NS when opportunities are created in CRM
 **/
/*******************************************************************************
 * MANGALAM
 * **************************************************************************
 * 
 * Date: 28-08-2018
 * 
 * Author: Jobin & Jismi IT Services LLP
 * 
 * 
 * REVISION HISTORY 
 * 
 * Revision 1 $ 11-03-2019 rijoy : Created
 * 
 *****************************************************************************
 **/
define(['N/file', 'N/http', 'N/https', 'N/record', 'N/runtime','N/search'],
		/**
		 * @param {file} file
		 * @param {http} http
		 * @param {https} https
		 * @param {record} record
		 * @param {runtime} runtime
		 */
		function(file, http, https, record, runtime,search) {

	/**
	 * Definition of the Scheduled script trigger point.
	 *
	 * @param {Object} scriptContext
	 * @param {string} scriptContext.type - The context in which the script is executed. It is one of the values from the scriptContext.InvocationType enum.
	 * @Since 2015.2
	 */
	var item_Objdetails=[];
	var customers={};
	var	contacts={};
	var products={};
	var R_offset;
	var R_limit;
	var n;
	var ContobjRecord;
	var newContact;
	var newCustomer;
	var CustobjRecord;
	var Cust_entityid;
	var newProduct;
	var ProdobjRecord;
	function execute(scriptContext) {
		try{
			var OppChild_response=[];
			var Cont_response=[];
			var OppProd_response=[];
			var Prod_response=[];
			var Cust_response=[];
			/*CRM Opportunities count fetch API*/
			var Opp_response=https.get({
				url:'https://eheg-test.fa.em2.oraclecloud.com/crmRestApi/resources/11.13.18.05/opportunities?totalResults=true',
				headers:{
					authorization:'Basic aW1wX3VzZXI6ZmlsaXhAcHJvZDEyMw==',
					accept:'application/json'
				}
			});
			var Opp_content=JSON.parse(Opp_response.body);
			var T_results=Opp_content.totalResults;
			R_count=500;
			R_offset=0;
			R_limit=500;
			n=Math.ceil(T_results/R_count);
			for(var i=0;i<n;i++)
			{   
				/*CRM all Opportunities fetch API with offset and limit specified*/
				OppChild_response.push(JSON.parse(https.get({
					url:'https://eheg-test.fa.em2.oraclecloud.com/crmRestApi/resources/11.13.18.05/opportunities?q=TransferToNetsuite_c=true;StatusCode=WON&offset='+R_offset+'&limit='+R_limit+'',
					headers:{
						authorization:'Basic aW1wX3VzZXI6ZmlsaXhAcHJvZDEyMw==',
						accept:'application/json'
					}
				}).body));  
				R_offset=R_limit;
				R_limit=R_limit+R_count;
				OppChild_content=OppChild_response;
				for(var j=0;j<OppChild_content[i].items.length;j++){
					if(OppChild_content[i].items[j].StgOrder=="7"||OppChild_content[i].items[j].StgOrder=="8"){
						/* API to fetch revenue id from opportunities of CRM in order to get inventory item details */
						OppProd_response.push(JSON.parse(https.get({
							url:'https://eheg-test.fa.em2.oraclecloud.com/crmRestApi/resources/11.13.18.05/opportunities/'+OppChild_content[i].items[j].OptyNumber+'/child/ChildRevenue',
							headers:{
								authorization:'Basic aW1wX3VzZXI6ZmlsaXhAcHJvZDEyMw==',
								accept:'application/json'
							}
						}).body));
						/*CRM customers of corresponding opportunities fetch API*/
						Cust_response.push(JSON.parse(https.get({
							url:'https://eheg-test.fa.em2.oraclecloud.com/crmRestApi/resources/11.13.18.05/accounts?q=PartyId='+OppChild_content[i].items[j].TargetPartyId+'',
							headers:{
								authorization:'Basic aW1wX3VzZXI6ZmlsaXhAcHJvZDEyMw==',
								accept:'application/json'
							}
						}).body));
						/*CRM Contacts fetch API of corresponding customers of opportunities*/
						Cont_response.push(JSON.parse(https.get({
							url:'https://eheg-test.fa.em2.oraclecloud.com/crmRestApi/resources/11.13.18.05/contacts?q=AccountPartyId='+OppChild_content[i].items[j].TargetPartyId+'',
							headers:{
								authorization:'Basic aW1wX3VzZXI6ZmlsaXhAcHJvZDEyMw==',
								accept:'application/json'
							}
						}).body));
					}
				}
			}
			/*Function call to create and edit customers in NS*/
			for(i=0;i<Object.keys(Cust_response).length;i++){
				for(j=0;j<Cust_response[i].items.length;j++){
					CE_customer(Cust_response[i].items[j]); 
				}
			}
			/*Function call to create and edit customers in NS*/
			for(i=0;i<Cont_response.length;i++){
				if(Cont_response[i].count>0){
					for(j=0;j<Cont_response[i].items.length;j++){
						CE_Contacts(Cont_response[i].items[j]);	
					}
				}
			}
			/*CRM Products fetch API of corresponding opportunities*/
			for(i=0;i<OppProd_response.length;i++){
				for(j=0;j<OppProd_response[i].items.length;j++){
					Prod_response.push(JSON.parse(https.get({
						url:'https://eheg-test.fa.em2.oraclecloud.com/crmRestApi/resources/11.13.18.05/products/'+OppProd_response[i].items[j].InventoryItemId+'',
						headers:{
							authorization:'Basic aW1wX3VzZXI6ZmlsaXhAcHJvZDEyMw==',
							accept:'application/json'
						}
					}).body));
				}
			}
			/*To store custom record values to object item_0bj*/
			var customrecord_jj_crm_prodyct_valuesSearchObj = search.create({
				type: "customrecord_jj_crm_prodyct_values",
				columns:[{
					name: 'custrecord_jj_crm_name',
				},
				{
					name: 'custrecord_jj_crm_category',
				},
				{
					name: 'custrecord_jj_crm_value',
				}],

			});
			customrecord_jj_crm_prodyct_valuesSearchObj.run().each(function(result){
				var item_0bj={};
				item_0bj.name=result.getValue({
					name: 'custrecord_jj_crm_name'
				});
				item_0bj.category=result.getText({
					name: 'custrecord_jj_crm_category'
				});
				item_0bj.value=result.getValue({
					name: 'custrecord_jj_crm_value'
				});
				item_Objdetails.push(item_0bj);
				return true;

			});
			/*To integrate Products to NS when corresponding opportunity is created*/
			for(i=0;i<Prod_response.length;i++){
				if(!products[Prod_response[i].InventoryItemId]){
					var prodSearch = search.create({
						type:search.Type.INVENTORY_ITEM,
						columns:[{
							name: 'internalid',
						}],
						filters: [{
							name: 'custitem_jj_crm_inventoryitemid',
							operator: 'is',
							values:[Prod_response[i].InventoryItemId]
						}]
					});
					prodSearch.run().each(function(result){
						products[Prod_response[i].InventoryItemId]=result.getValue({
							name:'internalid',
						});
						return false;
					});
				}
				/*To Create products to NS when corresponding opportunity is created*/
				if(!products[Prod_response[i].InventoryItemId])
				{
					newProduct = record.create({
						type: record.Type.INVENTORY_ITEM, 
						isDynamic: true,
					});
					var flag=0;
					newProduct.setValue({
						fieldId: 'itemid',
						value:checkForParameter(Prod_response[i].ItemNumber)
					});
					newProduct.setValue({
						fieldId: 'displayname',
						value:checkForParameter(Prod_response[i].ItemNumber)
					});

					newProduct.setValue({
						fieldId: 'custitem_jj_manufacturer_part_no',
						value:checkForParameter(Prod_response[i].ItemNumber)
					});
					newProduct.setValue({
						fieldId: 'custitem_jj_confirm_manufacturer_part',
						value:checkForParameter(Prod_response[i].Name)
					});
					newProduct.setValue({
						fieldId: 'custitem_jj_make',
						value:checkForParameter(Prod_response[i].Make_c)
					});
					newProduct.setText({
						fieldId: 'custitem_jj_sales_type',
						text:checkForParameter(Prod_response[i].SalesType_c)
					});

					if(Prod_response[i].Availability_c!=="null" && Prod_response[i].Availability_c!==null && Prod_response[i].Availability_c!=="" && Prod_response[i].Availability_c !== undefined){
						var arr_Avail_setfieldsT=["custitem_jj_availability"];
						var arr_Avail_setvaluesT=[Prod_response[i].Availability_c];
						set_CustomFields(arr_Avail_setfieldsT,arr_Avail_setvaluesT,"",flag);	
					}
					newProduct.setValue({
						fieldId: 'custitem_jj_packing_qty',
						value:checkForParameter(Prod_response[i].PackingQty_c)
					});
					newProduct.setValue({
						fieldId: 'custitem_jj_package_type_outline',
						value:checkForParameter(Prod_response[i].PrdPackageTypeOutline_c)
					});
					if(Prod_response[i].PrdProductCategory_c=="Temperature Measurement Access")
					{
						Prod_response[i].PrdProductCategory_c=Prod_response[i].PrdProductCategory_c+"ories";
					}
					else if(Prod_response[i].PrdProductCategory_c=="Anamet Cable Conduit"){
						Prod_response[i].PrdProductCategory_c=Prod_response[i].PrdProductCategory_c.replace(/^(Anamet )/,"");
					}
					newProduct.setText({
						fieldId: 'custitem_jj_product_category',
						text:Prod_response[i].PrdProductCategory_c
					});
					newProduct.setText({
						fieldId: 'custitem_jj_default_uom',
						text:checkForParameter(Prod_response[i].DefaultUOM)
					});
					newProduct.setText({
						fieldId: ' department',
						text:checkForParameter(Prod_response[i].DepartmentNetsuite_c)
					});
					newProduct.setValue({
						fieldId: 'salesdescription',
						value:checkForParameter(Prod_response[i].Description)
					});
					newProduct.setValue({
						fieldId: 'purchasedescription',
						value:checkForParameter(Prod_response[i].Description)
					});
					/*newProduct.setValue({
							fieldId: 'custpage_in_hsn_code_temp',
							value:Prod_response[i].HSNCode_c
						});*/
					newProduct.setValue({
						fieldId: 'cogsaccount',
						value:'116'
					});
					newProduct.setValue({
						fieldId: 'assetaccount',
						value:'216'
					});
					newProduct.setValue({
						fieldId: 'incomeaccount',
						value:'54'
					});
					newProduct.setValue({
						fieldId: 'custitem_jj_crm_inventoryitemid',
						value:checkForParameter(''+Prod_response[i].InventoryItemId)
					});
					newProduct.setValue({
						fieldId: 'externalid',
						value:checkForParameter(''+Prod_response[i].InventoryItemId)
					});
					var type=Prod_response[i].PrdProductCategory_c;
					switch(type) {
					case "LV Switchgear":
						var LV_setfieldsV=["custitem_jj_lv_switchgear_voltage","custitem_jj_lvswitchgear_current","custitem_jj_no_of_poles","custitem_jj_auxillary_contact","custitem_jj_coil_voltage","custitem_jj_setting_range"];
						var LV_setvaluesV=[Prod_response[i].RatedVoltage_c,Prod_response[i].RatedCurrent_c,Prod_response[i].PrdLVSwitchgearNoOfPoles_c,Prod_response[i].PrdLVSwitchgearAuxillaryContact_c,Prod_response[i].PrdLVSwitchgearCoilVoltage_c,Prod_response[i].LVSwitchgearSettingRangeOfOLReleaseA_c];
						var LV_setfieldsT= ["custitem_jj_lvswitchgear_type","custitem_jj_application","custitem_jj_lvswitchgear_duty_class"];
						var LV_setvaluesT=[Prod_response[i].PrdLVSwitchgearType_c,Prod_response[i].PrdLVSwitchgearApplication_c,Prod_response[i].PrdLVSwitchgearDutyClass_c];
						EditCr_Products(LV_setfieldsV,LV_setvaluesV,LV_setfieldsT,LV_setvaluesT,flag);
						break;
					case "Fuse":
						var Fuse_setfieldsV=["custitem_jj_private_part_no","custitem_jj_voltage_rating","custitem_jj_current_rating"];
						var Fuse_setvaluesV=[Prod_response[i].PrdFusePrivatePartNoLabel_c,Prod_response[i].RatedVoltage_c,Prod_response[i].RatedCurrent_c];
						var Fuse_setfieldsT=["custitem_jj_fuse_type","custitem_jj_contact_version","custitem_jj_indicating_system"];
						var Fuse_setvaluesT=[Prod_response[i].PrdFuseType_c,Prod_response[i].PrdFuseContactVersion_c,Prod_response[i].PrdFuseIndSystem_c];
						EditCr_Products(Fuse_setfieldsV,Fuse_setvaluesV,Fuse_setfieldsT,Fuse_setvaluesT,flag);
						break;
					case "Fuse Accessories":
						var FuseA_setfieldsV=["custitem_jj_fuse_accessories_type"];
						var FuseA_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(FuseA_setfieldsV,FuseA_setvaluesV,"","",flag);
						break;
					case "Capacitor(IHM)":
						var Capacitor_setfieldsV=["custitem_jj_kvar","custitem_jj_capacitor_frequecy","custitem_jj_capacitor_voltage","custitem_jj_capacitor_length","custitem_jj_capacitor_breadth","custitem_jj_capacitor_height","custitem_jj_phase","custitem_jj_pressure_switch"];
						var Capacitor_setvaluesV=[Prod_response[i].PrdCapacitorKVAR_c,Prod_response[i].PrdCapacitorFrequecyHz_c,Prod_response[i].PrdCapacitorVoltageV_c,Prod_response[i].PrdCapacitorLength_c,Prod_response[i].PrdCapacitorBreadth_c,Prod_response[i].PrdCapacitorHeight_c,Prod_response[i].PrdCapacitorPhase_c,Prod_response[i].PrdCapacitorPressureSwitch_c];
						var Capacitor_setfieldsT=["custitem_jj_no_of_terminals","custitem_jj_capacitor_type","custitem_jj_capacitor_case_type"];
						var Capacitor_setvaluesT=[Prod_response[i].PrdCapacitorNoOfTerminals_c,Prod_response[i].PrdCapacitorBankConnectionType_c,Prod_response[i].PrdCapacitorCaseType_c];
						EditCr_Products(Capacitor_setfieldsV,Capacitor_setvaluesV,Capacitor_setfieldsT,Capacitor_setvaluesT,flag);
						break;
					case "IGBT":
						var IGBT_setfieldsV=["custitem_jj_igbt_voltage","custitem_jj_igbt_current","custitem_jj_igbt_height","custitem_jj_igbt_width"];
						var IGBT_setvaluesV=[Prod_response[i].PrdIGBTVoltageVCES_c,Prod_response[i].PrdIGBTCurrentIC_c,Prod_response[i].PrdIGBTHeightmm_c,Prod_response[i].PrdIGBTWidthmm_c];
						var IGBT_setfieldsT=["custitem_jj_igbt_circuit"];
						var IGBT_setvaluesT=[Prod_response[i].PrdIGBTCircuit_c];
						EditCr_Products(IGBT_setfieldsV,IGBT_setvaluesV,IGBT_setfieldsT,IGBT_setvaluesT,flag);
						break;
					case "Bi Polar":
						var BiPolar_setfieldsV=["custitem_jj_bi_polarprivate_part","custitem_jj_contact_diameter","custitem_jj_package_height","custitem_jj_average_current","custitem_jj_piv"];
						var BiPolar_setvaluesV=[Prod_response[i].PrdBiPolarPrivatePartNoLabel_c,Prod_response[i].PrdBiPolarContactDiametermm_c,Prod_response[i].PrdBiPolarPackageHeightmm_c,Prod_response[i].PrdBiPolarAverageCurrentItAV_c,Prod_response[i].PrdBiPolarPIV_c];
						var BiPolar_setfieldsT=["custitem_jj_hps_bi_polar_type"];
						var BiPolar_setvaluesT=[Prod_response[i].PrdBiPolarType_c];
						EditCr_Products(BiPolar_setfieldsV,BiPolar_setvaluesV,BiPolar_setfieldsT,BiPolar_setvaluesT,flag);
						break;
					case "Encoders":
						var Encoders_setfieldsV=["custitem_jj_ppr"];
						var Encoders_setvaluesV=[Prod_response[i].PrdEncodersPPR_c];
						var Encoders_setfieldsT=["custitem_jj_encoders_type","custitem_jj_encoders_output_signal","custitem_jj_encoders_duty_class","custitem_jj_encoders_supply_voltage","custitem_jj_bus_output","custitem_jj_single_turn_resolution","custitem_jj_multiple_turn","custitem_jj_construction_type"];
						var Encoders_setvaluesT=[Prod_response[i].PrdEncodersType_c,Prod_response[i].PrdEncodersOutputSignal_c,Prod_response[i].PrdEncodersDutyClass_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdEncodersBusOutput_c,Prod_response[i].PrdEncodersSingleTurnResolutionCPRBits_c,Prod_response[i].PrdEncodersMultipleTurnNoOfRevolutionsBits_c,Prod_response[i].PrdEncodersConstructionType_c];
						EditCr_Products(Encoders_setfieldsV,Encoders_setvaluesV,Encoders_setfieldsT,Encoders_setvaluesT,flag);
						break;
					case "Loop Scanner":
						var LoopScanner_setfieldsV=["custitem_jj_loop_scanner_type"];
						var LoopScanner_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(LoopScanner_setfieldsV,LoopScanner_setvaluesV,"","",flag);
						break;
					case "Cable Conduit":
						var CableConduit_setfieldsV=["custitem_jj_temperature_withstand","custitem_jj_internal_dia","custitem_jj_outer_dia","custitem_jj_cable_conduit_moc","custitem_jj_flexibility","custitem_jj_approvals","custitem_jj_colour","custitem_jj_standard_pack_qty","custitem_jj_compression_resistance","custitem_jj_type_of_interlocking"];
						var CableConduit_setvaluesV=[Prod_response[i].PrdAnametCableConduitTemperatureWithstand_c,Prod_response[i].PrdAnametCableConduitInternalDia_c,Prod_response[i].PrdAnametCableConduitOuterDia_c,Prod_response[i].PrdAnametCableConduitMOC_c,Prod_response[i].PrdAnametCableConduitFlexibility_c,Prod_response[i].PrdAnametCableConduitApprovals_c,Prod_response[i].PrdAnametCableConduitColour_c,Prod_response[i].PrdAnametCableConduitStandardPackQty_c,Prod_response[i].PrdAnametCableConduitCompressionResistance_c,Prod_response[i].PrdAnametCableConduit_c];
						var CableConduit_setfieldsT=["custitem_jj_cable_protection_class"];
						var CableConduit_setvaluesT=[Prod_response[i].PrdAnametCableConduitProtectionClass_c];
						EditCr_Products(CableConduit_setfieldsV,CableConduit_setvaluesV,CableConduit_setfieldsT,CableConduit_setvaluesT,flag);
						break;
					case "Others":
						var LoopScanner_setfieldsV=["custitem_jj_others_type"];
						var LoopScanner_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(LoopScanner_setfieldsV,LoopScanner_setvaluesV,"","",flag);
						break;
					case "Temperature Measurement Accessories":
						var Temp_setfieldsV=["custitem_jj_temperature_measurement"];
						var Temp_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(Temp_setfieldsV,Temp_setvaluesV,"","",flag);
						break;
					case "Pyrometer":
						var arr_Pyrometer_setfieldsT=["custitem_jj_temperature_range","custitem_jj_spectral_range","custitem_jj_optical_resolution","custitem_jj_ambient_temperature","custitem_jj_output_analogue","custitem_jj_optionalinterfaces","custitem_jj_additional_cable_length"];
						var arr_Pyrometer_setvaluesT=[Prod_response[i].PrdPyrometerTemperatureRange_c,Prod_response[i].PrdPyrometerSpectralRange_c,Prod_response[i].PrdPyrometerOpticalResolution_c,Prod_response[i].PrdAmbientTemperature_c,Prod_response[i].PrdPyrometerOutputAnalogue_c,Prod_response[i].PrdPyrometerOptionalInterfacesToBeOrderedSeperately_c,Prod_response[i].PrdPyrometerAdditionalCableLength_c];
						set_CustomFields(arr_Pyrometer_setfieldsT,arr_Pyrometer_setvaluesT,"Pyrometer",flag);
						var Pyrometer_setfieldsT=["custitem_jj_pyrometer_supply_voltage","custitem_jj_standard_cable_length"];
						var Pyrometer_setvaluesT=[Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdPyrometerStandardCableLength_c];
						EditCr_Products("","",Pyrometer_setfieldsT,Pyrometer_setvaluesT,flag);
						break;
					case "Thermal Imaging Camera":
						var arr_Thermal_setfieldsT=["custitem_jj_thermal_optical_resolution","custitem_jj_standard_temperature_range","custitem_jj_additional_callibration"];
						var arr_Thermal_setvaluesT=[Prod_response[i].PrdThermalImagingCameraOpticalResolution_c,Prod_response[i].PrdThermalImagingCameraStandardTemperatureRange_c,Prod_response[i].PrdThermalImagingCameraAdditionalCalibrationRange_c];
						set_CustomFields(arr_Thermal_setfieldsT,arr_Thermal_setvaluesT,"Thermal Imaging Camera",flag);
						var Thermal_setfieldsV=["custitem_jj_lens"];
						var Thermal_setvaluesV=[Prod_response[i].PrdThermalImagingCameraLensFOV_c];
						var Thermal_setfieldsT=["custitem_jj_thermal_imaging_supply","custitem_jj_thermal_sensitivity"];
						var Thermal_setvaluesT=[Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdThermalImagingCameraThermalSensitivityNETD_c];
						EditCr_Products(Thermal_setfieldsV,Thermal_setvaluesV,Thermal_setfieldsT,Thermal_setvaluesT,flag);
						break;
					case "Proximity":
						var arr_Proximity_setfieldsT=["custitem_jj_proximity_ambient_temp","custitem_jj_connection","custitem_jj_proximity_output",];
						var arr_Proximity_setvaluesT=[Prod_response[i].PrdAmbientTemperature_c,Prod_response[i].PrdProximityConnection_c,Prod_response[i].PrdOutput_c];
						set_CustomFields(arr_Proximity_setfieldsT,arr_Proximity_setvaluesT,"Proximity",flag);
						var Proximity_setfieldsV=["custitem_jj_proximity_accessories"];
						var Proximity_setvaluesV=[Prod_response[i].PrdProximityAccessories_c];
						var Proximity_setfieldsT=["custitem_jj_operating_distance","custitem_jj_proximity_housing_size","custitem_jj_moc","custitem_jj_protection_class","custitem_jj_mounting","custitem_jj_no_of_wires","custitem_jj_proximity_supply_voltage","custitem_jj_cable_moc","custitem_jj_cable_length"];
						var Proximity_setvaluesT=[Prod_response[i].PrdProximityOperatingDistance_c,Prod_response[i].PrdProximityHousingSize_c,Prod_response[i].PrdProximityMOC_c,Prod_response[i].PrdProximityProtectionClass_c,Prod_response[i].PrdProximityMounting_c,Prod_response[i].PrdProximityNoofWires_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdProximityCableMOC_c,Prod_response[i].PrdProximityCableLength_c];
						EditCr_Products(Proximity_setfieldsV,Proximity_setvaluesV,Proximity_setfieldsT,Proximity_setvaluesT,flag);
						break;
					case "HMD":
						var arr_HMD_setfieldsT=["custitem_jj_response_temperature","custitem_jj_hmd_output","custitem_jj_hmd_interface_options","custitem_jj_fov"];
						var arr_HMD_setvaluesT=[Prod_response[i].PrdHMDResponseTemperature_c,Prod_response[i].PrdOutput_c,Prod_response[i].PrdInterfaceOptions_c,Prod_response[i].PrdHMDFOV_c];
						set_CustomFields(arr_HMD_setfieldsT,arr_HMD_setvaluesT,"HMD",flag);
						var HMD_setfieldsT=["custitem_jj_hmd_type","custitem_jj_hmd_supply_voltage","custitem_jj_cooling","custitem_jj_hmd_housing"];
						var HMD_setvaluesT=[Prod_response[i].PRProductType_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdHMDCooling_c,Prod_response[i].PrdHMDHousing_c];
						EditCr_Products("","",HMD_setfieldsT,HMD_setvaluesT,flag);
						break;
					case "Light Barrier":
						var arr_Barrier_setfieldsT=["custitem_jj_light_barrier_photo_out","custitem_jj_light_barrier_ambient_temp"];
						var arr_Barrier_setvaluesT=[Prod_response[i].PrdOutput_c,Prod_response[i].PrdAmbientTemperature_c];
						set_CustomFields(arr_Barrier_setfieldsT,arr_Barrier_setvaluesT,"Light Barrier",flag);
						var Barrier_setfieldsV=["custitem_jj_dimensions"];
						var Barrier_setvaluesV=[Prod_response[i].PrdLightBarrierDimensions_c];	
						var Barrier_setfieldsT=["custitem_jj_light_barrier_photocell","custitem_jj_sensing_range","custitem_jj_light_barrier_housing"];
						var Barrier_setvaluesT=[Prod_response[i].PrdLightBarrierPhotocellType_c,Prod_response[i].PrdLightBarrierPhotocellSensingRange_c,Prod_response[i].PrdLightBarrierHousing_c];
						EditCr_Products(Barrier_setfieldsV,Barrier_setvaluesV,Barrier_setfieldsT,Barrier_setvaluesT,flag);
						break;
					case "Laser Distance Metre":
						var arr_Laser_setfieldsT=["custitem_jj_accuracy","custitem_jj_ldm_ambient_temperature","custitem_jj_ldm_interface_options"];
						var arr_Laser_setvaluesT=[Prod_response[i].PrdLaserDistanceMetreAccuracy_c,Prod_response[i].PrdAmbientTemperature_c,Prod_response[i].PrdInterfaceOptions_c];
						set_CustomFields(arr_Laser_setfieldsT,arr_Laser_setvaluesT,"Laser Distance Metre",flag);
						var Laser_setfieldsV=["custitem_jj_response_time","custitem_jj_measuring_frequency","custitem_jj_divergence","custitem_jj_ldm_dimensions"];
						var Laser_setvaluesV=[Prod_response[i].PrdLaserDistanceMetreResponseTime_c,Prod_response[i].PrdLaserDistanceMetreMeasuringFrequency_c,Prod_response[i].PrdLaserDistanceMetreDivergence_c,Prod_response[i].PrdLaserDistanceMetreDimensions_c];	
						var Laser_setfieldsT=["custitem_jj_measuring_distance","custitem_jj_laser_class","custitem_jj_laser_distance_metre_out","custitem_jj_ldm_supply_voltage","custitem_jj_ldm_protection_class","custitem_jj_switching_digital_output"];
						var Laser_setvaluesT=[Prod_response[i].PrdLaserDistanceMetreMeasuringDistance_c,Prod_response[i].PrdLaserDistanceMetreLaserClass_c,Prod_response[i].PrdLaserDistanceMetreOutput_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdLaserDistanceMetreProtectionClass_c,Prod_response[i].PrdLaserDistanceMetreSwitchingDigitalOutput_c];
						EditCr_Products(Laser_setfieldsV,Laser_setvaluesV,Laser_setfieldsT,Laser_setvaluesT,flag);
						break;
					}
					var recId = newProduct.save({
						enableSourcing: true,
						ignoreMandatoryFields: true
					});
					products[Prod_response[i].InventoryItemId]= recId;

					log.debug({
						title:'Prod recId',
						details: recId
					});					
				}
				/*To Edit products to NS when corresponding opportunity is created*/
				else{
					ProdobjRecord = record.load({
						type: record.Type.INVENTORY_ITEM,
						id:products[Prod_response[i].InventoryItemId],
						isDynamic: true,
					});
					var flag=1;
					ProdobjRecord.setValue({
						fieldId: 'itemid',
						value:checkForParameter(Prod_response[i].ItemNumber)
					});
					ProdobjRecord.setValue({
						fieldId: 'displayname',
						value:checkForParameter(Prod_response[i].ItemNumber)
					});
					ProdobjRecord.setValue({
						fieldId: 'custitem_jj_manufacturer_part_no',
						value:checkForParameter(Prod_response[i].ItemNumber)
					});
					ProdobjRecord.setValue({
						fieldId: 'custitem_jj_confirm_manufacturer_part',
						value:checkForParameter(Prod_response[i].Name)
					});
					ProdobjRecord.setValue({
						fieldId: 'custitem_jj_make',
						value:checkForParameter(Prod_response[i].Make_c)
					});
					ProdobjRecord.setText({
						fieldId: 'custitem_jj_sales_type',
						text:checkForParameter(Prod_response[i].SalesType_c)
					});

					if(Prod_response[i].Availability_c!=="null" && Prod_response[i].Availability_c!==null && Prod_response[i].Availability_c!=="" && Prod_response[i].Availability_c !== undefined){
						var arr_Avail_setfieldsT=["custitem_jj_availability"];
						var arr_Avail_setvaluesT=[Prod_response[i].Availability_c];
						set_CustomFields(arr_Avail_setfieldsT,arr_Avail_setvaluesT,"",flag);	
					}
					ProdobjRecord.setValue({
						fieldId: 'custitem_jj_packing_qty',
						value:checkForParameter(Prod_response[i].PackingQty_c)
					});
					ProdobjRecord.setValue({
						fieldId: 'custitem_jj_package_type_outline',
						value:checkForParameter(Prod_response[i].PrdPackageTypeOutline_c)
					});
					if(Prod_response[i].PrdProductCategory_c=="Temperature Measurement Access")
					{
						Prod_response[i].PrdProductCategory_c=Prod_response[i].PrdProductCategory_c+"ories";
					}
					else if(Prod_response[i].PrdProductCategory_c=="Anamet Cable Conduit"){
						Prod_response[i].PrdProductCategory_c=Prod_response[i].PrdProductCategory_c.replace(/^(Anamet )/,"");
					}
					ProdobjRecord.setText({
						fieldId: 'custitem_jj_product_category',
						text:Prod_response[i].PrdProductCategory_c
					});					
					ProdobjRecord.setText({
						fieldId: 'custitem_jj_default_uom',
						text:checkForParameter(Prod_response[i].DefaultUOM)
					});
					ProdobjRecord.setText({
						fieldId: 'department',
						text:checkForParameter(Prod_response[i].DepartmentNetsuite_c)
					});

					ProdobjRecord.setValue({
						fieldId: 'salesdescription',
						value:checkForParameter(Prod_response[i].Description)
					});
					ProdobjRecord.setValue({
						fieldId: 'purchasedescription',
						value:checkForParameter(Prod_response[i].Description)
					});
					/*ProdobjRecord.setValue({
							fieldId: 'custpage_in_hsn_code_temp',
							value:Prod_response[i].HSNCode_c
						});*/
					ProdobjRecord.setValue({
						fieldId: 'custitem_jj_crm_inventoryitemid',
						value:checkForParameter(''+Prod_response[i].InventoryItemId)
					});
					var type=Prod_response[i].PrdProductCategory_c;
					switch(type) {
					case "LV Switchgear":
						var LV_setfieldsV=["custitem_jj_lv_switchgear_voltage","custitem_jj_lvswitchgear_current","custitem_jj_no_of_poles","custitem_jj_auxillary_contact","custitem_jj_coil_voltage","custitem_jj_setting_range"];
						var LV_setvaluesV=[Prod_response[i].RatedVoltage_c,Prod_response[i].RatedCurrent_c,Prod_response[i].PrdLVSwitchgearNoOfPoles_c,Prod_response[i].PrdLVSwitchgearAuxillaryContact_c,Prod_response[i].PrdLVSwitchgearCoilVoltage_c,Prod_response[i].LVSwitchgearSettingRangeOfOLReleaseA_c];
						var LV_setfieldsT= ["custitem_jj_lvswitchgear_type","custitem_jj_application","custitem_jj_lvswitchgear_duty_class"];
						var LV_setvaluesT=[Prod_response[i].PrdLVSwitchgearType_c,Prod_response[i].PrdLVSwitchgearApplication_c,Prod_response[i].PrdLVSwitchgearDutyClass_c];
						EditCr_Products(LV_setfieldsV,LV_setvaluesV,LV_setfieldsT,LV_setvaluesT,flag);
						break;
					case "Fuse":
						var Fuse_setfieldsV=["custitem_jj_private_part_no","custitem_jj_voltage_rating","custitem_jj_current_rating"];
						var Fuse_setvaluesV=[Prod_response[i].PrdFusePrivatePartNoLabel_c,Prod_response[i].RatedVoltage_c,Prod_response[i].RatedCurrent_c];
						var Fuse_setfieldsT=["custitem_jj_fuse_type","custitem_jj_contact_version","custitem_jj_indicating_system"];
						var Fuse_setvaluesT=[Prod_response[i].PrdFuseType_c,Prod_response[i].PrdFuseContactVersion_c,Prod_response[i].PrdFuseIndSystem_c];
						EditCr_Products(Fuse_setfieldsV,Fuse_setvaluesV,Fuse_setfieldsT,Fuse_setvaluesT,flag);
						break;
					case "Fuse Accessories":
						var FuseA_setfieldsV=["custitem_jj_fuse_accessories_type"];
						var FuseA_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(FuseA_setfieldsV,FuseA_setvaluesV,"","",flag);
						break;
					case "Capacitor(IHM)":
						var Capacitor_setfieldsV=["custitem_jj_kvar","custitem_jj_capacitor_frequecy","custitem_jj_capacitor_voltage","custitem_jj_capacitor_length","custitem_jj_capacitor_breadth","custitem_jj_capacitor_height","custitem_jj_phase","custitem_jj_pressure_switch"];
						var Capacitor_setvaluesV=[Prod_response[i].PrdCapacitorKVAR_c,Prod_response[i].PrdCapacitorFrequecyHz_c,Prod_response[i].PrdCapacitorVoltageV_c,Prod_response[i].PrdCapacitorLength_c,Prod_response[i].PrdCapacitorBreadth_c,Prod_response[i].PrdCapacitorHeight_c,Prod_response[i].PrdCapacitorPhase_c,Prod_response[i].PrdCapacitorPressureSwitch_c];
						var Capacitor_setfieldsT=["custitem_jj_no_of_terminals","custitem_jj_capacitor_type","custitem_jj_capacitor_case_type"];
						var Capacitor_setvaluesT=[Prod_response[i].PrdCapacitorNoOfTerminals_c,Prod_response[i].PrdCapacitorBankConnectionType_c,Prod_response[i].PrdCapacitorCaseType_c];
						EditCr_Products(Capacitor_setfieldsV,Capacitor_setvaluesV,Capacitor_setfieldsT,Capacitor_setvaluesT,flag);
						break;
					case "IGBT":
						var IGBT_setfieldsV=["custitem_jj_igbt_voltage","custitem_jj_igbt_current","custitem_jj_igbt_height","custitem_jj_igbt_width"];
						var IGBT_setvaluesV=[Prod_response[i].PrdIGBTVoltageVCES_c,Prod_response[i].PrdIGBTCurrentIC_c,Prod_response[i].PrdIGBTHeightmm_c,Prod_response[i].PrdIGBTWidthmm_c];
						var IGBT_setfieldsT=["custitem_jj_igbt_circuit"];
						var IGBT_setvaluesT=[Prod_response[i].PrdIGBTCircuit_c];
						EditCr_Products(IGBT_setfieldsV,IGBT_setvaluesV,IGBT_setfieldsT,IGBT_setvaluesT,flag);
						break;
					case "Bi Polar":
						var BiPolar_setfieldsV=["custitem_jj_bi_polarprivate_part","custitem_jj_contact_diameter","custitem_jj_package_height","custitem_jj_average_current","custitem_jj_piv"];
						var BiPolar_setvaluesV=[Prod_response[i].PrdBiPolarPrivatePartNoLabel_c,Prod_response[i].PrdBiPolarContactDiametermm_c,Prod_response[i].PrdBiPolarPackageHeightmm_c,Prod_response[i].PrdBiPolarAverageCurrentItAV_c,Prod_response[i].PrdBiPolarPIV_c];
						var BiPolar_setfieldsT=["custitem_jj_hps_bi_polar_type"];
						var BiPolar_setvaluesT=[Prod_response[i].PrdBiPolarType_c];
						EditCr_Products(BiPolar_setfieldsV,BiPolar_setvaluesV,BiPolar_setfieldsT,BiPolar_setvaluesT,flag);
						break;
					case "Encoders":
						var Encoders_setfieldsV=["custitem_jj_ppr"];
						var Encoders_setvaluesV=[Prod_response[i].PrdEncodersPPR_c];
						var Encoders_setfieldsT=["custitem_jj_encoders_type","custitem_jj_encoders_output_signal","custitem_jj_encoders_duty_class","custitem_jj_encoders_supply_voltage","custitem_jj_bus_output","custitem_jj_single_turn_resolution","custitem_jj_multiple_turn","custitem_jj_construction_type"];
						var Encoders_setvaluesT=[Prod_response[i].PrdEncodersType_c,Prod_response[i].PrdEncodersOutputSignal_c,Prod_response[i].PrdEncodersDutyClass_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdEncodersBusOutput_c,Prod_response[i].PrdEncodersSingleTurnResolutionCPRBits_c,Prod_response[i].PrdEncodersMultipleTurnNoOfRevolutionsBits_c,Prod_response[i].PrdEncodersConstructionType_c];
						EditCr_Products(Encoders_setfieldsV,Encoders_setvaluesV,Encoders_setfieldsT,Encoders_setvaluesT,flag);
						break;
					case "Loop Scanner":
						var LoopScanner_setfieldsV=["custitem_jj_loop_scanner_type"];
						var LoopScanner_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(LoopScanner_setfieldsV,LoopScanner_setvaluesV,"","",flag);
						break;
					case "Cable Conduit":
						var CableConduit_setfieldsV=["custitem_jj_temperature_withstand","custitem_jj_internal_dia","custitem_jj_outer_dia","custitem_jj_cable_conduit_moc","custitem_jj_flexibility","custitem_jj_approvals","custitem_jj_colour","custitem_jj_standard_pack_qty","custitem_jj_compression_resistance","custitem_jj_type_of_interlocking"];
						var CableConduit_setvaluesV=[Prod_response[i].PrdAnametCableConduitTemperatureWithstand_c,Prod_response[i].PrdAnametCableConduitInternalDia_c,Prod_response[i].PrdAnametCableConduitOuterDia_c,Prod_response[i].PrdAnametCableConduitMOC_c,Prod_response[i].PrdAnametCableConduitFlexibility_c,Prod_response[i].PrdAnametCableConduitApprovals_c,Prod_response[i].PrdAnametCableConduitColour_c,Prod_response[i].PrdAnametCableConduitStandardPackQty_c,Prod_response[i].PrdAnametCableConduitCompressionResistance_c,Prod_response[i].PrdAnametCableConduit_c];
						var CableConduit_setfieldsT=["custitem_jj_cable_protection_class"];
						var CableConduit_setvaluesT=[Prod_response[i].PrdAnametCableConduitProtectionClass_c];
						EditCr_Products(CableConduit_setfieldsV,CableConduit_setvaluesV,CableConduit_setfieldsT,CableConduit_setvaluesT,flag);
						break;
					case "Others":
						var LoopScanner_setfieldsV=["custitem_jj_others_type"];
						var LoopScanner_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(LoopScanner_setfieldsV,LoopScanner_setvaluesV,"","",flag);
						break;
					case "Temperature Measurement Accessories":
						var Temp_setfieldsV=["custitem_jj_temperature_measurement"];
						var Temp_setvaluesV=[Prod_response[i].PRProductType_c];
						EditCr_Products(Temp_setfieldsV,Temp_setvaluesV,"","",flag);
						break;
					case "Pyrometer":
						var arr_Pyrometer_setfieldsT=["custitem_jj_temperature_range","custitem_jj_spectral_range","custitem_jj_optical_resolution","custitem_jj_ambient_temperature","custitem_jj_output_analogue","custitem_jj_optionalinterfaces","custitem_jj_additional_cable_length"];
						var arr_Pyrometer_setvaluesT=[Prod_response[i].PrdPyrometerTemperatureRange_c,Prod_response[i].PrdPyrometerSpectralRange_c,Prod_response[i].PrdPyrometerOpticalResolution_c,Prod_response[i].PrdAmbientTemperature_c,Prod_response[i].PrdPyrometerOutputAnalogue_c,Prod_response[i].PrdPyrometerOptionalInterfacesToBeOrderedSeperately_c,Prod_response[i].PrdPyrometerAdditionalCableLength_c];
						set_CustomFields(arr_Pyrometer_setfieldsT,arr_Pyrometer_setvaluesT,"Pyrometer",flag);
						var Pyrometer_setfieldsT=["custitem_jj_pyrometer_supply_voltage","custitem_jj_standard_cable_length"];
						var Pyrometer_setvaluesT=[Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdPyrometerStandardCableLength_c];
						EditCr_Products("","",Pyrometer_setfieldsT,Pyrometer_setvaluesT,flag);
						break;
					case "Thermal Imaging Camera":
						var arr_Thermal_setfieldsT=["custitem_jj_thermal_optical_resolution","custitem_jj_standard_temperature_range","custitem_jj_additional_callibration"];
						var arr_Thermal_setvaluesT=[Prod_response[i].PrdThermalImagingCameraOpticalResolution_c,Prod_response[i].PrdThermalImagingCameraStandardTemperatureRange_c,Prod_response[i].PrdThermalImagingCameraAdditionalCalibrationRange_c];
						set_CustomFields(arr_Thermal_setfieldsT,arr_Thermal_setvaluesT,"Thermal Imaging Camera",flag);
						var Thermal_setfieldsV=["custitem_jj_lens"];
						var Thermal_setvaluesV=[Prod_response[i].PrdThermalImagingCameraLensFOV_c];
						var Thermal_setfieldsT=["custitem_jj_thermal_imaging_supply","custitem_jj_thermal_sensitivity"];
						var Thermal_setvaluesT=[Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdThermalImagingCameraThermalSensitivityNETD_c];
						EditCr_Products(Thermal_setfieldsV,Thermal_setvaluesV,Thermal_setfieldsT,Thermal_setvaluesT,flag);
						break;
					case "Proximity":
						var arr_Proximity_setfieldsT=["custitem_jj_proximity_ambient_temp","custitem_jj_connection","custitem_jj_proximity_output",];
						var arr_Proximity_setvaluesT=[Prod_response[i].PrdAmbientTemperature_c,Prod_response[i].PrdProximityConnection_c,Prod_response[i].PrdOutput_c];
						set_CustomFields(arr_Proximity_setfieldsT,arr_Proximity_setvaluesT,"Proximity",flag);
						var Proximity_setfieldsV=["custitem_jj_proximity_accessories"];
						var Proximity_setvaluesV=[Prod_response[i].PrdProximityAccessories_c];
						var Proximity_setfieldsT=["custitem_jj_operating_distance","custitem_jj_proximity_housing_size","custitem_jj_moc","custitem_jj_protection_class","custitem_jj_mounting","custitem_jj_no_of_wires","custitem_jj_proximity_supply_voltage","custitem_jj_cable_moc","custitem_jj_cable_length"];
						var Proximity_setvaluesT=[Prod_response[i].PrdProximityOperatingDistance_c,Prod_response[i].PrdProximityHousingSize_c,Prod_response[i].PrdProximityMOC_c,Prod_response[i].PrdProximityProtectionClass_c,Prod_response[i].PrdProximityMounting_c,Prod_response[i].PrdProximityNoofWires_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdProximityCableMOC_c,Prod_response[i].PrdProximityCableLength_c];
						EditCr_Products(Proximity_setfieldsV,Proximity_setvaluesV,Proximity_setfieldsT,Proximity_setvaluesT,flag);
						break;
					case "HMD":
						var arr_HMD_setfieldsT=["custitem_jj_response_temperature","custitem_jj_hmd_output","custitem_jj_hmd_interface_options","custitem_jj_fov"];
						var arr_HMD_setvaluesT=[Prod_response[i].PrdHMDResponseTemperature_c,Prod_response[i].PrdOutput_c,Prod_response[i].PrdInterfaceOptions_c,Prod_response[i].PrdHMDFOV_c];
						set_CustomFields(arr_HMD_setfieldsT,arr_HMD_setvaluesT,"HMD",flag);
						var HMD_setfieldsT=["custitem_jj_hmd_type","custitem_jj_hmd_supply_voltage","custitem_jj_cooling","custitem_jj_hmd_housing"];
						var HMD_setvaluesT=[Prod_response[i].PRProductType_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdHMDCooling_c,Prod_response[i].PrdHMDHousing_c];
						EditCr_Products("","",HMD_setfieldsT,HMD_setvaluesT,flag);
						break;
					case "Light Barrier":
						var arr_Barrier_setfieldsT=["custitem_jj_light_barrier_photo_out","custitem_jj_light_barrier_ambient_temp"];
						var arr_Barrier_setvaluesT=[Prod_response[i].PrdOutput_c,Prod_response[i].PrdAmbientTemperature_c];
						set_CustomFields(arr_Barrier_setfieldsT,arr_Barrier_setvaluesT,"Light Barrier",flag);
						var Barrier_setfieldsV=["custitem_jj_dimensions"];
						var Barrier_setvaluesV=[Prod_response[i].PrdLightBarrierDimensions_c];	
						var Barrier_setfieldsT=["custitem_jj_light_barrier_photocell","custitem_jj_sensing_range","custitem_jj_light_barrier_housing"];
						var Barrier_setvaluesT=[Prod_response[i].PrdLightBarrierPhotocellType_c,Prod_response[i].PrdLightBarrierPhotocellSensingRange_c,Prod_response[i].PrdLightBarrierHousing_c];
						EditCr_Products(Barrier_setfieldsV,Barrier_setvaluesV,Barrier_setfieldsT,Barrier_setvaluesT,flag);
						break;
					case "Laser Distance Metre":
						var arr_Laser_setfieldsT=["custitem_jj_accuracy","custitem_jj_ldm_ambient_temperature","custitem_jj_ldm_interface_options"];
						var arr_Laser_setvaluesT=[Prod_response[i].PrdLaserDistanceMetreAccuracy_c,Prod_response[i].PrdAmbientTemperature_c,Prod_response[i].PrdInterfaceOptions_c];
						set_CustomFields(arr_Laser_setfieldsT,arr_Laser_setvaluesT,"Laser Distance Metre",flag);
						var Laser_setfieldsV=["custitem_jj_response_time","custitem_jj_measuring_frequency","custitem_jj_divergence","custitem_jj_ldm_dimensions"];
						var Laser_setvaluesV=[Prod_response[i].PrdLaserDistanceMetreResponseTime_c,Prod_response[i].PrdLaserDistanceMetreMeasuringFrequency_c,Prod_response[i].PrdLaserDistanceMetreDivergence_c,Prod_response[i].PrdLaserDistanceMetreDimensions_c];	
						var Laser_setfieldsT=["custitem_jj_measuring_distance","custitem_jj_laser_class","custitem_jj_laser_distance_metre_out","custitem_jj_ldm_supply_voltage","custitem_jj_ldm_protection_class","custitem_jj_switching_digital_output"];
						var Laser_setvaluesT=[Prod_response[i].PrdLaserDistanceMetreMeasuringDistance_c,Prod_response[i].PrdLaserDistanceMetreLaserClass_c,Prod_response[i].PrdLaserDistanceMetreOutput_c,Prod_response[i].PrdSupplyVoltage_c,Prod_response[i].PrdLaserDistanceMetreProtectionClass_c,Prod_response[i].PrdLaserDistanceMetreSwitchingDigitalOutput_c];
						EditCr_Products(Laser_setfieldsV,Laser_setvaluesV,Laser_setfieldsT,Laser_setvaluesT,flag);
						break;
					}				
					var recId1 = ProdobjRecord.save({
						enableSourcing: true,
						ignoreMandatoryFields: true
					});
					products[Prod_response[i].InventoryItemId]= recId1;
					log.debug({
						title:'Prod recId1',
						details: recId1
					});
				}
			}
		}
		catch(e){
			log.debug({
				title:'err@Get',
				details:e
			});     	 
		}
	}
	return {
		execute: execute
	};
	/*Function to Create and Edit Customers */
	function CE_customer(Cust_contents){

		if(!customers[Cust_contents.PartyId]){
			var custSearch = search.create({
				type:search.Type.CUSTOMER,
				columns:[{
					name: 'internalid',
				}],
				filters: [{
					name: 'custentity_jj_crm_party_id',
					operator: 'is',
					values:[Cust_contents.PartyId]
				}]
			});
			custSearch.run().each(function(result){
				customers[Cust_contents.PartyId]=result.getValue({
					name:'internalid',
				});
				return false;
			});
		}
		if(!customers[Cust_contents.PartyId])
		{
			newCustomer = record.create({
				type: record.Type.CUSTOMER, 
				isDynamic: true,
			});
			var cust_flag=0;
			newCustomer.setValue({
				fieldId: 'email',
				value:checkForParameter(Cust_contents.OwnerEmailAddress)
			});
			newCustomer.setValue({
				fieldId: 'externalid',
				value:checkForParameter(''+Cust_contents.PartyId)
			});
			newCustomer.setValue({
				fieldId: 'custentity_jj_crm_party_id',
				value:checkForParameter(''+Cust_contents.PartyId)
			});
			newCustomer.setValue({
				fieldId: 'companyname',
				value:checkForParameter(Cust_contents.OrganizationName)
			});
			newCustomer.setText({
				fieldId: 'category',
				text:checkForParameter(Cust_contents.OrganizationDEO_AccountType_c)
			});
			newCustomer.setValue({
				fieldId: 'url',
				value:checkForParameter(Cust_contents.OrganizationDEO_ACCWebsite_c)
			});
			newCustomer.setText({
				fieldId: 'custentity1',
				text:checkForParameter(Cust_contents.OrganizationDEO_AccountNature_c)
			});

			entityid_custcont("Customers",cust_flag,"",Cust_contents.ParentAccountName);

			newCustomer.selectNewLine({
				sublistId: 'addressbook'
			});
			var myaddressCust_subrecord = newCustomer.getCurrentSublistSubrecord({
				sublistId: 'addressbook',
				fieldId: 'addressbookaddress'
			});
			myaddressCust_subrecord.setValue({
				fieldId: 'country',
				value:checkForParameter(Cust_contents.Country)
			});
			myaddressCust_subrecord.setValue({
				fieldId: 'addr1',
				value:checkForParameter(Cust_contents.AddressLine1)   
			});
			myaddressCust_subrecord.setValue({
				fieldId: 'addr2',
				value:checkForParameter(Cust_contents.AddressLine2)
			});
			myaddressCust_subrecord.setValue({
				fieldId: 'addr3',
				value:checkForParameter(Cust_contents.AddressLine3)
			});
			myaddressCust_subrecord.setValue({
				fieldId: 'city',
				value:checkForParameter(Cust_contents.City)
			});
			myaddressCust_subrecord.setText({
				fieldId: 'state',
				text:checkForParameter(Cust_contents.State)
			});
			myaddressCust_subrecord.setValue({
				fieldId: 'zip',
				value:checkForParameter(Cust_contents.PostalCode)
			});
			newCustomer.commitLine({
				sublistId: 'addressbook'
			});
			var recId = newCustomer.save({
				enableSourcing: true,
				ignoreMandatoryFields: true
			});
			customers[Cust_contents.PartyId]= recId;

			log.debug({
				title:'Customer_recId',
				details: recId
			});
		}
		else{
			CustobjRecord = record.load({
				type: record.Type.CUSTOMER, 
				id:customers[Cust_contents.PartyId],
				isDynamic: true,
			});
			var cust_flag=1;
			CustobjRecord.setValue({
				fieldId: 'email',
				value:checkForParameter(Cust_contents.OwnerEmailAddress)
			});
			CustobjRecord.setText({
				fieldId: 'custentity_jj_crm_party_id',
				text:checkForParameter(''+Cust_contents.PartyId)
			});
			CustobjRecord.setValue({
				fieldId: 'companyname',
				value:checkForParameter(Cust_contents.OrganizationName)
			});
			CustobjRecord.setText({
				fieldId: 'category',
				text:checkForParameter(Cust_contents.OrganizationDEO_AccountType_c)
			});
			CustobjRecord.setValue({
				fieldId: 'url',
				value:checkForParameter(Cust_contents.OrganizationDEO_ACCWebsite_c)
			});
			CustobjRecord.setText({
				fieldId: 'custentity1',
				text:checkForParameter(Cust_contents.OrganizationDEO_AccountNature_c)
			});

			entityid_custcont("Customers",cust_flag,"",Cust_contents.ParentAccountName);

			var Cust_adrsLines = CustobjRecord.getLineCount('addressbook');
			for (var iw = 0; iw < Cust_adrsLines; iw++) {
				var Cust_subrec = CustobjRecord.getCurrentSublistSubrecord({
					sublistId: 'addressbook',
					fieldId: 'addressbookaddress',
					line: iw
				});
				var addressee = Cust_subrec.getValue('addressee');
				var addr1 = Cust_subrec.getValue('addr1');
				var addr2 = Cust_subrec.getValue('addr2');
				var addr3 = Cust_subrec.getValue('addr3');
				var city = Cust_subrec.getValue('city');
				var state = Cust_subrec.getValue('state');
				var zip = Cust_subrec.getValue('zip');
				var country = Cust_subrec.getValue('country');

				if (addressee != Cust_contents.OrganizationName && addr1 != Cust_contents.AddressLine1 && addr2 != Cust_contents.AddressLine2 && addr3 != Cust_contents.AddressLine3 && city != Cust_contents.City && state != Cust_contents.State && zip != Cust_contents.PostalCode){
					CustobjRecord.selectLine({
						sublistId:'addressbook',
						line:iw,
					});  
					var myaddressCust_subrecord = CustobjRecord.getCurrentSublistSubrecord({
						sublistId:'addressbook',
						fieldId: 'addressbookaddress',	

					});
					myaddressCust_subrecord.setValue({
						fieldId: 'country',
						value:checkForParameter(Cust_contents.Country)
					});
					myaddressCust_subrecord.setValue({
						fieldId: 'addr1',
						value:checkForParameter(Cust_contents.AddressLine1)
					});
					myaddressCust_subrecord.setValue({
						fieldId: 'addr2',
						value:checkForParameter(Cust_contents.AddressLine2)
					});
					myaddressCust_subrecord.setValue({
						fieldId: 'addr3',
						value:checkForParameter(Cust_contents.AddressLine3)
					});
					myaddressCust_subrecord.setValue({
						fieldId: 'city',
						value:checkForParameter(Cust_contents.City)
					});
					myaddressCust_subrecord.setValue({
						fieldId: 'state',
						value:checkForParameter(Cust_contents.State)
					});

					myaddressCust_subrecord.setValue({
						fieldId: 'zip',
						value:checkForParameter(Cust_contents.PostalCode)
					});
					CustobjRecord.commitLine({
						sublistId: 'addressbook'
					});
				} 
			}
			var recId1 = CustobjRecord.save({
				enableSourcing: true,
				ignoreMandatoryFields: true
			});
			customers[Cust_contents.PartyId]= recId1;
			log.debug({
				title:'Customer_recId1',
				details: recId1
			});
		}
	}
	/*Function to Create and Edit Contacts */
	function CE_Contacts(Cont_contents){
		if(!contacts[Cont_contents.PartyId]){
			var contSearch = search.create({
				type:search.Type.CONTACT,
				columns:[{
					name: 'internalid',
				}],
				filters: [{
					name: 'custentity_jj_crm_party_id',
					operator: 'is',
					values:[Cont_contents.PartyId]
				}]
			});
			contSearch.run().each(function(result){
				contacts[Cont_contents.PartyId]=result.getValue({
					name:'internalid',
				});
				return false;
			});
			if(!contacts[Cont_contents.PartyId])
			{
				newContact = record.create({
					type: record.Type.CONTACT, 
					isDynamic: true,
				});
				var cont_flag=0;
				newContact.setValue({
					fieldId: 'entityid',
					value:checkForParameter(Cont_contents.ContactName)
				});
				newContact.setValue({
					fieldId: 'salutation',
					value:checkForParameter(Cont_contents.SalutoryIntroduction)
				});
				newContact.setValue({
					fieldId: 'firstname',
					value:checkForParameter(Cont_contents.FirstName)
				});
				newContact.setValue({
					fieldId: 'lastname',
					value:checkForParameter(Cont_contents.LastName)
				});
				entityid_custcont("Contacts",cont_flag,Cont_contents.AccountPartyId,Cont_contents.AccountName);
				/*newContact.setText({
					fieldId: 'company',
					text:(Cust_entityid.concat(" ")).concat(Cont_contents.AccountName)
				});*/
				newContact.setValue({
					fieldId: 'title',
					value:checkForParameter(Cont_contents.JobTitle)
				});
				newContact.setValue({
					fieldId: 'mobilephone',
					value:checkForParameter(Cont_contents.FormattedMobileNumber)
				});
				newContact.setValue({
					fieldId: 'phone',
					value:checkForParameter(Cont_contents.FormattedWorkPhoneNumber)
				});
				newContact.setText({
					fieldId: 'custentity_jj_contact_department',
					text:checkForParameter(Cont_contents.PersonDEO_CONDepartment_c)
				});
				newContact.selectNewLine({
					sublistId: 'addressbook'
				});
				newContact.setValue({
					fieldId: 'externalid',
					value:checkForParameter(''+Cont_contents.PartyId)
				});
				newContact.setValue({
					fieldId: 'custentity_jj_crm_party_id',
					value:checkForParameter(''+Cont_contents.PartyId)
				});
				var myaddressCust_subrecord = newContact.getCurrentSublistSubrecord({
					sublistId: 'addressbook',
					fieldId: 'addressbookaddress'
				});
				myaddressCust_subrecord.setValue({
					fieldId: 'country',
					value:checkForParameter(Cont_contents.Country)
				});
				myaddressCust_subrecord.setValue({
					fieldId: 'addr1',
					value:checkForParameter(Cont_contents.AddressLine1)
				});
				myaddressCust_subrecord.setValue({
					fieldId: 'addr2',
					value:checkForParameter(Cont_contents.AddressLine2)
				});
				myaddressCust_subrecord.setValue({
					fieldId: 'addr3',
					value:checkForParameter(Cont_contents.AddressLine3)
				});

				myaddressCust_subrecord.setValue({
					fieldId: 'city',
					value:checkForParameter(Cont_contents.City)
				});
				myaddressCust_subrecord.setText({
					fieldId: 'state',
					text:checkForParameter(Cont_contents.State)
				});

				myaddressCust_subrecord.setValue({
					fieldId: 'zip',
					value:checkForParameter(Cont_contents.PostalCode)
				});
				newContact.commitLine({
					sublistId: 'addressbook'
				});
				var recId = newContact.save({
					enableSourcing: true,
					ignoreMandatoryFields: true
				});
				contacts[Cont_contents.PartyId]= recId;

				log.debug({
					title:'Contact_recId',
					details: recId
				});
			}
			else{
				ContobjRecord = record.load({
					type: record.Type.CONTACT, 
					id:contacts[Cont_contents.PartyId],
					isDynamic: true,
				});
				var cont_flag=1;
				ContobjRecord.setValue({
					fieldId: 'entityid',
					value:checkForParameter(Cont_contents.ContactName)
				});
				ContobjRecord.setValue({
					fieldId: 'salutation',
					value:checkForParameter(Cont_contents.SalutoryIntroduction)
				});
				ContobjRecord.setValue({
					fieldId: 'firstname',
					value:checkForParameter(Cont_contents.FirstName)
				});
				ContobjRecord.setValue({
					fieldId: 'lastname',
					value:checkForParameter(Cont_contents.LastName)
				});
				entityid_custcont("Contacts",cont_flag,Cont_contents.AccountPartyId,Cont_contents.AccountName);
				
				ContobjRecord.setValue({
					fieldId: 'title',
					value:checkForParameter(Cont_contents.JobTitle)
				});
				ContobjRecord.setText({
					fieldId: 'mobilephone',
					text:checkForParameter(Cont_contents.FormattedMobileNumber)
				});
				ContobjRecord.setValue({
					fieldId: 'phone',
					value:checkForParameter(Cont_contents.FormattedWorkPhoneNumber)
				});
				ContobjRecord.setText({
					fieldId: 'custentity_jj_contact_department',
					text:checkForParameter(Cont_contents.PersonDEO_CONDepartment_c)
				});

				ContobjRecord.setValue({
					fieldId: 'externalid',
					value:checkForParameter(''+Cont_contents.PartyId)
				});
				ContobjRecord.setValue({
					fieldId: 'custentity_jj_crm_party_id',
					value:checkForParameter(''+Cont_contents.PartyId)
				});

				var Cont_adrsLines = ContobjRecord.getLineCount('addressbook');
				for (var iw = 0; iw < Cont_adrsLines; iw++) {
					var Cont_subrec = ContobjRecord.getCurrentSublistSubrecord({
						sublistId: 'addressbook',
						fieldId: 'addressbookaddress',
						line: iw
					});
					var addressee = Cont_subrec.getValue('addressee');
					var addr1 = Cont_subrec.getValue('addr1');
					var addr2 = Cont_subrec.getValue('addr2');
					var addr3 = Cont_subrec.getValue('addr3');
					var city = Cont_subrec.getValue('city');
					var state = Cont_subrec.getValue('state');
					var zip = Cont_subrec.getValue('zip');
					var country = Cont_subrec.getValue('country');
					if (addressee != Cont_contents.ContactName && country!=Cont_contents.Country && addr1 != Cont_contents.AddressLine1 && addr2 != Cont_contents.AddressLine2 && addr3 != Cont_contents.AddressLine3 && city != Cont_contents.City && state != Cont_contents.State && zip != Cont_contents.PostalCode){
						ContobjRecord.selectLine({
							sublistId: 'addressbook',
							line:iw
						});
						var myaddressCust_subrecord = ContobjRecord.getCurrentSublistSubrecord({
							sublistId:'addressbook',
							fieldId: 'addressbookaddress'
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'addressee',
							value:checkForParameter(Cont_contents.ContactName)
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'country',
							value:checkForParameter(Cont_contents.Country)
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'addr1',
							value:checkForParameter(Cont_contents.AddressLine1)
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'addr2',
							value:checkForParameter(Cont_contents.AddressLine2)
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'addr3',
							value:checkForParameter(Cont_contents.AddressLine3)
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'city',
							value:checkForParameter(Cont_contents.City)
						});
						myaddressCust_subrecord.setValue({
							fieldId: 'state',
							value:checkForParameter(Cont_contents.State)
						});

						myaddressCust_subrecord.setValue({
							fieldId: 'zip',
							value:checkForParameter(Cont_contents.PostalCode)
						});
						ContobjRecord.commitLine({
							sublistId: 'addressbook'
						});
					}
				}
				var recId1 = ContobjRecord.save({
					enableSourcing: true,
					ignoreMandatoryFields: true
				});
				contacts[Cont_contents.PartyId]= recId1;
				log.debug({
					title:'Contact_recId1',
					details: recId1
				});
			}
		}
	}
	function EditCr_Products(P_setfieldsV,P_setvaluesV,P_setfieldsT,P_setvaluesT,P_flag){
		if(P_flag==0){
			for(var i=0;i<P_setfieldsV.length;i++){
				newProduct.setValue({
					fieldId:P_setfieldsV[i],
					value:checkForParameter(P_setvaluesV[i])
				});
			}
			for(var j=0;j<P_setfieldsT.length;j++){
				newProduct.setText({
					fieldId:P_setfieldsT[j],
					text:checkForParameter(P_setvaluesT[j])
				});
			}
		}
		else{
			for(var i=0;i<P_setfieldsV.length;i++){
				ProdobjRecord.setValue({
					fieldId:P_setfieldsV[i],
					value:checkForParameter(P_setvaluesV[i])
				});
			}
			for(var j=0;j<P_setfieldsT.length;j++){
				ProdobjRecord.setText({
					fieldId:P_setfieldsT[j],
					text:checkForParameter(P_setvaluesT[j])
				});
			}
		}
	}
	function set_CustomFields(arr_field,arr_values,S_category,SP_flag){
		for(var i=0;i<arr_values.length;i++){
			for(var j=0;j<item_Objdetails.length;j++){
				if(((arr_values[i]==item_Objdetails[j].name)&&(S_category==item_Objdetails[j].category))||(arr_values[i]==item_Objdetails[j].name&&item_Objdetails[j].category=="")){
					if(SP_flag==0)
					{
						newProduct.setText({
							fieldId:arr_field[i],
							text:item_Objdetails[j].value
						});
					}
					else{
						ProdobjRecord.setText({
							fieldId:arr_field[i],
							text:item_Objdetails[j].value
						});
					}
				}
				else if(arr_values[i]==null||arr_values[i]==" "||arr_values[i]==""||arr_values[i]==undefined||arr_values[i]=="null"){
					if(SP_flag==0)
					{
						newProduct.setText({
							fieldId:arr_field[i],
							text:""
						});
					}
					else{
						ProdobjRecord.setText({
							fieldId:arr_field[i],
							text:""
						});
					}		
				}
			}
		}
	}
	function entityid_custcont(entityid_flag,entityid_custcontflag,entityid_id,entityid_contents){
		var filterArr=[];
		var search_flag=0;
		if(entityid_flag=="Contacts" && entityid_id!=="" && entityid_id!== null && entityid_id!== undefined){
			filterArr=[];	
			filterArr.push(["custentity_jj_crm_party_id","is",entityid_id.toString()]);
			search_flag=1;
		}
		else if(entityid_flag=="Customers" && entityid_contents!=="" && entityid_contents!== null && entityid_contents!== undefined){
			filterArr=[];	
			filterArr.push(["companyname","is",entityid_contents.toString()]);
			search_flag=1;
		}
		if(search_flag==1){
			var cont_custSearch = search.create({
				type:search.Type.CUSTOMER,
				filters:filterArr,
				columns:[{
					name: 'entityid',
				}],
			});
			cont_custSearch.run().each(function(result){
				Cust_entityid=result.getValue({
					name: 'entityid',
				});
				return false;
			});
			Cust_entityid=(Cust_entityid.concat(" ")).concat(entityid_contents);
		}
		else{
			Cust_entityid="";
		}
		if((entityid_custcontflag==0)&&(entityid_flag=="Contacts")){
			newContact.setText({
				fieldId:' company',
				text:Cust_entityid
			});
		}
		else if((entityid_custcontflag==1)&&(entityid_flag=="Contacts")){
			ContobjRecord.setText({
				fieldId:' company',
				text:Cust_entityid
			});	
		}
		else if((entityid_custcontflag==0)&&(entityid_flag=="Customers")){
			newCustomer.setText({
				fieldId: 'parent',
				text:Cust_entityid
			});
		}
		else if((entityid_custcontflag==1)&&(entityid_flag=="Customers")){
			CustobjRecord.setText({
				fieldId: 'parent',
				text:Cust_entityid
			});}
	}
	//To check whether a value exists in parameter and set empty
	function checkForParameter(parameter) {
		if (parameter != "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== 'false' && parameter != " "){
			return parameter;
		} else {
			parameter = "";
			return parameter;
		}
	}
});


Leave a comment

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