NetSuite:在项目履行之前转换销售订单,添加信用卡 authCode 和 pnRefNum

NetSuite: transform salesorder adding credit card authCode and pnRefNum ahead of item fulfilment

我正在为位于 Webstore 之外的 NS 构建一个前端。我们的支付网关有一个能够创建参考号和授权码的网络应用程序,这些需要附加到销售订单,以便支付提供商可以在订单发出后处理付款。这是可能的还是我找错树了?

我是 NS 的新手,如果答案很明显,我深表歉意!

我收到的错误消息是:

Code: INVALID_RCRD_TRANSFRM Details: That type of record transformation is not allowed. Please see the documentation for a list of supported transformation types.

这是我尝试在我的 RESTlet 中使用的代码:

function authorizeCreditCard(dataIn) {
  nlapiLogExecution('DEBUG', 'Pre Transform', JSON.stringify(dataIn));
  var customerpayment, paymentrecord
  try {
    customerpayment = nlapiTransformRecord('salesorder', dataIn.id, 'customerpayment', {
      "memo": dataIn.memo,
      "authCode": dataIn.authCode,
      "pnRefNum": dataIn.pnRefNum,
      "ccApproved": dataIn.ccApproved,
      "ccAvsStreetMatch": dataIn.ccAvsStreetMatch,
      "ccAvsZipMatch": dataIn.ccAvsZipMatch,
      "ccSecurityCodeMatch": dataIn.ccSecurityCodeMatch
    });
    paymentrecord = nlapiSubmitRecord(customerpayment);
  } catch (e) {
    nlapiLogExecution('ERROR', 'Transform failed', e);
  }
  nlapiLogExecution('DEBUG', 'Post Transform: CP', JSON.stringify(customerpayment));
  nlapiLogExecution('DEBUG', 'Post Transform: PR', JSON.stringify(paymentrecord));

  if (paymentrecord) {
    return {
      status: 'success',
      data: paymentrecord
    }
  }
  return {
    status: 'error',
    message: 'something went wrong'
  }
}

无法将销售订单转换为客户付款。销售订单只能转化为现金销售、发票、项目履行、退货授权和收入承诺。我认为你应该先将你的销售订单转换成发票,然后用 customerpayment 向客户付款。

问候

为了在外部系统中进行授权并在 Netsuite 中自动 settlement/capture 第一步是使用相同的支付处理器(或者显然只是相同的商业银行,但 YMMMV)用于外部系统的授权。

以下代码段用于创建具有授权的销售订单。稍后当您完成订单时,由此产生的现金销售将触发结算和捕获。如果您不能在 NS 中配置用于授权的同一处理器,大多数商业银行使用非常简单的设置 API。

function dummyExpDate() {
    var d = new Date();
    return ('0' + (d.getMonth() + 1)).slice(-2) + '/' + (d.getFullYear() + 1); // some future date
}
var soRec = nlapiTransformRecord('customer', custId, 'salesorder, {recordmode: 'dynamic'});
soRec.setFieldValue('paymentmethod', 'somepaymentmethodid_Visa_works'); // some payment method id for NS happiness
soRec.setFieldValue('ccnumber', '4111111111111111'); // dummy valid visa for NS happiness
soRec.setFieldValue('ccexpiredate', dummyExpDate());
soRec.setFieldValue('pnrefnum', pnref);
soRec.setFieldValue('ccapproved', 'T');

@bknights @pedro-bustos 感谢你们的帮助。

我想通了!很大程度上是由于您的回答 bknights。

您只能在首次创建销售订单时添加授权码等。这意味着我必须稍微重构一些东西,但我现在可以添加授权代码和 pn 引用。