我们正在开发一个CRM插件,只要在订单的CRM中生成发票,就会触发该插件。
典型的操作是转到销售订单并点击“创建发票”。
插件的最终游戏是将发票与标题和行集成到远程系统中。
插件的工作方式如下:
插件已在CRM发票中注册“创建”活动。
插件通过发票标题的发布操作“异步”运行。
点击“创建发票”,UI动作;插件将新创建的Invoice GUID发送给服务,这通常是POST操作:
一个。我们基本上调用一个接受此请求并处理它的ASPX页面。
湾处理包括以下步骤:
我。通过CRM服务检索调用获取发票标题。
II。通过CRM服务获取发票行检索多个呼叫。
℃。将发票提交到第三个远程应用程序数据库。
d。我们通过包装任何自定义状态或错误消息来响应插件。
情景我们在最后测试:
案例1:
包含5-10行的发票
步骤3(a)。到3(d)。成功运行并将发票与所有行集成。
案例2:问题
包含10个以上的发票(经过15-40行测试)
步骤3b(ii)。发票行检索过程仅检索一些行而不是所有行
最初我们认为,CRM SDK的当前Authenticated用户可能有一个Read锁,因为登录用户也是相同的,当CRM为发票创建行时。
但测试也失败了。
成功测试的场景:
我们通过延迟呼叫几秒钟,通过不同的呼叫分别检索发票行。检索到的行数是成功的。但不确定服务器会延迟什么。
我们要求您在此问题上的输入继续进行以解决此问题,因为我们在执行此插件请求调用时可能会犯一些错误。
谢谢和问候。
答案 0 :(得分:0)
我知道这个问题已经有一年了,但我仍然在寻找解决方案,所以我认为其他人也可能。
我的经验是,CRM需要先保存(创建)标题记录,然后才能将行与之关联起来。因为你已经为异步执行注册了它,所以在执行之前会有一点延迟,这使得你有时间在尝试加载它们之前保存了一些行。
到目前为止,我最好的解决方案是在Invoicelines的Create消息上触发插件,计算与该发票关联的所有行,并从订单中传递行数或计算订单上的行以及何时拥有同样的计数,执行你的主体代码。对于包含大量行的订单来说效率非常低。但它是 a 解决方案。