admin 管理员组

文章数量: 887006

ZohoCRM

关于Deluge

Zoho专有脚本语言可以处理开发人员可能要执行的任何任务。 凭借内置的包装程序和强大的执行引擎,它已发展成为最快,最灵活的脚本语言之一。(官方介绍自动翻译结果)

我这次要干什么

使用ZohoCRM不到3个月,想在里面配置一个字段验证规则,确保结束时间必须大于开始时间。

实现的步骤

找可行的方法

中国的服务商建议我用函数验证实现,他们服务是收费的,所以只能告诉我怎么实现,我要自己研究实现。
鼓捣脚本我最擅长了,那就开始对着文档敲吧,当然敲之前心里还是屡一下实现的逻辑,虽然这个并不复杂。

函数实现的逻辑

在保存和编辑表单时,验证开始时间和结束时间的关系。

  1. 验证结束时间必须大于开始时间。
  2. 验证开始时间必须小于结束时间。

将上述函数验证分别分配到结束时间和开始时间的验证逻辑即可。

实现的代码

Zoho deluge

entityMap = crmAPIRequest.toMap().get("record");
// field17,field16 的确认参考下图
endTime = entityMap.get("field17").toTime("yyyy-MM-dd'T'HH:mm:ss");
startTime = entityMap.get("field16").toTime("yyyy-MM-dd'T'HH:mm:ss");
response = Map();
if(endTime > startTime)
{response.put('status','success');
}
else
{response.put('status','failure');response.put('message','服务开始时间不能晚于结束时间.');
}
return response;

确认字段的名称需要到开发者空间的API里找。

我踩过的坑

本身这件事情可以自己搞定的,结果花费了很多时间去找zoho的官方客服,官方客户直接在线联系即可,非常方便,服务及时,热情,有问必答,帮写代码,文末附上他们提供的函数代码。

为什么花了这么多时间呢?代码就这么简单。
一开始我的代码是这么写的,没加 “yyyy-MM-dd’T’HH:mm:ss”,使用说明上也没说要加。

结果获取的时间只有日期,时间都是00:00:00


endTime = entityMap.get("field17").toDateTime();
startTime = entityMap.get("field16").toDateTime();

官方的客服是很热情,但是一直没有看出来这个问题,给了我一个逻辑更复杂的验证代码,让我测试,直到第二次才解决,远程的时候也是必须使用zoho join,那叫一个卡,经常说不能控制。
TeamViewer已经做得那么好了,不能兼容一下吗?

Zoho 官方给的函数验证代码

entityMap = crmAPIRequest.toMap().get("record");
d2 = entityMap.get("field16").toDateTime();
d1 = entityMap.get("field6").toDateTime();
response = Map();
diff = d1.daysBetween(d2);
if(diff > 0)
{response.put('status','success');
}
else if(diff == 0)
{hdiff = d1.hoursbetween(d2);if(hdiff == 0){m1 = d1.getMinutes();m2 = d2.getMinutes();h1 = d1.getHour();h2 = d2.getHour();if(h1 < h2){response.put('status','success');}else if(h1 == h2){m = m1 - m2;if(m >= 0){response.put('status','failure');response.put('message','end Time should earlier then start time.');}}}else{response.put('status','success');}
}
else if(diff < 0)
{response.put('status','failure');response.put('message','end Time should earlier then start time.');
}
return response;

我的提议

把文档写清楚,你好,我好,大家好,自助解决问题,节省多少时间。

本着造福后人的原则,我就给zoho 提了些意见,希望在使用说明上加强一下,但是人家的回复是这是因为CRM的时间是ISO时间,必须指定格式,没接下茬儿。

那我就写出来分享一下吧,希望能节省你一点儿时间。

官方的答复如下,供您参考:

Please find the below clarifications from the deluge team

toTime() and toTime(yyyy-MM-dd’T’HH:mm:ss); and toDateTime(yyyy-MM-dd’T’HH:mm:ss); -->These are same, but will differ for the from format.On conversion of the format, ie From which format to which format , it will be differ.

zoho.currenttime.toTime();

from CRM field, we will display fields in ISO format so have to use the below format.

endTime = entityMap.get(“field16”).toDateTime(yyyy-MM-dd’T’HH:mm:ss);

本文标签: ZohoCRM