private void LoseAllOpportunitiesForCustomerId(Guid customerId, IOrganizationService _service){ // Instantiate an organization context so that we can use LINQ queries var orgContext = new YourOrganizationContext(_service); // Build query to retrieve the related opportunities (w/Active statecode) var opportunityIds = from o in orgContext.OpportunitySet where o.CustomerId.Id == customerId && o.StateCode.Value == OpportunityState.Open select o.OpportunityId.Value; foreach (var opportunityId in opportunityIds) { System.Diagnostics.Debug.WriteLine("Inactivating Opportunity Id: {0}.", opportunityId); OpportunityClose oppClose = new OpportunityClose(); // Set the opportunityclose activity subject. oppClose.Subject = "Inactive customer."; // Create an entity reference to the opportunity being lost. oppClose.OpportunityId = new EntityReference(Opportunity.EntityLogicalName, opportunityId); // Create the LostOpportunityRequest request. LoseOpportunityRequest loseOppReq = new LoseOpportunityRequest(); loseOppReq.OpportunityClose = oppClose; loseOppReq.Status = new OptionSetValue(-1); // Execute the request. _service.Execute(loseOppReq); } }
Thursday, August 11, 2011
CRM 2011: Using the LoseOpportunityRequest request
Subscribe to:
Posts (Atom)