供应链单据二开新增单据体(单据体、子单据体)变更教程

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

供应链单据二开新增单据体(单据体、子单据体)变更教程

问题:

二开增加单据体和子单据体,变更过程,出现数据无法携带问题

例如采购合同中二开增加了物料明细下的子单据,生成的变更单没有携带子单据数据,也无法反写,此类问题可参考此教程


以下用采购合同为例,详述增加单据体的过程步骤


方案:


步骤一:

采购合同单据:

高级容器内插入子单据体,子单据体插入对应的元素据,我这里示例插入字段   测试、测试1

我这里只加了新增,删除按钮,需要其他按钮自行添加

父单据:物料明细

表名:自定义无要求

image.webp



子单据体工具栏标识,工具栏按钮标识和一些字段标识要记录,一会新增插件要使用。

image.webp


image.webp


image.webp



步骤二:

采购合同变更单单据(继承自采购合同单据):因继承采购合同单据,会携带下采购合同的新增子单据

在单据中新增字段变更方式(下拉列表),源单(长整型)


1、变更方式  (下拉值要和示例一致)

image.webp

image.webp



2、源单(隐藏字段)

image.webp



步骤三

开发平台内找到单据:变更模型 (plat_changemodel

预览列表,找到采购合同-》采购合同变更单   的变更模型

image.webp


1、增加子单据体的字段映射(具体依据自己加的字段)

image.webp


2、新增插件

image.webp


image.webp


此插件需要自己新增

增加了哪些按钮就需要配置哪些


//此插件需要自己新增

package kd.scmc.pm.formplugin;

import java.util.HashMap;
import java.util.Map;

import static kd.mpscmm.msbd.changemodel.business.service.IXBillChangeService.*;

/**
 * Author: rd_zhenge_wu
 * Desc: 请输入类功能描述
 * Date: 2024/7/26
 **/
public class TestPlugin {
    public Map<String, Map<String, String>> getXBillEntryAndOp() {
        Map<String, Map<String, String>> result = new HashMap<String, Map<String, String>>();

        //注册测试子单据
        Map<String, String> subvalue = new HashMap<String, String>();
        subvalue.put(ENTRY_ENTITY, "subentryentity");  //  子单据体标识
        subvalue.put(ENTRY_CHANGETYPE, "changetype1");   //变更方式标识
        subvalue.put(ENTRY_BTN_TOOLBAR, "advcontoolbarap");  //工具栏标识
        subvalue.put(ENTRY_BTN_ADD, "test_addrow");  //工具栏新增按钮标识
        subvalue.put(ENTRY_BTN_DELETE, "test_delrow"); //工具栏删除按钮标识
        //subvalue.put(ENTRY_BTN_MODIFY, "modifyrow_term");  // 工具栏撤回修改标识
        subvalue.put(ENTRY_SRCID, "bigintfield");  //源单标识
        result.put(subvalue.get(ENTRY_ENTITY), subvalue); 
        return result;
    }
}


下面这个是已经有的接口类,可直接引用,这里贴出来是为了说明引用出处和常量解释

package kd.mpscmm.msbd.changemodel.business.service;

import java.util.Map;

import kd.bos.dataentity.entity.DynamicObject;

/**
 *  变更模型注册插件接口:是在变更过程中使用的插件,提供变更过程中所需要的各种内容
 *  1、变更单单据体的的标识
 *  2、变更单单据体的控制按钮
 *  3、变更单单据体的必须属性:变更方式和源单行ID
 *  4、变更单生成前处理方法
 *  5、变更单生成后处理方法
 *  6、变更单生效前处理方法
 *  7、变更单生效后处理方法
 *  @author ccc
 */
public interface IXBillChangeService {
	/** 变更单单据体注册实体 **/
	public static final String ENTRY_ENTITY = "entity";
	/** 变更单单据体注册【源单行ID】字段 **/
	public static final String ENTRY_SRCID = "srcid";
	/** 变更单单据体注册【变更类型】字段 **/
	public static final String ENTRY_CHANGETYPE = "changetype";
	/** 变更单单据体注册工具栏 **/
	public static final String ENTRY_BTN_TOOLBAR = "entry_toolbar";
	/** 变更单单据体注册新增按钮 **/
	public static final String ENTRY_BTN_ADD = "btn_add";
	/** 变更单单据体注册删行按钮 **/
	public static final String ENTRY_BTN_DELETE = "btn_delete";
	/** 变更单单据体注册修改按钮 **/
	public static final String ENTRY_BTN_MODIFY = "btn_modify";

	/** 获得变更单单据体的标识、工具栏、控制按钮
	 *  获得变更单单据体的字段:变更方式和源单行ID
	 * 	各个单据通过继承此插件,增加自己的特有的单据体及单据体的操作按钮
	 */
	public Map<String, Map<String, String>> getXBillEntryAndOp();
	/**
	 * 变更单生成前处理方法
	 */
	public default void beforeSrcBillChange(DynamicObject srcBill) {};
	/**
	 * 变更单生成后处理方法
	 */
	public default void afterSrcBillChange(DynamicObject xBill) {};
	/**
	 * 变更单生效后处理方法
	 */
	public default void beforeXBillBizValid(DynamicObject xBill) {};
	/**
	 * 变更单生效后处理方法
	 */
	public default void afterXBillBizValid(DynamicObject xBill) {};
	/**
	 * 变更单提交前处理方法
	 */
	public default void beforeXBillSubmit(DynamicObject xBill) {};
	/**
	 * 变更单提交后处理方法
	 */
	public default void afterXBillSubmit(DynamicObject xBill) {};
	/**
	 * 变更单保存前处理方法
	 */
	public default void beforeXBillSave(DynamicObject xBill) {};
	/**
	 * 变更单保存后处理方法
	 */
	public default void afterXBillSave(DynamicObject xBill) {};
}


到此就算完成了,新增的插件重新部署,变更携带数据即可生效。


供应链单据二开新增单据体(单据体、子单据体)变更教程

问题:二开增加单据体和子单据体,变更过程,出现数据无法携带问题例如采购合同中二开增加了物料明细下的子单据,生成的变更单没有携带子单...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息