如何通过 BLC 代码在员工考勤卡中添加一行?

问题描述 投票:0回答:1

我有代码,当按下“+”按钮时,使用 RowInserted 事件更新“员工考勤卡”屏幕 (EP305000)“详细信息”部分新添加的网格行中的特定字段。问题是,代码更新这些字段后,我可以在 UI 中看到它们已更新 - 但是当我点击保存按钮时,该行消失 - 就好像它没有被识别为被添加一样。

是否必须设置脏标志才能识别该附加行?如果我手动更新这些字段之一,它就会识别并添加它。

如果纯粹通过 BLC 代码添加,是否需要添加一些内容,例如设置“脏标志”以使用此插入行更新网格?

代码:

protected void EPTimecardDetail_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
    {
        string day = null;
        DateTime? date = null;
        DateTime? startDate = null;
        DateTime? endDate = null;
        int? project = null;
        int? task = null;

        if (isCreateCorrectionFlag == false)
        {
            
            //Get the last row's data...
            foreach (EPTimecardDetail tca in Base.Activities.Select())
            {
                if (tca.ProjectID == null) break;  //This is to make sure the variables have the last valid row's data and not the newly inserted row's data
                day = tca.Day;
                date = tca.Date;
                project = tca.ProjectID;
                task = tca.ProjectTaskID;

                var tcae = PXCache<PMTimeActivity>.GetExtension<PMTimeActivityExt>(tca);
                startDate = tcae.UsrStartDate;
                endDate = tcae.UsrEndDate;
            }



            //var tcd = (PMTimeActivity)e.Row;
            var tcd = (EPTimecardDetail)e.Row;
            if (tcd == null) return;

            tcd.Date = date;
            tcd.Day = day;

            var tcde = PXCache<PMTimeActivity>.GetExtension<PMTimeActivityExt>(tcd);
            tcde.UsrStartDate = startDate; //tcd.Date;
            tcde.UsrEndDate = endDate; //tcd.Date;
            tcd.TimeSpent = CalcTimeWorked(tcde);

            tcd.ProjectID = project;
            tcd.ProjectTaskID = task;
            tcd.Summary = "=====";

        }
        //row.BillableTimeCalc = CalcTimeWorked(row);
    }
acumatica acumatica-kb
1个回答
0
投票

我的猜测是,您的行在保存期间未通过对销售订单行执行的某些验证。在销售订单行级别执行大量验证以确定定价、库存检查等。

© www.soinside.com 2019 - 2024. All rights reserved.