CRM插件调用在从订单创建发票时检索发票行的子集

时间:2013-11-27 08:47:32

标签: integration crm microsoft-dynamics

我们正在开发一个CRM插件,只要在订单的CRM中生成发票,就会触发该插件。

典型的操作是转到销售订单并点击“创建发票”。

插件的最终游戏是将发票与标题和行集成到远程系统中。

插件的工作方式如下:

  1. 插件已在CRM发票中注册“创建”活动。

  2. 插件通过发票标题的发布操作“异步”运行。

  3. 点击“创建发票”,UI动作;插件将新创建的Invoice GUID发送给服务,这通常是POST操作:

  4. 一个。我们基本上调用一个接受此请求并处理它的ASPX页面。

    湾处理包括以下步骤:

    我。通过CRM服务检索调用获取发票标题。

    II。通过CRM服务获取发票行检索多个呼叫。

    ℃。将发票提交到第三个远程应用程序数据库。

    d。我们通过包装任何自定义状态或错误消息来响应插件。

    1. 所有流程都在不到一分钟的时间内完成。
    2. 情景我们在最后测试:

      案例1:

      包含5-10行的发票

      步骤3(a)。到3(d)。成功运行并将发票与所有行集成。

      案例2:问题

      包含10个以上的发票(经过15-40行测试)

      步骤3b(ii)。发票行检索过程仅检索一些行而不是所有行

      最初我们认为,CRM SDK的当前Authenticated用户可能有一个Read锁,因为登录用户也是相同的,当CRM为发票创建行时。

      但测试也失败了。

      成功测试的场景:

      我们通过延迟呼叫几秒钟,通过不同的呼叫分别检索发票行。检索到的行数是成功的。但不确定服务器会延迟什么。

      我们要求您在此问题上的输入继续进行以解决此问题,因为我们在执行此插件请求调用时可能会犯一些错误。

      谢谢和问候。

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经有一年了,但我仍然在寻找解决方案,所以我认为其他人也可能。

我的经验是,CRM需要先保存(创建)标题记录,然后才能将行与之关联起来。因为你已经为异步执行注册了它,所以在执行之前会有一点延迟,这使得你有时间在尝试加载它们之前保存了一些行。

到目前为止,我最好的解决方案是在Invoicelines的Create消息上触发插件,计算与该发票关联的所有行,并从订单中传递行数或计算订单上的行以及何时拥有同样的计数,执行你的主体代码。对于包含大量行的订单来说效率非常低。但它是 a 解决方案。