2016-12-20 12 views
0

NetSuite CRMモジュールに顧客レコードがあり、顧客レコードにリンクされた追加のカスタムレコードがあります。顧客レコード "顧客ステータス"に関するカスタムフィールドがあります。顧客の状況に基づいてNetSuite:suitscriptを使用してnetsuiteのリンクされたレコードで「新規」ボタンを無効にする方法

Screenshot

我々は(この場合は新しいサービスレコードで)新しいカスタムレコードボタンを無効にしたいです。私はbeforeLoadスクリプトを使用してメインの顧客レコードのボタンを無効にすることができますが、リンクされたレコードに関連するボタンを無効にしようとすると同様のアプローチが失敗します。

/** 
 
* @NApiVersion 2.0 
 
* @NScriptType UserEventScript 
 
*/ 
 
define(["N/log", "N/ui/serverWidget"], function(log,ui) { 
 
    function disableNewCaseButton(context){ 
 
     if (context.type == context.UserEventType.VIEW){ 
 
      var customerStatus = context.newRecord.getValue({"fieldId" : "custentitycustomer_status"}); 
 
     if (customerStatus !== 1){ 
 
      var newButton = context.form.getButton({ 
 
       id: 'newrecrecmachcustrecordso_customer_name' 
 
      }) 
 
      try{ 
 
      newButton.isDisabled = true; 
 
     } 
 
     catch(e){ 
 
      log.debug({ 
 
       title : "error", 
 
       details: e 
 
      }); 
 
     } 
 

 
     } 
 
     return; 
 
    } 
 
} 
 
    return { 
 
     beforeLoad: disableNewCaseButton 
 
    } 
 
});

答えて

0

私はこれを行うには、任意のAPIサポート方法があるとは思いません。

あなたはDOMの牛車に頼るしたい場合、あなたはそれを隠すためにクライアントスクリプトを使用することができます。

document.getElementById("newrecrecmachcustrecordso_customer_name").style.display = "none"; 

、これは将来のNetSuiteのアップデートで壊れないという保証がないことに注意してください。

ボタンを離れることもできますが、顧客のステータスが有効でない場合は、リンクされたレコードでワークフローまたはスクリプトを使用して保存しないようにすることもできます。

+0

レコードが保存されないようにすることはできますが、ユーザーが既に情報を入力している可能性があります(これはサポート/ケースモジュールで行います)。 DOMを操作することでボタンを無効にすることができましたが、クライアントスクリプトの "view"イベントがないので、目的の効果が得られません。 – irfans

+0

@ user3757527ビューモードでクライアントスクリプトを展開することはできませんユーザーイベントを使用してクライアントスクリプトを設定すると、ビューモードでも実行されます。カスタムインラインHTMLフィールドを使用してクライアントスクリプトをビューモードに注入することもできます。 – michoel

+0

ユーザーの使用方法に関するガイダンスイベントスクリプトを使用してクライアントスクリプトを設定するには?クライアントイベントをロードする前にユーザーイベントを使用しますか? – irfans

0

カスタムレコードのアクセスタイプ=使用許可リストを設定します。次に、ロールの設定で、アクセス権付きロールにカスタムレコード権限を割り当てます。

アクセス権が[作成]よりも小さいため、この役割を持つユーザーは選択できますが、[新規]オプションはドロップダウンメニューでは使用できません。

関連する問題