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. VC GDI双缓冲机制绘图防屏幕闪烁实现步骤

    在OnDraw(CDC* pDC) 中添加如下代码 CDC MemDC; //首先定义一个显示设备对象 CBitmap MemBitmap;//定义一个位图对象 //随后建立与屏幕显示兼容的内存显示设 ...

  2. 关于jquery文件上传插件 uploadify 3.1的使用

    要使用uplaodify3.1,自然要下载相应的包,下载地址http://www.uploadify.com/download/,这里有两种包,一个是基于flash,免费的,一个是基于html5,需要 ...

  3. Codeforces Round #257 (Div. 2) B Jzzhu and Sequences

    Jzzhu has invented a kind of sequences, they meet the following property: You are given x and y, ple ...

  4. java基础---->java调用oracle存储过程(转)

    存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.今天 ...

  5. 【IOS实例小计】图像移动--可扩展为动态实现图标变化

    预备知识: 1.页面切换: 从一个ViewController切换到另一个ViewController有下面几种方法: (1)self.view addSubview:(加载的新页面);      相 ...

  6. linux 查看某进程或程序的网卡流量(转)

    一.nethogs介绍 分享一个linux 下检测系统进程占用带宽情况的检查.来自github上的开源工具. 它不依赖内核中的模块.当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个 ...

  7. OCA读书笔记(10) - 管理UNDO数据

    Undo自动管理与手动管理 undo段自动管理SQL> show parameter undo_management 将undo段改为手工管理SQL> alter system set u ...

  8. sort 使用 tab键 作为 分隔符_人生如梦_百度空间

    sort 使用 tab键 作为 分隔符_人生如梦_百度空间 sort 使用 tab键 作为 分隔符 For some reason "\t" doesn't work right, ...

  9. 【错误】expected constructor, destructor, or type conversion before '.' token - 第八个游侠的日志 - 网易博客

    [错误]expected constructor, destructor, or type conversion before '.' token - 第八个游侠的日志 - 网易博客 [错误]expe ...

  10. Python批量删除指定目录下的指定类型的文件

    Python作为一种脚本语言.其很适合文件级的各种操作.以下的代码能够批量删除指定目录下的所有特定类型(CSV类型)的文件. import sys, csv , operator import os ...