using System;

    using Microsoft.Xrm.Sdk;

    using Microsoft.Crm.Sdk.Messages;

    using Microsoft.Xrm.Sdk.Query;

/// <summary>

    /// 报价单

    /// </summary>

    public class QuoteHelper

    {

        public static readonly string entityName = "quote";

        public Guid quoteId = Guid.Empty;

        public IOrganizationService service;

/// <summary>

        /// 创建报价单

        /// </summary>

        public void Create(Guid accountId)

        {

            Entity en = new Entity() { LogicalName = entityName };

            en["name"] = "报价单測试";

            en["accountid"] = new EntityReference() { LogicalName = "account",Id = accountId };

            quoteId = service.Create(en);

        }

/// <summary>

        /// 创建报价单及其相关报价单具体信息

        /// </summary>

        /// <param name="childEn">报价单具体信息</param>

        public void CompoundCreate(EntityCollection childEn)

        {

            CompoundCreateRequest request = new CompoundCreateRequest();

            request.Entity = new Entity() { LogicalName = entityName };

            request.ChildEntities = childEn;

            CompoundCreateResponse response = (CompoundCreateResponse)service.Execute(request);

            quoteId = response.Id;

        }

/// <summary>

        /// 将报价单分派给其它用户或团队

        /// </summary>

        /// <param name="assignee">用户或团队引用</param>

        public void Assign(EntityReference assignee)

        {

            AssignRequest request = new AssignRequest();

            request.Target = new EntityReference() { LogicalName = entityName,Id = quoteId };

            request.Assignee = assignee;

            AssignResponse response = (AssignResponse)service.Execute(request);

        }

/// <summary>

        /// 指定结束报价单

        /// </summary>

        /// <param name="status">结束的状态值</param>

        public void CloseQuote(int status)

        {

            CloseQuoteRequest request = new CloseQuoteRequest();

            request.QuoteClose = new Entity() { LogicalName = entityName,Id = quoteId };

            request.Status = new OptionSetValue(status);

            CloseQuoteResponse response = (CloseQuoteResponse)service.Execute(request);

        }

/// <summary>

        /// 将报价单转换为销售订单

        /// </summary>

        public Entity ConvertQuoteToSalesOrder()

        {

            ConvertQuoteToSalesOrderRequest request = new ConvertQuoteToSalesOrderRequest();

            request.QuoteId = quoteId;

            request.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("name","accountid");

            ConvertQuoteToSalesOrderResponse response = (ConvertQuoteToSalesOrderResponse)service.Execute(request);

            //销售订单

            Entity solrorderEn = response.Entity;

            return solrorderEn;

        }

/// <summary>

        /// 为目标值中指定的实体获取产品的数量小数值

        /// </summary>

        /// <param name="productId">产品id</param>

        /// <param name="uoMId">单位id</param>

        public int GetQuantityDecimal(Guid productId, Guid uoMId)

        {

            GetQuantityDecimalRequest request = new GetQuantityDecimalRequest();

            request.Target = new EntityReference() { LogicalName = entityName,Id = quoteId };

            request.ProductId = productId;

            request.UoMId = uoMId;

            GetQuantityDecimalResponse response = (GetQuantityDecimalResponse)service.Execute(request);

            return response.Quantity;

        }

/// <summary>

        /// 从商机中检索产品并将其拷贝到报价单

        /// </summary>

        /// <param name="opportunityId">商机id</param>

        public void GetQuoteProductsFromOpportunity(Guid opportunityId)

        {

            GetQuoteProductsFromOpportunityRequest request = new GetQuoteProductsFromOpportunityRequest();

            request.OpportunityId = opportunityId;

            request.QuoteId = quoteId;

            GetQuoteProductsFromOpportunityResponse response =

                (GetQuoteProductsFromOpportunityResponse)service.Execute(request);

        }

/// <summary>

        /// 与其它安全主体(用户或团队)共享报价单

        /// </summary>

        /// <param name="accessMask">訪问权限</param>

        /// <param name="principal">用户或团队引用</param>

        public void GrantAccessRequest(AccessRights accessMask,EntityReference principal)


        {

            GrantAccessRequest request = new GrantAccessRequest();

            request.Target = new EntityReference() { LogicalName = entityName,Id = quoteId };

            request.PrincipalAccess = new PrincipalAccess() { AccessMask = accessMask,Principal = principal };

            GrantAccessResponse response = (GrantAccessResponse)service.Execute(request);

        }

/// <summary>

        /// 将报价单的状态设置为“草稿”

        /// </summary>

        public void ReviseQuote()

        {

            ReviseQuoteRequest request = new ReviseQuoteRequest();

            request.QuoteId = quoteId;

            request.ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("name","accountid");

            ReviseQuoteResponse response = (ReviseQuoteResponse)service.Execute(request);

            //草稿状态的报价单

            Entity quoteEn = response.Entity;

        }

/// <summary>

        /// 汇总或检索与指定的记录(客户或联系人)相关的全部报价单

        /// </summary>

        /// <param name="target">客户或联系人引用</param>

        /// <param name="query">查询条件</param>

        /// <param name="rollupType">关联类型</param>

        public void Rollup(EntityReference target, QueryBase query, RollupType rollupType)


        {

            RollupRequest request = new RollupRequest();

            request.Target = target;

            request.Query = query;

            request.RollupType = rollupType;

            RollupResponse response = (RollupResponse)service.Execute(request);

            EntityCollection entityCollection = response.EntityCollection;

        }

/// <summary>

        /// 删除报价单

        /// </summary>

        public void Delete()

        {

            service.Delete(entityName, quoteId);

        }

       

    }

