using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
public class OpportunityHelper
{
public static readonly string entityName =
"opportunity";
public Guid opportunityId =
Guid.Empty;
/// <summary>
/// 创建商机
/// </summary>
/// <param name="service">服务</param>
/// <param name="accountId">潜在客户</param>
public void Create(IOrganizationService service, Guid accountId)
{
Entity en =
new Entity() { LogicalName =
entityName };
//主题
en[
"name"] =
"测试商机";
//潜在客户
en[
"customerid"] =
new EntityReference() { LogicalName = entityName, Id =
accountId };
opportunityId =
service.Create(en);
}
/// <summary>
/// 计算商机的值
/// </summary>
/// <param name="service">服务</param>
public decimal CalculateActualValueOpportunity(IOrganizationService service)
{
CalculateActualValueOpportunityRequest request =
new CalculateActualValueOpportunityRequest();
request.OpportunityId =
opportunityId;
CalculateActualValueOpportunityResponse response =
(CalculateActualValueOpportunityResponse)service.Execute(request);
return response.Value;
}
/// <summary>
/// 更改商机为赢单
/// 1: 正在进行,2: 暂候,3: 赢单,4: 已取消,5: 售完
/// </summary>
public void WinOpportunity(IOrganizationService service)
{
WinOpportunityRequest request =
new WinOpportunityRequest();
request.OpportunityClose =
new Entity() { LogicalName = entityName, Id =
opportunityId };
request.Status =
new OptionSetValue(
3);
service.Execute(request);
}
/// <summary>
/// 更改商机为丢单
/// 1: 正在进行,2: 暂候,3: 赢单,4: 已取消,5: 售完
/// </summary>
public void LoseOpportunity(IOrganizationService service)
{
LoseOpportunityRequest request =
new LoseOpportunityRequest();
request.OpportunityClose =
new Entity() { LogicalName = entityName, Id =
opportunityId };
request.Status =
new OptionSetValue(
4);
service.Execute(request);
}
/// <summary>
/// 商机生成报价单
/// </summary>
/// <param name="service">服务</param>
public void ToQuote(IOrganizationService service)
{
GenerateQuoteFromOpportunityRequest request =
new GenerateQuoteFromOpportunityRequest();
request.OpportunityId =
opportunityId;
//这些字段将会转换
request.ColumnSet =
new Microsoft.Xrm.Sdk.Query.ColumnSet(
"name",
"customerid");
GenerateQuoteFromOpportunityResponse response =
(GenerateQuoteFromOpportunityResponse)service.Execute(request);
//报价单实体
Entity quoteEn =
response.Entity;
}
/// <summary>
/// 商机生成销售订单
/// </summary>
/// <param name="service">服务</param>
public void ToSaleOrder(IOrganizationService service)
{
GenerateSalesOrderFromOpportunityRequest request =
new GenerateSalesOrderFromOpportunityRequest();
request.OpportunityId =
opportunityId;
//这些字段将会转换
request.ColumnSet =
new Microsoft.Xrm.Sdk.Query.ColumnSet(
"name",
"customerid");
GenerateSalesOrderFromOpportunityResponse response =
(GenerateSalesOrderFromOpportunityResponse)service.Execute(request);
//销售订单
Entity saloorderEn =
response.Entity;
}
/// <summary>
/// 商机生成发票
/// </summary>
/// <param name="service">服务</param>
public void ToInvoiceFrom(IOrganizationService service)
{
GenerateInvoiceFromOpportunityRequest request =
new GenerateInvoiceFromOpportunityRequest();
request.OpportunityId =
opportunityId;
//这些字段将会转换
request.ColumnSet =
new Microsoft.Xrm.Sdk.Query.ColumnSet(
"name",
"customerid");
GenerateInvoiceFromOpportunityResponse response =
(GenerateInvoiceFromOpportunityResponse)service.Execute(request);
//发票
Entity invoiceFromEn =
response.Entity;
}
/// <summary>
/// 为目标值中指定的实体获取产品的数量小数值
/// </summary>
/// <param name="service">服务</param>
/// <param name="productId">产品id</param>
/// <param name="uoMId">单位id</param>
public int GetQuantityDecimal(IOrganizationService service, Guid productId, Guid uoMId)
{
GetQuantityDecimalRequest request =
new GetQuantityDecimalRequest();
request.Target =
new EntityReference() { LogicalName = entityName, Id =
opportunityId };
request.ProductId =
productId;
request.UoMId =
uoMId;
GetQuantityDecimalResponse response =
(GetQuantityDecimalResponse)service.Execute(request);
return response.Quantity;
}
/// <summary>
/// 检索指定安全主体(用户或团队)对商机拥有的访问权限
/// </summary>
/// <param name="service">服务</param>
/// <param name="principal">用户或团队</param>
public AccessRights RetrievePrincipalAccess(IOrganizationService service, EntityReference principal)
{
RetrievePrincipalAccessRequest request =
new RetrievePrincipalAccessRequest();
request.Target =
new EntityReference() { LogicalName = entityName, Id =
opportunityId };
request.Principal =
principal;
RetrievePrincipalAccessResponse response =
(RetrievePrincipalAccessResponse)service.Execute(request);
return response.AccessRights;
}
/// <summary>
/// 检索有权访问商机的安全主体(用户或团队)及其对商机所拥有的访问权限
/// </summary>
public void RetrieveSharedPrincipalsAndAccess(IOrganizationService service)
{
RetrieveSharedPrincipalsAndAccessRequest request =
new RetrieveSharedPrincipalsAndAccessRequest();
request.Target =
new EntityReference() { LogicalName = entityName, Id =
opportunityId };
RetrieveSharedPrincipalsAndAccessResponse response =
(RetrieveSharedPrincipalsAndAccessResponse)service.Execute(request);
if (response !=
null && response.PrincipalAccesses !=
null)
{
foreach (PrincipalAccess pa
in response.PrincipalAccesses)
{
//访问权限
AccessRights accessRights =
pa.AccessMask;
//用户或者团队的引用
EntityReference Principal =
pa.Principal;
}
}
}
/// <summary>
/// 移除指定安全主体(用户或团队)对商机拥有的所有访问权限。
/// </summary>
/// <param name="service">服务</param>
/// <param name="revokee">用户或者团队</param>
public void RevokeAccess(IOrganizationService service, EntityReference revokee)
{
RevokeAccessRequest request =
new RevokeAccessRequest();
request.Target =
new EntityReference() { LogicalName = entityName, Id =
opportunityId };
request.Revokee =
revokee;
service.Execute(request);
}
/// <summary> ///
/// 删除商机 ///
/// </summary>
public void Delete(IOrganizationService service) { service.Delete(entityName, opportunityId); }
}
转载于:https://www.cnblogs.com/bennylam/p/9921195.html
相关资源:数据结构—成绩单生成器