Acumatica if(xPOLineExt.UsrVendorWarrantyDate!=null) { _polext.UsrVendorWarrantyDate=xPOLineExt.UsrVendorWarrantyDate; } } } } } 您尝试过:Base

Acumatica if(xPOLineExt.UsrVendorWarrantyDate!=null) { _polext.UsrVendorWarrantyDate=xPOLineExt.UsrVendorWarrantyDate; } } } } } 您尝试过:Base,acumatica,acumatica-kb,Acumatica,Acumatica Kb,if(xPOLineExt.UsrVendorWarrantyDate!=null) { _polext.UsrVendorWarrantyDate=xPOLineExt.UsrVendorWarrantyDate; } } } } } 您尝试过:Base.SetValueExt(视图名称、数据/行、值)吗亲爱的JvD,我可以请您更具体地说明您的反馈,我应该在代码中的具体位置使用SetValueExt。事实上,我不确定在哪里需要为mu UDF使用SetValueExt。谢谢Dar Brian,我

if(xPOLineExt.UsrVendorWarrantyDate!=null) { _polext.UsrVendorWarrantyDate=xPOLineExt.UsrVendorWarrantyDate; } } } } }
您尝试过:Base.SetValueExt(视图名称、数据/行、值)吗亲爱的JvD,我可以请您更具体地说明您的反馈,我应该在代码中的具体位置使用SetValueExt。事实上,我不确定在哪里需要为mu UDF使用SetValueExt。谢谢Dar Brian,我正在使用2020 R2,我已经尝试了你们的建议,但我发现只是运气。请您检查问题,我已根据您的建议对问题进行了一些编辑,如果出现任何错误,请告知我们,我将相应地进行修改。谢谢
protected void POReceipt_RowPersisting(PXCache cache, PXRowPersistingEventArgs e)
    {
      
      var row = (POReceipt)e.Row;

            POReceiptLine row1 = new POReceiptLine();
            if (Base.Document.Current != null)
            {
                foreach (POReceiptLine tran in Base.transactions.Select())
                {
                    POLine xPOLine = PXSelect<POLine,
                        Where<POLine.orderNbr, Equal<Current<POLine.orderNbr>>,
                        And<POLine.orderType, Equal<Current<POLine.orderType>>>>>.Select(Base, tran.PONbr, tran.POType);
                    if (xPOLine != null)
                    {
                        POLineExt poLineExt = PXCache<POLine>.GetExtension<POLineExt>(xPOLine);
                        POReceiptLineExt poReceiptLineExt = PXCache<POReceiptLine>.GetExtension<POReceiptLineExt>(row1);

                        poReceiptLineExt.UsrWarrantyTerms = poLineExt.UsrWarrantyTerms;
                        poReceiptLineExt.UsrVendorWarrantyDate = poLineExt.UsrVendorWarrantyDate;
                    }
                    return;
                }

            }


        }
 protected virtual void _(Events.FieldDefaulting<POReceiptLineExt.usrWarrantyTerms> e)
        {
            POReceiptLine row = (POReceiptLine)e.Row;
            if (row != null)
            {
                POReceiptLineExt receiptLineExt = row.GetExtension<POReceiptLineExt>();
                POLine line = SelectFrom<POLine>
                    .Where<POLine.pONbr.IsEqual<@P.AsString>
                    .And<POLine.lineNbr.IsEqual<@P.AsInt>>>
                    .View.Select(Base, row.PONbr, row.POLineNbr);
                POLineExt lineExt = line.GetExtension<POLineExt>();
                if (lineExt?.UsrWarrantyTerms != null && receiptLineExt != null)
                {
                    e.NewValue = receiptLineExt.UsrWarrantyTerms;
                }
            }
        }
        protected void POReceiptLine_ReceiptNbr_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POReceiptLine)e.Row;
            if (row == null) return;
            cache.SetDefaultExt<POReceiptLineExt.usrWarrantyTerms>(row);
        }
protected virtual void _(Events.FieldDefaulting<POReceiptLineExt.UsrWarrantyTerms> e)
{
    POReceiptLine row = (POReceiptLine) e.Row;
    if(row != null)
    {
        POReceiptLineExt receiptLineExt = row.GetExtension<POReceiptLineExt>();
        POLine line = SelectFrom<POLine>
            .Where<POLine.pONbr.IsEqual<@P.AsString>
            .And<POLine.lineNbr.IsEqual<@P.AsInt>>>
            .View.Select(Base, row.PONbr, row.POLineNbr);
        POLineExt lineExt = line.GetExtension<POLineExt>();
        if(lineExt?.UsrWarrantyTerms != null && receiptLineExt != null)
        {
            e.NewValue = receiptLineExt.UsrWarrantyTerms;
        }
    }
}
protected void POReceiptLine_POLineNbr_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            var row = (POReceiptLine)e.Row;
            CarryForwardFromPO(row);

        }

        public void CarryForwardFromPO(POReceiptLine row)
        {
            if (row.PONbr == null || row.POType == null || row.POLineNbr == null)
                return;
            POReceiptLineExt _polext = PXCache<POReceiptLine>.GetExtension<POReceiptLineExt>(row);

            if (row.PONbr != null)
            {
                POLine xPOLine = PXSelect<POLine,
                            Where<POLine.orderNbr, Equal<Required<POLine.orderNbr>>,
                            And<POLine.orderType, Equal<Required<POLine.orderType>>,
                            And<POLine.lineNbr, Equal<Required<POLine.lineNbr>>>>>>.Select(Base, row.PONbr, row.POType, row.POLineNbr);

                if (xPOLine != null)
                {
                    POLineExt xPOLineExt = PXCache<POLine>.GetExtension<POLineExt>(xPOLine);
                    if (xPOLineExt != null)
                    {
                        if (xPOLineExt.UsrVendWarrantyType != null)
                        {
                            _polext.UsrVendWarrantyType = xPOLineExt.UsrVendWarrantyType.Trim();
                        }

                        if (xPOLineExt.UsrWarrantyTerms != null)
                        {
                            _polext.UsrWarrantyTerms = xPOLineExt.UsrWarrantyTerms.Trim();
                        }
                        if (xPOLineExt.UsrVendorWarrantyDate != null)
                        {
                            _polext.UsrVendorWarrantyDate = xPOLineExt.UsrVendorWarrantyDate;
                        }
                    }
                }
            }
        }