2016-04-12 55 views
1

當我使用選定的客戶創建新客戶退款時,我現在收到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 
}); 

如何根據客戶的貸項憑證創建新的客戶退款而不會收到關於付款方式的此錯誤?我甚至沒有看到信用備忘錄有付款方式字段。

附加信息

我試圖在nlapiCreateRecord調用初始化PAYMENTMETHOD,現在我得到這個錯誤:

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

如果您嘗試在GUI中手動模擬此腳本,例如從信用備忘錄屏幕創建客戶退款,然後將客戶設置爲相同,您是否收到任何錯誤? – TonyH

+0

沒有錯誤,當創建一個新的客戶退款時,它會顯示空白表格,我輸入客戶號碼並選擇列表中的客戶,然後在應用標籤中列出信用和存款。在調用nlapiCreateRecord時發生此錯誤,在調用nlapiSubmitRecord之前執行。 –

+1

當您調用CreateRecord時是否有可能運行另一個腳本或工作流? – TonyH

回答

0

爲了您的通話nlapiCreateRecord你應該需要提供的是客戶internalid像你在做什麼。

如果沒有涉及某個用戶事件腳本或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)); 
0

退款方法(場的內部編號是 - PAYMENTMETHOD)領域存在在「退款方式」選項卡下的客戶退款記錄上,而不是在貸項憑證記錄上。

由於此字段是必填字段,因此您必須對其進行設置。您可以通過導航至「記帳」>「會計清單」>「新建」>「付款方式」來查看NetSuite帳戶中可用付款方式的內部標識,並列出付款方式清單的值。這在你的代碼後,你必須設置字段,如下 -

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

我在nlapiCreateRecord上收到這個錯誤,而不是nlapiSubmitRecord。你是否在說除了預先設置客戶之外,我還應該在傳遞給nlapiCreateRecord的參數中設置支付方法? –