从一个自定义字段到另一个自定义字段的Acumatica数据

从一个自定义字段到另一个自定义字段的Acumatica数据,acumatica,Acumatica,我添加了两个自定义字段。一个在“销售订单折扣详细信息”选项卡上,一个在“发票折扣详细信息”选项卡上。当我从“销售订单”屏幕准备发票时,我希望销售订单表单上我的自定义字段中的数据自动插入发票屏幕上的自定义字段。我对acumatica customization仍然是新手。因此,请给我一些关于这件事的想法。关于“新”和“关于这件事的一些想法”部分: 作为Acumatica的新手,我建议你们从他们提供的产品开始。在这种情况下,将重点放在T220上,因为它解释了如何执行您的请求。为了安抚主持人对堆栈溢出

我添加了两个自定义字段。一个在“销售订单折扣详细信息”选项卡上,一个在“发票折扣详细信息”选项卡上。当我从“销售订单”屏幕准备发票时,我希望销售订单表单上我的自定义字段中的数据自动插入发票屏幕上的自定义字段。我对acumatica customization仍然是新手。因此,请给我一些关于这件事的想法。

关于“新”和“关于这件事的一些想法”部分:

作为Acumatica的新手,我建议你们从他们提供的产品开始。在这种情况下,将重点放在T220上,因为它解释了如何执行您的请求。为了安抚主持人对堆栈溢出的看法,您应该尝试在问题中包含更多细节。鼓励使用代码示例以及屏幕截图(如果适用)

使用SOOrderEntry图,销售订单屏幕为SO301000。使用图形SOINVOICE条目,发票屏幕为SO303000。了解这一点很重要,因为当PrepareInvoice的操作在SOOrderEntry中时,它将在SOOrderEntry中调用InvoiceOrder,然后初始化图形SOInvoiceEntry(发票屏幕)并调用SOInvoiceEntry的InvoiceOrder方法

从SOOrderEntry.CreateInvoice:

SOInvoiceEntry ie = PXGraph.CreateInstance<SOInvoiceEntry>();
...
ie.InvoiceOrder((DateTime)ie.Accessinfo.BusinessDate, res, details,
   customer.Current, created, quickProcessFlow, !isMassProcess);

感谢您提供的解决方案brian。我要复制和粘贴的自定义字段是从SOOrderDiscountDetail到ARInvoiceDiscountDetail
using PX.Data;
using PX.Objects.AR;

namespace PX.Objects.SO
{
    public class SOInvoiceEntry_Extension : PXGraphExtension<SOInvoiceEntry>
    {
        public static bool IsActive()
        {
            // Insert your logic for returning whether or not this shoudl be active
            return true;
        }

        public delegate ARTran CreateTranFromShipLineDelegate(ARInvoice newdoc, SOOrderType ordertype, string operation, SOLine orderline, ref SOShipLine shipline);
        [PXOverride]
        public virtual ARTran CreateTranFromShipLine(ARInvoice newdoc, SOOrderType ordertype, string operation, SOLine orderline, ref SOShipLine shipline, CreateTranFromShipLineDelegate del)
        {
            ARTran tran = del.Invoke(newdoc, ordertype, operation, orderline, ref shipline);

            ARTranExt arTranExt = tran.GetExtension<ARTranExt>();
            SOLineExt soLineExt = orderline.GetExtension<SOLineExt>();

            Base.Caches[typeof(ARTran)].SetValueExt<ARTranExt.usrMyCustomField>(arTranExt, soLineExt.UsrMyCustomField);

            return tran;
        }
    }
}
Base.Caches[typeof(ARTran)].Update(arTranExt);