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. Tomcat详细用法学习(一)

    在之前有关Tomcat的随笔<Tomcat免安装版的环境变量配置以及Eclipse下的Tomcat配置和测试>和<其他主机连接本地主机Tomcat会出现的防火墙问题>中已经详细 ...

  2. 14.2.5.5 Change Buffer

    14.2.5.5 Change Buffer change buffer是一个指定的数据结构 用于caches 数据到secondary index pages 当影响的pages 不是在buffer ...

  3. grep、sed、awk、perl、js、vim等对正则表达式的支持的差别

    grep.sed.awk.perl等对正则表达式的支持的差别 grep 2.5.1 egrep 2.5.1 sed 3.02 sed 4.07 awk 3.1.1 perl 5.8.0 vim 6.1 ...

  4. 【虚拟化实战】容灾设计之三Stretched Cluster

    作者:范军 (Frank Fan) 新浪微博:@frankfan7 Stretched Cluster是一把双刃剑,会用的如行云流水,用不好反而受其限制. 传统的vSphere Cluster是指一个 ...

  5. C++中的常对象和常对象成员

    常对象 常对象必须在定义对象时就指定对象为常对象. 常对象中的数据成员为常变量且必须要有初始值,如 Time const t1(12,34,36); //定义t1为常对象 这样的话,在所有的场合中,对 ...

  6. one command 一键收集 oracle 巡检信息(包括dbhc,awr reports)

    初步效果图例如以下 SQL> @nb ------Oracle Database health Check STRAT ------Starting Collect Data Informati ...

  7. Swift - 日期选择控件(UIDatePicker)的用法

    1,使用storyboard创建日期选择控件 首先我们将一个UIDatePicker控件和一个按钮直接添加到Main.Storyboard上.该按钮是为了点击时弹出提示框显示当前选择的日期和时间. 同 ...

  8. linux df和du统计的空间不一致

    假设你发现是 /tmp/ 目录不对劲,那么就这样就可以查看:  lsof | grep /tmp 输出的结果中,注意某些含有“(deleted)”字样的记录,它们中的一部分就是罪魁祸首,将它们kill ...

  9. Delphi 类与对象内存结构浅析(三篇)

    http://blog.csdn.net/starsky2006/article/details/5497082 http://blog.csdn.net/starsky2006/article/de ...

  10. <Win32_14>__win32控件(2)__教你自学掌握所有控件的玩法

    学习win32 API 编程,我们应该善于利用微软给我们提供的一些辅助工具,例如大家都知道的MSDN.SPY++等等. 今天在讲述之前呢,先给大家介绍一个很有用的工具——Control Spy——它的 ...