【问题标题】:Updating another object when a kit assembly is released (Acumatica)发布套件组件时更新另一个对象 (Acumatica)
【发布时间】:2017-06-20 06:06:24
【问题描述】:

我添加了一些自定义字段以将 Kit Asm 链接回特定的销售订单行。当 Kit Asm 发布时,我想在链接的 SO Line 上更新我的自定义字段 Qty Released。

我的代码正在对 Kit Asm 进行其他更改(我从重写的 Persist 方法开始),但基本 Acumatica Release 发生在 PXLongOperation 内,因此我对已发布的 Kit Asm 数量的计数是不准确,因为它们实际上并没有在 base.release.Press() 之后立即发布。

同样由于 PXLongOperation,Kit Asm Released 字段更新的事件处理程序永远不会引发,所以我无法从那里捕获它。

在 Release 完成后,Persist 似乎在任何时候都没有出现。

有没有一种方法可以跟踪基本版本的进度并等到 PXLongOperation 完成后再尝试更新我的 SO?

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    Kits 的处理应该调用 INDocumentRelease。您可以扩展此图表,并在完成后更新您的销售订单。只需检查文档类型,因为所有库存交易都通过 INDocumentRelease 处理。在这里,您可以覆盖持久化和/或查看您可能需要的任何事件。坚持覆盖应该工作。这样,一旦文档被标记为已发布,您就知道该过程已正确完成,并且您可以安全地更新销售订单。

    【讨论】:

    • 嗨@Brendan,请您建议或举例说明要覆盖哪个事件以识别套件已发布,就像您建议persistevent应该覆盖一样,您可以在这里举例吗?同样在发布套件后,我想更新 INKitRegister (InKitRegister) 的扩展表,我该怎么做,因为我在更新套件组件时遇到错误“得到了错误序列号 'SRF000' 的项目 'ABC001' 已经是收到“有什么意见吗?
    • @amit 您应该查看 INDocumentRelease 中可用的方法,但至少可以查看覆盖 Persist 调用。这是一个覆盖持久化的示例:stackoverflow.com/a/61893415/2056380
    • 您只需要覆盖持久化并执行您的逻辑(检查事务是套件组装和发布),然后更新您的 DAC/扩展。然后调用 base 持久化。没有要添加到 INDocumenetRelease 的操作。发布套件时已经调用它
    • 我的意思是 INReleaseProcess,它是处理事务的。 INDocumenetRelease 只是循环发布文档并调用 INReleaseProcess
    • 我做了,但是在发布 INKITRegister 之后,我正在更新 INKitRegister 的扩展表,然后我收到错误“已经收到项目 'ABC001' 的序列号 'SRF000'”,为什么?
    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2023-03-14
    • 2017-04-20
    • 2021-01-17
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多