5. Dezember 2012 16:58
protected void ExecuteUpdateInvoiceProduct(LocalPluginContext localContext)
{
if (localContext == null)
{
throw new ArgumentNullException("localContext");
}
if (localContext.PluginExecutionContext.Depth == 1)
{
// verify if the Target Parameter is not null
if (localContext.PluginExecutionContext.InputParameters["Target"] != null)
{
// check if the Target Parameter is of type Entity
if (localContext.PluginExecutionContext.InputParameters["Target"] is Entity)
{
Entity targetentity = (Entity)localContext.PluginExecutionContext.InputParameters["Target"];
// check if the Target Parameter is of required type
if (targetentity.LogicalName.ToLowerInvariant().Equals(localContext.PluginExecutionContext.PrimaryEntityName.ToLowerInvariant()))
{
if (targetentity.Contains("productid") || targetentity.Contains("quantity") || targetentity.Contains("priceperunit"))
{
//Tue was auch immer
}
}
}
}
}
6. Dezember 2012 09:36
Ich füge der geänderten Entität lediglich mit "targetentity["myfield"] ein weiteres Feld hinzu
Entity targetentity = (Entity)localContext.PluginExecutionContext.InputParameters["Target"];
// check if the Target Parameter is of required type
if (targetentity.LogicalName.ToLowerInvariant().Equals(localContext.PluginExecutionContext.PrimaryEntityName.ToLowerInvariant()))
6. Dezember 2012 10:04
6. Dezember 2012 12:10
ich lasse das Plugin in der PreOperation laufen.
Es ist also noch nicht gespeichert und ich füge dem zu speichernden werten lediglich einen weiteren hinzu, ohne einen 2ten Updaterequest auszuführen.
Selbst wenn das ein eigenes Update wäre, warum ändert sich dann nicht der depth Wert? Der ist 4 mal auf 1 und nur einmal kommt er mit 2 wieder ins Plugin rein.
Kann es sein, das im Hintergrund noch Asynchron vom CRM irgendwas gemacht wird? Ein Asynchrones Plugin, welches z.B. die Mengenrabatte neu berechnet?
Die Abfrage ist Sinnfrei, aber daran scheitert es auch nicht....