2016-10-11 6 views
0

スクリプティングの問題

あり3つの、重要なデータの値は、このレコードに引っ張られます。

${item.quantity}  *Order Value* 
${item.fulfilled} *Fulfilled Value* 
${item.backordered} *Backorder Value* 

は基本的に、私が達成しようとすると、

「受注残の」だけアイテムを表示するには、あるしかし、このタスクは、私は時間とスキルを持っているよりもはるかに困難であると思われます。

だから、私のプランBバックオーダーに別々のテンプレートを使用しています(今のところうまく機能している!)

問題は、私はNON-INVENTORYある項目に出くわした場合アイテムは、NetSuiteがSO ${item.backordered}

私は、テンプレート内のスクリプトとバックオーダーの値を「計算」することができますどのような方法がありますのための任意の数量を計算しないのですか?
算術関数を使用することはできますか?

item.quantity - item.fulfilled = item.backordered 

このクエリを取り巻くテキストの基本形式は次のとおりです。

 <#if record.item?has_content> 
<table><#list record.item as item><#if item_index==0> 
    <thead> 
     <tr> 
     <th> QTY </th> 
     </tr> 
    </thead> 
    </#if> 
     <tr> 
     <td> ${item.backordered} </td> 
     </tr> 
</#list></table> 
</#if> 

私はHTMLとCSSの基本的な理解を持っていますが、スクリプトはそうしてくださいだけで建設的な批判、まだ私に非常に新しいです。

+0

あなたはどのような文書を印刷していますか? – bknights

+0

こんにちは@bknights私は "ピッキングチケット"を印刷しようとしています –

答えて

0

試してみてください。

<#function toNumber val> 
    <#if val?has_content && val?length gt 0 > 
     <#return val?html?replace('[^0-9.]','','r')?number > 
    <#else> 
     <#return 0 > 
    </#if> 
</#function> 

これは、すべてのフィールドが正しく数値として解析されていることを保証します、そしてあなたがエラーなしでフィールド上の数学的な計算を実行することができるはずです。

だから、置き換えることができます。

<td> ${item.backordered} </td> 

をして:

<td> ${toNumber(item.quantity) - toNumber(item.fulfilled)} </td> 
+0

まさに私が必要なもの、感謝@michoel!完全に動作する –

+0

しかし、私はちょうどその項目が正確に半分が達成されたときに気づいた –

+0

しかし、私はちょうどその項目が正確に半分満たされている(すなわち、注文10、完了5,5、バックオーダーで) )@michoel –

0

suitescript set custom column value netsuiteの回答を参照すると、広告申込情報の値に算術演算が使用されます。

+0

ありがとう@bknights 私はちょうどどのように動作するか見て、私のテンプレートにそのサンプルコードを挿入しようとしました。しかし、それは私にエラーを与え続けるので、私はそれが私が必要なものに合うように再構成するためにいくつかを費やす必要があります。 –

0

JavaのJAR NetSuiteが使用しているルート問題があると思います。空のint/number型の値を持つnullポインタのバグがあるようです。

UserEventスクリプトを追加して値をゼロに変更することをお勧めします。これにより、取得しているエラーを防ぐことができます。 before loadイベントでPRINTタイプをキャッチできます。ゼロ値がテンプレートに引き継がれていない場合は、保存されていないカスタム列フィールドを追加し、そこに値をプッシュできます。テンプレートに次のFreemarkerのヘルパー関数を追加

関連する問題