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

Opportunity Helper的更多相关文章

  1. [C#] 简单的 Helper 封装 -- RegularExpressionHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. handlebars自定义helper的写法

    handlebars相对来讲算一个轻量级.高性能的模板引擎,因其简单.直观.不污染HTML的特性,我个人特别喜欢.另一方面,handlebars作为一个logicless的模板,不支持特别复杂的表达式 ...

  3. Encountered an unexpected error when attempting to resolve tag helper directive '@addTagHelper' with value '"*, Microsoft.AspNet.Mvc.TagHelpers"'

    project.json 配置: { "version": "1.0.0-*", "compilationOptions": { " ...

  4. VS2015突然报错————Encountered an unexpected error when attempting to resolve tag helper directive '@addTagHelper' with value 'Microsoft.AspNet.Mvc.Razor.TagHelpers.UrlResolutionTagHelper

    Encountered an unexpected error when attempting to resolve tag helper directive '@addTagHelper' with ...

  5. JavaScript模板引擎artTemplate.js——template.helper()方法

    上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...

  6. [ASP.NET MVC 小牛之路]13 - Helper Method

    我们平时编程写一些辅助类的时候习惯用“XxxHelper”来命名.同样,在 MVC 中用于生成 Html 元素的辅助类是 System.Web.Mvc 命名空间下的 HtmlHelper,习惯上我们把 ...

  7. asp.net MVC helper 和自定义函数@functions小结

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...

  8. C# random helper class

      项目中经常需要模拟些假数据,来做测试.这个随机生成数据的helper类就应用而生: using System; using System.Text; using System.Windows.Me ...

  9. @helper函数使用方法

    这个函数方法,我也是通过别人博客看到的,感觉不错和大家一起学习分享一下. 1.自定义函数方法,只在同一个view视图文件里调用 Controller public ActionResult Index ...

随机推荐

  1. 微信小程序——初始化一个小程序项目

    最近准备学习一下微信小程序,因为之前有react native项目经验,学习起来应该困难不大 微信小程序官网地址:https://mp.weixin.qq.com/debug/wxadoc/dev/i ...

  2. angularJS directive中的controller和link function辨析

    在angularJS中,你有一系列的view,负责将数据渲染给用户:你有一些controller,负责管理$scope(view model)并且暴露相关behavior(通过$scope定义)给到v ...

  3. 正则表达式 (python)

    正则表达式 在正则表达式中,如果直接给出字符,就是精确匹配. 用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以: '00\d'可以匹配'007',但无法匹配'00A': '\d\d\d'可以匹 ...

  4. 判断ORACLE启动时使用spfile还是pfile

    自Oracle 9i以后启动的时候默认使用的初始化文件是spfile,我们可以通过如下三种方式来判断是SPFILE还是PFILE方式启动数据库.1.show parameter spfile2.sho ...

  5. July 08th 2017 Week 27th Saturday

    You are never wrong to do the right thing. 坚持做对的事情,永远都不会错. I think the translation may be not precis ...

  6. 2维FFT算法实现——基于GPU的基2快速二维傅里叶变换

    上篇讲述了一维FFT的GPU实现(FFT算法实现——基于GPU的基2快速傅里叶变换),后来我又由于需要做了一下二维FFT,大概思路如下. 首先看的肯定是公式: 如上面公式所描述的,2维FFT只需要拆分 ...

  7. POJ-2992 Divisors---组合数求因子数目

    题目链接: https://cn.vjudge.net/problem/POJ-2992 题目大意: 给出组合数Cnk,求出其因子个数,其中n,k不大于431,组合数的值在long long范围内 解 ...

  8. python 爬取猫眼下的榜单(一)--单个页面

    #!/usr/bin/env python # -*- coding: utf- -*- # @Author: Dang Kai # @Date: -- :: # @Last Modified tim ...

  9. Jmeter--JDBC请求(sqlserver)

    做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动. 数据库URL:jdbc:sqlserver://200.99.197.190:1433;database ...

  10. [转载]对iOS开发中内存管理的一点总结与理解

    对iOS开发中内存管理的一点总结与理解   做iOS开发也已经有两年的时间,觉得有必要沉下心去整理一些东西了,特别是一些基础的东西,虽然现在有ARC这种东西,但是我一直也没有去用过,个人觉得对内存操作 ...