Acumatica 定制,将 UDF 从销售订单复制到装运和发票

问题描述 投票:0回答:1

我正在寻找一个扩展,允许系统在创建发货时将用户定义的字段从销售订单复制到发货,并在创建发票时将用户定义的字段从发货复制到发票

我已经尝试过这个扩展,但它说销售表不包含列测试字段,该字段是用户定义的字段,而不是数据库列

public class SOOrderExt : PXCacheExtension<SOOrder>
{
    [PXDBString(50, IsUnicode = true)]
    [PXUIField(DisplayName = "Test Field")]
    public string UsrTestField { get; set; }
    public abstract class usrTestField : PX.Data.BQL.BqlString.Field<usrTestField> { }
}

public class SOShipmentExt : PXCacheExtension<SOShipment>
{
    [PXDBString(50, IsUnicode = true)]
    [PXUIField(DisplayName = "Test Field")]
    public string UsrTestField { get; set; }
    public abstract class usrTestField : PX.Data.BQL.BqlString.Field<usrTestField> { }
}
public class SOShipmentEntryExt : PXGraphExtension<SOShipmentEntry>
{
    public delegate void PersistDelegate();
    [PXOverride]
    public void Persist(Action del)
    {
        if (Base.Document.Cache.GetStatus((object)Base.Document.Current) == PXEntryStatus.Inserted)
        {
            SOShipLine shipLine = Base.Transactions.Select().FirstTableItems.ToList().FirstOrDefault();
            if (shipLine != null)
            { 
                SOOrder objSOOrder = PXSelect<SOOrder, Where<SOOrder.orderType, Equal<Required<SOOrder.orderType>>,
                    And<SOOrder.orderNbr, Equal<Required<SOOrder.orderNbr>>>>>.Select(Base, shipLine.OrigOrderType, shipLine.OrigOrderNbr);
                if (objSOOrder != null)
                {
                    SOOrderExt orderExt = objSOOrder.GetExtension<SOOrderExt>();
                    SOShipmentExt shipmentExt = Base.Document.Current?.GetExtension<SOShipmentExt>(); 
                    shipmentExt.UsrTestField = orderExt.UsrTestField;
                    Base.Document.Cache.Update(Base.Document.Current);
                }
            }

        }
        del();
    }
}
c# customization extension-methods acumatica dac
1个回答
0
投票

您应该尝试覆盖 SetShipmentFieldsFromOrder

© www.soinside.com 2019 - 2024. All rights reserved.