【问题标题】:Checking if Receipt is Released检查收据是否已下达
【发布时间】:2017-05-18 02:44:29
【问题描述】:

我想在收据发布时执行代码。我所做的代码工作了,但几天后就不再工作了。没有采取任何措施导致它突然停止工作。我的代码如下:

public class INReceiptEntry_Extension : PXGraphExtension<INReceiptEntry>
{  
  ... 
  protected void INRegister_RowPersisted(PXCache cache, PXRowPersistedEventArgs e)
    {
        INRegister reg = (INRegister)e.Row;           
        if (reg != null)
        {
            if (e.TranStatus == PXTranStatus.Completed)
            {
                if (reg.Released == true)
                {
                    //Code
                }
            }
        }
    }
}

我有什么遗漏或任何原因此代码前一天有效但下一天不再有效吗?

【问题讨论】:

  • 您包含的代码位于哪个图表中? INDocumentRelease、INReleaseProcess 还是 INReceiptEntry?发布的集合可能出现在其中一个处理图中,而不是数据输入图中。包括哪个图表将有助于找到解决方案。
  • public class INReceiptEntry_Extension : PXGraphExtension 这就是你要的吗?

标签: acumatica


【解决方案1】:

我认为您的问题是您需要将代码移动到 INDocumentRelease,因为这是处理所有库存交易并在完成后将已发布字段设置为 true 的图表。

将您的代码添加到 INRegister RowUpdated 或 Released Field Updated 中的 INReleasePROcess 图扩展中,这样您的代码也应该包含在处理批处理的事务中。不要忘记检查收据,因为此图表处理所有库存交易。

如果您查看源代码,您可以在 INReleasePRocess.ReleaseDocProc 的末尾看到已设置已发布字段,更新文档,然后完成交易。

【讨论】:

  • 我不明白我上面的代码以前和现在是如何工作的。我对其进行了编程以确保事务已完成,然后应获取该视图的更新数据库条目,该视图应设置为.Released = true。任何线索为什么它确实工作了几天,但不再有效了?同样,屏幕或代码没有任何改变。
  • 如果您在发布页面中发布完成后刷新数据,您可能会获得正确的值...但我看不到持久化之前的工作方式
  • 好吧,也许是侥幸。我知道我过去也发生过几次。你的解决方案对我来说很有意义。我将尝试实现它。
  • 我同意,虽然它以前可能一直在工作,但该代码将在 INReleaseProcess 中提供更好的服务。希望一切顺利。
猜你喜欢
  • 2020-07-14
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多