我正在尝试使用nlapiTransformRecord将netsuite中的销售订单转换为现金销售。根据文档,这应该是可能的,因为这是一个允许的转换,但我在任何地方都找不到这种特定转换的示例。这是我想要做的一个例子。
var int = 123456;
var rec = nlapiLoadRecord('salesorder', int);
rec.setFieldValue('customform', 123);首先加载一条记录。现在,根据文件,我的销售订单上没有的现金销售的唯一必需字段是postingperiod。我在设置这个字段的时候和没有设置的情况下都试过了,但都没有用。另外,自定义表单只是一个现金销售自定义表单。很明显,ids不是真实的。
rec.setFieldValue('postingperiod', 58);
var cash = nlapiTransformRecord('salesorder', int, 'cashsale', {'postingperiod': 58});现在,我已经尝试设置postingperiod值并将其设置为转换的默认值,但两者都返回无效的记录转换。不管怎样,这里有一行关于它的转换文档,它是一个标准的转换。
Record Type Record Name Transform Type Transform Name (Target Record)
salesorder Sales Order cashsale Cash Sale发布于 2016-01-22 00:03:43
您可以按如下方式执行此操作:
var cash = nlapiTransformRecord('salesorder', int, 'cashsale'); // can initialize with {customform:formId}
cash.setFieldValue('postingperiod', 58); // assuming 58 is the internal id of an open period
nlapiSubmitRecord(cash);发布于 2016-01-22 02:08:32
销售订单是一个非过帐事务,所以,下面的代码不会有任何影响
var int = 123456;
var rec = nlapiLoadRecord('salesorder', int);
rec.setFieldValue('customform', 123);入账周期由NetSuite根据交易日期自动设置,大部分情况下不需要明确设置。
var cash = nlapiTransformRecord('salesorder', int, 'cashsale');如果您确实需要更改过帐期限,我建议您在动态模式下转换记录,然后在其上设置trandate,因为NetSuite会自动拉出适当的过帐期限。
var cash = nlapiTransformRecord('salesorder', int, 'cash sale', {'recordmode': 'dynamic'});
cash.setFieldValue('trandate', APPROPRIATE_TRANDATE_VALUE);
nlapiSubmitRecord(cash);发布于 2016-02-02 10:44:02
由于销售订单上的付款方式不是“现金”类型(即净条款),因此您会收到超级有用的"That is not a valid record transformation“错误。因此,您无法将其转换为现金销售。要么将付款方式更改为“现金”类型,要么将其转换为发票。您可以通过在UI中按下SO中的账单按钮来测试NS将如何处理它。除此之外,您的代码/其他建议都是正确的。
https://stackoverflow.com/questions/34928119
复制相似问题