一、业务背景
B企业的上线了资金管理的【融资管理】模块,使用“借款单”处理相关的融资业务,由于每一笔借款单对应的合同会随着LPR贷款市场报价利率、重新议定借款合同的“利率条款”、存量借款置换、债务重组等诸多因素的影响,导致发生了利率类型变化的业务,这时候,我们就要使用EAS Cloud利息管理的【借款利率调整】进行处理;
二、痛点
借款单序时簿中,没有预设的“是否利率调整”字段,因此想要查看那笔借款单调整过利率,就得一个个进行下查,去看发生是否有关联的“借款利息调整单”,对于集团化大型企业来说,拥有海量的融资借款数据,一个个下查去看,是一件头大的事情!
三、解决思路
1、借款单在DEP中,增加布尔字段“借款单.是否利率调整”
2、在借款单默认没调息时,“借款单.是否利率调整”字段默认值不进行勾选;【默认值=“0”】
3、在借款单发生调息业务时,通过DEP拓展“借款利率调整单”【实体】中增加“集合新增”的拓展定义脚本,给“借款单.是否利率调整”赋值“1”;
4、当调整过利率的借款单,将对应的“借款利息调整单”全部进行删除操作时,通过DEP拓展“借款利率调整单”【实体】中增加“集合删除”的拓展定义脚本,给“是否利率调整”赋值“0”;
四、关键步骤
1、增加“是否利率调整”布尔字段;
进入“动态拓展平台(高级版)【DEP】”中,拓展“借款”方案;
给借款单【编辑界面】增加布尔字段“是否利率调整”;
2、在借款利息调整单【实体】的“集合新增”放置【后置脚本】
进入“动态拓展平台(高级版)【DEP】”中,,拓展“借款利息调整单”方案;
给借款利息调整单【实体】中的【拓展定义】,放置【集合新增】的如下【后置脚本】;
PS:之所以放置后置脚本,是因为要在新增之后才会给调整单对应的借款单的“是否利率调整”打上标识(即1);
脚本如下:
var imp = JavaImporter(); imp.importPackage(Packages.com.kingdee.eas.util.app); imp.importPackage(Packages.java.sql); imp.importPackage(Packages.com.kingdee.eas.util.client); imp.importPackage(Packages.com.kingdee.bos.dao.query); with(imp){ var ctx = pluginCtx.getContext(); var model =methodCtx.getParamValue(0); var id= model.getId(); //获取单据对象 //获取单据id if(id != null){ var sql = "select FLOANID from T_FIN_LOANADJUSTINTEREST where fid = '" + id + "'"; var rs=com.kingdee.eas.util.app.DbUtil.executeQuery(ctx,sql); var fid = null; if( rs != null && rs.next()){ fid = rs.getString(1); } var status = "1"; if(fid != null){ var sqls = "update T_FIN_Loan SET CFISADJUSTED = '" + status + "' WHERE FID = '"+fid+"'"; com.kingdee.eas.util.app.DbUtil.execute(ctx,sqls); } } }
2、在借款利息调整单【实体】的“集合删除”放置【前置脚本】
进入“动态拓展平台(高级版)【DEP】”中,,拓展“借款利息调整单”方案;
给借款利息调整单【实体】中的【拓展定义】,放置【集合删除】的如下【前置脚本】;
PS:之所以放置前置脚本,是因为要在删除之前为了找到借款利息调整单对应的借款单,需要获取删除的数据,并在删除前给借款单的“是否利率调整”取消标识(即改为0)
脚本如下:
var ctx = pluginCtx.getContext(); var model =methodCtx.getParamValue(0); var id= model.toString(); var sql = "select distinct FLOANID from T_FIN_LOANADJUSTINTEREST where fid in ('" + id.toString()+ "')"; var rs = com.kingdee.eas.util.app.DbUtil.executeQuery(ctx,sql); while(rs.next()){ var LoanId=rs.getString("FLOANID") //获取借款单id var sql1="select count(fid) cou from t_bot_relation where fsrcobjectid='"+LoanId+"'"; var rs1=com.kingdee.eas.util.app.DbUtil.executeQuery(ctx,sql1); while(rs1.next()){ if(rs1.getInt("cou")==1){//如果rs1.getInt("cou")==1,说明没有借款利率调整单,可以更新借款单状态为0 var sqls = "update T_FIN_Loan SET CFISADJUSTED =0 WHERE FID = '"+LoanId+"'"; com.kingdee.eas.util.app.DbUtil.execute(ctx,sqls); } } }
五、效果展示
1、找到一笔借款单“JK-SW01-000004”,进行借款利率调整;
2、输入必要的调整信息,点击“确认”生成一张借款利息调整单;
3、调整后,系统会自动更新借款单的“最新利率”字段,并给“是否利率调整”打上标识!
4、删除后,该标识会复原!
注意:本文提供的脚本也包含了下述业务场景!
利率调整可进行多次,但该标识字段,只表示“是否存在借款利率调整单”
因此只有对应借款单完全没有了调整单,标识字段才会清空!
否则,不论调整多少次,均会标识该字段!
附上如果是中途上线的该方案的话,历史数据的处理sql:
--借款利息调整单对应的借款单内码 select FLOANID from T_FIN_LOANADJUSTINTEREST --查询进行过借款利息调整的借款单 select * from T_FIN_Loan where FID in (select FLOANID from T_FIN_LOANADJUSTINTEREST) --给历史已调整过利率的借款单赋值“是否利率调整”标识=1 --update T_FIN_Loan set CFFRATEADJUST = 1 where FID in (select FLOANID from T_FIN_LOANADJUSTINTEREST) --查询调整的效果 select * from T_FIN_Loan where CFFRATEADJUST = 1
文末感谢@郑南通 提供的技术支持!
另附上相关问答!
DEP拓展脚本:新增借款利息调整单,update“是否调息”=“是”,编辑界面无法实现即时调整,需要把脚本改到实体上;
DEP拓展脚本:删除借款利率调整单,update“是否调息”=“否”,麻烦大佬看看,这个脚本有什么问题么?
推荐阅读