使用SuiteScript 1.0,我很难获得客户存款申请发票。
前言中的一对注意到:
invoicerec
是由前一个脚本创建的实际发票记录。depositid
是客户存款记录的内部IDinvoiceid
是发票记录的内部IDamounttoapply
是未在客户存款上应用的金额。我试过的代码:
var invoiceamount = invoicerec.getFieldValue('amountremaining');
var amounttoapply = 0;
if (depositleft > invoiceamount) amounttoapply = invoiceamount;
else amounttoapply = depositleft;
if (amounttoapply > 0) {
var payment = nlapiTransformRecord('invoice', invoiceid, 'customerpayment');
var invrefnum = invoicerec.getFieldValue('tranid');
payment.setFieldValue('amount',0);
payment.setFieldValue('autoapply','T');
var applylines = payment.getLineItemCount('apply');
var depositlines = payment.getLineItemCount('deposit');
for (var i=1; i < depositlines; i++) {
var lineid = payment.getLineItemValue('deposit', 'internalid', i);
log ('Compare Dep Line Trans ID#'+lineid+' with the Deposit Trans ID#'+depositid )
if (lineid == depositid ){
payment.setLineItemValue('deposit', 'amount', i, amounttoapply );
}
}
for (var i=1; i<applylines; i++) {
var lineid = payment.getLineItemValue('apply', 'internalid', i);
if (lineid == invoiceid ){
payment.setLineItemValue('apply', 'amount', i, amounttoapply );
}
}
var paymentid = nlapiSubmitRecord(payment);
问题:我可以获得要创建的付款,但是它想要应用整个发票金额,而不是接受客户存款金额。
觉得我很缺少非常直接的东西。
感谢任何帮助。
找到我自己的答案,存款子列表没有internalid字段,而是包含id的“doc”文本字段。
如果存款是唯一适用的“金额”,则不会创建付款记录,而是存款申请。