2017-01-02 75 views
1

我有一個奇怪的問題。我正在嘗試添加與潛在客戶相關的任務。我編寫了下面的代碼,它工作正常,並在活動下處於領先地位。但是,當我瀏覽任務時,「相關實體描述」字段爲空。我查看了它背後的代碼,它似乎應該從Acumatica 6中的RefNoteId自動計算出相關的實體描述。如果我在主導/活動下手動創建項目,則所有其他主角/活動都會正確更新「相關實體描述」。看看源代碼,看起來這個字段是myTask.Source,它是一個字符串值,我不確定它應該設置爲什麼,因爲它應該用noteid自動計算。我查看了SQL數據庫以及手動創建的任務的所有字段,並且我的自動創建的任務(包括NoteID)都是正確的,因此看起來我缺少某種「更新」命令。任何洞察我缺少的「相關實體描述」來正確計算?謝謝。Acumatica「相關實體說明」任務字段不計算

private void followuphelper(int daysToFollowUp) 
     { 
      #region Event Handlers 
      Contact curLead = Base.LeadCurrent.SelectSingle(); 
      CRTaskMaint graph = CRTaskMaint.CreateInstance<CRTaskMaint>(); 

      CRActivity myTask = new CRActivity(); 
      myTask.Subject = String.Format("FollowUp Lead"); 
      myTask.ClassID = 0; 
      DateTime dueDate = DateTime.Now; 
      myTask.StartDate = dueDate; 
      myTask.EndDate = dueDate.AddDays(daysToFollowUp); //2 weeks 

      myTask.RefNoteID = curLead.NoteID; 
      myTask.ContactID = curLead.ContactID; 

      CRActivity task = (CRActivity)graph.Tasks.Insert(myTask); 

      Base.Actions.PressSave(); 
      graph.Actions.PressSave(); 
} 

回答

1

我只是驗證了下面的代碼,它並顯示相關實體:

public class LeadMaintPXExt : PXGraphExtension<LeadMaint> 
{ 
    public PXAction<Contact> FollowUpTask; 
    [PXUIField(DisplayName = "FollowUp Task")] 
    [PXButton()] 
    private void followUpTask() 
    { 
     CRTaskMaint graph = PXGraph.CreateInstance<CRTaskMaint>(); 

     CRActivity myTask = new CRActivity(); 
     myTask.Subject = String.Format("FollowUp Lead Test"); 
     myTask.ClassID = 0; 
     DateTime dueDate = DateTime.Now; 
     myTask.StartDate = dueDate; 
     myTask.EndDate = dueDate.AddDays(10); 

     myTask.RefNoteID = Base.Lead.Current.NoteID; 
     myTask.ContactID = Base.Lead.Current.ContactID; 

     CRActivity task = (CRActivity)graph.Tasks.Insert(myTask); 

     graph.Actions.PressSave(); 
    } 
} 

enter image description here

相關實體的描述是尋找Note表中的匹配NoteID記錄。此記錄根據需要按需創建。對於New Lead,如果您希望繼續使用上述代碼,那麼您需要通過爲PXNoteAttribute調用GetNoteID來請求創建Note,並保存該記錄。

例子:

PXNoteAttribute.GetNoteID<Contact.noteID>(Base.Lead.Cache, Base.Lead.Current); 
Base.Actions.PressSave(); 

亂盒的活動動作(添加任務,添加事件等),需要照顧的,這一內部。如果您使用以下方法,則所有初始化均在內部完成。

public class LeadMaintPXExt : PXGraphExtension<LeadMaint> 
{ 
    public PXAction<Contact> FollowUpTask; 
    [PXUIField(DisplayName = "FollowUp Task")] 
    [PXButton()] 
    private void followUpTask() 
    { 
     try 
     { 
      //out-of-box Activities -> "New Task" Action 
      Base.Actions["NewTask"].Press(); 
     } 
     catch (Exception ex) 
     { 
      if (ex is PXRedirectRequiredException) 
      { 
       CRTaskMaint graph = (ex as PXRedirectRequiredException).Graph as CRTaskMaint; 
       if (graph != null) 
       { 
        CRActivity myTask = graph.Tasks.Current; 
        myTask.Subject = String.Format("FollowUp Lead Test"); 
        myTask.ClassID = 0; 
        DateTime dueDate = DateTime.Now; 
        myTask.StartDate = dueDate; 
        myTask.EndDate = dueDate.AddDays(10); 

        CRActivity task = graph.Tasks.Update(myTask); 

        graph.Actions.PressSave(); 
       } 
      } 
     } 
    } 
} 
+0

我完全複製了這個函數,得到和以前一樣的結果(沒有相關實體)。在您的測試中,您選擇了一個存在的潛在客戶「Coudane,Benedicte」。但是,如果您使用Firstname = test27創建新的潛在客戶,姓氏= test28並保存,然後點擊Followup Task按鈕,然後它會顯示我看到的結果(無相關實體)。如果我選擇「Coudane,Benedicte」,只需複製主角並更改名字和姓氏以創建新主角,那麼它也不會創建相關實體。如果我選擇「Coudane,Benedicte」,只需點擊後續操作即可。再次只是不是爲新的潛在客戶,這是奇怪的.. – AcumaticaGuy

+0

它似乎需要發生一些標誌或其他「更新」功能,以獲得該函數來填充Task.Source字段。一旦「激活」,它就可以正常工作。如果你創建了一個新的潛在客戶,然後點擊這個按鈕3次,它將創建3個任務,並且沒有相關的實體。但是,如果您隨後將任務相關實體中的一個更改爲正確的實體,則列表中的其他兩個將會奇蹟般地更新。 「Coudane,Benedicte」領導似乎已經設置了這個標誌,因此立即起作用,但新的領導者不會。 – AcumaticaGuy

+0

@AcumaticaGuy,我已經更新了原始答案。 – DChhapgar