Acumatica-从采购订单更新销售订单

Acumatica- Update Sales Order from Purchase Order

我正在尝试在更改 POLine 承诺日期时更新 SOLine (UsrPOPromisedDate) 上的自定义字段。下面是我的图形扩展,但是 SOLine 始终为空。 当我将 BQL 转换为 T-SQL 时,我得到了预期的返回结果。为什么我的视图总是返回空值?

using PX.Data;
using PX.KWW.MyProject.DAC;
using PX.Objects.PO;
using PX.Objects.SO;

namespace MyProject.Graph
{
    public class POOrderEntryExt : PXGraphExtension<POOrderEntry>
    {
        public PXSelectJoin<
            SOLine,
            InnerJoin<SOLineSplit,
                On<SOLineSplit.orderType, Equal<SOLine.orderType>,
                And<SOLineSplit.orderNbr, Equal<SOLine.orderNbr>,
                And<SOLineSplit.lineNbr, Equal<SOLine.lineNbr>>>>>,
            Where<SOLineSplit.pOType, Equal<Current<POLine.orderType>>,
                And<SOLineSplit.pONbr, Equal<Current<POLine.orderNbr>>,
                And<SOLineSplit.pOLineNbr, Equal<Current<POLine.lineNbr>>>>>>
            SalesOrderLine;

        protected virtual void _(Events.FieldUpdated<POLine, POLine.promisedDate> eventHandler, PXFieldUpdated baseHandler)
        {
            baseHandler?.Invoke(eventHandler.Cache, eventHandler.Args);

            POLine pOLine = eventHandler.Row;
            if (pOLine is null) return;

            SOLine sOLine = SalesOrderLine.Current;
            SOLineExtension sOLineExtension = sOLine.GetExtension<SOLineExtension>();

            if (sOLine is null || sOLineExtension is null) return;

            sOLineExtension.UsrPOPromisedDate = pOLine.PromisedDate;
            SalesOrderLine.Update(sOLine);
        }
    }
}

您的代码中似乎有错误。

                And<SOLineSplit.pONbr, Equal<Current<POLine.orderType>>,

如果您的意思是 SalesOrderLine.Current 为 null,我认为默认情况下不会填充当前字段,除非用户在视图中选择了特定记录(或者您手动设置它)。

如果您只是想获取视图中的记录,则需要使用 SalesOrderLine.Select()。

    foreach(SOLine line in SalesOrderLine.Select()){ 
         //Do Something Here
    }