Show different Searches in different Subtabs in a Suitelet Page

/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
/*************************************************************************************************************************
 *
 * Script Description : This Script Sample will create suitelet page that list out search results in 2 different subtab but for the same filter triggered in the body level field
 * Date created : 31/01/2022
 *
 * REVISION HISTORY
 *
 * Revision 1.0 ${31/01/2022} created
 * 
**************************************************************************************************************************/
var CLIENT_SCRIPT_FILE_ID = 8757;

define( [ 'N/ui/serverWidget', 'N/search', 'N/https', 'N/file', 'N/render', 'N/record', 'N/runtime', 'N/redirect', 'N/task' ],

    function ( serverWidget, search, https, file, render, record, runtime, redirect, task )
    {
        /**
         * Defines the Suitelet script trigger point.
         * @param {Object} scriptContext
         * @param {ServerRequest} scriptContext.request - Incoming request
         * @param {ServerResponse} scriptContext.response - Suitelet response
         * @since 2015.2
         */
        function onRequest ( scriptContext )
        {
            try
            {
                var request = scriptContext.request;
                var response = scriptContext.response;
                if ( scriptContext.request.method == 'GET' )
                {
                    var form = serverWidget.createForm( { title: 'Sample Order Items Page' } );
                    form.addSubmitButton( {
                        label: 'Search'
                    } );

                    form.addButton( {
                        id: 'clearbutton',
                        label: 'Clear All',
                        functionName: 'clearButtonFunction'
                    } );
                    form.addButton( {
                        id: 'backbutton',
                        label: 'Back',
                        functionName: 'backButtonFunction'
                    } );

                    var mainTab = form.addSubtab( {
                        id: 'custpage_main_tab',
                        label: "First Tab"
                    } );
                    var y = form.addField( {
                        id: 'custpage_vendor',
                        type: serverWidget.FieldType.SELECT,
                        label: 'Vendor',
                        source: 'vendor'
                    } );
                    var entity = form.addField( {
                        id: 'custpage_customer',
                        type: serverWidget.FieldType.SELECT,
                        label: 'Prefered Buyer',
                        source: 'Customer'
                    } );

                    form.clientScriptFileId = CLIENT_SCRIPT_FILE_ID;

                    var entityField = scriptContext.request.parameters.entityField || "";
                    entity.defaultValue = entityField;

                    var sublist1 = form.addSublist( {
                        id: 'custpage_sublist_1',
                        type: serverWidget.SublistType.LIST,
                        label: 'Sublist 1',
                        tab: 'custpage_main_tab'
                    } );

                    sublist1.addField( {
                        id: 'custpage_fld1',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Field 1'
                    } );
                    sublist1.addField( {
                        id: 'custpage_fld2',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Field 2'
                    } );
                    var addedfilter;

                    if ( entityField )
                    {
                        addedfilter = [
                            [ "type", "anyof", "SalesOrd" ],
                            "AND",
                            [ "mainline", "is", "T" ],
                            "AND",
                            [ "status", "anyof", "SalesOrd:C", "SalesOrd:A", "SalesOrd:B" ],
                            "AND",
                            [ "name", "anyof", entityField ]
                        ]
                    }
                    else
                    {
                        addedfilter = [
                            [ "type", "anyof", "SalesOrd" ],
                            "AND",
                            [ "mainline", "is", "T" ],
                            "AND",
                            [ "status", "anyof", "SalesOrd:C", "SalesOrd:A", "SalesOrd:B" ]
                        ]
                    }


                    var salesorderSearchObj = search.create( {
                        type: "salesorder",
                        filters: addedfilter,
                        columns:
                            [
                                search.createColumn( {
                                    name: "trandate",
                                    summary: "GROUP",
                                    label: "Date"
                                } ),
                                search.createColumn( {
                                    name: "tranid",
                                    summary: "GROUP",
                                    label: "Document Number"
                                } )
                            ]
                    } );
                    var searchResultCount = salesorderSearchObj.runPaged().count;
                    log.debug( "salesorderSearchObj result count", searchResultCount );
                    var Array1 = []
                    salesorderSearchObj.run().each( function ( result )
                    {
                        itemObj = {}
                        itemObj.Date = result.getValue( salesorderSearchObj.columns[ 0 ] )
                        itemObj.DocNum = result.getValue( salesorderSearchObj.columns[ 1 ] )
                        Array1.push( itemObj )

                        return true;
                    } );

                    for ( var i = 0; i < Array1.length; i++ )
                    {
                        sublist1.setSublistValue( {
                            id: 'custpage_fld1',
                            line: i,
                            value: Array1[ i ].Date
                        } )

                        sublist1.setSublistValue( {
                            id: 'custpage_fld2',
                            line: i,
                            value: Array1[ i ].DocNum
                        } )
                    }
                    var mainTab = form.addSubtab( {
                        id: 'custpage_main_tab2',
                        label: "Second Tab"
                    } );
                    form.addField( {
                        id: 'custpage_abc_text',
                        type: serverWidget.FieldType.SELECT,
                        label: 'pagiation for Tab 2',
                        container: 'custpage_main_tab'

                    } )
                    form.addField( {
                        id: 'custpage_abc_textttt',
                        type: serverWidget.FieldType.SELECT,
                        label: 'pagiation for Tab 1',
                        container: 'custpage_main_tab'

                    } )
                    var sublist2 = form.addSublist( {
                        id: 'custpage_sublist_2',
                        type: serverWidget.SublistType.LIST,
                        label: 'Sublist 2',
                        tab: 'custpage_main_tab2'
                    } );
                    sublist2.addField( {
                        id: 'custpage_fld3',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Field 3'
                    } );
                    var salesorderSearchObj = search.create( {
                        type: "salesorder",
                        filters: addedfilter,
                        columns:
                            [
                                search.createColumn( {
                                    name: "trandate",
                                    summary: "GROUP",
                                    label: "Date"
                                } ),
                                search.createColumn( {
                                    name: "tranid",
                                    summary: "GROUP",
                                    label: "Document Number"
                                } )
                            ]
                    } );
                    var searchResultCount = salesorderSearchObj.runPaged().count;
                    log.debug( "salesorderSearchObj result count", searchResultCount );
                    var Array2 = []
                    salesorderSearchObj.run().each( function ( result )
                    {
                        itemObj = {}
                        itemObj.Date = result.getValue( salesorderSearchObj.columns[ 0 ] )
                        Array2.push( itemObj )
                        return true;
                    } );
                    for ( var i = 0; i < Array2.length; i++ )
                    {
                        sublist2.setSublistValue( {
                            id: 'custpage_fld3',
                            line: i,
                            value: Array2[ i ].Date
                        } )


                    }

                    scriptContext.response.writePage( form );
                }
            } catch ( e )
            {
                log.debug( 'onRequest:error', e.message );
            }
        }
        return {
            onRequest: onRequest
        };
    } )

Leave a comment

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