この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Apex トリガ: 対応中の品目を含む作業指示の完了を防止する

次のトリガは、含まれているすべての品目が完了するまで、ユーザが作業指示を完了できないようにします。これは、スケジュールされた ToDo をすべて確実に完了するために便利な方法です。付随する単体テストでは、コードに問題がないかがスキャンされます。
作業指示トリガを組織で定義する手順は、次のとおりです。
  1. Lightning Experience では、[設定] のオブジェクトマネージャで [作業指示] を選択し、[トリガ] をクリックします。Salesforce Classic では、[設定] の [クイック検索] ボックスに「作業指示」と入力し、[作業指示] の [トリガ] をクリックします。
  2. [新規] をクリックします。
  3. トリガのテキストをコピーし、テキスト項目に貼り付けます。
  4. [保存] をクリックします。
1trigger ValidateWorkOrderLineItem on WorkOrder (before update) {
2  // Create a map of work order Id to workorders where status is closed
3  Map<String, WorkOrder> mapWoToId = new Map<String,WorkOrder>();
4  for(WorkOrder w : Trigger.New) {
5    if(w.Status =='Closed'){
6      mapWoToId.put(w.Id, w);
7    }
8  }
9  
10  // Select the work order line items which are not closed for the list of work orders
11  List<WorkOrderLineItem> woLineItemList = [select woli.Status, woli.workOrderId
12                        from WorkOrderLineItem woli 
13                        where woli.WorkOrderId IN :mapWoToId.keySet() and woli.Status != 'Closed']; 
14
15  // Set tje error message for the parent work order	
16  for(WorkOrderLineItem woli : woLineItemList) {
17      WorkOrder parentWO = mapWoToId.get(woli.workOrderId);
18      parentWO.addError('You cannot close a work order until all of its line items are closed.');\
19  } 
20}