[英]Trigger Avalara to run after Suitescript completes
随着科罗拉多州增加新的运费税,我正在寻找一种方法来在 NetSuite 中更新发票后调用 Avalara 重新计算流程。 我们必须添加一个与此税相关的新行项目,然后让它重新处理 Avalara 函数,以便能够将新行包含在 Avalara 税中。 我已经完成了一个简单的工作流程来添加新行。 但是,它不会召回 Avalara 脚本,因此不会将信息添加到征税文件中。 有没有人能够在 NetSuite 后期工作流或脚本完成中调用 Avalara 脚本?
提前致谢,
布拉德
上周我花了太多时间处理这个确切的问题。 我也尝试过 go 工作流程路线,但最终决定需要一个脚本。 我尝试了几种方法,但最终的解决方案是创建一个不可履行的非库存项目,并使用部署在销售订单上的用户事件脚本在创建时将 RDF 项目添加到适用的记录中。 在我们的例子中,这些 SO 是在 UI 中创建的,从 CSV 导入,或通过 Suitelet(和 Celigo)从我们的 Shopify 网上商店导入。 脚本的基础如下:
const beforeSubmit = (context) => {
let salesOrder = context.newRecord;
let shipState = salesOrder.getValue('shipstate');
let channel = salesOrder.getValue('class');
let total = salesOrder.getValue('total');
let customerId = salesOrder.getValue('entity');
if (!rdfExists(salesOrder) && shipState == 'CO' && (channel == '5' || channel == '6') || (channel == '15' && total > 0)) {
if (customerTaxable(customerId)) {
addRDF(salesOrder);
}
}
}
本质上,这只是检查一些参数(SO 不知何故还没有 RDF 行项目,Ship State 是 CO,并且它是满足这些订单标准的自定义渠道之一。如果订单满足这些标准将加载客户记录以检查客户是否应纳税。如果他们应纳税,它将 RDF 行项目添加到记录中。
这显然包括一些辅助功能,我将包括其中的片段,但对它们持保留态度,我们处于高度定制的实例中,对我们有用的可能对你不起作用(而且我不是专业开发人员并且这是为了完整性而不是优化而编写的)。
function rdfExists(record) {
//Loop through line items looking for 'Colorado Retail Delivery Fee' item
let numLines = record.getLineCount('item');
const RDFITEM = runtime.getCurrentScript().getParameter('custscript_co_rdf_id');
for (let i = 0; i < numLines; i++) {
let itemId = record.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});
if (itemId == RDFITEM) {
return true;
}
}
return false;
}
function addRDF(record) {
const RDFITEM = runtime.getCurrentScript().getParameter('custscript_co_rdf_id');
let numLines = record.getLineCount('item');
record.insertLine({
sublistId: 'item',
line: numLines,
ignoreRecalc: false
});
record.setSublistValue({
sublistId: 'item',
fieldId: 'item',
line: numLines,
value: RDFITEM
});
record.setSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: numLines,
value: 1
});
record.setSublistValue({
sublistId: 'item',
fieldId: 'taxcode',
line: numLines,
value: '5025'
});
}
function customerTaxable(customerId) {
let customerRecord = record.load({
type: record.Type.CUSTOMER,
id: customerId
});
if (customerRecord.getValue('taxable')) {
return true;
} else {
return false;
}
}
这成功地将行添加到销售订单,但仍然没有调用 Avalara 来计算新项目的税收。 为此,还有几个步骤:
从那里我们修改了 SO 和发票 PDF 模板以包含从这些订单的税行中删除 $.27 并将其添加为自己的行项目的逻辑:
总而言之 - 这是一个适合我们的解决方案。 显然,您的商业案例会有所不同,但这对我们有用,希望至少可以引导您朝着正确的方向前进。 所有这一切只需 27 美分......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.