二开方案:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验
## 【问题概述】:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验?
场景:客户在销售订单中增加了一个自定义文本字段(简称A),同时在费用报销单中增加了相同的A,通过联动实现在掌上报销轻应用费用报销单做单时,判断用户输入的A值如XXX0001,如果存在(A值 = XXX0001)的销售订单,那么将弹窗报错,不允许保存或提交。
## 【问题分析】
该需求需要在销售订单、费用报销单、掌上报销V3_费用报销单三个表单中进行二开设计,且需要写代码实现。
## 【解决方案】
详细二开步骤:
1. 扩展表单 销售订单(SAL_SaleOrder)
![1.webp](/download/01005069c299f4c74577942627f90bcbfcb4.webp)
2. 增加字段 销售合同号(FSaleContractNo,文本类型)
![image.webp](/download/0100f0fff2ab03484aad8f61461b4a628bd0.webp)
3. 增加字段 销售合同允许在移动报销使用(FEnableMobExpReimb,复选框类型),将缺省值设置为勾选,即默认值为1
![image.webp](/download/0100b8b6d086a22043ae83c8cac478c4109c.webp)
4. 扩展表单 费用报销单(ER_ExpReimbursement)
5. 增加字段 销售合同号(FSaleContractNo,文本类型)
![image.webp](/download/01003e6fd7c61f9241bdaae677476be95842.webp)
6. 在掌上报销显示设置中,对于“费用报销单”增加字段 销售合同号
![image.webp](/download/010022f1530450bf449cad5df9c56fb84357.webp)
添加后,移动端:
![image.webp](/download/0100103a0447f7794cb5b61c00290b2b56ce.webp)
7. 编写插件,继承Kingdee.K3.FIN.ER.Mobile.Business.PlugIn.MobileReimbV3.MBReimbExpReimbEdit
8. 重写AfterButtonClick方法,在方法中判断当前点击的Key为 FButtonSave 或 FButtonCommit 时,执行自定义逻辑查询是否存在(销售合同号=输入内容 同时 销售合同允许在移动报销使用 != 1)的销售订单(请查阅代码参考)
9. 扩展表单 掌上报销V3_费用报销单(ER_MBReimb_ExpReimbV3),注册当前插件并启用,取消启用默认插件
![image.webp](/download/01008b1ba9ba578748e8b51bc2bb79030835.webp)
代码参考如下:
```
public override void AfterButtonClick(AfterButtonClickEventArgs e)
{
// 用户按下的是提交 或 保存
if (e.Key == "FBUTTONCOMMIT" || e.Key == "FBUTTONSAVE")
{
// 获取用户当前输入的销售合同号的值
var saleContractNo = Convert.ToString(this.View.Model.GetValue("FSaleContractNo"));
// 判断不为空
if (!string.IsNullOrEmpty(saleContractNo))
{
// sql语句
string sql = "select count(1) from T_SAL_ORDER where FSALECONTRACTNO = @saleContractNo AND FENABLEMOBEXPREIMB != '1'";
// 执行sql获取匹配的行数
var count = DBUtils.ExecuteScalar<int>(this.Context, sql, 0, new SqlParam[] { new SqlParam("@saleContractNo", KDDbType.String, saleContractNo) });
// 当匹配的行数>0表明当前存在(销售合同号=输入内容 同时 销售合同允许在移动报销使用 != 1)的销售订单,判定需要弹窗拦截
if (count > 0)
{
this.View.ShowMessage("当前销售合同号被设置为不允许输入!");
return;
}
}
}
// 其余的统一执行既定逻辑
base.AfterButtonClick(e);
}
```
解析:其中"FBUTTONCOMMIT"、"FBUTTONSAVE"为按钮的固定标识,"T_SAL_ORDER"为销售订单对应的表名。
二开完成后的效果图:
![image.webp](/download/01006a3ce36830524f1f9b7de95b3d860b8f.webp)
二开方案:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验
## 【问题概述】:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验?场景:客户在销售订单中增加了一个自定义文本字段(简...
点击下载文档
本文2024-09-23 03:54:17发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161848.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章