博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crm工作机会实体
阅读量:7059 次
发布时间:2019-06-28

本文共 5712 字,大约阅读时间需要 19 分钟。

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

转载地址:http://spyll.baihongyu.com/

你可能感兴趣的文章
苹果手机定位用户行迹:是否对信息安全构成威胁?
查看>>
金风科技澳洲首座20兆瓦光伏电站将于2017年投产
查看>>
Java 代理
查看>>
《Effective Debugging:软件和系统调试的66个有效方法》——第12条:将复杂的测试场景自动化...
查看>>
企业物联网安全的四个关键步骤
查看>>
盗版的软件更易被攻击 勒索钱财是黑客惯用形式
查看>>
SPI绿能宝与金沙江资本签署5亿美元可转债协议
查看>>
中英专家建言:未来城市发展要智慧化“留白”
查看>>
象棋中马行走路线的测试用例设计
查看>>
乌当区前三季度大数据产业实现产值60亿元
查看>>
可以拖动的弹出窗
查看>>
Tiny之Web工程构建
查看>>
android 的android httpClient详解
查看>>
IOS SEL的理解与使用
查看>>
iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
查看>>
iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
查看>>
gdb 调试 sysbench
查看>>
Oracle官方并发教程之中断
查看>>
使用模板实现编译期间多态
查看>>
[置顶].NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
查看>>