保存更新记录时,INTranSplit日期变为空值

时间:2017-06-14 14:50:49

标签: acumatica

我正在尝试设置我在INTranSplit表中创建的自定义字段。我获取目标记录,设置自定义字段,更新保存页面记录的视图,并执行PressSave()。在保存期间的某个时刻,代码将INTranSplit.TranDate设置为null并抛出异常。

这是我的代码:

    public PXAction<EMPWorkOrder> addSerialNbr;
    [PXUIField(DisplayName = "Add Serial Number")]
    protected void AddSerialNbr()
    {
        AvailableSNFilter serialNbrRow = AvailableSNs.Current;

        if (serialNbrRow.AvailableSNs != null)
        {
            //Gets record from DAC created from a SQL View
            GetAvailableSerialNumbers targetSN = (GetAvailableSerialNumbers)PXSelectorAttribute.Select<AvailableSNFilter.availableSNs>(AvailableSNs.Cache, serialNbrRow);

            //Fetches the INTranSplit record
            INTranSplit tran = PXSelect<INTranSplit, Where<INTranSplit.refNbr, Equal<Required<GetAvailableSerialNumbers.refNbr>>, And<INTranSplit.lotSerialNbr,
                Equal<Required<GetAvailableSerialNumbers.lotSerialNbr>>, And<INTranSplit.inventoryID, Equal<Required<GetAvailableSerialNumbers.inventoryID>>
                ,And<INTranSplit.lotSerialNbr, NotEqual<Required<INTranSplit.lotSerialNbr>>>>>>>
                .Select(this, targetSN.RefNbr, targetSN.LotSerialNbr, targetSN.InventoryID, string.Empty);//, targetSN.SplitLineNbr);

            INTranSplitExt tranExt = PXCache<INTranSplit>.GetExtension<INTranSplitExt>(tran);

            //Sets the custom field
            tranExt.UsrWOID = CurrentDocument.Current.Id;

            WorkOrderSerialNumbers.Update(tran);

            serialNbrRow.AvailableSNs = string.Empty;

            AvailableSNs.Update(serialNbrRow);

            this.Actions.PressSave();
        }
        else
        {
            Document.Ask("AvailableSN Null", MessageButtons.OK);
        }
    }

我得到的错误是:

  

错误#14:更新“IN Transaction Split”记录引发至少一个错误。请检查错误。

     

错误:'交易日期'不能为空。

我逐步完成了整个过程,发现在代码进入PressSave()函数之前,TranDate不为空。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

确保包含父视图并设置INRegister和INTran的当前值,因为INTranSplit中的TranDate基于INRegister。