Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Source State record to sublist field

I am trying to create a custom sublist with sublist field with source to be States record that is managed in Setup > Company > States/Provinces/Countries section. Here is the example code that I am using and it doesn't work.

_sublist.addField({
   id: 'custpage_license_state,
   type: serverWidgetModule.FieldType.SELECT,
   label: 'LICENSE STATE',
   source: 'state' //not recognizing record id
});

I have tried using 'state', 'states', '-195', -195 (was able to locate that this is the internal id for states record in our instance "-195"), but nothing works.

Does anybody has an idea on how to make that work.

Thanks.

like image 379
migontech Avatar asked Nov 08 '22 01:11

migontech


1 Answers

The State/Province record isn't exposed. You'll need to add the options to the field manually. You could either perform a search against the customer records which will only return states currently assigned;

/**
     * Gets customers geographical states.
     *
     * @returns {Array} of state information.
     */
    function getStates() {
        var records = [];
        var customerSearchObj = search.create({
            type: "customer",
            filters: [
                ["formulatext: {country}", "isnotempty", ""],
                "AND",
                ["formulatext: {state}", "isnotempty", ""]
            ],
            columns: [
                search.createColumn({
                    name: "statedisplayname",
                    summary: "GROUP",
                    sort: search.Sort.ASC
                }),
               search.createColumn({ // abbreviation
                    name: "state",
                    summary: "GROUP"
                })
            ]
        });
        customerSearchObj.run().each(function (result) {
            var rec = {
                state: result.getValue({name: 'state', summary: 'GROUP'}),
                stateDisplay: result.getValue({name: 'statedisplayname', summary: 'GROUP'})
            };
            records.push(rec);
            return true;
        });
        return records;
    }

Or, create a customer in memory and then get the states; (Sorry, SS1 code, taken from SA 63293.)

function getAllStatesForCountry() {
    var customer_record = nlapiCreateRecord('customer', {recordmode: 'dynamic'});
    customer_record.selectLineItem('addressbook', 1);
    var addrSubrecord = customer_record.createCurrentLineItemSubrecord('addressbook', 'addressbookaddress');
    addrSubrecord.setFieldValue('country', 'GB');  
    var stateField = addrSubrecord.getField('dropdownstate'); 
    return stateField.getSelectOptions();
}

And then loop through the result and add them to your field using mySelect.addSelectOption().

like image 98
ehcanadian Avatar answered Nov 30 '22 06:11

ehcanadian