I need to maintain existing unit price when recalculate the price in sales order screen.
I created a table to maintain the price History.
table name - XXSOPriceHistory
SOOrderEntry extension query
public PXAction<SOOrder> recalculateDiscountsAction;
[PXUIField(DisplayName = "Recalculate Prices", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
[PXButton(CommitChanges = true, DisplayOnMainToolbar = false)]
public virtual IEnumerable RecalculateDiscountsAction(PXAdapter adapter)
{
SOOrder order = Base.Document.Current;
order.OrderDesc = "Testing1";
XXSOPriceHistoryEntry sOPriceEntry = PXGraph.CreateInstance<XXSOPriceHistoryEntry>();
XXSOPriceHistory toBeInserted = new XXSOPriceHistory();
toBeInserted.LineNbr=1;
toBeInserted.OrderNbr="SO1000";
toBeInserted.InventoryID = 1435;
toBeInserted = XXSOPriceHistoryData.Insert(toBeInserted);
//sOPriceEntry.Save.Press();
return Base.RecalculateDiscountsAction(adapter);
}
When Click the recalculate button in sales order screen and click save , Same record add twice into the XXSOPriceHistory DAC.
Data Access query
#region TranID
[PXDBIdentity(IsKey = true)]
[PXUIField(DisplayName = "Tran ID")]
public virtual int? TranID { get; set; }
public abstract class tranID : PX.Data.BQL.BqlInt.Field<tranID> { }
#endregion
#region LineNbr
[PXDBInt()]
[PXUIField(DisplayName = "Line Nbr")]
public virtual int? LineNbr { get; set; }
public abstract class lineNbr : PX.Data.BQL.BqlInt.Field<lineNbr> { }
#endregion
#region OrderNbr
[PXDBString(15, IsUnicode = true, InputMask = "")]
[PXUIField(DisplayName = "Order Nbr")]
public virtual string OrderNbr { get; set; }
public abstract class orderNbr : PX.Data.BQL.BqlString.Field<orderNbr> { }
#endregion
#region OrderDate
[PXDBDate()]
[PXUIField(DisplayName = "Order Date")]
public virtual DateTime? OrderDate { get; set; }
public abstract class orderDate : PX.Data.BQL.BqlDateTime.Field<orderDate> { }
#endregion
#region InventoryID
[PXDBInt()]
[PXUIField(DisplayName = "Inventory ID")]
public virtual int? InventoryID { get; set; }
public abstract class inventoryID : PX.Data.BQL.BqlInt.Field<inventoryID> { }
#endregion
Can I know why this happen and how to resolve it.