
public void Execute(IServiceProvider serviceProvider)
{
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var service = serviceFactory.CreateOrganizationService(context.UserId);
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity target)
{
var salesOrderDetail = service.Retrieve("salesorderdetail", target.Id, new ColumnSet("salesorderid"));
var salesOrderId = salesOrderDetail.GetAttributeValue<EntityReference>("salesorderid");
// Get the Sales Order header
var salesOrder = service.Retrieve("salesorder", salesOrderId.Id, new ColumnSet("ispricelocked"));
bool isPriceLocked = salesOrder.GetAttributeValue<bool>("ispricelocked");
if (isPriceLocked)
{
// Unlock the Sales Order
Entity updateOrder = new Entity("salesorder", salesOrderId.Id);
updateOrder["ispricelocked"] = false;
service.Update(updateOrder);
// Optionally trigger CalculatePrice if needed
// var request = new CalculatePriceRequest() { Target = new EntityReference("salesorder", salesOrderId.Id) };
// service.Execute(request);
}
}
}