函数更新系统预置的订单子表单

函数更新系统预置的订单子表单

1、需求描述:销售订单明细行中的价格,需要从价格库中自动带出。
2、实现难点:系统预置的4个订单模块 - 报价单、销售订单、发货单和采购订单,当需要用函数更新子表单时,需要使用接口方式更新。
3、实现方案:函数样例如下

//定义集合
ss = list();
//获取销售订单信息
SO = zoho.crm.getRecordById("Sales_Orders",id);
//销售订单主题
sub = SO.get("Subject");
//客户名称
accid = SO.get("Account_Name").get("id");
//获取子表单信息
Product_Details = SO.get("Product_Details");
for each  pd in Product_Details
{
mpd = Map();
//只需要把子表单中的id放入,就可以指定更新子表单中的某些字段,而不需要把子表单中的所有字段都处理一遍
mpd.put("id",pd.get("id"));
pn = pd.get("product").get("name");
//用客户名称和产品名称搜索价格库,匹配价格
jgks = zoho.crm.searchRecords("CustomModule10","((Account_Name:equals:" + accid + ") and (Product_Name:equals:" + pn + "))",1,200);
for each  jgk in jgks
{
//销售价格
proPrice = ifnull(jgk.get("Price"),0);
//带入销售订单价格
mpd.put("List_Price",proPrice);
}
ss.add(mpd);
}
//封装数据
data1 = Map();
data1.put("id",id);
data1.put("Subject",sub);
data1.put("Account_Name",accid);
data1.put("Ordered_Items",ss);
datalist = List();
datalist.add(data1);
//放入参数
param = Map();
param.put("data",datalist);
//调用接口和连接器更新
response = invokeurl
[
type :PUT
parameters:param.toString()
connection:"crm"
];
info response;

附:连接器服务范围如下截图