
需求:公司要求卖增值服务,比如洗车包年类似此功能。因为是虚拟增值服务收费属于一次性预收。所以在精品单界面新增了字段到期日期,并想通过到期日期来控制精品单推维修工单。推单有三种方法,,,一种是拉式一种是推式还有种关联生成,控制这三种生成方法地方分别在精品单里面的推式生成,精品单列表查询界面的关联生成,及维修工单界面的拉式生成。

废话不多说开工,打开企业建模->业务对象建模->动态扩展平台高级版,找到自己要改的扩展项目,我这里因为修改的地方分为两大类,一为精品单,二为维修单。其中修界面为精品编辑界面及列表界面,维修编辑界面。

实现精品单编辑界面通过到期日期控制推式生成维修工单

点击上图扩展脚本 ,因为我的控制放在点击推式生成按钮上,我们在扩展脚本中操作类别下面的推式生成。


选中推式生成后有个前置脚本和后置脚本,二者区别为,前置脚本是先执行该脚本后再运行功能,后置脚本是先运行功能再执行脚本,因为我是通过到期日期控制推式生成是否生效,属于推式生成功能前判断,,所以代码写在前置脚本上,附上代码
```
//获取到期日期控制的值,因为是日期控件所以得到的是date型值可以直接通过date的compareTo做二个日期时间运行比较
2. var dt=pluginCtx.getKDDatePicker("pkfenddate").getValue();
3. var now=new java.util.Date();//获取当前日期时间
4. if(dt!=null)//判断到期日期是否有值,如果没有则跳过
5. {
6. var dqdt=new java.util.Date(dt);
7. if(dqdt.compareTo(now)<=0)//用到期日期跟当前日期比较,到期日期小于或等于当前日期则为过期
8. {
9. com.kingdee.eas.util.client.MsgBox.showInfo("该精品服务日期已到期,现已停止服务!");执行弹窗提示
10. com.kingdee.eas.util.SysUtil.abort();//终止线程或功能
11.
12. }
13.
14. }
```
效果如下

现在精品编辑界面的限制功能做完了,我们再做精品列表界面限制功能。

在这里,,我们是通过列表选中一条数据然后再点关联生成,通过选中的数据获取到单据的到期日期做判断控制关联生成是否生效并弹窗提示!
打开精品列表页的扩展脚本找到关联生成,同样是点击前判断所以属于前置脚本,上代码。
提示:在这段代码中因为用了java 类库包 所以要在代码中引用这些包
```language
var easImporter = JavaImporter();
easImporter.importPackage(Packages.java.text); // 引入三方包
with(easImporter){
var now=new Date();//当前日期时间
var selectRow = pluginCtx.getKDTable("tblMain").getSelectManager().getActiveRowIndex();//获取选中的行索引
var dt=pluginCtx.getKDTable("tblMain").getCell(selectRow,"fenddate").getValue();获取列表中指定行中指定字段的值
if(dt!=null)
{
var fd = new SimpleDateFormat("yyyy-MM-dd");//日期时间转换格式
var date = fd.parse(dt);//转换日期格式
if(date.compareTo(now)<=0)//判断是否到期
{
com.kingdee.eas.util.client.MsgBox.showInfo("该精品服务日期已到期,现已停止服务!");//弹窗提醒
com.kingdee.eas.util.SysUtil.abort();//线程停止
}
}
}
```
最终效果如下图
![