How to use search instead of loading a record

function (currentRecord, search) {

    function searchSalesOrder(rmaId) {
        try {
            let returnauthorizationSearchObj = search.create({
                type: "returnauthorization",
                filters:
                    [
                        ["type", "anyof", "RtnAuth"],
                        "AND",
                        ["internalid", "anyof", rmaId],
                        "AND",
                        ["mainline", "is", "T"]
                    ],
                columns:
                    [
                        search.createColumn({ name: "internalid", label: "Internal ID" }),
                        search.createColumn({name:"custbody_jj_exchg_sales_order_ahap1625",                label: "Exchange Sales Order" })
                    ]
            });
            let searchResultCount = returnauthorizationSearchObj.runPaged().count;
            if (searchResultCount > 0) {
                let salesOrderId
                returnauthorizationSearchObj.run().each(function (result) {
                    salesOrderId = result.getValue({
                        name: "custbody_jj_exchg_sales_order_ahap1625", label: "Exchange Sales Order"
                    })
                    return true;
                });
                return salesOrderId
            }
            else {
                return false
            }
        }
        catch (err) {
            console.log("error@searchSalesOrder", err)
            return false
        }
    }

    function searchStatus(salesOrderId) {
        try {
            let salesorderSearchObj = search.create({
                type: "salesorder",
                filters:
                    [
                        ["type", "anyof", "SalesOrd"],
                        "AND",
                        ["internalid", "anyof", salesOrderId],
                        "AND",
                        ["mainline", "is", "T"]
                    ],
                columns:
                    [
                        search.createColumn({ name: "internalid", label: "Internal ID" }),
                        search.createColumn({ name: "statusref", label: "Status" }),
                        search.createColumn({ name: "tranid", label: "Document Number" })
                    ]
            });
            let searchResultCount = salesorderSearchObj.runPaged().count;
            if (searchResultCount > 0) {
                let dataObj = {}
                salesorderSearchObj.run().each(function (result) {
                    dataObj.status = result.getValue({
                        name: "statusref", label: "Status"
                    })
                    dataObj.docNumber = result.getValue({
                        name: "tranid", label: "Document Number"
                    })
                    return true;
                });

                return dataObj
            }
            else {
                return {}
            }
        }
        catch (err) {
            console.log("error@searchStatus", err)
            return {}
        }
    }

    function fieldChanged(scriptContext) {
        try {
            let currentRec = scriptContext.currentRecord;
            if (scriptContext.fieldId == 'custbody29') {
                let rmaId = currentRec.getValue({
                    fieldId: 'custbody29'
                });
                if (rmaId) {
                    let salesOrderId = searchSalesOrder(rmaId)

                    if (salesOrderId) {
                        let dataObj = searchStatus(salesOrderId)
                        if (dataObj.status != 'closed') {
                            alert(`The selected RMA record is associated with the sales order ${dataObj.docNumber}`)
                            currentRec.setValue({
                                fieldId: 'custbody29',
                                value: '',
                                ignoreFieldChange: true
                            });
                            return false;
                        }
                    }
                    return false;
                }
            }
        }
        catch (err) {
            log.debug("error@fieldChange", err)
        }

}

Leave a comment

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