Acumatica:从约会更新服务订单

问题描述 投票:0回答:1

我需要自定义约会屏幕,以便如果用户在约会中选择了计费复选框,它将更新原始服务订单。我能够使它与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
1个回答
0
投票

我能够使用soGraph.ServiceOrderRecords.Cache.RaiseFieldUpdated(soDetRow,null);]使其工作。

© www.soinside.com 2019 - 2024. All rights reserved.