@Naveen Boga thank you for you support. Using this DefaultUnitCost method its working as expected.
protected virtual void DefaultUnitCost(PXCache sender, TSProdMTran row)
{
object UnitCost;
sender.RaiseFieldDefaulting<TSProdMTran.unitCost>(row, out UnitCost);
if (UnitCost != null && (decimal)UnitCost != 0m)
{
decimal? unitcost = INUnitAttribute.ConvertToBase<TSProdMTran.inventoryID>(sender, row, row.UOM, (decimal)UnitCost, INPrecision.UNITCOST);
sender.SetValueExt<TSProdMTran.unitCost>(row, unitcost);
decimal? extcost = row.IssueQty * row.UnitCost;
sender.SetValueExt<TSProdMTran.extCost>(row, extcost);
}
Below code is changing the decimal precision as set in the company screen using Price?cost decimal field.
decimal? unitcost = INUnitAttribute.ConvertToBase<TSProdMTran.inventoryID>(sender, row, row.UOM, (decimal)UnitCost, INPrecision.UNITCOST);