创建调整时释放时出现 TX 错误

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

我正在开具收据期间进行调整。

public void CreateAdjustment()
        {

            try
            {
                INAdjustmentEntry iNAdjustmentEntryEntry = PXGraph.CreateInstance<INAdjustmentEntry>();
                INRegister iNRegister = new INRegister();

                iNRegister = iNAdjustmentEntryEntry.adjustment.Insert();
                iNRegister.Status = INDocStatus.Balanced;
                iNRegister.ExtRefNbr = Base.CurrentDocument.Current.ExtRefNbr == null ? " " : Base.CurrentDocument.Current.ExtRefNbr;
                iNRegister.TranDesc = Base.CurrentDocument.Current.TranDesc == null ? " " : Base.CurrentDocument.Current.TranDesc;
                iNRegister.Hold = false;

                INSetup iNSetup = PXSelect<INSetup>.Select(Base);
                INSetupExt iNSetupExt = iNSetup.GetExtension<INSetupExt>();

                iNRegister = iNAdjustmentEntryEntry.adjustment.Update(iNRegister);
                iNAdjustmentEntryEntry.adjustment.Current = iNRegister;

                iNAdjustmentEntryEntry.adjustment.SetValueExt<INRegisterExt.usrReasonCode>(iNRegister, iNSetupExt.UsrAutoGenAdjustmentFromAdjustments);
                // iNAdjustmentEntryEntry.Save.PressButton();

                foreach (INTran item in Base.transactions.Select())
                {
                    INTran iNTran = iNAdjustmentEntryEntry.transactions.Insert();

                    iNTran.InventoryID = item.InventoryID;

                    iNTran.ReasonCode = iNSetupExt.UsrAutoGenAdjustmentFromAdjustments;
                    iNTran.LocationID = item.LocationID;
                    iNTran.SiteID = item.SiteID;

                    iNTran.Qty = 0;
                    var rowExt = Base.transactions.Cache.GetExtension<INTranExt>(item);
                    if (rowExt.UsrNewUnitCost == null)
                    {
                        rowExt.UsrNewUnitCost = 0;
                    }

                    iNTran.TranCost = item.Qty * (rowExt.UsrNewUnitCost - item.UnitCost);
                    iNTran.UnitCost = item.UnitCost;

                    iNAdjustmentEntryEntry.transactions.Update(iNTran);
                }

                iNAdjustmentEntryEntry.Save.PressButton();
                iNAdjustmentEntryEntry.release.PressButton();
                         
            }
            catch (Exception ex)
            {

                PXTrace.WriteError("JVD2StepTransfersWithExtraAdjustments CreateAdjustment: " + ex.Message);
            }
        }

保存有效,但当我最后按下释放按钮时,出现以下错误:

我认为该文档需要进行后台处理,以便它知道其处于平衡状态,但我不知道该怎么做。

acumatica
1个回答
0
投票

我不会手动设置工作流程状态。我过去已经很好地插入了 IAdjustments。你的代码和我的代码之间的区别在于我完成了文档,然后将其从保留状态中删除,保存并释放。

//insert document and lines
register.Hold = false;
register = adjGraph.adjustment.Update(register);
adjGraph.Save.Press();
adjGraph.release.Press();
© www.soinside.com 2019 - 2024. All rights reserved.