销售费用分摊二开增加字段
# 一、使用背景 #
目前星空旗舰版销售费用分摊功能,查询获取的应付单与销售出库单字段有限,不能满足用户的所有需求。
# 二、接口说明 #
``` type
package kd.sdk.cms.cal.extpoint.saleFee;
import kd.bos.algo.Row;
import kd.bos.dataentity.entity.DynamicObject;
import kd.sdk.annotation.SdkPlugin;
import kd.sdk.annotation.SdkPublic;
/**
* @Date:2024/3/19
* @version:1.0
* @Description:通过二开自定义新增字段插件
* @author:wenjie_tong
*/
@SdkPlugin(name = "销售费用分摊增加二开字段插件")
@SdkPublic
public interface ISaleFeeSubPlugin {
/**
* 销售出库单额外查询字段
*
* @return 返回新添加的销售出库单查询字段
*/
default String getExtraTargetBillFields() {
return "";
}//return "entryentity.number"; 返回值为需要额外查询的销售出库单上的字段标识,其余查询同理
/**
* 暂估应付单额外查询字段
*
* @return 返回新添加的暂估应付单查询字段
*/
default String getExtraBusBillFields() {
return "";
}
/**
* 财务应付单额外查询字段
*
* @return 返回新添加的财务应付单查询字段
*/
default String getExtraSourceBillFields() {
return "";
}
/**
* 非整单分摊时销售出库单单据体加载方法
* 将row中数据加载到单据体对应字段中
*
* @param dynamicObject DynamicObject为界面单据体
* @param row Row中为查询到的字段信息
*/
default void loadExtraTargetBillFields(DynamicObject dynamicObject, Row row) {
//dynamicObject.set("number",row.get("entryentity.number"));第一个"number"为界面上销售出库单单据体字段标识,后一个"entryentity.number"为销售出库单中单据体"entryentity"的字段标识"number"。其余加载方法同理
}
/**
* 整单分摊时销售出库单单据体加载方法
* 将row中数据加载到单据体对应字段中
*
* @param dynamicObject DynamicObject为界面单据体
* @param row Row中为查询到的字段信息
*/
default void loadWholeBillExtraTargetBillFields(DynamicObject dynamicObject, Row row) {
}
/**
* 暂估应付单单据体加载方法
* 将row中数据加载到单据体对应字段中
*
* @param dynamicObject DynamicObject为界面单据体
* @param row Row中为查询到的字段信息
*/
default void loadExtraBusBillFields(DynamicObject dynamicObject, Row row) {
}
/**
* 财务应付单单据体加载方法
* 将row中数据加载到单据体对应字段中
*
* @param dynamicObject DynamicObject为界面单据体
* @param row Row中为查询到的字段信息
*/
default void loadExtraSourceBillFields(DynamicObject dynamicObject, Row row) {
}
/**
* 销售出库单整单分摊指定额外隐藏字段方法
*
* @return 整单分摊时需额外隐藏的单据体字段标识
*/
default String[] getExtraVisibleFields() {
return new String[]{};//return new String[]{"number"}; 数组内字符串为在整单分摊时,需要额外隐藏的界面销售出库单单据体字段标识
}
}
```
# 三、使用示例 #
## 1.拓展销售费用分摊界面 ##
想要增加二开字段,首先需要拓展销售费用分摊界面,并在需要添加字段的单据体上添加所需的字段,这里以销售出库单单据头业务员字段,与单据体税率字段为例。
![业务员.webp](/download/01000954af76dc7c429fa73d10d8122bfac3.webp)
![税率.webp](/download/0100ac58354563f6466d807b50590e5c5b78.webp)
## 2.实现二开接口 ##
在拓展表单新增字段完成后,就需要进行二开代码的编写了。首先,需要编写一个java类以实现二开接口:**ISaleFeeSubPlugin**
```type
import kd.bos.algo.Row;
import kd.bos.dataentity.entity.DynamicObject;
import kd.sdk.cms.cal.extpoint.saleFee.ISaleFeeSubPlugin;
public class SaleFeeTestPlugin implements ISaleFeeSubPlugin {
@Override
/**销售出库单额外查询字段
* @return 返回新添加的销售出库单查询字段
*/
public String getExtraTargetBillFields() {//返回新添加的销售出库单查询字段
return "bizoperator,billentry.taxrate";//此处返回的字符串为销售出库单上需要查询的字段标识,taxrate为销售出库单单据体上税率字段,因此需要增加对应单据体标识"billentry"在字段标识之前。
}
@Override
/**
* 非整单分摊时销售出库单单据体加载方法
* 将row中数据加载到单据体对应字段中
* @param dynamicObject DynamicObject为界面单据体
* @param row Row中为查询到的字段信息
*/
public void loadExtraTargetBillFields(DynamicObject dynamicObject, Row row) {//Row中为查询到的字段信息,DynamicObject为界面单据体,将row中数据加载到单据体对应字段中
dynamicObject.set("salefeebizoperator_id", row.get("bizoperator"));
dynamicObject.set("salefeetaxrate", row.get("billentry.taxrate"));
//此处salefeebizoperator与salefeetaxrate为销售费用分摊表单新增字段的标识,而salefeebizoperator是基础资料业务员的标识,因此需要在后方增加"_id"以正常加载基础资料。
}
@Override
/**整单分摊时销售出库单单据体加载方法
* 将row中数据加载到单据体对应字段中
* @param dynamicObject DynamicObject为界面单据体
* @param row Row中为查询到的字段信息
*/
public void loadWholeBillExtraTargetBillFields(DynamicObject dynamicObject, Row row) {
dynamicObject.set("salefeebizoperator_id", row.get("bizoperator"));
}
@Override
/**销售出库单整单分摊指定额外隐藏字段方法
* @return 整单分摊时需额外隐藏的单据体字段标识
*/
public String[] getExtraVisibleFields() {
return new String[]{"salefeetaxrate"};
//此处返回的值为销售费用分摊界面上新增的,销售出库单需要在整单分摊时隐藏的字段名,通常,单据体字段需要在整单分摊时隐藏
}
}
```
## 3.注册插件 ##
打开**业务扩展场景**,选择业务场景编码为"**kd.fi.cal.formplugin.salefee.SaleFeeAllocPlugin.queryandload**"的业务场景,并点击绑定插件
![业务场景搜索.webp](/download/01008f5bb526b68b44c2bd99a9b76ca80852.webp)
![业务扩展场景.webp](/download/0100ed8504681dd5415dbd3973e51c4a8a4d.webp)
然后点击增行,绑定插件引用路径并保存。此时,实现的接口功能就能正常生效了。
![注册插件.webp](/download/0100e6e19d9d7a354466bd8e3eae9b24c0f1.webp)
# 四、实现效果 #
如图时非整单分摊时,能获取销售出库单的业务员与税率字段。
![销售费用非整单.webp](/download/0100c8d0d45c36244c77bd1b082469c1fe92.webp)
而在整单分摊时,税率字段被隐藏了
![销售费用整单.webp](/download/01004442e2ef0a084d4297402020c7a95551.webp)
# 五、注意事项 #
1.查询单据体字段时,注意**增加单据体标识**,如,查询标识为"entity"的单据体的字段"number"时,应使用字符串"**entity**.number"。
2.加载基础资料到页面上时,应使用"**_id**"作为基础资料的标识后缀,以正确加载基础资料。如加载标识为"salefeebizoperator"的基础资料字段时,使用
dynamicObject.set("**salefeebizoperator_id**", row.get("bizoperator"));
销售费用分摊二开增加字段
# 一、使用背景 #目前星空旗舰版销售费用分摊功能,查询获取的应付单与销售出库单字段有限,不能满足用户的所有需求。# 二、接口说明 #...
点击下载文档
上一篇:#旗舰版实践分享#三步解决单据字段携带到标准报表下一篇:报销
本文2024-09-16 17:32:44发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-16393.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章