Latheesan
Latheesan

Reputation: 24116

Load defaultaddress of customer in netsuite via record search

I am working on creating a RESTlet to load paginated customer records. One of the thing i need is the customer's defaultaddress. This field is available when I load a single customer like this:

customer = record.load({
    type: record.Type.CUSTOMER,
    id: context.id, // e.g. 1234
    isDynamic: false
});

However, when I try to load all customers with pagination like this:

define(['N/record', 'N/search'], function(record, search) {

    var currencies = {};

    function getClients(context) {

        var mySearch = search.create({
            type: search.Type.CUSTOMER,
            columns: [
                { name: 'companyname' },
                { name: 'vatregnumber' },
                { name: 'lastmodifieddate' },
                { name: 'currency' },
                { name: 'email' },
                { name: 'phone' },
                { name: 'defaultaddress' }
            ]
        });

        var searchResult = mySearch.run().getRange({
            start: context.start || 0,
            end: context.end || 100
        });

        var results = [];

        for (var i = 0; i < searchResult.length; i++) {
            results.push({
                tax_number: searchResult[i].getValue({ name: 'vatregnumber' }),
                name: searchResult[i].getValue({ name: 'companyname' }),
                // snipped...
            });
        }

        return results;

    }

    function loadCurrencyName(id) {
        return record.load({
            type: record.Type.CURRENCY,
            id: id,
            isDynamic: false
        }).name;
    }

    return {
        get: getClients
    }

});

and execute the rest api call to the above RESETlet script; I get the following error:

{
    "type":"error.SuiteScriptError",
    "name":"SSS_INVALID_SRCH_COL",
    "message":"An nlobjSearchColumn contains an invalid column, or is not in proper syntax: defaultaddress.",
    "stack":[ ... snipped ... ],
    "cause":{ ... snipped ... },
    "id":"",
    "notifyOff":false
}

Any idea how to best to load the default address of the customer, whilst loading all customers using the paged search feature?

Upvotes: 1

Views: 1545

Answers (1)

Krypton
Krypton

Reputation: 5276

{defaultaddress} is calculated when the customer record is loaded - it's not a stored field and is not available for saved searches. As the field help says, it's simply the default billing address and changes automatically according to what address in the address subtab you have checked 'Default Billing" on.

To work around this and display what you're looking for, you can simply replace defaultaddress with billaddress.

Upvotes: 4

Related Questions