crm工作机会实体

crm工作机会实体

大家好,又见面了,我是全栈君。

    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://javaforall.net/116659.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月17日 下午11:00
下一篇 2022年1月17日 下午11:00


相关推荐

  • RBF神经网络理论与实现「建议收藏」

    RBF神经网络理论与实现「建议收藏」前言最近发现有挺多人喜欢径向基函数(RadialBasisFunction,RBF)神经网络,其实它就是将RBF作为神经网络层间的一种连接方式而已。这里做一个简单的描述和找了个代码解读。之前也写过一篇,不过排版不好看,可以戳这里跳转国际惯例,参考博客:维基百科径向基函数《模式识别与智能计算——matlab技术实现第三版》第6.3章节《matlab神经网络43个案例分析》第7章节tensorflow2.0实现RBF理论基本思想用RBF作为隐单元的“基”构成隐藏层空间

    2025年8月1日
    4
  • KOBAS数据库使用指南

    KOBAS数据库使用指南KOBAS KEGGOrtholog 是由北京大学魏文丽课题组开发的数据库 主要功能是用于基因 蛋白质功能注释和功能富集 随着数据量不断增加 KOBAS 至今为止共经历了 3 次升级 除了 1 0 版本的 KEGG 代谢通路之外 2 0 版本增加了 PIDCurated PIDBioCarta PIDReactome BioCyc Reactome 和 Panther 等数据库 除此之外还增加了疾病的查询 使得 KOBAS 的功能更加强大 而 3 0 版本更是增加了 lncRNA

    2026年3月19日
    3
  • 券商分析师集体分享养“龙虾”教程 现象级AI智能体OpenClaw如何卷动投研圈?

    券商分析师集体分享养“龙虾”教程 现象级AI智能体OpenClaw如何卷动投研圈?

    2026年3月13日
    2
  • mysql查看数据库表数量

    mysql查看数据库表数量

    2022年2月9日
    48
  • 自监督:对比学习contrastive learning「建议收藏」

    自监督:对比学习contrastive learning「建议收藏」对比自监督学习英文原文对比自监督学习导读利用数据本身为算法提供监督。对比自监督学习技术是一种很有前途的方法,它通过学习对使两种事物相似或不同的东西进行编码来构建表示。自监督方法将取代深度学习中占主导地位的直接监督范式的预言已经存在了相当一段时间。AlyoshaEfros打了一个著名的赌,赌在2015年秋季之前,一种无监督的方法将会在检测PascalVOC方面胜过有监督的R-CNN。但四年之后,他的预言现在已经实现了。目前,自监督方法(MoCo,Heetal.,2019)在Pasc

    2025年11月13日
    5
  • 怎样配置FTP服务器

    怎样配置FTP服务器配置 FTP 服务器 FTP 为文件传输协议 用于 Internet 上的控制文件的双向传输 要通过 FTP 来实现本地计算机与云服务器的文件传输 首先要在服务器上进行 FTP 的配置 下面以 Windowsserve 为例配置服务器的 FTP 一 Windows 系统 1 安装 FTP 服务器通过控制台连接实例 通过 开始 管理工具 服务器管理 找到并点击 服务器管理 右键点击服

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号