Search code examples
netsuitesuitescriptsuitescript2.0

In a suitelet sublist ,how to populate saved searches with an edit | view column for each row?


here i have two scripts one is suitelet other one is client script . Please forgive me for the silly mistake as I have not much knowledge in netsuite.

    /**
    *@NApiVersion 2.x
    *@NScriptType Suitelet
    */
    define(['N/record','N/ui/serverWidget','N/redirect','N/runtime','N/search'],function(record,serverWidget,redirect,runtime,search){
    function onRequest(context){
    var Request = context.request;
    var Response = context.response;
    if(Request.method == 'GET') {
        var form=serverWidget.createForm({title:"Customer entry Suitelet"});
        var primaryinfo=form.addFieldGroup({
            label:'Primary Information',
            id:'custpage_advs_primary_info',
        });
        var firstname=form.addField({
            label:'First Name',
            id:'custpage_advs_first_name',
            type:serverWidget.FieldType.TEXT,
            container:'custpage_advs_primary_info'
        });
        firstname.isMandatory=true;
        var lastname=form.addField({
            label:'Last Name',
            id:'custpage_advs_last_name',
            type:serverWidget.FieldType.TEXT,
            container:'custpage_advs_primary_info'   
        });
        lastname.isMandatory=true;
        var email=form.addField({
            label:'Email',
            id:'custpage_advs_email',
            type:serverWidget.FieldType.EMAIL,
            container:'custpage_advs_primary_info'
        });
        email.isMandatory=true;
        var phone=form.addField({
            label:'Phone',
            id:'custpage_advs_phone',
            type:serverWidget.FieldType.PHONE,
            container:'custpage_advs_primary_info'
        });
        var mysublist = form.addSublist({
            id: 'custpage_advs_sublistid',
            type: serverWidget.SublistType.LIST,
            label:'My Sublist'
        });
        mysublist.addField({
            id: 'custpage_advs_sublist_internalid',
            type: serverWidget.FieldType.INTEGER,
            label: 'Internal Id'
        });
        mysublist.addField({
            id: 'custpage_advs_sublist_fullname',
            type: serverWidget.FieldType.TEXT,
            label: 'Name'
        });
        mysublist.addField({
            id: 'custpage_advs_sublist_fname',
            type: serverWidget.FieldType.TEXT,
            label: 'First Name'
        });
        mysublist.addField({
            id: 'custpage_advs_sublist_lname',
            type: serverWidget.FieldType.TEXT,
            label: 'Last Name'
        });
        mysublist.addField({
            id: 'custpage_advs_sublist_email',
            type: serverWidget.FieldType.EMAIL,
            label: 'Email'
        });
        mysublist.addField({
            id: 'custpage_advs_sublist_phone',
            type: serverWidget.FieldType.PHONE,
            label: 'Phone'
        });
        mysublist.addField({
        id: 'custpage_advs_sublist_view',
        type: serverWidget.FieldType.URL,
        label: 'VIEW'
    });
    
        var submit=form.addSubmitButton({
            id : 'custpage_advs_submit_record',
            label : 'Submit'
        });
        Response.writePage(form);
        // form.clientScriptModulePath = './advs_cs_populatesublisttask.js';
        form.clientScriptFileId = 91370;
        var fnameValue = Request.parameters.custparam_first_name;
        var lnameValue = Request.parameters.custparam_last_name;
        var emailValue = Request.parameters.custparam_email;
        var phoneValue = Request.parameters.custparam_phone;
        log.debug("param from clientScript "+fnameValue);
        if(fnameValue){
            firstname.defaultValue =fnameValue;
            // form.clientScriptFileId = 91370;
            var fnameValue = Request.parameters.custparam_first_name;
            var lnameValue = Request.parameters.custparam_last_name;
            var emailValue = Request.parameters.custparam_email;
            var phoneValue = Request.parameters.custparam_phone;
        
            var fnamecustomerSearch = search.create({
            type:'customrecord_advs_customer_entry_form',
            filters:['custrecord_advs_first_name',"startswith",fnameValue],
        columns:[
        search.createColumn({name: "name"}),
        search.createColumn({name: "custrecord_advs_first_name"}),
        search.createColumn({name: "custrecord_advs_last_name"}),
        search.createColumn({name: "custrecord_advs_email"}),
        search.createColumn({name: "custrecord_advs_phone"}),
        search.createColumn({name: "internalid"}),
        search.createColumn({name: "id"})
        ]
        });  
        var counter = 0;
        fnamecustomerSearch.run().each(function(result) {
            log.debug("my result", +result);
            var oldfullname = result.getValue('name');
            var InternalidVal = result.getValue('internalid');
            var firstname=result.getValue('custrecord_advs_first_name');
            var lastname=result.getValue('custrecord_advs_last_name');
            var email=result.getValue('custrecord_advs_email');
            var phone=result.getValue('custrecord_advs_phone');
            // var view=result.getValue('view');
            var view= result.getValue('edit|view');
            log.debug("view is"+view);
        mysublist.setSublistValue({
            id: 'custpage_advs_sublist_internalid',
            line: counter,
            value: InternalidVal
            }); 
        mysublist.setSublistValue({
                id: 'custpage_advs_sublist_fullname',
                line: counter,
                value:oldfullname
            });
        mysublist.setSublistValue({
                id: 'custpage_advs_sublist_fname',
                line: counter,
                value: firstname
            });
        mysublist.setSublistValue({
                id: 'custpage_advs_sublist_lname',
                line: counter,
                value: lastname
            });
        mysublist.setSublistValue({
                id: 'custpage_advs_sublist_email',
                line: counter,
                value: email
            });
        mysublist.setSublistValue({
                id: 'custpage_advs_sublist_phone',
                line: counter,
                value:phone
            });
       
        counter++;
        return true;
        });
    }
   
    }
    return true;
    }
    else
    {
    var Fname= Request.parameters.custpage_advs_first_name;
    var Lname=Request.parameters.custpage_advs_last_name;
    var Email=Request.parameters.custpage_advs_email;
    var Phone=Request.parameters.custpage_advs_phone;
    var Fullname=Fname+' '+Lname;

    var customRecord=record.create({
        type:'customrecord_advs_customer_entry_form',
        isDynamic:true,
    });
    customRecord.setValue({
        fieldId:'name',
        value:Fullname
    });
    customRecord.setValue({
        fieldId:'custrecord_advs_first_name',
        value:Fname
    });
    customRecord.setValue({
        fieldId:'custrecord_advs_first_name',
        value:Lname
    });
    customRecord.setValue({
        fieldId:'custrecord_advs_email',
        value:Email
    });
    customRecord.setValue({
        fieldId:'custrecord_advs_phone',
        value:Phone
    });
    var recordId=customRecord.save({
        enableSourcing: false,
        ignoreMandatoryFields: false
        });
    redirect.toSuitelet({
        scriptId: 'customscript_advs_ss_customersuitelet',
        deploymentId: 'customdeploy_advs_ss_customersuitelet',
    });
        }
    }
        return{
            onRequest:onRequest
        }
        });

