以下の私のvalidate line関数は、addをクリックしたときにのみ有効です。したがって、金額が500で、割引を100に設定した場合、追加ボタンを押すと400になるはずです。動作しません。再度回線をクリックすると、割引が2回適用されるように見えます - 金額は300になります。これをどのように解決すればよいですか?NetSuite - OnValidateLineが機能しない
function OnValidateLine(type, name) {
var count = nlapiGetLineItemCount('expense')
var total = nlapiGetFieldValue('usertotal')
for (var x = 1; x <= count; x++) {
var amount = nlapiGetCurrentLineItemValue('expense', 'amount');
var discount = nlapiGetCurrentLineItemValue('expense', 'custcolptc_discount');
if (discount) {
nlapiSetCurrentLineItemValue('expense', 'amount', amount - discount)
}
return true;
}
return true;
}
これをコーディングするのではなく、NetSuiteの一般的な割引アイテムを使用しない理由はありますか?経費明細には適用されませんか? ここで実際に検証が行われているようには見えないので、代わりにこれを 'fieldChanged'に移動することを考えましたか? * Amount *または* Discount *フィールドが変更されると、いつでも更新をトリガーすることができますが、このロジックでさらに多くのシナリオやユースケースが処理されるようです。 – erictgrubaugh
NetSuiteには、請求書のようにベンダー請求書の割引機能がないため、なぜこれをコード化しなければならなかったのですか。私はラインレベルで割引を適用する必要があります。一部のベンダーは割引を提供しているので、これを法案から減らす方法が必要です。私のコードは動作しますが、ワードの2行目からしかありません。 OK - 私はフィールドを試してみよう.Changed。 – MG2016
ちょうどあなたが実際に 'x'や' count'を読むことは決してないことに気付きました。あなたは一行を変更するだけで 'for'ループは必要ありません。 – erictgrubaugh