netsuite将销售订单转换为现金销售

时间:2016-01-21 15:46:14

标签: netsuite suitescript

我尝试使用nlapiTransformRecord将netsuite中的销售订单转换为现金销售。根据文档,这应该是可行的,因为它是一个允许的变换,但我无法在任何地方找到这种特定变换的例子。 这是我尝试做的一个例子。

var int = 123456;
var rec = nlapiLoadRecord('salesorder', int);
rec.setFieldValue('customform', 123);

首先加载一条记录。现在根据文档,我没有在销售订单上进行现金销售的唯一要求是发布期。香港专业教育学院尝试过,无需设置此字段无济于事。 customform也只是一种现金销售定制表格。显然,ids不是真的。

rec.setFieldValue('postingperiod', 58);
var cash = nlapiTransformRecord('salesorder', int, 'cashsale', {'postingperiod': 58});

现在我已经尝试设置了postsperiod值并将其设置为转换的默认值,并且返回两者都不是有效的记录转换。无论如何,这里的变换文档的行是标准变换。

Record Type   Record Name     Transform Type    Transform Name (Target Record)
salesorder    Sales Order     cashsale          Cash Sale

4 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作:

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

答案 1 :(得分:1)

销售订单是非过帐交易,因此,下面的代码不会产生任何影响

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

答案 2 :(得分:1)

您获得超级有用的“这不是有效的记录转换”错误,因为您的销售订单上的付款方式不是“现金”类型,即净条款。因此,您无法将其转换为现金销售。将付款方式更改为“现金”类型或转换为发票。你可以通过按下UI中SO的账单按钮来测试NS如何天真地处理它。除此之外,您的代码/其他建议是正确的。

答案 3 :(得分:0)

好吧原来,我们中国办公室的一个人已经禁用了某种方式可以转换为他正在运行的剧本。这很有趣。