如何解决更新网格上所有行的字段
当行上的字段值更新时,我正在重新计算每行的百分比值。我为 INComponentTran DAC 创建了两个自定义字段 PoundsUsed 和 PercentOfWIP。当 PoundsUsed 更新时,我想重新计算 Kit Assembly 中所有 INComponentTran 记录的 PercentOfWIP。
我还创建了一个自定义字段,它是 INComponentTran 的 PoundsUsed 的总和,并基于此计算百分比。下面是我为完成而编写的代码片段,但它仅更新最新记录。
private decimal CalculatetotalLBSProduced()
{
decimal totalPortions = 0M;
decimal totalLBs = 0M;
foreach (INComponentTran tran in Base.Components.Select())
{
INTranExt tranExt = tran.GetExtension<INTranExt>();
if (tranExt.UsrPoundsUsed.HasValue)
{
if (tran.UOM == "PRTION")
{
totalPortions = totalPortions + tranExt.UsrPoundsUsed.Value;
}
if (tran.UOM == "LB")
{
totalLBs = totalLBs + tranExt.UsrPoundsUsed.Value;
}
}
}
return totalPortions - totalLBs;
}
private void CalculatePercentOfWIP()
{
decimal totalLBSProduced = CalculatetotalLBSProduced();
Base.Document.Cache.SetValueExt<INKitRegisterExt.usrLBSProduced>(Base.Document.Current,totalLBSProduced);
foreach (INComponentTran tran in Base.Components.Select())
{
decimal percentOfWIP = 0M;
Base.Components.Current = tran;
INTranExt tranExt = tran.GetExtension<INTranExt>();
if (tran.UOM == "PRTION")
{
decimal? poundsUsed = tran.GetExtension<INTranExt>().UsrPoundsUsed.GetValueOrDefault();
if (totalLBSProduced != 0 && poundsUsed.HasValue && poundsUsed.Value !=0)
{
percentOfWIP = (poundsUsed.Value / totalLBSProduced) * 100;
}
}
Base.Components.Cache.SetValueExt<INTranExt.usrPercentOfWIP>(tran,percentOfWIP);
}
}
protected void INComponentTran_UsrPoundsUsed_FieldUpdated(PXCache cache,PXFieldUpdatedEventArgs e,PXFieldUpdated InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(cache,e);
var row = (INComponentTran)e.Row;
if (row == null) return;
CalculatetotalLBSProduced();
CalculatePercentOfWIP();
}
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。