覆盖内部静态 class CATranDetailHelper 函数 OnCATranDetailRowUpdatingEvent

Overwriting internal static class CATranDetailHelper funtion OnCATranDetailRowUpdatingEvent

有没有办法 extend/overwite 内部静态 class CATranDetailHelper 中的 OnCATranDetailRowUpdatingEvent 函数?

通常我可以这样做:

namespace test
{

    [PXProtectedAccess]
    
    public static class CATranDetailHelper_Extension : PXGraphExtension<CATranDetailHelper>
    {
        #region Event Handlers

        protected void CAEntryType_RowUpdating(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
        {
            //if (InvokeBaseHandler != null)
            //    InvokeBaseHandler(cache, e);
            var row = (CABankTranDetail)e.Row;

        }

        #endregion
    }

}

问题是这是静态的 class。 任何覆盖此功能的建议将不胜感激

Is there a way to extend/overwite the OnCATranDetailRowUpdatingEvent function that Is in the internal static class CATranDetailHelper?

没有

Normally I can do something like this: class PXGraphExtension< CATranDetailHelper >

您只能在继承自 PXGraph class.

的 classes 上创建图形扩展

示例:

class SOOrderEntry : PXGraph

Class CATranDetailHelper 不继承自 PXGraph,因此无法使用 PXGraphExtension 进行扩展。

The problem being this is a static class. any advice of to overwrite this function will be appreciated

另一个问题是 class 被标记为内部。这表示此源代码区域禁止自定义,因此您不应尝试以任何方式更改它。

如果您需要更改行为,您需要检查调用此方法的位置。 理想情况下,方法调用位于事件处理程序中,您可以通过创建图形扩展来替换它。

例如,在 CATranEntry 图中调用了 OnCATranDetailRowUpdatingEvent。 由于 CATranEntry 是一个图形,您可以在 CATranEntry 上创建一个图形扩展并替换最终调用 OnCATranDetailRowUpdatingEvent 的 CASplit_RowUpdating 事件处理程序。

public class CATranEntry : PXGraph<CATranEntry, CAAdj>, PX.Objects.GL.IVoucherEntry
{
    protected virtual void CASplit_RowUpdating(PXCache sender, PXRowUpdatingEventArgs e)
    {
        CATranDetailHelper.OnCATranDetailRowUpdatingEvent(sender, e);
        if (CATranDetailHelper.VerifyOffsetCashAccount(sender, e.NewRow as CASplit, CAAdjRecords.Current?.CashAccountID))
        {
            e.Cancel = true;
        }
        sender.SetValueExt<CASplit.curyTranAmt>(e.NewRow, (e.NewRow as CASplit).CuryTranAmt);
    }
}