创建IN调整单执行Release时触发TX错误的技术求助
收货单释放流程中创建IN调整单后释放触发TX错误求助
我在收货单释放流程内创建IN调整单,编写了CreateAdjustment()方法代码如下。代码中的保存操作可正常执行,但调用release.PressButton()释放调整单时出现TX错误(见下方截图)。我推测文档需要后台处理以确认处于平衡状态,但不清楚具体实现方式,特此求助。
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); } }
错误截图:
内容的提问来源于stack exchange,提问作者JvD
相关产品推荐
相关产品推荐

