2017-01-02 1 views
1

Ich habe ein seltsames Problem. Ich versuche eine Aufgabe zu einem Lead hinzuzufügen. Ich habe den folgenden Code geschrieben und es funktioniert gut und erscheint unter der Leitung unter Aktivitäten. Wenn ich die Aufgaben durchsuchen, ist das Feld "Related Entity Description" jedoch leer. Ich habe den Code dahinter angesehen und es scheint, dass die zugehörige Entitätsbeschreibung automatisch aus der RefNoteId in Acumatica 6 berechnet wird. Wenn ich manuell einen Artikel unter dem Lead/der Aktivität erstelle, aktualisieren alle anderen Lead/Aktivitäten die "zugehörige Entity-Beschreibung" korrekt. Betrachtet man die Quelle, erscheint dieses Feld als myTask.Source, was ein String-Wert ist und ich bin mir nicht sicher, worauf es eingestellt werden sollte, da es automatisch mit dem Notenname berechnet werden sollte. Ich schaute in die SQL-Datenbank und alle Felder von einer manuell erstellten Aufgabe und meine automatisch erstellte Aufgabe einschließlich der NoteID sind korrekt, so scheint es, ich vermisse eine Art von "Update" -Befehl. Irgendeine Einsicht was mir fehlt um die "Related Entity Description" korrekt zu berechnen? Vielen Dank.Acumatica "Related Entity Beschreibung" Aufgabenfeld berechnet nicht

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(); 
} 

Antwort

1

ich knapp unter Code verifiziert und es verbundene Einrichtung nicht angezeigt:

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

Verwandte Entity Beschreibung sucht einen passenden Datensatz in NoteIDNote Tabelle. Dieser Datensatz wird bei Bedarf bei Bedarf erstellt. Wenn Sie bei New Lead mit dem obigen Code fortfahren möchten, müssen Sie die Erstellung von Notizen anfordern, indem Sie GetNoteID für PXNoteAttribute aufrufen und den Datensatz persistieren.

Beispiel:

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

Out-of-Box-Aktivität Aktionen (Aufgabe hinzufügen, Ereignis hinzufügen usw.), intern dafür kümmern. Wenn Sie den unteren Ansatz verwenden, wird die Initialisierung intern durchgeführt.

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

Ich kopierte diese Funktion genau und bekomme das gleiche Ergebnis wie vorher (keine verbundene Einheit). Während deines Tests hast du eine existierende Lead "Coudane, Benedicte" ausgewählt. Wenn Sie jedoch einen neuen Lead mit Firstname = test27, Lastname = test28 und save erstellen, dann klicken Sie auf die Schaltfläche Followup Task, dann erhalten Sie das Ergebnis, das ich sehe (keine verknüpfte Entität). Wenn ich "Coudane, Benedicte" auswähle und einfach den Lead kopiere und den Vornamen und den Nachnamen ändere, um einen neuen Lead zu erstellen, erzeugt er auch keine verwandte Entität. Wenn ich "Coudane, Benedicte" auswähle und einfach Follow-up klicke, funktioniert es. Wieder nur nicht für neue Leads, die das seltsame ist. – AcumaticaGuy

+0

Es scheint, dass einige Flag oder andere "Update" -Funktion stattfinden muss, um die Funktion zum Auffüllen der Task.Quelle Feld zu erhalten. Sobald es aktiviert ist, funktioniert es richtig. Wenn Sie einen neuen Lead erstellen, dann drücken Sie dreimal die Taste, um 3 Kopien des Tasks zu erstellen, die alle keine Entität enthalten. Aber wenn Sie dann gehen und 1 der Aufgaben verbundenen Einheit auf die richtige ändern, werden die anderen 2 in der Liste magisch aktualisieren. Die "Coudane, Benedicte" -Leitung scheint diese Flagge bereits gesetzt zu haben, funktioniert also sofort, aber neue Leads nicht. – AcumaticaGuy

+0

@AcumaticaGuy, ich habe die ursprüngliche Antwort aktualisiert. – DChhapgar

Verwandte Themen