Netsuite Suitescript禁止在批准前批准停止订单

Netsuite Suitescript禁止在批准前批准停止订单,netsuite,Netsuite,我正在为net suite编写脚本。脚本的要点是在实际批准订单之前检查销售订单,以确保信用额度高于订单总额。当用户单击销售订单上的“批准”按钮时,脚本将运行。我成功地检查了它是否为销售订单,以及操作类型是否为“批准”。我不明白的是,如果订单确实超过信用额度,如何停止审批。我尝试将订单状态设置回“待审批”并提交订单,但结果不是这样。未设置状态。也没有取消类型的命令 function beforeApproveSalesOrder(type) { var recor

我正在为net suite编写脚本。脚本的要点是在实际批准订单之前检查销售订单,以确保信用额度高于订单总额。当用户单击销售订单上的“批准”按钮时,脚本将运行。我成功地检查了它是否为销售订单,以及操作类型是否为“批准”。我不明白的是,如果订单确实超过信用额度,如何停止审批。我尝试将订单状态设置回“待审批”并提交订单,但结果不是这样。未设置状态。也没有取消类型的命令

     function beforeApproveSalesOrder(type)
    {
        var recordType = nlapiGetRecordType();
        var recordId = nlapiGetRecordId();
        if (recordType == 'salesorder')
        {
           if (type == 'approve')
           {
               var recordId = nlapiGetRecordId();
               nlapiLogExecution("debug", "Check Credit Limit Before Approval", "Found sales order with transaction type of approve.");
               var salesOrderTotalCost = nlapiGetFieldValue('total');
               var customer = nlapiGetFieldValue('entity');
               var customerCreditLimit = queryCustomerCreditLimit(customer);

               if (customerCreditLimit < salesOrderTotalCost)
               {
                  nlapiSetFieldText('orderstatus', 'A');
                  nlapiLogExecution("debug", "Check Credit Limit Before Approval", "order status set");

                  nlapiSubmitRecord(recordId, true);
                }
              }
          }
      }

    function queryCustomerCreditLimit( customer )
    {
        var filters = new Array();
        filters[0] = new nlobjSearchFilter( 'internalid', 'null', 'is', customer);
        var columns = new Array();
        columns[0] = new nlobjSearchColumn( 'creditlimit' );
        var searchresults = nlapiSearchRecord( 'customer', null, filters, columns );
        var creditLimit = searchresults[ 0 ].getValue( 'creditlimit' );
        return creditLimit;
   }
批准前的函数SalesOrder(类型)
{
var recordType=nlapiGetRecordType();
var recordId=nlapiGetRecordId();
如果(记录类型==“salesorder”)
{
如果(类型=‘批准’)
{
var recordId=nlapiGetRecordId();
nlapiLogExecution(“调试”、“审核前检查信用额度”、“找到交易类型为“审核”的销售订单”);
var salesOrderTotalCost=nlapiGetFieldValue('total');
var customer=nlapiGetFieldValue(“实体”);
var customerCreditLimit=queryCustomerCreditLimit(客户);
if(customerCreditLimit
您可以抛出异常,从而中止提交操作。在beforeSubmit()函数中,可以有如下内容:

if (customerCreditLimit < salesOrderTotalCost){
  throw nlapiCreateError('Error','Cannot Approve. Exceeds credit limit',true);
}
if(customerCreditLimit
您的代码可以工作,但您需要更改
nlapiSetFieldText('orderstatus','A')
to
nlapiSetFieldValue('orderstatus','A')


我在一个脚本中使用了它,该脚本比较SO的总量,并在SO增加时更改审批状态。

这种工作方式并不是我想要的方式,但我相信你在回答我的问题,因为没有办法创建我所要的功能。这必须奏效。谢谢。如果不满足条件,您可以尝试主动方式并禁用“批准”按钮本身。。。