[英]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.