savedSearch1.concat(savedSearch2) method to merge 2 saved searches.

we can create 2 separate saved search and merge them as an array and can use it for accessing data using the .concat() method.

Given below is an example of map/reduce script in which two searches are created in the getInputData() and use them in other stages by merging them as a single array.

const getInputData = (inputContext) => {
            try {
                //search to get invoice overdue by 45 days.
                let invoiceSearch45Days = search.create({
                    type: "invoice",
                    filters:
                        [
                            ["type", "anyof", "CustInvc"],
                            "AND",
                            ["status", "anyof", "CustInvc:A"],
                            "AND",
                            ["mainline", "is", "T"],
                            "AND",
                            ["formulanumeric: FLOOR( {today} - {trandate} )", "equalto", "45"],
                            "AND",
                            ["custbody_jj_pen_email_sent_cdus_3627", "is", "F"]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({ name: "entity", label: "Name" }),
                            search.createColumn({ name: "amountremaining", label: "Amount Remaining" }),
                            search.createColumn({ name: "trandate", label: "Date" }),
                            search.createColumn({
                                name: "email",
                                join: "customer",
                                label: "Email"
                            }),
                            search.createColumn({
                                name: "formulanumeric",
                                formula: "FLOOR( {today} - {trandate} )",
                                label: "Days Overdue"
                            }),
                            search.createColumn({ name: "custbody_jj_pen_email_sent_cdus_3627", label: "Penalty Email Sent" }),
                            search.createColumn({ name: "custbody_jj_pen_email_date_cdus_3627", label: "Penalty Email Sent Date" })
                        ]
                });


                //search to find the invoice overdue by 30 days after applying 45 days penalty.
                let invoiceSearch30Days = search.create({
                    type: "invoice",
                    filters:
                        [
                            ["mainline", "is", "T"],
                            "AND",
                            ["type", "anyof", "CustInvc"],
                            "AND",
                            ["status", "anyof", "CustInvc:A"],
                            "AND",
                            ["custbody_jj_pen_email_sent_cdus_3627", "is", "T"],
                            "AND",
                            ["formulanumeric: FLOOR( {today}-{custbody_jj_pen_email_date_cdus_3627} )", "equalto", "30"]
                        ],
                    columns:
                        [
                            search.createColumn({ name: "internalid", label: "Internal ID" }),
                            search.createColumn({ name: "entity", label: "Name" }),
                            search.createColumn({
                                name: "email",
                                join: "customer",
                                label: "Email"
                            }),
                            search.createColumn({ name: "amountremaining", label: "Amount Remaining" }),
                            search.createColumn({
                                name: "formulanumeric",
                                formula: "FLOOR( {today}-{custbody_jj_pen_email_date_cdus_3627} )",
                                label: "Days overdue after 45th day"
                            }),
                            search.createColumn({ name: "trandate", label: "Date" }),
                            search.createColumn({ name: "custbody_jj_pen_email_sent_cdus_3627", label: "Penalty Email Sent" }),
                            search.createColumn({ name: "custbody_jj_pen_email_date_cdus_3627", label: "Penalty Email Sent Date" })
                        ]
                });


                let searchResult45Days = invoiceSearch45Days.run().getRange({ start: 0, end: 1000 });
                let searchResult30Days = invoiceSearch30Days.run().getRange({ start: 0, end: 1000 });
                let combinedResult = searchResult45Days.concat(searchResult30Days);
                return combinedResult;
            } catch (e) {
                log.error({
                    title: 'Get Input Data Error',
                    details: e.toString()
                })
            }
        }


Leave a comment

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