Pasting non-store field value into a store value

Jira Code: ECSI-32

Here it will take the non-store field value from the transaction record and update it in the corresponding customer record. The scheduled script will run to update the field value in every interval.

/**
 * @NApiVersion 2.x
 * @NScriptType ScheduledScript
 * @NModuleScope SameAccount
 */
/*  * Script Description
 * 
 * UPDATE NEW LAST - SO,QUOTE,SALEC CALL,EMLAIL,PROACTIVE OUTBOUND DATE IN CUSTOMER RECORD.
 *******************************************************************************
 * EAST COAST STAINLESS INC
 * **************************************************************************
 * 
 * Date: 27/08/2018
 * 
 * Author: Jobin & Jismi IT Services LLP
 * 
 * 
 *******************************************************************************/
define(['N/runtime', 'N/record', 'N/search', 'N/task'],
    /**
     * @param {email} email
     * @param {http} http
     * @param {https} https
     * @param {record} record
     * @param {runtime} runtime
     * @param {search} search
     * @param {url} url
     */
    function(runtime, record, search, task) {

        function checkForParameter(parameter, parameterName) {
            try {
                if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " " && parameter != false) {
                    return true;
                } else {
                    if (parameterName)
                        log.debug('Empty Value found', 'Empty Value for parameter ' + parameterName);
                    return false;
                }
            } catch (e) {
                log.debug({
                    title: 'checkForParameter error',
                    details: e.message
                });
            }
        }


        //To assign a default value if the it is empty
        function assignDefaultValue(value, defaultValue) {
            try {
                if (checkForParameter(value))
                    return value;
                else
                    return defaultValue;
            } catch (e) {
                log.debug({
                    title: 'assignDefaultValue error',
                    details: e.message
                });
            }
        }

        /**
         * 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
         */
        function execute(scriptContext) {
            try {

                var count = runtime.getCurrentScript().getParameter("custscript_current_customer_value");
                count = assignDefaultValue(count, 0);


                var baseSearch = customerSearch();

                log.debug('baseSearch', baseSearch);

                for (var i = count; i < baseSearch.length; i++) {

                    var currentI = i;
                    log.debug('currentI', currentI);

                    var currentInternalId = baseSearch[i].internalid;

                    log.debug('currentInternalId', currentInternalId);

                    var Transaction_date = transaction(currentInternalId);
                    log.debug('Transaction_date', Transaction_date);

                    var current_Quate = "";
                    var current_SO_Value = "";

                    for (var j = 0; j < Transaction_date.length; j++) {
                        if (Transaction_date[j].TYPE == "Estimate") {
                            current_Quate = Transaction_date[j].LastDate;
                            log.debug('Newcurrent_Quate', current_Quate);
                        } else if (Transaction_date[j].TYPE == "SalesOrd") {
                            current_SO_Value = Transaction_date[j].LastDate;
                            log.debug('Newcurrent_SO_Value', current_SO_Value);
                        }

                    }


                    var Last_Email_Date = lastEmail_Search(currentInternalId);
                    log.debug('Last_Email_Date', Last_Email_Date);

                    var Last_proactive_Outbound_Date = proactive_Outbound_Date(currentInternalId);
                    log.debug('Last_proactive_Outbound_Date', Last_proactive_Outbound_Date);

                    var Last_Sales_Call_Date = sales_Call_Date(currentInternalId);
                    log.debug('Last_Sales_Call_Date', Last_Sales_Call_Date);



                    if (Last_Email_Date.length >= 0) {

                        var current_Email = Last_Email_Date[0].Last_Email;
                        log.debug('current_Email', current_Email);

                        var SetEmailValue = record.submitFields({
                            type: record.Type.CUSTOMER,
                            id: currentInternalId,
                            values: {
                                custentity_jj_new_last_email_customer: current_Email
                            },
                            options: {
                                enableSourcing: false,
                                ignoreMandatoryFields: true
                            }
                        });
                        log.debug('SUCSESS0');

                        var current_proactive_Outbound_Date = Last_proactive_Outbound_Date[0].proactive_Outbound_Date;
                        log.debug('current_proactive_Outbound_Date', current_proactive_Outbound_Date);

                        var SetProactiveOutboundValue = record.submitFields({
                            type: record.Type.CUSTOMER,
                            id: currentInternalId,
                            values: {
                                custentity_new_lastproactiveoutbound_cm: current_proactive_Outbound_Date
                            },
                            options: {
                                enableSourcing: false,
                                ignoreMandatoryFields: true
                            }
                        });
                        log.debug('SUCSESS1');

                        var current_sales_Call_Date = Last_Sales_Call_Date[0].last_Sales_Call_Date;
                        log.debug('current_sales_Call_Date', current_sales_Call_Date);

                        var SetSalesCallValue = record.submitFields({
                            type: record.Type.CUSTOMER,
                            id: currentInternalId,
                            values: {
                                custentity_new_last_sales_call_date_cm: current_sales_Call_Date
                            },
                            options: {
                                enableSourcing: false,
                                ignoreMandatoryFields: true
                            }
                        });
                        log.debug('SUCSESS2');

                        var SetSOValue = record.submitFields({
                            type: record.Type.CUSTOMER,
                            id: currentInternalId,
                            values: {
                                custentity_jj_last_so_date_test: current_SO_Value
                            },
                            options: {
                                enableSourcing: false,
                                ignoreMandatoryFields: true
                            }
                        });
                        log.debug('SUCSESS3');

                        var SetQuoteValue = record.submitFields({
                            type: record.Type.CUSTOMER,
                            id: currentInternalId,
                            values: {
                                custentity_new_last_quote_date: current_Quate
                            },
                            options: {
                                enableSourcing: false,
                                ignoreMandatoryFields: true
                            }
                        });
                        log.debug('SUCSESS4');


                    }
                    if (isReschedule(currentI++))
                        break;


                }





            } catch (e) {
                log.debug({
                    title: 'Main Function error',
                    details: e.message
                });
            }



        }

        /*
         *****************************************************************************************************/
        /*SavedSearch To Fetch Internal id of active customer*/

        function customerSearch() {
            try {

                var Customerarray = new Array();
                var customerObject = new Object();
                var customerSearchObj = search.create({
                    type: "customer",
                    filters: [
                        ["status", "anyof", "13"]
                    ],
                    columns: [
                        search.createColumn({
                            name: "internalid",
                            sort: search.Sort.ASC,
                            label: "Internal ID"
                        }),
                        search.createColumn({ name: "entityid", label: "Name" })
                    ]
                });
                var searchResultCount = customerSearchObj.runPaged().count;
                log.debug("customerSearchObj result count", searchResultCount);
                customerSearchObj.run().each(function(result) {
                    // .run().each has a limit of 4,000 results
                    customerObject = new Object();
                    customerObject.internalid = result.getValue({
                        name: "internalid",
                        sort: search.Sort.ASC,
                        label: "Internal ID"
                    });
                    Customerarray.push(customerObject);

                    return true;
                });
                return Customerarray;

            } catch (e) {
                log.debug({
                    title: 'customerSavedSearch error',
                    details: e.message
                });
            }
        }

        /*
         *****************************************************************************************************/
        /*SavedSearch To Fetch LAST_SO_DATE , LAST QUOTE DATE Of customer*/

        function transaction(currentInternalId) {
            try {

                var TransactionArray = new Array();
                var TransactionObj = new Object();

                var transactionSearchObj = search.create({
                    type: "transaction",
                    filters: [
                        ["mainline", "is", "T"],
                        "AND", ["type", "anyof", "SalesOrd", "Estimate"],
                        "AND", ["customer.internalid", "anyof", currentInternalId]
                    ],
                    columns: [
                        search.createColumn({
                            name: "formuladate",
                            summary: "MAX",
                            formula: "{trandate}",
                            label: "Formula (Date)"
                        }),
                        search.createColumn({
                            name: "type",
                            summary: "GROUP",
                            label: "Type"
                        })
                    ]
                });
                var searchResultCount = transactionSearchObj.runPaged().count;
                log.debug("transactionSearchObj result count", searchResultCount);
                transactionSearchObj.run().each(function(result) {
                    // .run().each has a limit of 4,000 results
                    TransactionObj = new Object();

                    TransactionObj.LastDate = result.getValue({
                        name: "formuladate",
                        summary: "MAX",
                        formula: "{trandate}",
                        label: "Formula (Date)"
                    });
                    TransactionObj.TYPE = result.getValue({
                        name: "type",
                        summary: "GROUP",
                        label: "Type"
                    });
                    TransactionArray.push(TransactionObj);
                    return true;
                });
                return TransactionArray;
            } catch (e) {
                log.debug({
                    title: 'transaction error',
                    details: e.message
                });
            }
        }

        /*
         *****************************************************************************************************/
        /*SavedSearch To Fetch LAST_email_DATE Of customers*/

        function lastEmail_Search(currentInternalId) {
            try {
                var tempEmailArray = new Array();
                var tempEmailObj = new Object();
                var calendareventSearchObj = search.create({
                    type: "calendarevent",
                    filters: [
                        ["custevent2", "anyof", "5"],
                        "AND", ["attendeecustomer.internalid", "anyof", currentInternalId]
                    ],
                    columns: [
                        search.createColumn({
                            name: "formuladatetime",
                            summary: "MAX",
                            formula: "{startdate}",
                            label: "Formula (Date/Time)"
                        })
                    ]
                });
                var searchResultCount = calendareventSearchObj.runPaged().count;
                log.debug("calendareventSearchObj result count", searchResultCount);
                calendareventSearchObj.run().each(function(result) {
                    // .run().each has a limit of 4,000 results
                    tempEmailObj.Last_Email = result.getValue({
                        name: "formuladatetime",
                        summary: "MAX",
                        formula: "{startdate}",
                        label: "Formula (Date/Time)"
                    });
                    tempEmailArray.push(tempEmailObj);

                    return true;
                });
                return tempEmailArray;


            } catch (e) {
                log.debug({
                    title: 'lastEmail_Search error',
                    details: e.message
                });
            }



        }
        /* *************************************************************************************/
        /*SavedSearch To Fetch LAST proactive_Outbound_Date Of customers*/
        function proactive_Outbound_Date(currentInternalId) {
            try {
                var proactive_Outbound_Array = new Array();
                var proactive_Outbound_Obj = new Object();

                var calendareventSearchObj = search.create({
                    type: "calendarevent",
                    filters: [
                        ["custevent2", "anyof", "8", "9"],
                        "AND", ["attendeecustomer.internalid", "anyof", currentInternalId]
                    ],
                    columns: [
                        search.createColumn({
                            name: "formuladatetime",
                            summary: "MAX",
                            formula: "{startdate}",
                            label: "Formula (Date/Time)"
                        })
                    ]
                });
                var searchResultCount = calendareventSearchObj.runPaged().count;
                log.debug("calendareventSearchObj result count", searchResultCount);
                calendareventSearchObj.run().each(function(result) {
                    // .run().each has a limit of 4,000 results

                    proactive_Outbound_Obj.proactive_Outbound_Date = result.getValue({
                        name: "formuladatetime",
                        summary: "MAX",
                        formula: "{startdate}",
                        label: "Formula (Date/Time)"
                    });

                    proactive_Outbound_Array.push(proactive_Outbound_Obj);


                    return true;
                });

                return proactive_Outbound_Array;

            } catch (e) {
                log.debug({
                    title: 'proactive_Outbound_Date error',
                    details: e.message
                });
            }
        }
        /* *************************************************************************************/
        /*SavedSearch To Fetch LAST sales_Call_Date Of customers*/

        function sales_Call_Date(currentInternalId) {
            try {

                var last_Sales_Call_Array = new Array();
                var last_Sales_Call_Obj = new Object();

                var calendareventSearchObj = search.create({
                    type: "calendarevent",
                    filters: [
                        ["custevent2", "anyof", "1"],
                        "AND", ["attendeecustomer.internalid", "anyof", currentInternalId]
                    ],
                    columns: [
                        search.createColumn({
                            name: "formuladate",
                            summary: "MAX",
                            formula: "{startdate}",
                            label: "Formula (Date)"
                        })
                    ]
                });
                var searchResultCount = calendareventSearchObj.runPaged().count;
                log.debug("calendareventSearchObj result count", searchResultCount);
                calendareventSearchObj.run().each(function(result) {
                    // .run().each has a limit of 4,000 results
                    last_Sales_Call_Obj.last_Sales_Call_Date = result.getValue({
                        name: "formuladate",
                        summary: "MAX",
                        formula: "{startdate}",
                        label: "Formula (Date)"
                    });
                    last_Sales_Call_Array.push(last_Sales_Call_Obj);
                    return true;

                });
                return last_Sales_Call_Array;

            } catch (e) {
                log.debug({
                    title: 'sales_Call_Date error',
                    details: e.message
                });
            }
        }
        /* *************************************************************************************/

        function isReschedule(currentI) {
            var remainingTime = runtime.getCurrentScript().getRemainingUsage();
            if (parseInt(remainingTime) < 500) {
                var rescheduleTask = task.create({
                    taskType: task.TaskType.SCHEDULED_SCRIPT,
                    scriptId: "customscript_ecsi32_jj_ss_emailcustomer",
                    deploymentId: "customdeploy_ecsi32_jj_emailcustomer",
                    params: {custscript_current_customer_value : currentI}
                });
                var scriptTaskId = rescheduleTask.submit();
                return true;
            } else
                return false;
        }



        return {
            execute: execute,
            checkForParameter: checkForParameter,
            assignDefaultValue : assignDefaultValue,
            customerSearch: customerSearch,
            transaction : transaction,
            lastEmail_Search: lastEmail_Search,
            proactive_Outbound_Date: proactive_Outbound_Date,
            sales_Call_Date: sales_Call_Date,
            isReschedule: isReschedule

        };

    });

Leave a comment

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