二开方案:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验

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

二开方案:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验

## 【问题概述】:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验? 场景:客户在销售订单中增加了一个自定义文本字段(简称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)

二开方案:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验

## 【问题概述】:如何在掌上报销中单据保存(或提交)前对输入字段值做自定义校验?场景:客户在销售订单中增加了一个自定义文本字段(简...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息