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);

        }

    }

crm工作机会实体的更多相关文章

  1. HTPC家庭娱乐和XBOX未来发展畅想<另:创业工作机会>

    微软中国在上海举办新闻发布会,正式宣布Xbox One将于9月23日在中国开始销售,定价3699元起.这款早在2001年就发布的电视游戏机终于在经历了14年的等待后,进军中国大陆市场.此次Xbox O ...

  2. Microsoft Dynamics CRM 2011 新建实体 需要注意的细节

    新建一个实体,需要红色框内的是否勾选的意义,可以进一步加深对CRM的理解.如图: 下面对部分的进行了自我的理解,不对的地方,还请大家指出来.互相学习. 1.CRM2011中,在活动方面加强的新特性包括 ...

  3. Dynamics CRM EntityCollection 根据实体中的某个字段为依据去除重复数据

    CRM中通过QueryExpression查询出了一个EntityCollection集,但有时会存在重复数据,QueryExpression中有个属性distinct,只要设置为true就能过滤 ...

  4. crm操作报价单实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using Microsoft ...

  5. crm操作货币实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  6. Dynamics CRM 修改自定义实体名字及属性前缀(架构名称)

    本文章以2013为例(2011同理,4.0比较简单直接在系统设置的自定义中设置即可). 1.设置-->自定义项-->发布者,下图中的红框内的即为需要设置的前缀. 2.设置-->解决方 ...

  7. crm操作产品实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  8. crm操作约会实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using Microsoft ...

  9. crm操作发票实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Query;     using Microsoft.Cr ...

随机推荐

  1. 使用visual c++ 2005编译64位可执行文件

    最近需要将一个32位的程序移植到64位上,由于原来是使用vs2003写的,vs2003本身并不支持编译64位系统上,只能升级到vs2005以上版本.个人还是比较喜欢vs2005,对c++来说,vs20 ...

  2. 同事的Excel中的图片突然不能选择

    今天上午,同事突然说自己用的Excel不能编辑了,发来一看原来是其中做的图片不能编辑,鼠标放上去后显示个圆圈选不中. 在“视图”中调出“控件工具箱”工具栏,上面有一个三角板与直尺样子的按钮叫“设计模式 ...

  3. Delphi的指针 good

    Pointers are like jumps, leading wildly from one part of the data structure to another. Their introd ...

  4. VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布(好像很不错,有六张插图说明)good

    为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然 ...

  5. 小议common lisp程序开发流程 - Ever 17 - 博客频道 - CSDN.NET

    小议common lisp程序开发流程 - Ever 17 - 博客频道 - CSDN.NET 小议common lisp程序开发流程 分类: lisp 2011-04-17 20:59 1316人阅 ...

  6. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置         你应该熟悉(假设还咩有)的SharePo ...

  7. linux通过使用mail发送电子邮件

    通过外部方法发送的电子邮件 bin/mail默认为本地sendmail发送电子邮件,求本地的机器必须安装和启动Sendmail服务.配置很麻烦,并且会带来不必要的 资源占用.而通过改动配置文件能够使用 ...

  8. [置顶] github简单使用

    git的介绍可以看这里   http://zh.wikipedia.org/wiki/GitHub 安装和使用参考的这个    http://www.cnblogs.com/cocowool/arch ...

  9. M I S 开发与管理

    今天是开学的第一天,很意外的一天没课.但是我知道还有很多事情在等待这我,不能懈怠!安排好计划,把重要不紧急的事情逐渐蚕食掉,切不可养虎为患,等拖到它变成重要紧急事件后,那就后悔莫及了. 下午看了看自考 ...

  10. OpenStack25

    OpenStack(25) API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组 ...