
## 需求背景
多行采购订单分录的交货日期相同,批量修改时,需要一行一行修改,工作量很大,希望有对交货日期进行批量填充的功能。
## 简要实现方案
添加脚本,新增或插入分录时,自动取第一行分录的交货日期;添加脚本(监听器),修改第一行分录的交货日期时,自动修改其它分录的交货日期。
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(col