and then I added some conditions in client scripts . but all I need is to add an edit/ view column in my suitelet

FYR here is my client script

/**
   * @NApiVersion 2.0
   * @NScriptType ClientScript
   */
   define(['N/currentRecord','N/search','N/record','N/url'],function(currentRecord,search,record,url){
    function fieldChanged(context) {
        var recordObj=context.currentRecord;
        var name = context.fieldId;
        if (name == 'custpage_advs_first_name'){
        var fnameValue=recordObj.getValue({
          fieldId:'custpage_advs_first_name'
        });
        alert("First name that you have entered is " +fnameValue);
        var suiteUrl = url.resolveScript({
        scriptId: 'customscript_advs_ss_populatesublisttask',
        deploymentId: 'customdeploy_advs_ss_populatesublisttask',
        returnExternalUrl:false,
        params : {
          custparam_first_name : fnameValue, //define a parameter and pass the value to it
      }
    });
  }

}
else{
  return true;
}
    setWindowChanged(window,false); 
    window.location = suiteUrl; 
    }
    return{
      fieldChanged:fieldChanged
    }
  });

I guess I'm mostly just looking for a high level answer, because I'm not sure I'm even approaching this correctly.


Solution

  • You should reduce the code you paste in your question to the parts that isolate the problem.

    To solve your issue, add a new field of type INLINEHTML.

    sublist.addField({
      id: 'YOUR_ID',
      label: 'YOUR_LABEL',
      type: serverWidget.FieldType.INLINEHTML
    })
    

    For each line, set the value to a link using regular html anchor tags.

    const view_url = url.resolveRecord({
      recordType: TYPE
      recordId: ID,
      isEditMode: false
    })
    const edit_url = url.resolveRecord({
      recordType: TYPE
      recordId: ID,
      isEditMode: true
    })
    sublist.setSublistValue({
      line: LINE,
      id: 'YOUR_ID',
      value: `<a href="${view_url}" target="_blank" rel="noopener noreferrer">view</a> / <a href="${edit_url}" target="_blank" rel="noopener noreferrer">edit</a>`
    })