采购订单自动携带第一行分录的交货日期
## 需求背景
多行采购订单分录的交货日期相同,批量修改时,需要一行一行修改,工作量很大,希望有对交货日期进行批量填充的功能。
## 简要实现方案
添加脚本,新增或插入分录时,自动取第一行分录的交货日期;添加脚本(监听器),修改第一行分录的交货日期时,自动修改其它分录的交货日期。
1. 导入实体“采购订单
2. 在“界面--编辑界面-采购订单”节点,打开采购订单编辑界面
3. 在加载值(loadfields)加载前置脚本、后置脚本,用于监听当修改第一行分录,当修改交货日期时,自动修改其它分录的交货日期(其它分录的交货日期为空时才修改,否则不修改)前置脚本如下:
```js
var purOder_tableDataChangeListener = pluginCtx.getUIContext().get("purOder_tableDataChangeListener");
var table = pluginCtx.getKDTable("kdtEntries");
if(purOder_tableDataChangeListener !=null ){
table.removeKDTEditListener(purOder_tableDataChangeListener);
}
```
4. 后置脚本如下
```js
var purOder_tableDataChangeListener = pluginCtx.getUIContext().get("purOder_tableDataChangeListener");
var table = pluginCtx.getKDTable("kdtEntries");
if(purOder_tableDataChangeListener==null){
purOder_tableDataChangeListener = function(event,methodName){
if(methodName == "equals"){
return this ==event;
}
if(methodName == "editStopped"){
var curRow = table.getRow(event.getRowIndex());
var colName=table.getColumn(event.getColIndex()).getKey();
//如果当前行为第一行,当前列为交货日期(deliveryDate)
if( event.getRowIndex() == 0 && "deliveryDate"==colName){
var deliveryDate = table.getRow(0).getCell("deliveryDate").getValue();
var size = table.getRowCount();
var ideliveryDate ;
for(var i=1;i<size;i++){
ideliveryDate=table.getRow(i).getCell(colName).getValue();
//从第二行开始,如果交货日期为空,赋值为第一行的值
if(ideliveryDate==null){
table.getRow(i).getCell(colName).setValue(deliveryDate);
}
}
}
}
};
pluginCtx.getUIContext().put("purOder_tableDataChangeListener",purOder_tableDataChangeListener);
}
```
5. 在新增分录(ActionAddLine)添加后置脚本,新增分录后自动取第一行分录的交货日期
```js
var kdtEntry = pluginCtx.getKDTable("kdtEntries");
//新增分录,当前行仍是原行,新增分录是最后一行
var rowCount = kdtEntry.getRowCount();
var deliveryDate = kdtEntry.getCell(0,"deliveryDate").getValue();
if (deliveryDate != null){
kdtEntry.getCell(rowCount-1,"deliveryDate").setValue(deliveryDate);
}
```
6. 在插入分录(ActionInsertLine)添加后置脚本,插入分录后自动取第一行分录的交货日期
```js
var kdtEntry = pluginCtx.getKDTable("kdtEntries");
//插入分录,当前行是新行
var rowIndex = kdtEntry.getSelectManager().getActiveRowIndex();
//如果插入的行不是第一行,则取第一行的交货日期
if (rowIndex > 0 ){
var deliveryDate = kdtEntry.getCell(0,"deliveryDate").getValue();
if (deliveryDate != null){
kdtEntry.getCell(rowIndex,"deliveryDate").setValue(deliveryDate);
}
}
```
7. 保存启用方案
loadfields 后置脚本少了一行代码 :
table.addKDTEditListener(purOder_tableDataChangeListener);
采购订单自动携带第一行分录的交货日期
## 需求背景多行采购订单分录的交货日期相同,批量修改时,需要一行一行修改,工作量很大,希望有对交货日期进行批量填充的功能。## 简要...
点击下载文档
上一篇:领料申请单分录里增加成本对象编码名称下一篇:管理控制台-应用服务器
本文2024-09-16 22:17:37发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-47207.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章