Acumatica - 在现场添加多个跟踪号

Acumatica - Adding Multiple Tracking Numbers in Field

我正在将 SOPackageDetail 中的跟踪编号数据字段添加到货运详细信息选项卡上的发票屏幕 (SO303000)。我知道它只显示一个 ShipmentNbr,这就是我用来连接两个表的内容,但我想要所有的跟踪号码,因为每个发货号码可以有多个,显示在现场而不是仅仅显示一。它们可以在字段值中用逗号分隔。这是我的代码,它只适用于一个跟踪号码。 图:

public class SOInvoiceEntry_Extension : PXGraphExtension<SOInvoiceEntry>
  {
    #region Event Handlers
protected void SOFreightDetail_RowSelecting(PXCache cache, PXRowSelectingEventArgs e, PXRowSelecting del)
    {
       if (del != null)
                del(cache, e);

            var row = (SOFreightDetail)e.Row;
            if (row == null) return;

            using (new PXConnectionScope())
                {

                    SOPackageDetail track = PXSelect<SOPackageDetail, Where<SOPackageDetail.shipmentNbr, Equal<Required<SOFreightDetail.shipmentNbr>>>>.Select(Base, row.ShipmentNbr);
                    if(track != null){
                      SOFreightDetailExt invoiceExt = row.GetExtension<SOFreightDetailExt>();
                    if (invoiceExt != null){
                       invoiceExt.TrackNumber = track.TrackNumber;

                    }  
                    }

                }

    }
    #endregion
  }

DAC 扩展:

public class SOFreightDetailExt : PXCacheExtension<PX.Objects.SO.SOFreightDetail>
  {
    #region TrackNumber
    public abstract class trackNumber : PX.Data.IBqlField
    {
    }
    protected string _TrackNumber;

    [PXString()]
    [PXDefault()]
    [PXUIField(DisplayName = "Tracking Number", IsReadOnly = true)]
    public virtual string TrackNumber
    {
      get
      {
        return this._TrackNumber;
      }
      set
      {
        this._TrackNumber = value;
      }
    }
    #endregion
  }

我希望在此字段中显示与 Shipment Nbr 关联的所有跟踪编号,现在它只显示一个。仅当一个货件号有多个包裹时才会发生这种情况。

您需要在 foreach 中循环记录 (PXSelect)。然后您需要将每个字符串值添加到您的 tracknumber 字段。像这样的东西应该有用...

SOFreightDetailExt invoiceExt = row.GetExtension<SOFreightDetailExt>();
if(invoiceExt == null)
    return;
foreach(SOPackageDetail track in PXSelect<SOPackageDetail, Where<SOPackageDetail.shipmentNbr, Equal<Required<SOFreightDetail.shipmentNbr>>>>.Select(Base, row.ShipmentNbr))
{
    invoiceExt.TrackNumber = $"{invoiceExt.TrackNumber}, {track.TrackNumber}";
}

此外,不需要 PXConnectionScope。你可以删除它。