Добрый день
У меня есть новое поле в расширении CROpportunity под названием usrGrossProfit. Во время RowSelected CROpportunity он вычисляет значения по мере необходимости. Проблема, с которой я столкнулся, заключается в том, что пользователи используют кнопку создания цитаты в форме и из-за этого никогда не сохраняет с помощью кнопки сохранения. Система делает это за них. Я обнаружил, что из-за этого значение usrGrossProfit не сохраняется.
Есть ли способ принудительно сохранить / сохранить внутри функции RowSelected?
protected void CROpportunity_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
try
{
var row = (CROpportunity)e.Row;
if (row == null) return;
CROpportunityExt SOE = PXCache<CROpportunity>.GetExtension<CROpportunityExt>(row);
int total = 0;
decimal TotalSales = 0;
decimal TotalCost = 0;
foreach (CROpportunityProducts item in this.Base.Products.Select())
{
total++;
CROpportunityProductsExt2 itemExt = PXCache<CROpportunityProducts>.GetExtension<CROpportunityProductsExt2>(item);
TotalCost += (decimal)itemExt.UsrCostPrice.Value * item.Qty.Value;
TotalSales += (decimal)itemExt.UsrSellingprice * item.Qty.Value;
}
SOE.UsrGrossProfit = TotalSales - TotalCost;
// I added this just to try and see if it helps
cache.SetValueExt<CROpportunityExt.usrGrossProfit>(row, (decimal)(TotalSales - TotalCost));
// we are not allowed to press the save button in the event Handler
//this.Base.Save.Press();
}
catch (Exception ex)
{
PXTrace.WriteError(ex);
}
}
Я также пытался переопределить функцию CreateQuote, но это не работает
public delegate IEnumerable CreateQuoteDelegate(PXAdapter adapter);
[PXOverride]
public IEnumerable CreateQuote(PXAdapter adapter, CreateQuoteDelegate baseMethod)
{
this.Base.Persist();
return baseMethod(adapter);
}
Я также организовал бизнес-мероприятие, чтобы открыть и сохранить возможность, тоже безуспешно.