Russ Petersen
Russ Petersen

Reputation: 765

How to find the Customer Deposits associated with a Customer Refund in NetSuite

I have a Customer Refund record and now I need to find the associated Customer Deposits records? I've looked in the SuiteScript Records Browser but I don't see the data field in there to connect them.

Thanks, Russ

Upvotes: 0

Views: 1063

Answers (1)

bknights
bknights

Reputation: 15367

If you are still trying to deal with the deposits for a particular sales order you can do a simple search:

nlapiSearchRecord('customerdeposit', null, new nlobjSearchFilter('createdfrom', null, 'is', 1217));
//1217 is internal id of original sales order

However if you are still questing to refund a particular deposit you should also know that the means of creating the customer refund properly is still undocumented:

var cr = nlapiCreateRecord('customerrefund',{entity:127}); // id of customer
cr.setFieldValue('paymentmethod', 1);
//may need to cycle through deposit lines to find the right one(s)
//cr.setLineItemValue('deposit', 'doc', 1, '1226');
//cr.setLineItemValue('deposit', 'amount', 1, 500);
cr.setLineItemValue('deposit', 'apply', 1, 'T');  // need this for at least one line.
nlapiSubmitRecord(cr);

And then if you want to find the affected deposit again it's quite odd. If you can start with the refund's document number you'd collect the ids of the transactions that apply it and then get the transactions that those apply to:

var appliedIds = nlapiSearchRecord('customerrefund', null, [new nlobjSearchFilter('tranid', null, 'is', '2073'),
    new nlobjSearchFilter('applyingtransaction', null, 'noneof', ['@NONE@'])
], [
    new nlobjSearchColumn('tranid'),
    new nlobjSearchColumn('applyingtransaction'),
    new nlobjSearchColumn('applyinglinktype')
]).map(function(cr) {
    console.log(cr.getValue('deposit', 'applying'));
    console.log(cr.getValue('applyinglinktype'));
    if ('payment' == cr.getValue('applyinglinktype')) {
        return cr.getValue('applyingtransaction');
    }
    return null;
}).filter(function(id) {
    return id;
});
nlapiSearchRecord('depositapplication', null, [
    new nlobjSearchFilter('internalid', null, 'anyof', appliedIds),
    new nlobjSearchFilter('appliedtolinktype', null, 'anyof', ['DepAppl'])
], new nlobjSearchColumn('appliedtotransaction')).
forEach(function(da) {
    console.log(da.getValue('appliedtotransaction'));
});

Upvotes: 2

Related Questions