ディスカッション
AIを用いた自動化で請求書処理を合理化
AIを用いた考察を使用して、計画と予測を迅速化
SuiteWorldまであと41日となりました。以下の最新情報をご確認ください。
アジェンダビルダー公開
SuiteWorld On Airの登録受付開始
新しいNetSuite Prompt Studioコンテスト
その他の最新情報も!
詳細はこのスレッドでご確認ください!
APIの戻り値を演算に参照する時、結果が誤る
適用
製品: NetSuite 2023.1
シナリオ
APIの戻り値を演算に参照する時、結果が誤ります。
nlapiGetFieldValueとかnlapiGetCurrentLineItemValue等のSuiteScript APIの戻り値の種類は文字列です。それぞれのAPIの戻り値は演算にて直接に使用できるが、結果は誤ることもあります。以下のサンプルコードを参照します。
var field1 = nlapiGetCurrentLineItemValue('item', 'custcol1'); var field2 = nlapiGetCurrentLineItemValue('item', 'custcol2'); var field3 = nlapiGetCurrentLineItemValue('item', 'custcol3'); var field4 = nlapiGetCurrentLineItemValue('item', 'custcol4'); var field5 = nlapiGetCurrentLineItemValue('item', 'custcol5'); //field1 = 3, field2 = 1, field3 = 2, field4 = 1, field5 = 1 var UnitWeight = nlapiGetCurrentLineItemValue('item', 'custcol_unit_weight'); var GalvRate = nlapiGetCurrentLineItemValue('item', 'custcol_galv_rate'); var ZincLevyRate = nlapiGetCurrentLineItemValue('item', 'custcol_zinc_levy_rate'); var PackingCost = nlapiGetCurrentLineItemValue('item', 'custcol_packing_cost'); var LidsCost = nlapiGetCurrentLineItemValue('item', 'custcol_lids_cost'); var answer = (field1*field2)+(field1*field3)+(field4)+(field5);
サンプルの値:
結果の実績値:911
結果の期待値:11
解決策
掛け算によって、field1, field2, field3は数字に変換されるため、演算結果は9で正しくなります。然し、field4とfield5は文字列のままとなります。ネイティブJavaScriptに従って、「数字 + 文字列 = 文字列」になります。そのため、field4とfield5は9として連結されます。
SuiteAnswers 10282 サブリストAPI > nlapiGetCurrentLineItemValue(type, fldnam)によると、現時点で選択されているラインの値は文字列として返して、未存在の場合は「null」を返します。
field4とfield5は1で掛け算して数字に自動変換される場合、解決できます。他のJavaScriptのメソッドのparseFloatのようを使用できますが、精度等を考慮する必要があります。以下を参照します。
var