acumatica - Acumatica - 将自定义字段内容从 SO 复制到 IN
问题描述
我有类似的问题
Acumatica 将自定义字段引用到不同屏幕上的另一个自定义字段
除了我使用自定义源字段。
我在 SO 行中创建并添加了 2 个字段,以捕获开票所需的 EDI 数据。我在 SO Invoice 表单上的发票行上创建了 2 个具有相同名称(当然是不同的数据类)的新字段。以下是每个表单上 1 个字段的代码:
SO301000(销售订单):
[PXDBString(3)]
[PXUIField(DisplayName="Cust.Invoice Line Nbr.")]
[PXFormula(typeof(Selector<SOLineExt.usrCInvLine, ARTranExt.usrCInvLine>))]
SO303000(发票):
[PXDBString(3)]
[PXUIField(DisplayName="Cust.Invoice Line Nbr.")]
它可以编译,但从发货创建时数据不会复制到发票中。我还在发货表单中添加了 1 个字段以进行测试,但它也没有捕获该值。
我有这个倒退吗?
解决方案
在查看更多详细信息后,您可以覆盖 SOOrderEntry 图上的 Prepare Invoice 方法(以及其他任何需要的地方)。
通过覆盖 SOOrderEntry 图表的 PrepareInvoice 方法,您可以将处理程序(RowInserting)添加到 SOInvoiceEntry 图表,以使用 SOOrder 上的值填充新的自定义字段。
请参阅下面的示例,其中我正在执行从 SOOrder(Header) 到 ARTran(details) 的类似操作复制值。
您可以使用此示例来实现您的目标:(在您的情况下,您可以使用 ARInvoice 而不是 ARTran)
SOOrderEntry:
public class SOOrderEntry_Extension:PXGraphExtension<SOOrderEntry>
{
public PXAction<SOOrder> prepareInvoice;
[PXUIField(DisplayName = "Prepare Invoice", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select, Visible = false)]
[PXButton]
public virtual IEnumerable PrepareInvoice(PXAdapter adapter)
{
PXGraph.InstanceCreated.AddHandler<SOInvoiceEntry>((graph) =>
{
graph.RowInserting.AddHandler<ARTran>((sender, e) =>
{
//Custom logic goes here
var row = (ARTran)e.Row;
if (row == null)
return;
SOOrder order = Base.Document.Current;
if (order != null)
{
var tranExt = PXCache<ARTran>.GetExtension<ARTranExt>(row);
//Below to be change to your needs
//Here you can look for the SOLine of the SOOrder instead
var orderExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(order);
if (orderExt != null && tranExt != null)
{
tranExt.UsrContactID = orderExt.UsrContactID;
}
//END
}
});
});
return Base.prepareInvoice.Press(adapter);
}
}
您还可以在下面的 stackoverflow 链接上找到我的同事提供的更多信息和说明:
推荐阅读
- javascript - Reactjs-如何在导航栏上显示用户名
- node.js - 关于MongoDB文件数据建模的讨论
- c - Rijndael S-box in C
- python - 如何针对数据框优化此方法?
- java - 启动时、时间和大小的翻转日志文件
- python - 在 Keras 中,如何根据 val 集中的 True Negatives 保存最佳模型?
- geograpy - 使用 Geograpy3 时出现错误“OperationalError: no such table: countries”
- python - Python 3 中的矩阵乘法
- python - 列中列表中的值计数
- java - How to move apply force to bodies in a top down game?