微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更新网格上所有行的字段

如何解决更新网格上所有行的字段

当行上的字段值更新时,我正在重新计算每行的百分比值。我为 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 举报,一经查实,本站将立刻删除。