Мне нужно настроить экран «Встреча», чтобы в случае, если пользователь установит флажок «Оплачиваемый» на встрече, он обновит исходный заказ на обслуживание. Мне удалось заставить это работать с PXUpdate, но это не помогло ни одному из графиков сервисных заказов logi c, который обновляет итоги документа и налоги. Мне нужно обновить флажок IsBillable в сервисном заказе, но он также должен запускать события ServiceOrderEntry. У меня есть следующий код, который проходит через, но не обновляет заказ на обслуживание. Я в недоумении. Любая помощь приветствуется!
protected void FSAppointmentDetPart_RowPersisted(PXCache cache, PXRowPersistedEventArgs e)
{
var aptRow = e.Row as FSAppointmentDetPart;
if (aptRow == null) return;
var soGraph = PXGraph.CreateInstance<ServiceOrderEntry>();
FSSODet soDetRow = PXSelect<FSSODet, Where<FSSODet.sODetID, Equal<Required<FSSODet.sODetID>>>>.Select(soGraph, aptRow.SODetID);
if (soDetRow == null) return;
soGraph.Caches<FSSODet>().Current = soDetRow;
FSServiceOrder serviceOrderRow = soGraph.ServiceOrderRecords.Current = soGraph.ServiceOrderRecords
.Search<FSServiceOrder.refNbr>(soDetRow.RefNbr, soDetRow.SrvOrdType);
if (serviceOrderRow == null) return;
if (soDetRow is FSSODetPart)
{
if (e.Operation == PXDBOperation.Delete)
{
soGraph.ServiceOrderDetParts.Delete(soDetRow as FSSODetPart);
}
else if (e.Operation == PXDBOperation.Update)
{
bool? isBillable = aptRow.IsBillable;
soDetRow.IsBillable = aptRow.IsBillable;
soGraph.Caches<FSSODet>().SetValueExt<FSSODet.isBillable>(soGraph, isBillable);
decimal? estimatedQty = aptRow.EstimatedQty;
soDetRow.EstimatedQty = aptRow.EstimatedQty;
soGraph.Caches<FSSODet>().SetValueExt<FSSODet.estimatedQty>(soGraph, estimatedQty);
soGraph.ServiceOrderDetParts.Cache.Update(soDetRow);
soGraph.ServiceOrderRecords.Cache.Update(serviceOrderRow);
soGraph.Actions.PressSave();
}
}
}