我在商机产品标签中有一个自定义行号字段,供客户重新排序所选产品,网格按自定义字段值排序。
我正在尝试将价值从机会转移到也具有类似字段的销售订单。
以下代码我尝试过但无法正常工作
PXGraph.InstanceCreated.AddHandler<SOOrderEntry>((graph) =>
{
graph.RowUpdated.AddHandler<SOLine>((cache, args) =>
{
CROpportunityProducts product = (adapter.View.Graph as OpportunityMaint).Products.Current;
CROpportunityProductsExtNV productext = PXCache<CROpportunityProducts>.GetExtension<CROpportunityProductsExtNV>(product);
SOLine soline = (SOLine)args.Row;
SOLineExtNV solineext = PXCache<SOLine>.GetExtension<SOLineExtNV>(soline);
solineext.UsrLineNo = productext.UsrLineNo;
});
});
以下代码为所有行号返回相同的值
答案 0 :(得分:2)
您可以按如下方式实现RowInserting事件处理程序:
if ARGV[0]
lines = File.read(ARGV[0]).lines
else
lines = STDIN.each_line.to_a
end
puts lines.map { |c| c.unpack("M") }.join
答案 1 :(得分:1)
希望他们可以拆分调用以创建订单,并调用插入行以便于自定义。我们做了类似的事情。以下是我使用图表扩展测试并覆盖机会图表中的DoCreateSalesOrder调用的示例。 (这假设产品上的选择与销售订单上的交易插入的顺序相同。我相信可以有更好的答案,但这是一个我很方便的例子。)
public class CROpportunityMaintExtNV : PXGraphExtension<OpportunityMaint>
{
[PXOverride]
public virtual void DoCreateSalesOrder(Action del)
{
try
{
del();
}
catch (PXRedirectRequiredException redirect)
{
var products = this.Products.Select().ToArray();
int rowCntr = 0;
foreach (SOLine soLine in ((SOOrderEntry)redirect.Graph).Transactions.Select())
{
// Assumes inserted rows in same order as products listed (default should be the key)
//Current product
CROpportunityProducts currentProduct = products[rowCntr];
var productExtension = currentProduct.GetExtension<CROpportunityProductsExtNV>();
((SOOrderEntry) redirect.Graph).Transactions.Cache.SetValueExt<SOLineExtNV.usrLineNo>(soLine, productExtension.UsrLineNo);
rowCntr++;
}
throw redirect;
}
}
}
您的代码遇到的问题是,当前产品始终相同,导致相同的值。