2017-10-13 3 views
0

Ich habe ein benutzerdefiniertes Kontrollkästchen im SO Invoice-Bildschirm (SO303000) erstellt, das auch aktualisiert werden muss, nachdem die Rechnung freigegeben wurde und die Zahlungen vollständig bezahlt sind.Aktualisierungswert, nachdem SO Invoice freigegeben wurde und schließen

Allerdings bin ich nicht in der Lage zu tun, wie es ist, wird deaktiviert, sobald die Rechnung freigegeben und vollständig bezahlt ist.

Ich habe versucht, es mit Automatisierungsschritten zu tun, aber es funktioniert nicht. Ich habe das benutzerdefinierte Feld auf der Registerkarte "Felder" hinzugefügt, um es auf dem geschlossenen Schritt von SO-Rechnungen zu aktivieren.

Bitte vorschlagen.

Antwort

1

Um benutzerdefinierte Felder auf den SO Rechnungen Top-Level Form und Transaktionen Gitter nach Rechnung freigegeben wird und/oder geschlossen wird, sollten Sie eine Erweiterung für SOInvoiceEntry erstellen und abonnieren Sie den ARInvoice_RowSelected und ARTran_RowSelected Ereignisse im Anschluss an die Probe unter ermöglichen:

public class SOInvoiceEntryExt : PXGraphExtension<SOInvoiceEntry> 
{ 
    private bool IsDisabled(ARInvoice doc) 
    { 
     return doc.Released == true 
      || doc.Voided == true 
      || doc.DocType == ARDocType.SmallCreditWO 
      || doc.PendingPPD == true 
      || doc.DocType == ARDocType.FinCharge 
      && !Base.IsProcessingMode 
      && Base.Document.Cache.GetStatus(doc) == PXEntryStatus.Inserted; 
    } 

    public void ARInvoice_RowSelected(PXCache sender, PXRowSelectedEventArgs e) 
    { 
     ARInvoice doc = e.Row as ARInvoice; 
     if (doc == null) return; 

     if (IsDisabled(doc)) 
     { 
      PXUIFieldAttribute.SetEnabled<ARInvoiceExt.usrCustomTextField>(
       sender, doc, true); 
      Base.Transactions.Cache.AllowUpdate = true; 
     } 
    } 

    public void ARTran_RowSelected(PXCache sender, PXRowSelectedEventArgs e) 
    { 
     var doc = Base.Document.Current; 
     ARTran row = e.Row as ARTran; 

     if (row != null && doc != null && IsDisabled(doc)) 
     { 
      PXUIFieldAttribute.SetEnabled(sender, row, false); 
      PXUIFieldAttribute.SetEnabled<ARTranExt.usrCustomTextField>(
       sender, row, true); 
     } 
    } 
} 

Darüber hinaus müssen Sie benutzerdefiniertes Feld ermöglichen, hinzugefügt auf das Formular der oberste Ebene in dem Geschlossen Automatisierungsschritt: enter image description here

Dies ist, wie die SO Rechnungen Bildschirm sollte w ork, nachdem Sie die Änderungen gelten oben beschrieben:

enter image description here

enter image description here

+0

Sie Ruslan danken. Ich hatte bereits den Automatisierungsschritt, aber nicht den Erweiterungscode hinzugefügt. Danke für Ihre Hilfe. – Krunal

Verwandte Themen