Button that creates a new DataEntry and updates the current DataEntry with forwarding to new DataEntry
Wed Jan 15 2025 08:56:48 GMT+0000 (Coordinated Universal Time)
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using CustomMethodLibrary; using group24.PT.Objects.IN; using PX.Common; using PX.Data; using PX.Data.BQL; using PX.Data.BQL.Fluent; using PX.Objects; using PX.Objects.CM; using PX.Objects.Common.Extensions; using PX.Objects.CS; using PX.Objects.GL; using PX.Objects.IN; namespace PX.Objects.IN { public class GRR_INReceiptEntry : PXGraphExtension<PX.Objects.IN.INReceiptEntry> { public PXAction<INRegister> usrNullifyReceipt; [PXButton] [PXUIField(DisplayName = "Wareneingang annullieren")] protected void UsrNullifyReceipt() { INRegister register = Base.receipt.Current; if (register == null) return; PXLongOperation.StartOperation(Base, () => { INReceiptEntry longGraph = PXGraph.CreateInstance<INReceiptEntry>(); PXCache longCache = longGraph.receipt.Cache; TraceMessageCollector tmsg = new TraceMessageCollector(); try { tmsg.AddMsg(false, $"Start GRR_INReceiptEntry.UsrNullifyReceipt"); INRegister adjustment = methods.CreateStockAdjustment(longGraph, longCache, register, tmsg); if (adjustment == null) { tmsg.AddMsg(true, "Adjustment creation returned null. Exiting operation."); return; } tmsg.AddMsg(false, $"Stock adjustment created with RefNbr: {adjustment.RefNbr}"); var registerExt_GRR = register.GetExtension<INRegisterExt_GRR>(); var registerExt_GRA = register.GetExtension<INRegisterExt_GRA>(); registerExt_GRR.UsrINRegisterAdjustmentNbr = adjustment.RefNbr; longCache.SetValueExt<INRegisterExt_GRR.usrINRegisterAdjustmentNbr>(register, adjustment.RefNbr); longCache.Update(register); tmsg.AddMsg(false, "Updated INRegister extension with adjustment number."); var adjustmentExt_GRR = adjustment.GetExtension<INRegisterExt_GRR>(); var adjustmentExt_GRA = adjustment.GetExtension<INRegisterExt_GRA>(); adjustmentExt_GRR.UsrINRegisterOriginAdjustment = register.RefNbr; longCache.SetValueExt<INRegisterExt_GRR.usrINRegisterOriginAdjustment>(adjustment, register.RefNbr); adjustmentExt_GRA.UsrOrderNbr = registerExt_GRA.UsrOrderNbr; longCache.SetValueExt<INRegisterExt_GRA.usrOrderNbr>(adjustment, registerExt_GRA.UsrOrderNbr); longCache.Update(adjustment); tmsg.AddMsg(false, "Updated adjustment extensions with register details."); longCache.Persist(PXDBOperation.Update); tmsg.AddMsg(false, $"Adjustment {adjustment.RefNbr} saved successfully."); INAdjustmentEntry adjustmentEntryGraph = methods.AddStockAdjustmentLines(longGraph, longCache, register, adjustment, tmsg); if (adjustmentEntryGraph == null) return; adjustmentEntryGraph.SelectTimeStamp(); adjustmentEntryGraph.Persist(); throw new PXRedirectRequiredException(adjustmentEntryGraph, false, "IN Register"){Mode = PXBaseRedirectException.WindowMode.Same}; } catch (Exception ex) { tmsg.AddMsg(false, $"Error in GRR_INReceiptEntry.UsrNullifyReceipt: {ex.Message}"); throw; } finally { tmsg.AddMsg(true, $"End GRR_INReceiptEntry.UsrNullifyReceipt"); } }); } protected void INRegister_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { var register = (INRegister)e.Row; INRegisterExt_GRR registerExt_GRR = register.GetExtension<INRegisterExt_GRR>(); INRegisterExt_GRA registerExt_GRA = register.GetExtension<INRegisterExt_GRA>(); bool isNotNullified = (registerExt_GRR.UsrINRegisterAdjustmentNbr == null); usrNullifyReceipt.SetEnabled(isNotNullified); } private TraceMessageCollector tmsg; private GRR_INReceipt_Methods methods; public override void Initialize() { base.Initialize(); tmsg = new TraceMessageCollector(); methods = new GRR_INReceipt_Methods(); } } }
Comments