You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将服务管理销售订单状态与单号同步至服务订单自定义字段

服务订单与生成销售订单的字段同步实现方案

核心思路

在创建销售订单的动作执行完成后,获取生成的销售订单数据,再同步更新对应服务订单明细行的自定义字段。以下是具体实现步骤和代码示例:


1. 定位创建销售订单的触发逻辑

找到服务订单页面中「CREATE SALES ORDER」按钮对应的动作(Action),通常是在ServiceOrderEntry图中的自定义或原生动作。我们需要通过重写该动作来添加同步逻辑。

2. 实现同步逻辑的代码示例

在ServiceOrderEntry的扩展类中,重写创建销售订单的方法,完成字段同步:

public class ServiceOrderEntry_Extension : PXGraphExtension<ServiceOrderEntry>
{
    // 重写创建销售订单的动作
    public delegate void CreateSalesOrderDelegate();
    [PXOverride]
    public void CreateSalesOrder(CreateSalesOrderDelegate baseMethod)
    {
        // 先执行原生的创建销售订单逻辑
        baseMethod();

        // 获取当前服务订单记录
        ServiceOrder currentServiceOrder = Base.ServiceOrder.Current;
        if (currentServiceOrder == null) return;

        // 根据关联关系获取刚生成的销售订单
        // 注:需确保创建销售订单时,已将服务订单号关联到SalesOrder的对应字段(如RefNbr或自定义关联字段)
        SalesOrder createdSO = PXSelect<SalesOrder,
            Where<SalesOrder.refNbr, Equal<Current<ServiceOrder.nbr>>>>.Select(Base);
        
        if (createdSO == null) return;

        // 遍历服务订单明细行,更新指定自定义字段
        foreach (ServiceOrderDetail detail in Base.ServiceOrderDetails.Select())
        {
            // 仅更新「Mark for SO」激活的行(假设标识字段为UsrMarkForSO)
            if (detail.UsrMarkForSO == true)
            {
                ServiceOrderDetail updatedDetail = Base.ServiceOrderDetails.Update(detail);
                updatedDetail.UsrSONumber = createdSO.OrderNbr;
                updatedDetail.UsrSOStatus = createdSO.Status;
                Base.ServiceOrderDetails.Update(updatedDetail);
            }
        }

        // 保存服务订单的更新内容
        Base.Save.Press();
    }
}

3. 关键注意事项

  • 关联关系验证:确保创建销售订单时,已将服务订单号绑定到销售订单的RefNbr或自定义关联字段,否则无法准确匹配到刚生成的销售订单。
  • 权限控制:确认执行该逻辑的用户拥有服务订单明细的修改权限,避免因权限不足导致同步失败。
  • 异常处理:可添加try-catch块捕获异常,保证创建销售订单成功后,服务订单的更新操作能稳定执行,避免数据不一致。
  • 测试验证:在测试环境先验证逻辑,确认仅目标明细行被更新,且字段值同步准确。

内容的提问来源于stack exchange,提问作者DevFuture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:38:26