采购订单自动携带第一行分录的交货日期

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

采购订单自动携带第一行分录的交货日期

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


采购订单自动携带第一行分录的交货日期

## 需求背景多行采购订单分录的交货日期相同,批量修改时,需要一行一行修改,工作量很大,希望有对交货日期进行批量填充的功能。## 简要...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息