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();
}
}
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter