【发布时间】:2020-04-23 09:50:01
【问题描述】:
我需要自定义约会屏幕,这样如果用户在约会上选择了可计费复选框,它将更新原始服务订单。我能够让它与 PXUpdate 一起工作,但这并没有执行任何更新文档总计和税金的服务订单图逻辑。我需要更新服务订单上的 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();
}
}
}
【问题讨论】:
标签: acumatica