Acumatica 在确认装运时执行代码

Acumatica 在确认装运时执行代码,acumatica,Acumatica,我想在装运屏幕(SO302000)上的“确认装运”操作后执行一些代码(更改装运日期) 我在想,这将是一种方法: public class SOShipmentEntryExt : PXGraphExtension<SOShipmentEntry> { [PXOverride] public virtual void ConfirmShipment(SOOrderEntry docgraph, SOShipment shiporder) { Ba

我想在装运屏幕(SO302000)上的“确认装运”操作后执行一些代码(更改装运日期)

我在想,这将是一种方法:

public class SOShipmentEntryExt : PXGraphExtension<SOShipmentEntry>
{
    [PXOverride]
    public virtual void ConfirmShipment(SOOrderEntry docgraph, SOShipment shiporder)
    {
        Base.ConfirmShipment(docgraph, shiporder);
        //Add my code to do something here...
    }

}
公共类SoShipmentryText:PXGrapherExtension
{
[PXOverride]
公共虚拟void confirmShipping(SOOrderEntry docgraph、SoShipping ShippOrder)
{
基本确认装运(docgraph、shiporder);
//在此处添加我的代码以执行某些操作。。。
}
}
当我尝试此操作时,会出现装运计数器错误。有更好的方法吗?

类似案例:

公共类SoShipmentryText:PXGrapherExtension
{
公共行动;
[按钮]
[PXUIField(DisplayName=“Actions”,MapEnableRights=PXCacheRights.Select)]
受保护的IEnumerable操作(PXAdapter适配器)
,[PXIntList(新的int[]{1}
,新字符串[]{“确认装运”})
,PXInt]int?actionID)
{
//actionID=1表示确认装运操作是调用的操作
if(actionID==1)
{
Base.Document.Current.ShipDate=Base.Accessinfo.BusinessDate;
Base.Document.Update(Base.Document.Current);
}
//调用调用的基本操作
返回基地。行动。按下(适配器);
}
}
来自类似案例:

公共类SoShipmentryText:PXGrapherExtension
{
公共行动;
[按钮]
[PXUIField(DisplayName=“Actions”,MapEnableRights=PXCacheRights.Select)]
受保护的IEnumerable操作(PXAdapter适配器)
,[PXIntList(新的int[]{1}
,新字符串[]{“确认装运”})
,PXInt]int?actionID)
{
//actionID=1表示确认装运操作是调用的操作
if(actionID==1)
{
Base.Document.Current.ShipDate=Base.Accessinfo.BusinessDate;
Base.Document.Update(Base.Document.Current);
}
//调用调用的基本操作
返回基地。行动。按下(适配器);
}
}

您可以在这里找到一个非常类似的案例:啊-很漂亮,谢谢。。因此,我想这并不能真正“替换”原来的操作按钮,因为所有其他选项仍然存在,即使图形扩展中的操作代码只有一个选项-确认装运-在其中。。。不知道它是如何工作的-但是它是工作的。你可以重写confirmShipping方法,但是你也必须复制粘贴所有的原始代码,这样才能不破坏函数。如果您真正需要的是在调用原始方法之前进行一点预处理,我认为我给出的链接中的解决方案更简单、更干净。您可以在这里找到一个非常类似的情况:啊-很漂亮,谢谢。。因此,我想这并不能真正“替换”原来的操作按钮,因为所有其他选项仍然存在,即使图形扩展中的操作代码只有一个选项-确认装运-在其中。。。不知道它是如何工作的-但是它是工作的。你可以重写confirmShipping方法,但是你也必须复制粘贴所有的原始代码,这样才能不破坏函数。如果您真正需要的是在调用原始方法之前进行一点预处理,我认为我给出的链接中的解决方案更简单、更干净
public class SOShipmentEntryExt : PXGraphExtension<SOShipmentEntry>
{

    public PXAction<SOShipment> action;
    [PXButton]
    [PXUIField(DisplayName = "Actions", MapEnableRights = PXCacheRights.Select)]
    protected IEnumerable Action(PXAdapter adapter
                                ,[PXIntList(new int[] { 1 }
                                ,new string[] { "Confirm Shipment" })
                                ,PXInt] int? actionID)
    {
        //actionID = 1 means the Confirm Shipment action was the one invoked
        if (actionID == 1)
        {

            Base.Document.Current.ShipDate = Base.Accessinfo.BusinessDate;
            Base.Document.Update(Base.Document.Current);
        }

        //calls the basic action that was invoked
        return Base.action.Press(adapter);
    }

}