Suitelet that Searches the Child Matrix Items Based on the Parent Item

Create a Suitelet script that will return a list of Child Items based on the entered Parent Item.

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define(['N/ui/serverWidget','N/search'], function(serverWidget,search) {‌
    function onRequest(context) {‌
        if (context.request.method === 'GET') {‌

            // Section One - Forms - See 'Steps for Creating a Custom Form' in topic 'Sample Custom Form Script'
            var form = serverWidget.createForm({‌
                title: 'Search Matrix Items'
            });

            var itemid = form.addField({‌
                id: 'custpage_itemid',
                type: serverWidget.FieldType.TEXT,
                label: 'ENTER ITEM NAME/NUMBER:'
            });

            form.addSubmitButton({‌
                label: 'Submit'
            });

            context.response.writePage(form);
        } else {‌
            // Section Four - Output - Used in all sections
            var delimiter = /\u0001/;
            var parentItemID = context.request.parameters.custpage_itemid;

			var myParentSearch = search.create({‌
				type: search.Type.INVENTORY_ITEM,
				filters: ['itemid', 'is', parentItemID]
			});

			var parentItemRecord = myParentSearch.run().getRange({‌
				start:0,
				end:1
			})

			var parentItem = parentItemRecord[0].id

			context.response.write('RESULTS:'+'\n'+'\n');

			var myChildSearch = search.create({‌
				type: search.Type.INVENTORY_ITEM,
				filters: [{‌
					name: 'matrixchild',
					operator: 'is',
					values: ['T']
					},{‌
					name: 'parent',
					operator: 'anyof',
					values: parentItem
					},
				],
				columns: ['itemid']
			}).run().each(function(result) {‌

				var resItemId = result.getValue('itemid');
                context.response.write(resItemId.substring(parentItemID.length+3)+'\n');

				return true;
			});

        }
    }
    return {‌
        onRequest: onRequest
    };
});

Leave a comment

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