0
votes

Im trying to create a customer deposit record in Netsuite using suitescript 1.0.

The original code I had in place which had been working perfectly up until the 2016.2 release broke it.

The update broke it, in that it would override the value submitted in the payment field and instantly make it the full amount of the sales order from the sales order ID. Which is not what we need it to do.

Original Code

function createDeposit(request,response)
{
    var record = nlapiCreateRecord('customerdeposit');  
        record.setFieldValue('salesorder','1260');
        record.setFieldValue('customer','1170');
        record.setFieldValue('payment','100');
        record.setFieldValue('account','2');
        record.setFieldValue('memo','this is a test');
        deposit = nlapiSubmitRecord(record,true,false);
        response.write(deposit);
}

After a reply on the Netsuite user group prompted me to use the {recordmode:'dynamic'} attributes I am getting a strange error..

Test Replacement Function which doesnt work

function createDeposit(request,response)
{
    var record = nlapiCreateRecord('customerdeposit',{recordmode:'dynamic'});   
        record.setFieldValue('salesorder','1260');
        record.setFieldValue('customer','1170');
        record.setFieldValue('payment','100');
        record.setFieldValue('account','2');
        record.setFieldValue('memo','this is a test');
        deposit = nlapiSubmitRecord(record,true,false);
        response.write(deposit);
}

The error message Im getting now is

Invalid salesorder reference key 1260 for customer .

The thing I dont get is how it is now considered NULL, when the value is hardcoded into this test script after I apply the {recordmode:'dynamic'} value.

Ive tried a wide variety of things, but as I dont have Netsuite support, its proving to be something I simply cant figure out.

Any hints, suggestions would be greatly appreciated as Ive been on this for several days

1

1 Answers

1
votes

When you use dynamic the order you set fields makes a difference. So when you set the sales order prior to setting the customer you are actually getting the error message "Invalid salesorder reference key 1260 for customer blank"

What I do is create the customer deposit like:

var depRec = nlapiCreateRecord('customerdeposit', {entity:soRec.getFieldValue('entity'), salesorder:soId});

also setting the undeposited funds flag seems to be required (but not always for some reason) so since you are supplying an account id also do this:

depRec.setFieldValue('undepfunds',  'F');