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

Netsuite SuiteScript 1.0-自动将客户存款应用于发票,netsuite,suitescript,Netsuite,Suitescript,使用SuiteScript1.0,我在申请发票的客户押金时遇到了一些困难 序言中提到的几个问题: 存款可以链接到子客户,而发票可以链接到父客户。由于特殊原因,我无法更改此过程 押金与发票金额不同 invoicerec是上一个脚本刚刚创建的实际发票记录 depositid是客户存款记录的内部id invoiceid是发票记录的内部id amounttoapply是客户存款中未使用的金额 我尝试过的代码: var invoiceamount = invoicerec.getFieldVa

使用SuiteScript1.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);
var invoiceamount=invoicerec.getFieldValue('amontremaining');
var amounttoapply=0;
如果(存款左>发票金额)金额应用=发票金额;
else amounttoapply=存款余额;
如果(应用的数量>0){
var payment=NLAPICTransformRecord(“发票”、发票ID、“客户付款”);
var invrefnum=invoicerec.getFieldValue('tranid');
payment.setFieldValue('金额',0);
payment.setFieldValue('autoapply','T');
var applylines=payment.getLineItemCount('apply');
var depositlines=payment.getLineItemCount(“存款”);
对于(var i=1;i对于(var i=1;i找到了我自己的答案,存款子列表没有内部id字段,而是包含id的“doc”文本字段


如果存款是唯一的“数额”,不产生付款记录,而是存款申请。

< P>您可以考虑将存款转换为存款申请,根据马蒂的文章在这里:

关键代码如下:
var-deposit=nlapiTransformRecord('customerdeposit',deposit\u ID,'depositapplication');
其中
deposit\u ID
是您正在转换的存款的ID