如何使用Credit Memos为客户创建客户退款?

时间:2016-04-12 22:37:35

标签: netsuite suitescript

当我与选定的客户创建新的客户退款时,我现在收到错误INVALID_KEY_OR_REF无效的paymentmethod参考密钥VISA。此代码用于在最新的2016 R1升级之前工作。

// create the Customer Refund record            
var customerRefund = nlapiCreateRecord("customerrefund", {
    entity: creditMemo.getFieldValue("entity") // preload with customer credits
});

如何根据客户的贷记凭证创建新的客户退款,而不会出现有关付款方式的错误?我甚至没有看到Credit Memo有一个paymentmethod字段。

其他信息

我尝试在nlapiCreateRecord调用中初始化paymentmethod,现在我收到此错误:

INVALID_RCRD_INITIALIZE You have entered an invalid default value for this
record initialize operation.

2 个答案:

答案 0 :(得分:0)

退款方法(字段的内部ID为 - paymentmethod)字段存在于“退款方法”选项卡下的客户退款记录中,而不存在于贷项凭证记录中。

由于此字段是必填字段,因此您必须设置此字段。您可以通过导航到会计>来查看NetSuite帐户中可用付款方式的内部ID。会计列表>新>付款方式,并列出付款方式列表的值。在您的代码中,您必须按如下方式设置字段 -

customerRefund.setFieldValue('paymentmethod', 1); //In my account 1 is for Visa

答案 1 :(得分:0)

对于你的nlapiCreateRecord调用,你需要提供的就是你正在做的客户内部代码。

如果没有涉及某些用户事件脚本或worflow,您可能还需要确保您使用的表单没有任何特殊要求。在我的帐户中,以下是创建客户退款所需的全部内容。客户内部ID为996,目标贷记凭证ID为1189.客户有一个默认信用卡,退款自动提取。

var ref = nlapiCreateRecord('customerrefund', {entity:996,customform:41});
for(var i = ref.getLineItemCount('apply'); i>0; i--){
    if(1189 == ref.getLineItemValue('apply', 'doc', i)){
    ref.setLineItemValue('apply', 'apply', i, 'T');
    ref.setLineItemValue('apply', 'amount', i, ref.getLineItemValue('apply', 'due', i));
}
console.log(
i +' '+
ref.getLineItemValue('apply', 'doc', i) +' '+ 
ref.getLineItemValue('apply', 'apply', i) +' '+ 
ref.getLineItemValue('apply', 'amount', i) + ' '+
ref.getLineItemValue('apply', 'total', i));
}
console.log(nlapiSubmitRecord(ref, true));