TAIP-188 NEW UPDATES

Description


The TARGET colour in RED until it meets the target then when it does meet the target change the color to BLUE.

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */

define(['N/search', 'N/record', 'N/file', "N/render"],

    function(search, record, file, render) {
        var ITEM_OBJ = {};
        var main = {
            onRequest: function(context) {
                try {
                    if (context.request.method == 'GET') {
                        var filter = context.request.parameters.filter;
                        if (filter) {

                            var content = main.fetch_Phonecalldetails(filter);
                        } else {

                            var content = main.fetch_Phonecalldetails(filter);
                        }

                        var datahtml = file.load({ id: 152384 }).getContents();
                        /* log.debug("datahtml", datahtml);*/
                        /*log.debug("content", content);*/
                        var renderer = render.create();
                        renderer.templateContent = datahtml;

                        renderer.addCustomDataSource({
                            format: render.DataSource.OBJECT,
                            alias: "content",
                            data: content
                        });
                        log.debug("ITEM_OBJ", ITEM_OBJ);
                        context.response.write(renderer.renderAsString());
                    }
                } catch (er) {
                    log.debug('err@onRequest', er.message);
                }

            },
            fetch_Phonecalldetails: function(filter) {
                log.debug("filter", filter)
                var Phonecalldetails_array = [];
                var filterArr_phone = [];
                var columnSearch;
                filterArr_phone.push(["employee.salesrole", "anyof", "-2"]);
                filterArr_phone.push("AND");

                var phonecallSearchObj;

                if (!filter || filter == "daily") {

                    /*log.debug("entered1");*/
                    filterArr_phone.push(["createddate", "within", "today"]);
                    columnSearch = [
                        search.createColumn({
                            name: "assigned",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__outbound_call",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "internalid",
                            summary: "COUNT",
                            label: "Number of Outbound Calls"
                        }),

                        search.createColumn({
                            name: "custentity__number_of_quotes",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__online_logins",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "formulanumeric",
                            summary: "SUM",
                            formula: "CASE WHEN  {custevent_online_login_set_up}='T' THEN 1 ELSE 0 END",
                        }),

                        search.createColumn({
                            name: "custentity__number_of_opportunities",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__appointments_set_up",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "formulanumeric",
                            summary: "SUM",
                            formula: "CASE WHEN {custevent_set_up_appt_for_rep_visit}='T' THEN 1 ELSE 0 END",
                        }),
                        /*search.createColumn({
                            name: "custentity__number_of_new_clients",
                            join: "employee",
                            summary: "GROUP",
                        })*/
                    ]

                } else if (filter == "weekly") {

                    /*log.debug("entered2");*/
                    filterArr_phone.push(["createddate", "within", "thisweek"]);
                    columnSearch = [
                        search.createColumn({
                            name: "assigned",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__outbound_call_weekly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "internalid",
                            summary: "COUNT",
                            label: "Number of Outbound Calls"
                        }),

                        search.createColumn({
                            name: "custentity__number_of_quotes_weekly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__online_logins_weekly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "formulanumeric",
                            summary: "SUM",
                            formula: "CASE WHEN  {custevent_online_login_set_up}='T' THEN 1 ELSE 0 END",
                        }),

                        search.createColumn({
                            name: "custentity__number_of_opportunities_week",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__appointments_set_up_weekly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "formulanumeric",
                            summary: "SUM",
                            formula: "CASE WHEN {custevent_set_up_appt_for_rep_visit}='T' THEN 1 ELSE 0 END",
                        }),
                        /*search.createColumn({
                            name: "custentity__number_of_new_clients",
                            join: "employee",
                            summary: "GROUP",
                        })*/
                    ]

                } else if (filter == "monthly") {

                    /*log.debug("entered3");*/
                    filterArr_phone.push(["createddate", "within", "thismonth"]);
                    columnSearch = [
                        search.createColumn({
                            name: "assigned",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__outbound_call_monthly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "internalid",
                            summary: "COUNT",
                            label: "Number of Outbound Calls"
                        }),

                        search.createColumn({
                            name: "custentity__number_of_quotes_monthly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__online_logins_monthly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "formulanumeric",
                            summary: "SUM",
                            formula: "CASE WHEN  {custevent_online_login_set_up}='T' THEN 1 ELSE 0 END",
                        }),

                        search.createColumn({
                            name: "custentity__number_of_opportunities_mont",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "custentity__appointments_set_up_monthly",
                            join: "employee",
                            summary: "GROUP",
                        }),
                        search.createColumn({
                            name: "formulanumeric",
                            summary: "SUM",
                            formula: "CASE WHEN {custevent_set_up_appt_for_rep_visit}='T' THEN 1 ELSE 0 END",
                        }),
                        /*search.createColumn({
                            name: "custentity__number_of_new_clients",
                            join: "employee",
                            summary: "GROUP",
                        })*/
                    ]

                }

                phonecallSearchObj = search.create({
                    type: "phonecall",
                    filters: filterArr_phone,
                    columns: columnSearch
                });
                var getValue = true



                var searchResultCount = phonecallSearchObj.runPaged().count;
                log.debug("phonecallSearchObj result count", searchResultCount);
                if (searchResultCount == 0) {
                    phonecallSearchObj = main.fetch_employee(filter);
                    getValue = false;
                }
                log.debug('filterArr_phone', filterArr_phone)
                var Outbound_targetsum = 0;
                var Outbound_actualsum = 0;
                var quotes_targetsum = 0;
                var quotes_actualsum = 0;
                var logins_targetsum = 0;
                var logins_actualsum = 0;
                var opportunities_targetsum = 0;
                var opportunities_actualsum = 0;
                var Appointment_targetsum = 0;
                var Appointment_actualsum = 0;
                var clients_targetsum = 0;
                var clients_actualsum = 0;

                phonecallSearchObj.run().each(function(result) {
                    var Phonecalldetails_obj = {};

                    if (getValue == true) {
                        var Organizer = result.getText(phonecallSearchObj.columns[0]);
                        Phonecalldetails_obj.Organizer = Organizer;
                    } else {
                        var Organizer = result.getValue(phonecallSearchObj.columns[2]);
                        var ID = result.getValue(phonecallSearchObj.columns[8]);
                        log.debug(result.getValue(phonecallSearchObj.columns[2]) ,  result.getValue(phonecallSearchObj.columns[8]))

                        Phonecalldetails_obj.Organizer = ID + ' ' + Organizer;
                    }

                    var Outbound_calls_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[1]));
                    Outbound_targetsum += Number(Outbound_calls_target);
                    Phonecalldetails_obj.Outbound_calls_target = Outbound_calls_target;


                    if (getValue == true) {
                        var Outbound_calls_actual = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[2]));
                        Outbound_actualsum += Number(Outbound_calls_actual);
                        Phonecalldetails_obj.Outbound_calls_actual = Outbound_calls_actual;
                    } else
                        Phonecalldetails_obj.Outbound_calls_actual = "";






                    var Organizer_id = result.getValue(phonecallSearchObj.columns[0]);

                    var Number_quotes_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[3]));
                    quotes_targetsum += Number(Number_quotes_target);
                    Phonecalldetails_obj.Number_quotes_target = Number_quotes_target;


                    var Number_quotes_actual = main.assigndefault_value(main.fetch_quotedeatils(Organizer_id, "Quote", filter));
                    quotes_actualsum += Number(Number_quotes_actual);
                    Phonecalldetails_obj.Number_quotes_actual = Number_quotes_actual;



                    var Online_logins_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[4]));
                    logins_targetsum += Number(Online_logins_target);
                    Phonecalldetails_obj.Online_logins_target = Online_logins_target;

                    if (getValue == true) {
                        var Online_logins_actual = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[5]));
                        logins_actualsum += Number(Online_logins_actual);
                        Phonecalldetails_obj.Online_logins_actual = Online_logins_actual;
                    } else
                        Phonecalldetails_obj.Online_logins_actual = "";



                    var Number_opportunities_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[6]));
                    opportunities_targetsum += Number(Number_opportunities_target);
                    Phonecalldetails_obj.Number_opportunities_target = Number_opportunities_target;


                    var Number_opportunities_actual = main.assigndefault_value(main.fetch_quotedeatils(Organizer_id, "Opportunity", filter));
                    opportunities_actualsum += Number(Number_opportunities_actual);
                    Phonecalldetails_obj.Number_opportunities_actual = Number_opportunities_actual;


                    var Appointment_setup_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[7]));
                    Appointment_targetsum += Number(Appointment_setup_target);
                    Phonecalldetails_obj.Appointment_setup_target = Appointment_setup_target;


                    if (getValue == true) {
                        var Appointment_setup_actual = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[8]));
                        Appointment_actualsum += Number(Appointment_setup_actual);
                        Phonecalldetails_obj.Appointment_setup_actual = Appointment_setup_actual;
                    } else
                        Phonecalldetails_obj.Appointment_setup_actual = "";

                    /*  var Number_clients_target = main.assigndefault_value(result.getValue(phonecallSearchObj.columns[9]));
                      clients_targetsum += Number(Number_clients_target);
                      Phonecalldetails_obj.Number_clients_target = Number_clients_target;
                      


                      var Number_clients_actual = main.assigndefault_value(main.fetch_customerdeatils(Organizer_id, filter));
                      clients_actualsum += Number(Number_clients_actual);
                      Phonecalldetails_obj.Number_clients_actual = Number_clients_actual;*/



                    Phonecalldetails_array.push(Phonecalldetails_obj);

                    return true;
                });
                ITEM_OBJ.date_filter = filter;
                ITEM_OBJ.items = Phonecalldetails_array;


                ITEM_OBJ.Outbound_targetsum = Number(Outbound_targetsum);
                ITEM_OBJ.Outbound_actualsum = Number(Outbound_actualsum);
                ITEM_OBJ.quotes_targetsum = Number(quotes_targetsum);
                ITEM_OBJ.quotes_actualsum = Number(quotes_actualsum);
                ITEM_OBJ.logins_targetsum = Number(logins_targetsum);
                ITEM_OBJ.logins_actualsum = Number(logins_actualsum);
                ITEM_OBJ.opportunities_targetsum = Number(opportunities_targetsum);
                ITEM_OBJ.opportunities_actualsum = Number(opportunities_actualsum);
                ITEM_OBJ.Appointment_targetsum = Number(Appointment_targetsum);
                ITEM_OBJ.Appointment_actualsum = Number(Appointment_actualsum);
                /* ITEM_OBJ.clients_targetsum = Number(clients_targetsum);
                 ITEM_OBJ.clients_actualsum = Number(clients_actualsum);*/

                file.create({
                    name: 'arrayFile.json',
                    fileType: file.Type.JSON,
                    contents: JSON.stringify(ITEM_OBJ),
                    folder: -15
                }).save();


                ITEM_OBJ.items1 = JSON.stringify(Phonecalldetails_array);


                return ITEM_OBJ;
            },
            fetch_employee: function(type) {
                if (!type ||type == 'daily') {
                    var employeeSearchObj = search.create({
                        type: "employee",
                        filters: [
                            ["salesrole", "anyof", "-2"],
                            "AND",
                            [
                                [
                                    ["custentity__appointments_set_up", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__number_of_opportunities", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__online_logins", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__number_of_quotes", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__outbound_call", "isnotempty", ""]
                                ]
                            ]
                        ],
                        columns: [
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({ name: "custentity__outbound_call", label: "Number of Outbound calls (Daily Target)" }),
                            search.createColumn({ name: "altname", label: "Name" }),
                            search.createColumn({ name: "custentity__number_of_quotes", label: "Number of Quotes (Daily Target)" }),
                            search.createColumn({ name: "custentity__online_logins", label: "Number of Online Logins (Daily Target)" }),
                            search.createColumn({ name: "datecreated", label: "Date Created" }),
                            search.createColumn({ name: "custentity__number_of_opportunities", label: "Number of Opportunities (Daily Target)" }),
                            search.createColumn({ name: "custentity__appointments_set_up", label: "Number of Appointments set up (Daily Target)" }),
                            search.createColumn({ name: "entityid", label: "ID" }),
                        ]
                    });
                    var searchResultCount = employeeSearchObj.runPaged().count;
                    log.debug("employeeSearchObj result count", searchResultCount);

                    return employeeSearchObj
                } else if (type == 'weekly') {
                    var employeeSearchObj = search.create({
                        type: "employee",
                        filters: [
                            ["salesrole", "anyof", "-2"],
                            "AND",
                            [
                                [
                                    ["custentity__appointments_set_up_weekly", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__number_of_opportunities_week", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__online_logins_weekly", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__number_of_quotes_weekly", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__outbound_call_weekly", "isnotempty", ""]
                                ]
                            ]
                        ],
                        columns: [
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({ name: "custentity__outbound_call_weekly", label: "Number of Outbound calls (Daily Target)" }),
                            search.createColumn({ name: "altname", label: "Name" }),
                            search.createColumn({ name: "custentity__number_of_quotes_weekly", label: "Number of Quotes (Daily Target)" }),
                            search.createColumn({ name: "custentity__online_logins_weekly", label: "Number of Online Logins (Daily Target)" }),
                            search.createColumn({ name: "datecreated", label: "Date Created" }),
                            search.createColumn({ name: "custentity__number_of_opportunities_week", label: "Number of Opportunities (Daily Target)" }),
                            search.createColumn({ name: "custentity__appointments_set_up_weekly", label: "Number of Appointments set up (Daily Target)" }),
                            search.createColumn({
                                name: "entityid",
                                sort: search.Sort.ASC,
                                label: "ID"
                            }),
                        ]
                    });
                    var searchResultCount = employeeSearchObj.runPaged().count;
                    log.debug("employeeSearchObj result count", searchResultCount);

                    return employeeSearchObj
                } else if (type == 'monthly') {
                    var employeeSearchObj = search.create({
                        type: "employee",
                        filters: [
                            ["salesrole", "anyof", "-2"],
                            "AND",
                            [
                                [
                                    ["custentity__appointments_set_up_monthly", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__number_of_opportunities_mont", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__online_logins_monthly", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__number_of_quotes_monthly", "isnotempty", ""]
                                ], "OR", [
                                    ["custentity__outbound_call_monthly", "isnotempty", ""]
                                ]
                            ]
                        ],
                        columns: [
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({ name: "custentity__outbound_call_monthly", label: "Number of Outbound calls (Daily Target)" }),
                            search.createColumn({ name: "altname", label: "Name" }),
                            search.createColumn({ name: "custentity__number_of_quotes_monthly", label: "Number of Quotes (Daily Target)" }),
                            search.createColumn({ name: "custentity__online_logins_monthly", label: "Number of Online Logins (Daily Target)" }),
                            search.createColumn({ name: "datecreated", label: "Date Created" }),
                            search.createColumn({ name: "custentity__number_of_opportunities_mont", label: "Number of Opportunities (Daily Target)" }),
                            search.createColumn({ name: "custentity__appointments_set_up_monthly", label: "Number of Appointments set up (Daily Target)" }),
                            search.createColumn({
                                name: "entityid",
                                sort: search.Sort.ASC,
                                label: "ID"
                            }),
                        ]
                    });
                    var searchResultCount = employeeSearchObj.runPaged().count;
                    log.debug("employeeSearchObj result count", searchResultCount);

                    return employeeSearchObj
                }
            },

            fetch_quotedeatils: function(Organizer_id, type, filter) {
                var filterArr = [];
                var Number_quotes;
                if (type == "Opportunity") {

                    filterArr.push(["type", "anyof", "Opprtnty"]);
                    filterArr.push("AND");
                    filterArr.push(["salesrep", "anyof", Organizer_id]);
                    filterArr.push("AND");

                    if (!filter || filter == "daily") {
                        /*log.debug("Opportunityentered1");*/
                        filterArr.push(["trandate", "within", "today"]);

                    } else if (filter == "weekly") {
                        /*log.debug("Opportunityentered2");*/
                        filterArr.push(["trandate", "within", "thisweek"]);

                    } else if (filter == "monthly") {
                        /*log.debug("Opportunityentered3");*/
                        filterArr.push(["trandate", "within", "thismonth"]);
                    }
                } else if (type == "Quote") {

                    filterArr.push(["type", "anyof", "Estimate"]);
                    filterArr.push("AND");
                    filterArr.push(["salesrep", "anyof", Organizer_id]);
                    filterArr.push("AND");
                    if (!filter || filter == "daily") {
                        /*log.debug("Quoteentered1");*/
                        filterArr.push(["trandate", "within", "today"]);

                    } else if (filter == "weekly") {
                        /*log.debug("Quoteentered2");*/
                        filterArr.push(["trandate", "within", "thisweek"]);

                    } else if (filter == "monthly") {
                        /* log.debug("Quoteentered3");*/
                        filterArr.push(["trandate", "within", "thismonth"]);
                    }
                }

                var estimateSearchObj = search.create({
                    type: "transaction",
                    filters: filterArr,
                    columns: [
                        search.createColumn({
                            name: "internalid",
                            summary: "COUNT",
                        })
                    ]
                })
                var searchResultCount = estimateSearchObj.runPaged().count;
                /*log.debug("estimateSearchObj result count", searchResultCount);*/
                estimateSearchObj.run().each(function(result) {
                    Number_quotes = result.getValue(estimateSearchObj.columns[0]);
                    return true;
                });
                return Number_quotes;
            },

            fetch_customerdeatils: function(Organizer_id, filter) {
                var filterArr_customer = []
                var Number_clients;
                filterArr_customer.push(["salesrep", "anyof", Organizer_id]);
                filterArr_customer.push("AND");

                if (!filter || filter == "daily") {
                    log.debug("customerentered1");
                    filterArr_customer.push(["datecreated", "within", "today"]);

                } else if (filter == "weekly") {
                    log.debug("customerentered2");
                    filterArr_customer.push(["datecreated", "within", "thisweek"]);

                } else if (filter == "monthly") {
                    /*log.debug("customerentered3");*/
                    filterArr_customer.push(["datecreated", "within", "thismonth"]);

                }

                var customerSearchObj = search.create({
                    type: "customer",
                    filters: filterArr_customer,
                    columns: [
                        search.createColumn({
                            name: "internalid",
                            summary: "COUNT",
                            label: "Number New Clients"
                        })
                    ]
                });
                var searchResultCount = customerSearchObj.runPaged().count;
                /*log.debug("customerSearchObj result count", searchResultCount);*/
                customerSearchObj.run().each(function(result) {
                    Number_clients = result.getValue(customerSearchObj.columns[0]);
                    return true;
                });
                return Number_clients;
            },
            assigndefault_value: function(parameter) {
                if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== 'false' &&
                    parameter !== " " && parameter !== Infinity && parameter !== "- None -" && parameter !== "0") {
                    return parameter;

                } else {

                    parameter = "";
                    return parameter;
                }
            }

        }
        for (var key in main) {
            if (typeof main[key] === 'function') {
                main[key] = trycatch(main[key], key);
            }
        }

        function trycatch(myfunction, key) {
            return function() {
                try {
                    return myfunction.apply(this, arguments);
                } catch (e) {
                    log.debug("e in  " + key, e);
                }
            }
        };
        return main;
    });

Leave a comment

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