2016-05-10 2 views
1

Ich habe eine Anpassung, bei der ich einige Code (ein Web-Service-Aufruf) nach der Freigabe einer Rechnung ausführen möchte. Von der Ausbildung, in meiner Graph Erweiterung, ich genutzt und verändern das Beispiel wie folgt, wobei die CreateAPBills Methode ist die Methode, die ich auf der Release-Aktion ausgeführt werden soll (letztlich das RowPersisted Ereignis):Laufender Code auf Release Aktion von Rechnung und Memo Bildschirm

public class ARInvoiceEntryExt : PXGraphExtension<ARInvoiceEntry> 
{ 
    public PXAction<ARInvoice> release; 
    [PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Update)] 
    [PXProcessButton] 
    public IEnumerable Release(PXAdapter adapter) 
    { 
     PXGraph.InstanceCreated.AddHandler<ARInvoiceEntry>((graph) => 
     { 
      graph.RowPersisted.AddHandler<ARInvoice>((cache, args) => 
      { 
       if (args.TranStatus == PXTranStatus.Completed) 
       { 
        CreateAPBill(cache); 
       } 
      }); 
     }); 

     return Base.release.Press(adapter); 
    } 

Leider ist dies scheint nicht zu funktionieren. Was vermisse ich?

+0

Nachdem ich mit jemand anderem darüber gesprochen habe - ich brauche das nicht unbedingt beim RowPersisted-Event - da das Release ohne unbedingt speichern passieren kann, richtig? Mit anderen Worten, ich muss meinen Code bei der Release-Aktion initiieren. Muss ich noch einen Event-Handler dafür hinzufügen? – pmfith

Antwort

0

Ich denke, Sie haben die Konvention umgekehrt. Das PXAction-Element beginnt mit einem Großbuchstaben und die Methode beginnt mit einem Kleinbuchstaben. Versuchen Sie außerdem, Ihre Methode virtuell zu schützen, und überprüfen Sie, ob sie funktioniert.

+0

Vielen Dank - das sehe ich jetzt. Leider habe ich aus dem T300-Kurs pdf ausgeschnitten und eingefügt und so zeigen sie es. Ich hätte es allerdings bemerken müssen ... – pmfith