Set Invoice Tracking Number and Shipping Cost.

Jira Code: PROT-127

This client script will populate the custom tracking number and shipping cost from the IF record to the Invoice in pageInit function.

define(['N/currentRecord','N/record'],
		/**
		 * @param {record} record
		 */
		function(currentRecord,record) {

	function pageInit(scriptContext) {
		try {
			// Function used to retrieve the itemship parameter value from the url of the invoice		
			var getUrlParameter = function getUrlParameter(sParam) {
				var sPageURL = decodeURIComponent(window.location.search.substring(1)),
				sURLVariables = sPageURL.split('&'),
				sParameterName,
				i;
				for (i = 0; i < sURLVariables.length; i++) {
					sParameterName = sURLVariables[i].split('=');
					if (sParameterName[0] === sParam) {
						return sParameterName[1] === undefined ? true : sParameterName[1];
					}
				}
			};
			var itemship = getUrlParameter('itemship'); //save the IF number 

			// Load the IF details and retreive the custom values of tracking number and shipping charge to set it to the invoice.

			if(itemship != undefined){  // If Invoice is created from IF there will be itemship value
				try {
					//Load the IF record
					var ifRecord = record.load({
						type: record.Type.ITEM_FULFILLMENT, 
						id: itemship,
						isDynamic: true,
					});
					//get the xpsTrackingNumber
					var xpsTrackingNo = ifRecord.getValue({
						fieldId : 'custbody_jj_package_tracking_no'
					});					
					console.log('xpsTrackingNo',xpsTrackingNo);
					//get the xpsShippingCharge
					var xpsShippingCharge = ifRecord.getValue({
						fieldId : 'custbody_jj_shipping_charge'
					}); 	
					console.log('xpsShippingCharge',xpsShippingCharge);	

					var shippingCost = ifRecord.getValue({
						fieldId : 'shippingcost'
					});
					console.log('shippingCost',shippingCost);	
					var flatShippingCharge = ifRecord.getValue({
						fieldId : 'custbody18'
					});
					console.log('flatShippingCharge',flatShippingCharge);	

				} catch (e) {
					logme('err@gettingIfvalues',getError(e));
				}
				try {
					//set the xpsTrackingNumber and xpsShippingCharge to Invoice
					//set the IF iternal id to the invoice custom field.
					var invoiceRecord = scriptContext.currentRecord;
					invoiceRecord.setValue({
						fieldId : 'custbody_prof127_jj_created_from_if',
						value : itemship
					});
					//set custom xpsShippingCharge value to the Shipping cost field	
					//Set the xpsShippingCharge value in invoice , if 
					//the flat shipping charge is unchecked or shipping cost is less than 1
					if(flatShippingCharge == false || shippingCost < 1){						
						if(xpsShippingCharge == '' || xpsShippingCharge == null){
							console.log('no shipping cost');
							logme('err@setshippingcost','No shipping cost');
						}
						else{
							invoiceRecord.setValue({
								fieldId: 'shippingcost',
								value: xpsShippingCharge,
								ignoreFieldChange: true
							});
						}
					}					
					//set custom xpsTrackingNo value to the Tracking Number field
					if(xpsTrackingNo == '' || xpsTrackingNo == null){
						logme('err@settrackingnumber','No tracking number');
						console.log("no tracking no");						
					}
					else{
						invoiceRecord.setValue({
							fieldId: 'linkedtrackingnumbers',
							value: xpsTrackingNo,
							ignoreFieldChange: true
						});
					}
				}catch (e) {
					logme('err@settingInvoice Values',getError(e));
				}
			}
			else{
				console.log('novalue','novalue');	
			}


		} catch (e) {
			logme('err@pageInit',e);
		}
	}
	/*******************************************************************************
	 * return error
	 * 
	 * @param e
	 * @returns {String}
	 */
	function getError(e) {
		var stErrMsg = '';
		if (e.getDetails != undefined) {
			stErrMsg = '_' + e.getCode() + '<br>' + e.getDetails() + '<br>'
			+ e.getStackTrace();
		} else {
			stErrMsg = '_' + e.toString();
		}
		return stErrMsg;
	}

	/*******************************************************************************
	 * Log these data
	 */
	function logme(title, details) {
		log.debug({
			title : title,
			details : details
		});
	}

	return {
		pageInit: pageInit,
		getError: getError,
		logme: logme
	};

});

Leave a comment

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