2016-03-29 32 views
0

現金販売のカスタム項目の明細金額を自動入力する方法。カスタム項目の金額を自動入力する

私はクライアントスクリプトの初心者です。試したスニペットですが、期待どおりに機能しません。お勧めします。

function custItemAmount(type) 
{ 
    if(type == 'edit') 
    { 
     var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId()); 
     var itemCount = record.getLineItemCount('item'); 

     for(i=1; i<=itemCount; i++) 
     { 
      //fetch amount of each item 
      var item_amount=record.getLineItemValue('item', 'amount', i); 
      if (item_amount != null && item_amount != '') { 
       record.setLineItemValue('item', 'custbody_itemamount', i, item_amount); 
       //set total amount to custom item amount field 
      } 
     } 
     var id = nlapiSubmitRecord(record, true); 
    } 
} 
+0

広告申込情報に間違ったフィールドを設定しようとしているようです。 'custbody_itemamount'は本当にあなたが望む分野ですか?広告申込情報フィールドではなく、私の身体フィールドのようです。私はそれが 'custcol_lineitemamount'と呼ばれることを期待しています – TonyH

+0

Typo..正しいです。それはcustcol_lineitemamountです。スクリプトに関する問題はありますか? – user63827

+0

移入する項目は、本文項目項目かライン項目項目ですか? – Rockstar

答えて

0

広告申込情報に間違ったフィールドを設定しようとしているようです。 custbody_itemamountは本当に必要なフィールドですか?広告申込情報フィールドではなく、私の身体フィールドのようです。私はそれが呼び出されると思うでしょうcustcol_lineitemamount

私はいくつかの前提を作ったので、フィールド名が正しいことを確認してください。

{ 
    if(type == 'edit') 
    { 
    var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId()); 
    var itemCount = record.getLineItemCount('item'); 

     for(i=1;i<=itemCount;i++) 
     { 
      //fetch amount of each item 
      var item_amount=record.getLineItemValue('item', 'amount', i); 
       if (item_amount != null && item_amount != '') { 
       record.setLineItemValue('item', 'custcol_itemamount', i, item_amount); 
     //set total amount to custom item amount field 
       } 
    } 
var id = nlapiSubmitRecord(record, true); 
} 
+0

テストしましたが、値がまだ入力されていないことを確認しました。私はここに何かを逃していますかスクリプトはVALIDATE LINE FUNCTIONで動作しますか?それが動作するかどうかテストして教えてください。 – user63827

+0

詳細を知る必要があります。いつ値を自動入力するかたとえば、これがクライアントスクリプトの場合、項目フィールドを読み込むためにレコードをロードしていますが、フォーム上ですでに使用可能になっている必要があります。 – TonyH

+0

クライアントスクリプトの下でテストされましたが、カスタムフィールドの変更はありません。 \t関数custItemAmount(タイプ) \t { \t \t(タイプ== '編集') \t \t \t { \t \t \t項目を反復//場合 (I = 1 \t \t \t \t; iは< = nlapiGetLineItemCount( 'アイテム'); I ++)は \t \t \t \t { \t \t \t //各アイテムのフェッチ量 \t \t \t \t \t var item_amount = parseFloat(nlapiGetLineItemValue( 'item'、 'amount'、i))); \t \t \t \t \t \t} \t \t \t} \t \t nlapiSetFieldValue( 'custcol_item_amount'、nlapiFormatCurrency(item_amount))。 \t \t \t – user63827

0

いつカスタム列にデータが表示されますか。ユーザーが回線を追加した後ですか?はいの場合、スクリプトは正しくありません。共有したスクリプトは、User Eventスクリプトに見えます。これらのタイプのスクリプトは、レコードをロードまたは保存するときにのみ実行されます。

0

以下の簡単なスクリプトで解決しました。お手数です。

==関数custItemAmount(タイプ)

{ 
     if(type == 'item'){ 

    var item_amount=parseFloat(nlapiGetLineItemValue('item','amount')); 
    //nlapiSetFieldValue('custcol_item_amount',item_amount); 

nlapiSetCurrentLineItemValue( 'アイテム'、 'custcol_item_amount'、nlapiFormatCurrency(item_amount))。

}

return true; }

関連する問題