2017-09-29 2 views
0

Ich habe 2 benutzerdefinierte Felder (UsrFFA und UsrFreeFreightDay) wie unten im Kundenbildschirm erstellt. Customers ScreenAcumatica verweist benutzerdefiniertes Feld auf ein anderes benutzerdefiniertes Feld auf einem anderen Bildschirm

Dann habe ich ähnliche Felder auf dem Bildschirm Kundenauftrag wie unten Sales Order

möchte ich diese Felder auf dem Bildschirm Kundenauftragswerte für die jeweiligen Kunden-ID zu füllen.

Ich ging durch das Schulungsmaterial T200 und fand diesen Code

protected void SOOrder_CustomerID_FieldUpdated(PXCache sender,PXFieldUpdatedEventArgs e) 
{ 
SOOrder order = e.Row as SOOrder; 
BAccount customer = 
PXSelectorAttribute.Select<SOOrder.customerID>(sender, order) 
as BAccount; 
if (customer != null) 
{ 
Contact defContact = PXSelect<Contact, 
Where<Contact.bAccountID, Equal<Required<Contact.bAccountID>>, 
And<Contact.contactID, Equal<Required<Contact.contactID>>>>> 
.Select(Base, customer.BAccountID, customer.DefContactID); 
if (defContact != null) 
{ 
ContactExt contactExt = PXCache<Contact> 
.GetExtension<ContactExt>(defContact); 
sender.SetValue<SOOrderExt.usrCRVerified>(order, 
contactExt.UsrCreditRecordVerified); 
} 
} 
} 

ich nicht in der Lage bin diesen Code zu verstehen, und wie soll ich es in meiner Anpassung verwenden.

Antwort

0

Passen Sie die Attribute auf dem SOOrder Feld in folgenden Weise:

Für UsrFFA Feld

[PXDBString(100)] 
[PXUIField(DisplayName="FFA", Visible = true, Enabled = false)] 
[PXFormula(typeof(Selector<SOOrder.customerID, BAccountExt.usrFFA>))] 

Für UsrFreeFreightDay Feld

[PXDBString(100)] 
[PXUIField(DisplayName="Free Freight Day", Visible = true, Enabled = false)] 
[PXFormula(typeof(Selector<SOOrder.customerID, BAccountExt.usrFreeFreightDay>))] 
0

Sie zu FieldUpdated Handler für das SOOrder.CustomerID Feld abonnieren sollten und Ihre benutzerdefinierten Felder auf dem Bildschirm Kundenauftrag bevölkern in der gleichen Weise wie in Beispiel 5.2 gezeigt: Einsetzen eines Standard-Detaildatensatz der T200 Ausbildung Klasse:

protected virtual void ShipmentLine_ProductID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) 
{ 
    // Obtain the new data record that contains the updated 
    // values of all data fields 
    ShipmentLine line = (ShipmentLine)e.Row; 
    line.Description = string.Empty; 
    if (line.ProductID != null) 
    { 
     Product product = PXSelectorAttribute.Select<ShipmentLine.productID>(sender, line) as Product; 
     if (product != null) 
     { 
      // Copy the product name to the description of the shipment line 
      line.Description = product.ProductName; 
     } 
    } 
} 

könnten Sie auch prüfen Schritt 3.1: Anpassen der Business-Logik für die für zusätzliche Proben Kundenaufträge Form (SOOrderEntry) von der T300 Ausbildung Klasse: die FieldUpdated Event-Handler (CustomerMaint) und Schritt 5.2 Hinzufügen.

Das folgende Code-Snippet sollte die gewünschten Ergebnisse auf dem Bildschirm "Kundenaufträge" erreichen. Wenn Sie immer noch Probleme mit dem unten stehenden Code haben, empfehle ich Ihnen dringend, den T300-Trainingskurs für sehr detaillierte praktische Übungen mit Schritt-für-Schritt-Anleitungen zu durchlaufen.

public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry> 
{ 
    public void SOOrder_CustomerID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e) 
    { 
     var order = e.Row as SOOrder; 
     if (order.CustomerID != null) 
     { 
      var customer = PXSelectorAttribute.Select<SOOrder.customerID>(sender, order) as BAccountR; 
      if (customer != null) 
      { 
       var customerExt = customer.GetExtension<BAccountExt>(); 
       var orderExt = order.GetExtension<SOOrderExt>(); 
       orderExt.UsrFFA = customerExt.UsrFFA; 
       orderExt.UsrFreeFreightDay = customerExt.UsrFreeFreightDay; 
      } 
     } 
    } 
} 
+0

Ich bin nicht in der Lage für dich Lesen Sie diesen Code und wie sollte ich ihn in meiner Anpassung verwenden. Ich habe die Frage – user8534573

+0

bearbeitet Bitte überprüfen Sie meine aktualisierte Antwort über – RuslanDev

+0

Ich habe den obigen Code in meiner Anpassung verwendet, aber es zeigte immer noch nicht das Ergebnis. Müssen wir SetValue verwenden, um Werte für neue Felder festzulegen? – user8534573

Verwandte Themen