Script for Updating shipping cost in ItemFulfilment Record.

This is a Client script for updating shipping costs in the IF record based on a custom field ( Shipping methods).

Based on different Ship methods the shipping cost will be set.

Except for Ship methods:  

( ‘blank’, Truck (LTL), other, Customer Pickup,  FedExGD Collect, Broker, TBD) The shipping cost will be zero. 

in all other cases, the shipping cost will be taken from the Corresponding Sales Order.

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/runtime', 'N/error'],
/**
 * @param {runtime} runtime
 * @param {url} url
 */
function(record) {
     /**
     * Function to be executed after page is initialized.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
     *
     * @since 2015.2
     */
     var shipMethodlist = [ 3128 /*"other"*/ ,
                            3127 /*"Customer Pickup"*/,
                            3124 /*"FedExGD Collect"*/ ,
                            3129 /*"Truck (LTL)"*/ ,
                            17578/*"Broker"*/ ,
                            17572 /*"TBD"*/ ,
                            ""/*Blank"*/  ]
    function pageInit(scriptContext) 
    {

        if(scriptContext.mode == 'create' || scriptContext.mode == 'copy'|| scriptContext.mode == 'edit' )
        {
            var currRec = scriptContext.currentRecord;
            var shippingCost = forceFloat(currRec.getValue({fieldId: 'shippingcost'}));
            var shippingMethod =currRec.getValue({fieldId: 'custbody_bsp_shipmethod'});
            // log.debug("ship method", shippingMethod);
            nlapiLogExecution('ERROR', 'shippingMethod1', shippingMethod);
            shipMethodlist.forEach(function(shippingMethod) {
                if ((shippingMethod == shipMethodlist[0]) ||
                    (shippingMethod == shipMethodlist[1]) ||
                    (shippingMethod == shipMethodlist[2]) ||
                    (shippingMethod == shipMethodlist[3]) ||
                    (shippingMethod == shipMethodlist[4]) ||
                    (shippingMethod == shipMethodlist[5]) ||
                        (shippingMethod == shipMethodlist[6])){
                    nlapiLogExecution('ERROR', 'Shipmethod IF true1', shippingMethod);
                } else{
                    nlapiLogExecution('ERROR', 'Shipmethod IF False1', shippingMethod);
                    currRec.setValue({fieldId: 'shippingcost', value: 0});
                }
            });
        }
    }   

    /**
     * Function to be executed after field sourcing.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     *
     * @since 2015.2
     */
    function postSourcing(scriptContext) 
    {
        if((scriptContext.mode == 'create' || scriptContext.mode == 'copy') && (scriptContext.fieldId == 'shipcarrier' || scriptContext.fieldId == 'shipmethod'))
        {
            var currRec = scriptContext.currentRecord;
            var shippingCost = forceFloat(currRec.getValue({fieldId: 'shippingcost'}));
            var shippingMethod2 = currRec.getValue({fieldId: 'custbody_bsp_shipmethod'});
            // log.debug("test2sM",  shippingMethod2);
            nlapiLogExecution('ERROR', 'shippingMethod2', shippingMethod2);
            shipMethodlist.forEach(function(shippingMethod2) {
                if ((shippingMethod2 == shipMethodlist[0]) ||
                    (shippingMethod2 == shipMethodlist[1]) ||
                    (shippingMethod2 == shipMethodlist[2]) ||
                    (shippingMethod2 == shipMethodlist[3]) ||
                    (shippingMethod2 == shipMethodlist[4]) ||
                    (shippingMethod2 == shipMethodlist[5]) ||
                    (shippingMethod2 == shipMethodlist[6]))
                {
                    nlapiLogExecution('ERROR', 'Shipmethod IF true2', shippingMethod2);
                } else{
                    nlapiLogExecution('ERROR', 'Shipmethod IF False2', shippingMethod2);
                    currRec.setValue({fieldId: 'shippingcost', value: 0});
                }
            });
        }
    }

    /**
     * Force Float value
     */
    function forceFloat(stValue)
    {
    	var flValue = parseFloat(stValue);

    	if (isNaN(flValue) || (stValue == Infinity))
    	{
    		return 0.00;
    	}

    	return flValue;
    }
    function fieldChanged(context) {
        if((context.mode == 'create' || context.mode == 'copy' || context.mode == 'edit') && (context.fieldId == 'shipcarrier' || context.fieldId == 'shipmethod'))
        {
            var currRec = context.currentRecord;
            var shippingCost = forceFloat(currRec.getValue({fieldId: 'shippingcost'}));
            var shippingMethod3 = currRec.getValue({fieldId: 'custbody_bsp_shipmethod'});
            // log.debug("test2sM",  shippingMethod2);
            nlapiLogExecution('ERROR', 'shippingMethod2', shippingMethod2);
            shipMethodlist.forEach(function(shippingMethod2) {
                if ((shippingMethod3 === shipMethodlist[0]) ||
                    (shippingMethod3 === shipMethodlist[1]) ||
                    (shippingMethod3 === shipMethodlist[2]) ||
                    (shippingMethod3 === shipMethodlist[3]) ||
                    (shippingMethod3 === shipMethodlist[4]) ||
                    (shippingMethod3 === shipMethodlist[5]) ||
                    (shippingMethod3 === shipMethodlist[6]))
                {
                    nlapiLogExecution('ERROR', 'Shipmethod IF true3', shippingMethod3);
                } else{
                    nlapiLogExecution('ERROR', 'Shipmethod IF False3', shippingMethod3);
                    currRec.setValue({fieldId: 'shippingcost', value: 0});
                }
            });
        }

    }
    return {
        pageInit: pageInit,
        postSourcing: postSourcing,
        fieldChanged: fieldChanged
    };
    
});

Leave a comment

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