I have added a custom field in SOPickingWorksheetShipment DACExtension which stores how many times action to print pick list in screen (SO302500) Picking Worksheets.
Not able to save my values to the DB.
DACExtension
#region UsrPickListPrintCount
[PXDBInt]
[PXUIField(DisplayName="Pick List Print Count")]
public virtual int? UsrPickListPrintCount { get; set; }
public abstract class usrPickListPrintCount : PX.Data.BQL.BqlInt.Field<usrPickListPrintCount> { }
#endregion
GraphExtension
public class SOPickingWorksheetReview_Extension : PXGraphExtension<PX.Objects.SO.SOPickingWorksheetReview>
{
#region Actions
[PXButton(IsLockedOnToolbar = true), PXUIField(DisplayName = "Print Pick Lists")]
public virtual IEnumerable printPickList(PXAdapter a)
{
SOPickingWorksheetReview graph = PXGraph.CreateInstance<SOPickingWorksheetReview>();
SOPickingWorksheet row = Base.worksheet.Current;
SOPickingWorksheetShipment worksheetShipment = Base.shipmentLinks.Current;
SOPickingWorksheetShipmentExt worksheetShipmentExt = worksheetShipment.GetExtension<SOPickingWorksheetShipmentExt>();
if (worksheetShipmentExt.UsrPickListPrintCount >= 2)
{
if (Base.worksheet.Ask("Do you want to reprint this pick list?", MessageButtons.OKCancel)
!= WebDialogResult.OK) return a.Get();
}
//update print count
worksheetShipmentExt.UsrPickListPrintCount = worksheetShipmentExt.UsrPickListPrintCount ?? 0;
worksheetShipmentExt.UsrPickListPrintCount = worksheetShipmentExt.UsrPickListPrintCount + 1;
graph.shipmentLinks.Cache.SetValueExt<SOPickingWorksheetShipmentExt.usrPickListPrintCount>(worksheetShipment, worksheetShipmentExt.UsrPickListPrintCount);
graph.shipmentLinks.Update(worksheetShipment);
Base.Save.Press();
return Base.printPickList(a);
}
public PXAction<SOPickingWorksheet> PrintPickList;
#endregion
}
Best answer by Naveen Boga
View original