代码之家  ›  专栏  ›  技术社区  ›  iquellis

如果报价成功关闭,则不会触发MS Dynamics CRM插件并显示消息“win”

  •  0
  • iquellis  · 技术社区  · 7 年前

    环境是Dynamics 365,当前版本。

    我们有一个插件,它在赢得机会时被触发。一切都很好。但是,还有另一种方法来结束赢得的机会,那就是通过相关的报价。

    如果你在一个相关的报价和做“创建订单”,你有机会关闭的机会,以及赢得。但在这种情况下,插件不会触发消息“win”。

    有人经历过这个案子吗?有什么意见吗?

    更新Dot\u NET Pro的问题:

    第一个是:

        public void Execute(IServiceProvider serviceProvider)
        {
            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationService organizationService = serviceFactory.CreateOrganizationService(null);
    
            if (context.MessageName.ToLower() != "win")
            {
                return;
            }
    
            var currentOpportunity = RetrieveCurrentOpportunity(serviceFactory, context, organizationService);
            if (currentOpportunity == null)
            {
                return;
            }
    
    // More code comes here. 
    

    第二个if进入具有以下代码的方法:

        private Entity RetrieveCurrentOpportunity(IOrganizationServiceFactory serviceFactory, IPluginExecutionContext context, IOrganizationService organizationService)
        {
            Guid opportunityId = Guid.Empty;
    
            if (context.InputParameters.Contains("OpportunityClose") && context.InputParameters["OpportunityClose"] is Entity)
            { // ... more code here.
    
    // else-case does nothing. 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Henk van Boeijen    7 年前

    通过在UI中创建订单关闭opportunity不会触发实体opportunity的win消息。显然应用层没有使用 WinOpportunityRequest 内部。它只执行相关opportunity的更新(属性actualvalue、actualclosedate和closprobability)。

    update 实体“opportunity”的消息。

    (当引用丢失时,应用层实际上使用 LoseOpportunityRequest 内部。)