首页 > 解决方案 > SuiteScript 1.0 - 自动将客户押金应用于发票

问题描述

使用 SuiteScript 1.0,我在将客户押金用于发票时遇到了一些困难。

几个注意到前言:

我试过的代码:

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

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

感觉我错过了一些非常非常直接的东西。

感谢任何帮助。

标签: netsuitesuitescript

解决方案


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

关键代码是这样的:您正在转换的存款的 id 在var deposit = nlapiTransformRecord('customerdeposit', DEPOSIT_ID, 'depositapplication');哪里。DEPOSIT_ID


推荐阅读