【发布时间】:2019-07-09 19:40:13
【问题描述】:
我是suitescript 的新手,我想构建一个脚本,该脚本按定期计划运行,并且仅根据项目履行情况开具发票(即发票和项目履行之间存在一对一关系,但可能是一对多关系销售订单和发票/项目履行之间的关系)。
我能够成功运行将销售订单整体转换为发票的脚本 - 但是这包括销售订单上的所有项目,而不仅仅是已履行的项目(我们的业务中有很多情况,其中只有发生部分履行,然后必须关闭订单)。目前,根据我的研究,我无法找到成功创建此脚本的其他示例。我最初的想法是以某种方式将销售订单上的“qtyfulfilled”存储在一个包含项目的数组中,并以此创建发票。但在我看来,转换功能似乎是保留销售订单和发票之间链接的最佳方式。
var invoice = record.transform({
fromType: record.Type.SALES_ORDER,
fromID: salesOrderId,
toType: record.Type.INVOICE,
isDynamic: true
});
这将返回包含销售订单中所有项目的发票,而不仅仅是已履行的项目。
编辑:
我实现了建议的代码版本,我只是迭代销售订单的行并将发票上的每一行数量替换为“fulfilledquantity” - 但是我意识到当数量为零时,发票似乎仍在存储该线为零值。
发票脚本的下游,我通过 NS 集成将发票记录传递给我们的 EDI 提供商。通过我的脚本创建的发票映射到 EDI 810(发票记录)中,其中未履行的行项目的数量行为 0,这会导致 EDI 文件中的错误。
我编写了以下内容以在数量之后遍历发票行并删除零数量行,但收到以下错误:“name”:“USER_ERROR”,“message”:“请选择要添加的项目” -
for (var k = 0; k < lineCount; k++) {
var currentInvoiceLineQuantity = newInvoice.getSublistValue ({
sublistId: 'item',
fieldId: 'quantity',
line: k
});
if(currentInvoiceLineQuantity === 0){
newInvoice.removeSublistSubrecord({
sublistId: 'item',
fieldid: 'item',
line: k
});
k--;
lineCount--;
}
}
【问题讨论】:
标签: netsuite suitescript suitescript2.0