SuiteScript 1.0-将客户存款自动应用于发票

时间:2018-09-06 10:19:00

标签: netsuite suitescript

使用SuiteScript 1.0,我在获取客户定金以申请发票时遇到了一些困难。

序言部分:

  • 存款 可能与子客户关联,而发票是与父客户关联的。由于特殊原因,我无法更改此过程。
  • 存款金额 与发票金额不同。
  • invoicerec是前一个脚本刚刚创建的的实际发票记录。
  • depositid是客户存款记录的内部ID
  • invoiceid是发票记录的内部ID
  • amounttoapply是未存入客户存款的剩余金额。

我尝试过的代码:

    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);

问题:我可以创建要创建的付款,但是它想应用全部发票金额,而收取客户存款金额。

感觉我很容易非常错过了一些东西。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

找到了我自己的答案,存款子列表没有内部ID字段,而是包含ID的“ doc”文本字段。

如果存款是唯一应用的“金额”,则不会创建付款记录,而是创建存款申请。

答案 1 :(得分:0)

您可以考虑根据Marty在这里的文章将存款转换为存款申请:http://blog.prolecto.com/2015/10/11/use-netsuite-suitescript-to-automate-posting-customer-deposits-to-invoices/

关键代码如下:var deposit = nlapiTransformRecord('customerdeposit', DEPOSIT_ID, 'depositapplication');,其中DEPOSIT_ID是您要转换的存款的ID。