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 引用。
我正在为位于 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 引用。