Hey !
Have a look on this (I just modified your code during my coffee break so it's really not perfect but will help you ) :
protected void ExecutePostTisa_ArticleUpdateFurnishSum(LocalPluginContext localContext)
{
IPluginExecutionContext context = localContext.PluginExecutionContext;
IOrganizationService service = localContext.OrganizationService;
//Create the tracingService
ITracingService tracingService = (ITracingService)ServiceProvider.GetService(typeof(ITracingService));
// now you can use tracingService.Trace("MESSAGE");
//add a try catch !!
try
{
if (localContext == null)
{
throw new InvalidPluginExecutionException("LocalContext is null");
}
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Obtain the target entity from the input parmameters.
Entity entity = (Entity)context.InputParameters["Target"];
if (entity.LogicalName == "tisa_article")
{
if (context.MessageName.ToUpper() == "UPDATE")
{
if (entity.Contains("tisa_price"))
{
tracingService.Trace("tisa_price is ok");
Money pricewoFurnish = entity.GetAttributeValue<Money>("tisa_price");
ColumnSet attributes = new ColumnSet(new string[] { "tisa_code", "tisa_addressid", "tisa_pricefurnishstandart", "tisa_pricefurnishdesign", "tisa_platformnumber", "tisa_quantity" });
Entity tisa_article = service.Retrieve(entity.LogicalName, entity.Id, attributes);
if (tisa_article != null)
{
tracingService.Trace("tisa_article not null");
Guid tisa_addressid = tisa_article.GetAttributeValue<EntityReference>("tisa_addressid") != null ? tisa_article.GetAttributeValue<EntityReference>("tisa_addressid").Id : Guid.Empty;
if (tisa_article.Contains("tisa_platformnumber") && tisa_addressid != Guid.Empty)
{
tracingService.Trace("fields ok");
//BE SURE OF THE VAR TYPE !!!
// i think tisa_isfurnishprice is a boolean, no ?
// i think
string fetchxml = @"
<fetch distinct='false' mapping='logical' output-format='xml-platform' version='1.0'>
<entity name='tisa_costfurnishvariation'>
<attribute name='tisa_costfurnishvariationid'/>
<attribute name='tisa_isfurnishprice" + tisa_article.GetAttributeValue<Decimal>("tisa_platformnumber") + @"'/>
<attribute name='tisa_tisa_platformnumber" + tisa_article.GetAttributeValue<Decimal>("tisa_platformnumber") + @"'/>
<attribute name='tisa_mainfurnish'/>
<attribute name='tisa_addressid'/>
<order descending='false' attribute='tisa_addressid'/>
<filter type='and'>
<condition attribute='tisa_addressid' value='" + tisa_addressid + @"' operator='eq'/>
</filter>
</entity>
</fetch>";
EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetchxml));
if (result != null && result.Entities.Count > 0)
{
tracingService.Trace("result >0");
foreach (var c in result.Entities)
{
if (c.Contains("tisa_mainfurnish"))
{
int value = 0;
if ((OptionSetValue)c["tisa_mainfurnish"] != null)
value = ((OptionSetValue)c["tisa_mainfurnish"]).Value;
tracingService.Trace("Value = " + value);
// You have to test if all the fields used below are ok (X.contains)
if (value == 1)
{
entity["tisa_pricefurnishstandart"] = (Convert.ToDecimal(c.GetAttributeValue<Decimal>("tisa_isfurnishprice") + c.GetAttributeValue<Decimal>("tisa_platformnumber")) * (Convert.ToDecimal(tisa_article.GetAttributeValue<Decimal>("tisa_quantity"))) + Convert.ToDecimal(entity.GetAttributeValue<Money>("tisa_price").Value)); ;
service.Update(entity);
}
else if (value == 2)
{
entity["tisa_pricefurnishdesign"] = (Convert.ToDecimal(c.GetAttributeValue<Decimal>("tisa_isfurnishprice") + tisa_article.GetAttributeValue<Decimal>("tisa_platformnumber")) * (Convert.ToDecimal(tisa_article.GetAttributeValue<Decimal>("tisa_quantity"))) + Convert.ToDecimal(entity.GetAttributeValue<Money>("tisa_price").Value));
service.Update(entity);
}
}
else
throw new InvalidPluginExecutionException("Field not present");
}
}
}
else
throw new InvalidPluginExecutionException("platnumber and guid not valid");
}
else
throw new InvalidPluginExecutionException("tisa article is null");
}
}
}
}
else
throw new InvalidPluginExecutionException("Target Entity is null");
}
catch (Exception ex)
{
//always use InvalidPluginExecutionException to throw exception
throw new InvalidPluginExecutionException("Erreur sur on PostTisa_ArticleUpdateFurnishSum : " + ex.Message);
}
}