Acumatica 如何将自定义字段值从Opportunity传递到sales Order?

Acumatica 如何将自定义字段值从Opportunity传递到sales Order?,acumatica,Acumatica,在将opportunity转换为sales order时,我必须将自定义字段值从opportunity复制到sales order。 我遇到了一个将自定义字段从销售订单传递到装运的示例代码,我尝试使用该代码覆盖“创建销售订单”操作。 下面是我在OpportunityMaint扩展类中使用的代码片段 公共行动; [按钮] [PXUIField(DisplayName=“Actions”,MapEnableRights=PXCacheRights.Select,MapViewRights=PXCac

在将opportunity转换为sales order时,我必须将自定义字段值从opportunity复制到sales order。 我遇到了一个将自定义字段从销售订单传递到装运的示例代码,我尝试使用该代码覆盖“创建销售订单”操作。 下面是我在OpportunityMaint扩展类中使用的代码片段

公共行动; [按钮] [PXUIField(DisplayName=“Actions”,MapEnableRights=PXCacheRights.Select,MapViewRights=PXCacheRights.Select)] 受保护的IEnumerable操作(PXAdapter适配器、, [PXIntList(新的int[]{1,2,3},新的字符串[]{“创建帐户”、“创建销售订单”、“创建发票”}),PXInt] int?actionId, [字符串] 字符串(ActionName) { if(actionId==2) { //实现So订单行插入处理程序 } 返回基地。行动。按下(适配器); }

这段代码没有触发。 期待更好的解决方案来实施此选项 当做
R.Muralidharan

您需要覆盖CreateSalesOrder操作。下面是一段代码,我不得不将opportunity下推到销售订单上

public class OpportunityMaint_Extension : PXGraphExtension<OpportunityMaint>
{
    public PXAction<CROpportunity> createSalesOrder;
    [PXUIField(DisplayName = Messages.CreateSalesOrder, MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Select)]
    [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntry)]
    public virtual IEnumerable CreateSalesOrder(PXAdapter adapter)
    {
        PXGraph.InstanceCreated.AddHandler<SOOrderEntry>((graph) =>
        {
            graph.RowInserted.AddHandler<SOOrder>((cache, args) =>
            {
                var soOrder = (SOOrder)args.Row;
                var soOrderExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(soOrder);

                foreach (CROpportunity opportunity in adapter.Get())
                {
                    soOrderExt.UsrOpportunityID = opportunity.OpportunityID;
                }
            });
        });
        return Base.createSalesOrder.Press(adapter);
    }
}
公共类机会主义维护扩展:pxGrapherExtension
{
公开销售订单;
[PXUIField(DisplayName=Messages.CreateSalesOrder,MapEnableRights=PXCacheRights.Update,MapViewRights=PXCacheRights.Select)]
[PXButton(ImageKey=PX.Web.UI.Sprite.Main.DataEntry)]
公共虚拟IEnumerable CreateSalesOrder(PXAdapter)
{
PXGraph.InstanceCreated.AddHandler((图形)=>
{
graph.RowInserted.AddHandler((缓存,参数)=>
{
var soOrder=(soOrder)args.Row;
var soOrderExt=PXCache.GetExtension(soOrder);
foreach(adapter.Get()中的CROpportunity opportunity)
{
soOrderExt.UsrOpportunityID=opportunity.OpportunityID;
}
});
});
return Base.createSalesOrder.Press(适配器);
}
}