crm操作报价单实体的更多相关文章

  1. crm操作货币实体

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

  2. crm操作产品实体

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

  3. crm操作约会实体

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

  4. crm操作发票实体

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

  5. Winform开发框架之客户关系管理系统(CRM)的报价单和销售单的处理

    在前面介绍了很多CRM相关的界面和实现思路的随笔文章,本篇继续介绍一下系统中用到的一些经验和技巧片段.本篇随笔主要介绍客户关系管理系统(CRM)的报价单和销售单的处理界面效果,使用列表内置的选择代替弹 ...

  6. crm工作机会实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; public class Opport ...

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

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

  8. Hibernate_day02--课程安排_主键生成策略_对实体类crud操作_实体类对象状态

    Hibernate_day02 上节内容 今天内容 实体类编写规则 Hibernate主键生成策略 实体类操作 对实体类crud操作 添加操作 根据id查询 修改操作 删除操作 实体类对象状态(概念) ...

  9. crm操作知识库文章实体

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

随机推荐

  1. 如何在IE浏览器里模仿DomContentLoaded

    稍微了解一点框架的事件绑定的都知道 window.onload 事件需要在页面所有内容(包括图片.flash.iframe等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本,而各大框 ...

  2. 自醒的觉悟与力量——leo鉴书59

    30岁之后由于看得书多起来,阅读和写作也都有了自己的套路,与此相对的写书评之前须要看几遍书,然后我才干下笔的作者和作品越来越少了. 崔卫平是这种作者,而<正义之前>是我看了两遍才開始写评的 ...

  3. 拥抱Mac之码农篇

    拥抱Mac之码农篇 使用Mac大概两年时间.之前用着公司配的一台27寸的iMac.无奈机械硬盘严重拖慢速度,影响工作心情.于是入手Macbook Retina 13.这两年的开发工作所有在Mac上完毕 ...

  4. UESTC--1271--Search gold(贪心)

    Search gold Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu Submit Sta ...

  5. 基于macOS+VMware的GNS3内VM上公网

    笔者经常需要做网络实验,GNS3就是笔者最喜欢用的模拟器,为了便于实验,需要能从macos上直接ssh登陆模拟出来的vm,并且vm需要上公网.经过研究,已解决此问题,并以此分享出来 tag: maco ...

  6. matlab基本语法

    MATLAB基本语法 点乘运算 , 常与其他运算符 点乘运算,常与其他运算符联合使用(如.\) 矩阵生成 矩阵生成 向量生成或子阵提取本节将会介绍一些MATLAB的基本语法的使用. 持续更新... 在 ...

  7. jquery 登录,删除提示信息框

    <a onclick="return confirm('确认要退出登录吗?')">退出</a> //删除,修改,添加时提示信息框 (del,edit,add ...

  8. ubuntu16.04 安装 docker

    1,切换到root 2,更新系统 # apt-get update 3,安装 https和ca证书 # apt-get install apt-transport-https ca-certifica ...

  9. T7316 yyy的最大公约数(者)

    题目背景 全场基本暴力 题目描述 输入输出格式 输入格式: 如图 输出格式: 如图 输入输出样例 输入样例#1: 如图 输出样例#1: 如图 说明 如图 这题用到了容斥原理和线性筛的一些东西, 表示没 ...

  10. Android接口回调的理解

    1.各种理解 <1>说白了,就是拿到对象引用,调其方法 <2>实际上就是利用多态的方式调用而已 <3>其实很容易理解的,定义接口,然后提供一个外部的接口设置进去,然 ...