函数 - 示例
函数通过执行简单的程序脚本,可帮助您更新相关 CRM 模块或第三方应用程序中的数据。利用函数,您可以使用 Deluge 编写脚本(由 Zoho Creator 提供支持)、将它们关联到工作流规则以及使业务流程自动化。下面列出了一些最有用的函数。
按钮类型函数
将线索转换为其他模块中的记录。
函数类型:按钮
函数描述:您只需点击按钮,即可将线索转换为其他模块(例如“客户”、“联系人”、“商机”等)的记录。
如何让它工作:
按钮位置:该按钮必须放置在“线索”模块的视图页面中。
参数映射:要配置该操作,请执行以下步骤:- 点击设置 > 定制 > 模块 > 线索 > 链接和按钮 > + 创建新的按钮。
- 输入按钮名称,选择视图页面,然后选择编写函数。
- 输入函数名称,然后点击自由流脚本编写。
- 复制下面给出的代码。
- 点击编辑参数。
- 输入“leadId”作为名称,并选择“线索 ID”作为值。
- 点击 +添加参数,并输入“Authtoken”作为名称。
- 点击“指定自定义值”,并在框中输入 CRM Authtoken。
- 点击完成。
- 检查代码脚本,并点击保存。
- 在创建您的按钮页面,点击保存。
注
如果您不想在转换线索记录后将其删除,请注释脚本的最后一行。
脚本:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Leads", leadIdLong);
first = ifnull(leadDetails.get("First Name"),"");
last = ifnull(leadDetails.get("Last Name"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Account Name"), ifnull(leadDetails.get("Company"),""));
AcccountMap.put("Annual Revenue", ifnull(leadDetails.get("Annual Revenue"),""));
AcccountMap.put("Billing City", ifnull(leadDetails.get("City"),""));
AcccountMap.put("Billing Country", ifnull(leadDetails.get("Country"),""));
AcccountMap.put("Description", ifnull(leadDetails.get("Description"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Industry", ifnull(leadDetails.get("Industry"),""));
AcccountMap.put("Employees", ifnull(leadDetails.get("No of Employees"),""));
AcccountMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
AcccountMap.put("Rating", ifnull(leadDetails.get("Rating"),""));
AcccountMap.put("Billing State", ifnull(leadDetails.get("State"),""));
AcccountMap.put("Billing Street", ifnull(leadDetails.get("Street"),""));
AcccountMap.put("Billing Code", ifnull(leadDetails.get("Zip Code"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Accounts"), AcccountMap);
newaccountId = AccountCreate.get("Id");
ContactMap = map();
ContactMap.put("First Name", ifnull(leadDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(leadDetails.get("Last Name"),""));
ContactMap.put("Mailing City", ifnull(leadDetails.get("City"),""));
ContactMap.put("Mailing Country", ifnull(leadDetails.get("Country"),""));
ContactMap.put("Mailing State", ifnull(leadDetails.get("State"),""));
ContactMap.put("Mailing Street", ifnull(leadDetails.get("Street"),""));
ContactMap.put("Mailing Zip", ifnull(leadDetails.get("Zip Code"),""));
ContactMap.put("Description", ifnull(leadDetails.get("Description"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Title", ifnull(leadDetails.get("Title"),""));
ContactMap.put("Email", ifnull(leadDetails.get("Email"),""));
ContactMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
ContactMap.put("Mobile", ifnull(leadDetails.get("Mobile"),""));
ContactMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
ContactMap.put("Secondary Email", ifnull(leadDetails.get("Secondary Email"),""));
ContactMap.put("Skype ID", ifnull(leadDetails.get("Skype ID"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contacts", ContactMap);
newcontactId = ContactCreate.get("Id");
PotentialMap = map();
PotentialMap.put("Potential Name", name);
PotentialMap.put("City", ifnull(leadDetails.get("City"),""));
PotentialMap.put("Country", ifnull(leadDetails.get("Country"),""));
PotentialMap.put("State", ifnull(leadDetails.get("State"),""));
PotentialMap.put("Street", ifnull(leadDetails.get("Street"),""));
PotentialMap.put("Zipcode", ifnull(leadDetails.get("Zip Code"),""));
PotentialMap.put("Description", ifnull(leadDetails.get("Description"),""));
PotentialMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
PotentialMap.put("ACCOUNTID",newaccountId );
PotentialMap.put("CONTACTID",newcontactId );
PotentialCreate = zoho.crm.create("Potentials", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId);
return "Lead converted successfully";根据采购订单创建发票。
函数类型:按钮
函数描述:只需触摸按钮,即生成采购订单的发票。就那么简单!
如何让它工作:
按钮位置:该按钮必须放置在“采购订单”模块的视图页面中。
参数映射:要配置该操作,请执行以下步骤:- 点击设置 > 定制 > 模块 > 采购订单 > 链接和按钮 > + 创建新的按钮。
- 输入按钮名称,选择视图页面,然后选择编写函数。
- 输入函数名称,然后点击自由流脚本编写。
- 复制下面给出的代码。
- 点击编辑参数。
- 输入“poId”作为名称,并选择“采购订单 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
- 在创建您的按钮页面,点击保存。
脚本:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("Invoices", paramap);
return "Invoice created successfully";根据“销售订单”创建采购订单。
函数类型:按钮
函数描述:您可根据“销售订单”中的记录生成采购订单。如果您确定某个交易将会完成,那么这非常有用。
如何让它工作:
按钮位置:该按钮应放置在“销售订单”模块的视图页面中。
参数映射:要配置该操作,请执行以下步骤:- 点击设置 > 定制 > 模块 > 销售订单 > 链接和按钮 > + 创建新的按钮。
- 输入按钮名称,选择视图页面,然后选择编写函数。
- 输入函数名称,然后点击自由流脚本编写。
- 复制下面给出的代码。
- 点击编辑参数。
- 输入“soId”作为名称,并选择“销售订单 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
- 在创建您的按钮页面,点击保存。
脚本:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet=ifnull(respMap.get("product"),"");
productList=productDet.toJSONList();
pdlist=List();
for each eachProd in productList
{
eachProdDet=eachProd.toMap();
productDesc=ifnull(eachProdDet.get("Product Description"),"");
quantity=ifnull(eachProdDet.get("Quantity"),"0");
listPrice=(ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal=(ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount=(ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total=(ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId=ifnull(eachProdDet.get("Product Id"),"");
linetax=(ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp=map();
mp.put("Product Id",productId);
mp.put("Quantity",quantity);
mp.put("List Price",listPrice);
mp.put(("Discount"),linediscount);
mp.put("Total",total);
mp.put("Tax",linetax);
mp.put("Net Total",netTotal);
pdlist.add(mp);
}
paramap=map();
paramap.put("Products",pdlist);
paramap.put("Subject",ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID",ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions",ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description",ifnull(respMap.get("Description"),""));
paramap.put("Tax",(ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment",(ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"),(ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total",(ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total",(ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);
return "Po created successfully";从“线索”或“联系人”模块群发邮件。
函数类型:按钮
函数描述:只需点击按钮,即可从“线索”或“联系人”模块的列表视图页面向多个记录发送邮件。
如何让它工作:
按钮位置:该按钮必须放置在“线索”或“联系人”模块的列表视图页面中。
参数映射:要配置该操作,请执行以下步骤:- 点击设置 > 定制 > 模块 > 线索 > 链接和按钮 > + 创建新的按钮。
- 输入按钮名称,选择列表视图页面,然后选择编写函数。
- 输入函数名称,然后点击自由流脚本编写。
- 复制下面给出的代码。
- 点击编辑参数。
- 输入“leadId”作为名称,并选择“线索 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
- 在创建您的按钮页面,点击保存。
脚本:
leadIdsList = input.leadId.toList("|||");
for each leadIdStr in leadIdsList
{
resp = zoho.crm.getRecordById("Leads", leadIdStr.toLong());
email = ifnull(resp.get("Email"),"");
sendmail
(
To : email
From : zoho.adminuserid
Subject : “Subject of the email"
Message : “This is the message from Function send mail"
)
}
return "LeadID" + input.leadId;更新字段并发送邮件列表视图页面。
函数类型:按钮
函数描述:如果您想要更新多个记录并向它们同时发送邮件,只需要一个按钮即可。当然,还需要此函数。
如何让它工作:
按钮位置:该按钮必须放置在自定义模块的列表视图页面中。
参数映射:要配置该操作,请执行以下步骤:- 点击设置 > 定制 > 模块 > 自定义模块 > 链接和按钮 > + 创建新的按钮。
- 输入按钮名称,选择视图页面,然后选择编写函数。
- 输入函数名称,然后点击自由流脚本编写。
- 复制下面给出的代码。
- 点击编辑参数。
- 输入“custommoduleId”作为名称,并选择“自定义模块 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
- 在创建您的按钮页面,点击保存。
脚本:
IdsList = input.Id.toList("|||");
for each IdStr in IdsList
{
resp = zoho.crm.getRecordById("CustomModule1", IdStr.toLong());
customMap = map();
customMap.put("Record Status", "Approve");
updateResponse = zoho.crm.updateRecord("CustomModule1", IdStr, customMap);
email = ifnull(resp.get("Email"),"");
sendmail
(
To : email
From : zoho.adminuserid
Subject : “Approval Email"
Message : “ )
}
return "Success";
工作流类型函数
计算“报价”中的佣金。
函数类型:工作流
函数描述:“报价”的所有产品产生的总佣金将显示在“报价”页面中。因此,将更容易查看您收到的总佣金,而不必手动计算。
如何让它工作:您必须将此函数关联到适当的工作流规则下,以自动更新“报价”模块中每个产品的总佣金。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择报价。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“quoteId”作为名称,并输入“报价 Id”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
quoteIdStr = input.quoteId.toString();
quoteMap = zoho.crm.getRecordById("Quotes", input.quoteId);
productDet = ifnull(quoteMap.get("product"),"");
productList = productDet.toJSONList();
value = 0.0;
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
qty = (ifnull(eachProdDet.get("Quantity"),"0")).toLong();
productId = ifnull(eachProdDet.get("Product Id"),"");
proDetails = zoho.crm.getRecordById("Products", productId.toLong());
commission = (ifnull(proDetails.get("Commission Rate"),"0.0")).toDecimal();
value = (value + commission * qty);
}
params = map(); params.put("Total Commission", value);
updateResp = zoho.crm.updateRecord("Quotes", quoteIdStr, params);计算产品行项中的税费。
函数类型:工作流
函数描述:您可计算所有产品的税额,并将其显示在“发票”模块中。
如何让它工作:将此函数关联到适当的工作流规则下,以计算“发票”中每个产品的税费。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择发票。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“invoiceId”作为名称,并输入“发票 Id”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
invoiceIdStr = input.invoiceId.toString();
invoiceMap = zoho.crm.getRecordById("Invoices", input.invoiceId);
productDet = ifnull(invoiceMap.get("product"),"");
TotalTax = (ifnull(invoiceMap.get("Tax"),"0.0")).toDecimal();
TotalAdjustment = (ifnull(invoiceMap.get("Adjustment"),"0.0")).toDecimal();
TotalDiscount = (ifnull(invoiceMap.get(("Discount")),"0.0")).toDecimal();
productList = productDet.toJSONList();
sumPrice = 0.0;
price = 0.0;
value = 0.0;
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
discount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
proDetails = zoho.crm.getRecordById("Products", productId.toLong());
Taxvalue = ifnull(proDetails.get("Taxes"),"");
if (Taxvalue == "VAT")
{
value = 12.5;
price = (price + total + 12.5 - discount);
}
else
{
if (Taxvalue == "Surcharge")
{
value = 0.625;
price = (price + total + 0.625 - discount);
}
else
{
value = 12.625;
price = (price + total + 0.625 + 12.5 - discount);
}
}
mp = map();
mp.put("Product Id", productId);
mp.put("Tax", value);
mp.put("Net Total", price);
pdlist.add(mp);
sumPrice = (sumPrice + price.toDecimal());
}
grandPrice = (sumPrice - TotalDiscount + TotalAdjustment + TotalTax);
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Sub Total", sumPrice);
paramap.put("Grand Total", grandPrice);
updateResp = zoho.crm.updateRecord("Invoices", invoiceIdStr, paramap);将线索转换为其他模块中的记录。
函数类型:工作流
函数描述:您可自动将线索转换为其他模块(例如“客户”、“联系人”、“商机”等)的记录。
如何让它工作:将此函数关联到适当的工作流规则下,以自动将线索转换为客户、联系人等。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择线索。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“leadId”作为名称,并输入“线索 ID”作为值。
- 点击 +添加参数,并输入“Authtoken”作为名称。
- 点击“指定自定义值”,并在框中输入 CRM Authtoken。
- 点击完成。
- 检查代码脚本,并点击保存。
注
如果您不想在转换线索记录后将其删除,请注释脚本的最后一行。
脚本:
leadIdLong = input.leadId.toLong();
leadDetails = zoho.crm.getRecordById("Leads", leadIdLong);
first = ifnull(leadDetails.get("First Name"),"");
last = ifnull(leadDetails.get("Last Name"),"");
name = first + " " + last;
AcccountMap = map();
AcccountMap.put(("Account Name"), ifnull(leadDetails.get("Company"),""));
AcccountMap.put("Annual Revenue", ifnull(leadDetails.get("Annual Revenue"),""));
AcccountMap.put("Billing City", ifnull(leadDetails.get("City"),""));
AcccountMap.put("Billing Country", ifnull(leadDetails.get("Country"),""));
AcccountMap.put("Description", ifnull(leadDetails.get("Description"),""));
AcccountMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
AcccountMap.put("Industry", ifnull(leadDetails.get("Industry"),""));
AcccountMap.put("Employees", ifnull(leadDetails.get("No of Employees"),""));
AcccountMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
AcccountMap.put("Rating", ifnull(leadDetails.get("Rating"),""));
AcccountMap.put("Billing State", ifnull(leadDetails.get("State"),""));
AcccountMap.put("Billing Street", ifnull(leadDetails.get("Street"),""));
AcccountMap.put("Billing Code", ifnull(leadDetails.get("Zip Code"),""));
AcccountMap.put("Website", ifnull(leadDetails.get("Website"),""));
AccountCreate = zoho.crm.create(("Accounts"), AcccountMap);
newaccountId = AccountCreate.get("Id");
ContactMap = map();
ContactMap.put("First Name", ifnull(leadDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(leadDetails.get("Last Name"),""));
ContactMap.put("Mailing City", ifnull(leadDetails.get("City"),""));
ContactMap.put("Mailing Country", ifnull(leadDetails.get("Country"),""));
ContactMap.put("Mailing State", ifnull(leadDetails.get("State"),""));
ContactMap.put("Mailing Street", ifnull(leadDetails.get("Street"),""));
ContactMap.put("Mailing Zip", ifnull(leadDetails.get("Zip Code"),""));
ContactMap.put("Description", ifnull(leadDetails.get("Description"),""));
ContactMap.put("Fax", ifnull(leadDetails.get("Fax"),""));
ContactMap.put("Title", ifnull(leadDetails.get("Title"),""));
ContactMap.put("Email", ifnull(leadDetails.get("Email"),""));
ContactMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
ContactMap.put("Mobile", ifnull(leadDetails.get("Mobile"),""));
ContactMap.put("Phone", ifnull(leadDetails.get("Phone"),""));
ContactMap.put("Secondary Email", ifnull(leadDetails.get("Secondary Email"),""));
ContactMap.put("Skype ID", ifnull(leadDetails.get("Skype ID"),""));
ContactMap.put("Twitter", ifnull(leadDetails.get("Twitter"),""));
ContactMap.put("ACCOUNTID", newaccountId);
ContactCreate = zoho.crm.create("Contacts", ContactMap);
newcontactId = ContactCreate.get("Id");
PotentialMap = map();
PotentialMap.put("Potential Name", name);
PotentialMap.put("City", ifnull(leadDetails.get("City"),""));
PotentialMap.put("Country", ifnull(leadDetails.get("Country"),""));
PotentialMap.put("State", ifnull(leadDetails.get("State"),""));
PotentialMap.put("Street", ifnull(leadDetails.get("Street"),""));
PotentialMap.put("Zipcode", ifnull(leadDetails.get("Zip Code"),""));
PotentialMap.put("Description", ifnull(leadDetails.get("Description"),""));
PotentialMap.put("Lead Source", ifnull(leadDetails.get("Lead Source"),""));
PotentialMap.put("ACCOUNTID",newaccountId );
PotentialMap.put("CONTACTID",newcontactId );
PotentialCreate = zoho.crm.create("Potentials", PotentialMap);
url = getUrl("https://crm.zoho.com/crm/private/xml/Leads/deleteRecords?authtoken=" + input.Authtoken + "&scope=crmapi&id=" + input.leadId); return "Lead converted successfully";根据自定义模块创建联系人。
函数类型:工作流
函数描述:您可根据任何自定义模块中提供的信息自动创建联系人记录。
如何让它工作:将此函数关联到适当的工作流规则下,以自动根据自定义模块创建联系人。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择自定义模块。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“customId”作为名称,并输入“自定义模块 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
CustomModuleDetails = zoho.crm.getRecordById("CustomModule1", input.customId);
ContactMap = map();
ContactMap.put("First Name", ifnull(CustomModuleDetails.get("First Name"),""));
ContactMap.put("Last Name", ifnull(CustomModuleDetails.get("Last Name"),""));
ContactMap.put("Email", ifnull(CustomModuleDetails.get("Email"),""));
ContactMap.put("Date", ifnull(CustomModuleDetails.get("Date"),""));
ContactMap.put("Birth Date", ifnull(CustomModuleDetails.get("Birth Date"),""));
ContactMap.put("Mailing Street", ifnull(CustomModuleDetails.get("Mailing Street"),""));
ContactMap.put("Mailing City", ifnull(CustomModuleDetails.get("Mailing City"),""));
ContactMap.put("Mailing State", ifnull(CustomModuleDetails.get("Mailing State"),""));
ContactMap.put("Mailing Zip", ifnull(CustomModuleDetails.get("Mailing Zip"),""));
ContactMap.put("Phone", ifnull(CustomModuleDetails.get("Phone"),""));
ContactMap.put("SMOWNERID", ifnull(CustomModuleDetails.get("SMOWNERID"),""));
ContactMap.put("Company Name", ifnull(CustomModuleDetails.get("Company Name"),""));
ContactMap.put("Industry Type", ifnull(CustomModuleDetails.get("Industry Type"),""));
ContactCreate = zoho.crm.create("Contacts", ContactMap);根据自定义模块创建自定义模块。
函数类型:工作流
函数描述:您可根据一个自定义模块的记录创建另一个新的自定义模块。在需要将一个模块的信息转移到另一个模块的情况下,这特别有用。让此函数为您完成该任务吧!
如何让它工作:将此函数关联到适当的工作流规则下,以使用另一个自定义模块中的记录自动创建自定义模块。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择自定义模块。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“CustommoduleId”作为名称,并输入“自定义模块 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
CustommoduleDetails = zoho.crm.getRecordById("CustomModule1", input.CustommoduleId);
createMap = map();
createMap.put("CustomModule2 Name", ifnull(CustommoduleDetails.get("Custom Name"),""));
createMap.put("SMOWNERID", ifnull(CustommoduleDetails.get("SMOWNERID"),""));
createMap.put("Phone", ifnull(CustommoduleDetails.get("Phone"),""));
createMap.put("Email", ifnull(CustommoduleDetails.get("Email"),""));
createCustomModule = zoho.crm.create("CustomModule2", createMap);创建跟进活动。
函数类型:工作流
函数描述:您可以为联系人创建跟进活动。这是所提供的最重要和最有用的函数之一,因为它使无数代理的生活更加容易。
如何让它工作:将此函数关联到适当的工作流规则下,以自动为所选联系人记录创建跟进活动。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择联系人。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“contactId”作为名称,并输入“联系人 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
contactIdStr = input.contactId.toString();
TaskDetails = zoho.crm.getRelatedRecords("Tasks", "Contacts", contactIdStr);
for each Task in TaskDetails
{
taskMap = map();
taskMap.put("Task Owner", ifnull(Task.get("Task Owner"),""));
taskMap.put("Subject", (Task.get("Subject")) + " Followup ");
taskMap.put("Due Date", ifnull(Task.get("Due Date"),""));
taskMap.put("Status", ifnull(Task.get("Status"),""));
taskMap.put("Priority", ifnull(Task.get("Priority"),""));
taskMap.put("SMOWNERID", ifnull(Task.get("SMOWNERID"),""));
taskMap.put("CONTACTID", contactIdStr);
taskMap.put("SEID", ifnull(Task.get("RELATEDTOID"),""));
taskMap.put("SEMODULE", ifnull(Task.get("SEMODULE"),""));
createTask = zoho.crm.create("Tasks", taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Events", "Contacts", contactIdStr);
for each Event in EventDetails
{
eventMap = map();
eventMap.put("Subject", (Event.get("Subject")) + " Followup ");
eventMap.put("SMOWNERID", ifnull(Event.get("SMOWNERID"),""));
eventMap.put("Start DateTime", (ifnull(Event.get("Start DateTime"),"")).toTime());
eventMap.put("End DateTime", (ifnull(Event.get("End DateTime"),"")).toTime());
eventMap.put("CONTACTID", contactIdStr);
eventMap.put("SEID", ifnull(Event.get("RELATEDTOID"),""));
eventMap.put("SEMODULE", ifnull(Event.get("SEMODULE"),""));
createEvent = zoho.crm.create("Events", eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Calls", "Contacts", contactIdStr);
for each Call in CallDetails
{
Callstatus = Call.get("Call Status");
if ((Callstatus == "Scheduled") || (Callstatus == "Overdue"))
{
callMap = map();
callMap.put("Subject", (Call.get("Subject")) + " Followup ");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Call Type", ifnull(Call.get("Call Type"),""));
callMap.put("whichCall", "ScheduleCall");
callMap.put("Call Start Time", ifnull(Call.get("Call Start Time"),""));
callMap.put("Call Duration", ifnull(Call.get("Call Duration"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Calls", callMap);
}
else
{
callMap = map();
callMap.put("Subject", (Call.get("Subject")) + " Followup ");
callMap.put("SMOWNERID", ifnull(Call.get("SMOWNERID"),""));
callMap.put("Call Type", ifnull(Call.get("Call Type"),""));
callMap.put("Call Start Time", ifnull(Call.get("Call Start Time"),""));
callMap.put("Call Duration", ifnull(Call.get("Call Duration"),""));
callMap.put("CONTACTID", contactIdStr);
callMap.put("SEID", ifnull(Call.get("RELATEDTOID"),""));
callMap.put("SEMODULE", ifnull(Call.get("SEMODULE"),""));
createCall = zoho.crm.create("Calls", callMap);
}
}根据采购订单创建发票。
函数类型:工作流
函数描述:您可通过定义此函数,自动生成采购订单的发票。
如何让它工作:将此函数关联到适当的工作流规则下,以自动创建发票。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择采购订单。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“poId”作为名称,并输入“采购订单 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
respMap = zoho.crm.getRecordById("PurchaseOrders", input.poId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("Invoices", paramap);根据联系人及所有相关数据创建线索。
函数类型:工作流
函数描述:您可立即根据联系人记录创建线索。如果您想要与某个已知的人员达成一笔新的交易,这无疑非常有用。
如何让它工作:将此函数关联到适当的工作流规则下,以自动根据联系人创建线索记录。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择联系人。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“contactId”作为名称,并输入“联系人 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
contactIdStr = input.contactId.toString();
contactDetails = zoho.crm.getRecordById("Contacts", input.contactId);
leadMap = map();
leadMap.put("Last Name", ifnull(contactDetails.get("Last Name"),""));
leadMap.put("First Name", ifnull(contactDetails.get("First Name"),""));
leadMap.put("SMOWNERID", ifnull(contactDetails.get("SMOWNERID"),""));
leadMap.put("Email", ifnull(contactDetails.get("Email"),""));
leadMap.put("Third Email", ifnull(contactDetails.get("Third Email"),""));
leadMap.put("Secondary Email", ifnull(contactDetails.get("Second Email"),""));
leadMap.put("Phone", ifnull(contactDetails.get("Phone"),""));
leadMap.put("Lead Status", ifnull(contactDetails.get("Contact Status"),""));
leadMap.put("Created On", ifnull(contactDetails.get("Created On"),""));
leadMap.put("Notes", ifnull(contactDetails.get("Notes"),""));
leadMap.put("Skype ID", ifnull(contactDetails.get("Skype ID"),""));
leadMap.put("Wechat ID", ifnull(contactDetails.get("Wechat ID"),""));
createLead = zoho.crm.create("Leads", leadMap);
id = createLead.get("Id");
contactRelNotes = zoho.crm.getRelatedRecords("Notes", "Contacts", contactIdStr);
countVal = 0;
for each ele in contactRelNotes
{
countVal = (countVal + 1);
notemap = map();
notemap.put("entityId", id);
notemap.put("Note Title", ifnull(ele.get("Title")," "));
notemap.put("Note Content", ifnull(ele.get("Note Content")," "));
notecreate = zoho.crm.create("Notes", notemap);
}
TaskDetails = zoho.crm.getRelatedRecords("Tasks", "Contacts", contactIdStr);
for each ele in TaskDetails
{
TaskId = ele.get("ACTIVITYID");
taskMap = map();
taskMap.put("SEID", id);
taskMap.put("SEMODULE", "CustomModule2");
UpdateTask = zoho.crm.updateRecord("Tasks", TaskId, taskMap);
}
EventDetails = zoho.crm.getRelatedRecords("Events", "Contacts", contactIdStr);
for each ele in EventDetails
{
eventId = ele.get("ACTIVITYID");
eventMap = map();
eventMap.put("SEID", id);
eventMap.put("SEMODULE", "CustomModule2");
UpdateEvent = zoho.crm.updateRecord("Events", eventId, eventMap);
}
CallDetails = zoho.crm.getRelatedRecords("Calls", "Contacts", contactIdStr);
for each ele in CallDetails
{
callId = ele.get("ACTIVITYID");
callMap = map();
callMap.put("SEID", id);
callMap.put("SEMODULE", "CustomModule2");
UpdateCall = zoho.crm.updateRecord("Calls", callId, callMap);
}根据“销售订单”创建采购订单。
函数类型:工作流
函数描述:您可根据“销售订单”模块生成采购订单。通常,在确认交易后使用此函数。
如何让它工作:将此函数关联到适当的工作流规则下,以自动根据“销售订单”模块创建采购订单记录。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择销售订单。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“soId”作为名称,并输入“销售订单 ID”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
respMap = zoho.crm.getRecordById("SalesOrders", input.soId.toLong());
productDet = ifnull(respMap.get("product"),"");
productList = productDet.toJSONList();
pdlist = List();
for each eachProd in productList
{
eachProdDet = eachProd.toMap();
productDesc = ifnull(eachProdDet.get("Product Description"),"");
quantity = ifnull(eachProdDet.get("Quantity"),"0");
listPrice = (ifnull(eachProdDet.get("List Price"),"0.0")).toDecimal();
netTotal = (ifnull(eachProdDet.get("Net Total"),"0.0")).toDecimal();
linediscount = (ifnull(eachProdDet.get(("Discount")),"0.0")).toDecimal();
total = (ifnull(eachProdDet.get("Total"),"0.0")).toDecimal();
productId = ifnull(eachProdDet.get("Product Id"),"");
linetax = (ifnull(eachProdDet.get("Tax"),"")).toDecimal();
mp = map();
mp.put("Product Id", productId);
mp.put("Quantity", quantity);
mp.put("List Price", listPrice);
mp.put(("Discount"), linediscount);
mp.put("Total", total);
mp.put("Tax", linetax);
mp.put("Net Total", netTotal);
pdlist.add(mp);
}
paramap = map();
paramap.put("Products", pdlist);
paramap.put("Subject", ifnull(respMap.get("Subject"),""));
paramap.put("CONTACTID", ifnull(respMap.get("CONTACTID"),""));
paramap.put("Terms and Conditions", ifnull(respMap.get("Terms and Conditions"),""));
paramap.put("Description", ifnull(respMap.get("Description"),""));
paramap.put("Tax", (ifnull(respMap.get("Tax"),"0.0")).toDecimal());
paramap.put("Adjustment", (ifnull(respMap.get("Adjustment"),"0.0")).toDecimal());
paramap.put(("Discount"), (ifnull(respMap.get(("Discount")),"0.0")).toDecimal());
paramap.put("Sub Total", (ifnull(respMap.get("Sub Total"),"0.0")).toDecimal());
paramap.put("Grand Total", (ifnull(respMap.get("Grand Total"),"0.0")).toDecimal());
createResp = zoho.crm.create("PurchaseOrders", paramap);当“客户”中的字段更新时,更新所有相关的联系人字段。
函数类型:工作流
函数描述:借助此函数,可以在“客户”模块中的特定记录更新时,更新该记录的所有相关字段。
如何让它工作:将此函数关联到适当的工作流规则下,以自动更新所有相关的联系人字段。
- 点击设置 > 自动化 > 操作 > 函数 > +配置函数 > 写您自己的 > 对“要关联的模块”选择客户。
- 输入函数名称,然后点击“自由流脚本编写”。
- 复制下面给出的代码脚本。
- 点击“编辑参数”。
- 输入“acctId”作为名称,并输入“客户 ID”作为值。
- 点击 +添加参数,并输入“Type”作为名称。
- 输入“客户类型”作为值。
- 点击完成。
- 检查代码脚本,并点击保存。
脚本:
accountIdStr = input.accountId.toString();
relatedcontacts = zoho.crm.getRelatedRecords(”Contacts”, (”Accounts”), accountIdStr); info relatedcontacts; for each ele in relatedcontacts { contactId = ifnull(ele.get(”CONTACTID”),””); mp = map(); mp.put(”Contact Type”, input.type ); update = zoho.crm.updateRecord(”Contacts”
info relatedcontacts;
for each ele in relatedcontacts
{
contactId = ifnull(ele.get(”CONTACTID”),””); mp = map(); mp.put(”Contact Type”, input.type ); update = zoho.crm.updateRecord(”Contacts”
mp = map();
mp.put("Contact Type", input.type );
update = zoho.crm.updateRecord("Contacts", contactId, mp);
info mp;
info update;
}