无法将扩展字段设置为新创建的对象的Ref Nbr

时间:2018-04-23 19:25:34

标签: acumatica

在现金销售页面上,我将覆盖发布按钮,为正在创建的记录创建第二个日记帐交易,该记录将根据屏幕上的某些信息调整现金帐户。我的进程运行正常,成功创建了新的日记帐事务,但是当它在现金销售页面上设置扩展字段然后执行发布按钮的基本操作时,我收到一条错误消息,说明:

  

错误:处理现场基金批次值GLHW016312错误:基金批次' GLHW016312'在系统中找不到。

执行该过程的代码如下:

public delegate IEnumerable ReleaseDelegate(PXAdapter adapter);
[PXOverride]
public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
{
    //Journal Transaction uses batch number
    if (Base.CurrentDocument.Current.ExtRefNbr != null && Base.CurrentDocument.Current.ExtRefNbr != string.Empty)
    {
        if (GLSetup.Current.GetExtension<GLSetupExt>().UsrCreateFundEntry == true)
        {
            if (CFBSAdjustments.Select().Count > 0)
            {
                Customer customer = PXSelect<Customer, Where<Customer.bAccountID, Equal<Current<Customer.bAccountID>>>>.Select(Base);
                JournalEntry graph = PXGraph.CreateInstance<JournalEntry>();
                Batch batch = graph.BatchModule.Insert();
                batch.Description = "Fund Entry for Cash Sales Reference " + Base.CurrentDocument.Current.RefNbr;
                decimal? debit = 0;
                decimal? credit = 0;
                foreach (CFBSCashSalesAdjustment row in CFBSAdjustments.Select())
                {
                    GLTran tran = graph.GLTranModuleBatNbr.Insert();
                    tran.AccountID = row.Account;
                    tran.SubID = row.Subaccount;
                    tran.DebitAmt = row.DebitAmt;
                    tran.CuryDebitAmt = row.DebitAmt;
                    debit += row.DebitAmt;
                    tran.CreditAmt = row.CreditAmt;
                    tran.CuryCreditAmt = row.CreditAmt;
                    credit += row.CreditAmt;
                    tran.RefNbr = row.CashSalesRefNbr;
                    tran.TranDesc = customer.AcctCD + " - " + customer.AcctName;
                    graph.GLTranModuleBatNbr.Update(tran);
                }

                batch.CreditTotal = credit;
                batch.CuryCreditTotal = credit;
                batch.DebitTotal = debit;
                batch.CuryDebitTotal = debit;
                batch = graph.BatchModule.Update(batch);
                graph.Actions.PressSave();

                if (GLSetup.Current.GetExtension<GLSetupExt>().UsrAutoRelease == true)
                {
                    graph.BatchModule.Current.Hold = false;
                    graph.release.Press();
                }

                Base.Document.Current.GetExtension<ARRegisterExt>().UsrFundBatch = batch.BatchNbr;
                Base.Actions.PressSave();
            }
        }
    }
    return baseMethod(adapter);
}

调试后,我发现在返回baseMethod(适配器)行期间发生错误。

奇怪的是,如果我在错误上单击“确定”并再次单击“释放”,它将完成正常,没有任何错误,创建两个记录,并将自定义记录设置为扩展字段。 / p>

首次发布,错误:

enter image description here

第二次发布,成功添加了参考标题的参考链接:

enter image description here

从图片中可以看出,日记帐分录成功创建时的批次编号与错误不同。它确实创造了两次记录。

对于扩展字段,我将其设置为选择器,Enabled = false,Allow Edit = true以生成链接。

1 个答案:

答案 0 :(得分:1)

如果用户从未直接填充您的扩展程序字段,您可能只是尝试删除选择器。或者尝试在选择器中指定ValidateValue = false