Hello Everyone,
I have crate a custom field on account called "Total Credit limit". I want to write plugin to calculate sum of all related contact credit limits. when a new contact create.
How I can get "parentcustomerid" id ?
My logic is :
public void Execute(IServiceProvider serviceProvider)
{
// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
// user below tracingService object for tracing debuggin information in error dialgoue
//Extract the tracing service for use in debugging sandboxed plug-ins.
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
if (context.MessageName == "Create")
{
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity entity = (Entity)context.InputParameters["Target"];
if (entity.LogicalName != "Contact")
return;
try
{
ConditionExpression condition1 = new ConditionExpression();
condition1.AttributeName = "parentcustomerid";
condition1.Operator = ConditionOperator.Equal;
condition1.Values.Add(??);
ConditionExpression conditon2 = new ConditionExpression();
conditon2.AttributeName = "statuscode";
conditon2.Operator = ConditionOperator.Equal;
conditon2.Values.Add(1);
FilterExpression filter1 = new FilterExpression();
filter1.Conditions.Add(condition1);
filter1.Conditions.Add(conditon2);
QueryExpression query = new QueryExpression("contact");
query.ColumnSet.AddColumns("creditlimit", "parentcustomerid");
query.Criteria.AddFilter(filter1);
EntityCollection result1 = service.RetrieveMultiple(query);
int count = result1.Entities.Count;
decimal sum = 0;
foreach (var c in result1.Entities)
{
sum += ((Money)c["creditlimit"]).Value;
}
Entity account = new Entity("account");
account.Id = ??;
account["new_totalcreditlimit"] = new Money(sum);
service.Update(account);
}
catch (Exception ex)
{
throw ex;
}
}
}
}
Thank you.






