diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/RecBillFromPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/RecBillFromPlugin.java index 20fbba7..f1f1f6f 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/RecBillFromPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/RecBillFromPlugin.java @@ -4,6 +4,7 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.control.Label; import kd.bos.form.control.events.BeforeItemClickEvent; import kd.bos.form.events.BeforeClosedEvent; import kd.bos.form.events.ClosedCallBackEvent; @@ -36,6 +37,17 @@ public class RecBillFromPlugin extends AbstractFormPlugin implements Plugin { @Override public void afterBindData(EventObject e) { super.afterBindData(e); + //携带付款人编码 + String payerformid = ""+this.getView().getModel().getValue("payerformid");//付款人类型标识ID + Long payer = Long.valueOf(""+this.getView().getModel().getValue("payer"));//付款人ID + if (!"other".equals(payerformid)) { + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(payer, payerformid); + if (null != dynamicObject) { + Label label1 = this.getView().getControl("shjh_positionbr4"); + label1.setText(dynamicObject.getString("number")); + } + } + //携带生单规则分录的业务大类,业务小类,成本中心,利润中心到收款处理单头__逻辑迁移到单据保存操作插件 // carryCustomer(); //根据分录清账状态去默认表头的清账状态 diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java index 969e78e..4b1cec3 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/TextFieldDemo.java @@ -24,6 +24,18 @@ public class TextFieldDemo extends AbstractFormPlugin { Label label = this.getView().getControl("shjh_sjskfs"); label.setText(""+this.getView().getModel().getValue("shjh_asstactrealname")); + //携带收款人编码 + String payeeformid = ""+this.getView().getModel().getValue("payeeformid");//收款人基础资料标识 + Long payee = Long.valueOf(""+this.getView().getModel().getValue("payee"));//收款人ID + if (payee != 0 && payeeformid!= null &&!payeeformid.isEmpty()) { + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(payee, payeeformid); + if (null != dynamicObject) { + Label label1 = this.getView().getControl("shjh_positionbr4"); + label1.setText(dynamicObject.getString("number")); + } + } + + // 获取成本中心和利润中心的控件 BasedataEdit shjh_costcenter = this.getView().getControl("shjh_costcenter"); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/ApplyTransBillSaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/ApplyTransBillSaveOperation.java new file mode 100644 index 0000000..93fe7aa --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/ApplyTransBillSaveOperation.java @@ -0,0 +1,143 @@ +package shjh.jhzj7.fi.fi.plugin.operate; + +import com.alibaba.fastjson.JSONObject; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.DeleteServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.sdk.plugin.Plugin; +import kd.tmc.fbp.common.bean.BizBalanceModelBean; +import kd.tmc.fbp.common.enums.TmcAppEnum; +import kd.tmc.fbp.common.helper.TmcParameterHelper; +import kd.tmc.fbp.service.model.BalanceModelService; +import shjh.jhzj7.fi.fi.utils.domin.ResponseData; + +import java.math.BigDecimal; + +/** + * 请款单保存操作插件 + */ +public class ApplyTransBillSaveOperation extends AbstractOperationServicePlugIn implements Plugin { + + private static final Log log = LogFactory.getLog(ApplyTransBillSaveOperation.class); + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.addValidator(new AbstractValidator() { + @Override + public void validate() { + String operateKey = this.getOperateKey(); + //数据采集校验&&重新赋值申请下拨金额 + if ("save".equals(operateKey)){ + ExtendedDataEntity[] entities = this.getDataEntities(); + for (ExtendedDataEntity entity : entities) { + DynamicObject aDo = entity.getDataEntity(); + DynamicObject currency = aDo.getDynamicObject("currency"); + Long currencyId = currency.getLong("id"); + DynamicObject org = aDo.getDynamicObject("company"); + Long orgId = org.getLong("id"); + String balanceType = TmcParameterHelper.getAppStringParameter(TmcAppEnum.FCS.getId(), orgId, "balancevalue"); + BalanceModelService balanceModelService = new BalanceModelService(); + + DynamicObjectCollection entrys = aDo.getDynamicObjectCollection("entrys"); + for (DynamicObject entry : entrys) { + + DynamicObject bankAcct = entry.getDynamicObject("subacct"); + BizBalanceModelBean bizBalanceModelBean = balanceModelService.getRunningBalance(balanceType, bankAcct.getLong("id"), currencyId); + BigDecimal subcurbalance = bizBalanceModelBean.getAmount();//子账户即时余额 + BigDecimal applyamt = entry.getBigDecimal("applyamt");//申请下拨金额 + // 如果subcurbalance小于applyamt,则调整applyamt的值 + if (subcurbalance.compareTo(applyamt) >= 0) { + this.addMessage(entity,"子账户即时余额 >= 申请下拨金额,不允许生成请款单!"); + } + } + } + } + } + }); + + } + + @Override + public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { + super.beforeExecuteOperationTransaction(e); + //数据采集校验&&重新赋值申请下拨金额 + String eok = e.getOperationKey(); + if("save".equals(eok)){ + DynamicObject[] dos = e.getDataEntities(); + for (DynamicObject aDo : dos) { + DynamicObject currency = aDo.getDynamicObject("currency"); + Long currencyId = currency.getLong("id"); + DynamicObject org = aDo.getDynamicObject("company"); + Long orgId = org.getLong("id"); + String balanceType = TmcParameterHelper.getAppStringParameter(TmcAppEnum.FCS.getId(), orgId, "balancevalue"); + BalanceModelService balanceModelService = new BalanceModelService(); + + DynamicObjectCollection entrys = aDo.getDynamicObjectCollection("entrys"); + for (DynamicObject entry : entrys) { + + DynamicObject bankAcct = entry.getDynamicObject("subacct"); + BizBalanceModelBean bizBalanceModelBean = balanceModelService.getRunningBalance(balanceType, bankAcct.getLong("id"), currencyId); + BigDecimal subcurbalance = bizBalanceModelBean.getAmount();//子账户即时余额 + +// BigDecimal subcurbalance = entry.getBigDecimal("subcurbalance");//子账户即时余额 + BigDecimal applyamt = entry.getBigDecimal("applyamt");//申请下拨金额 + // 如果subcurbalance小于applyamt,则调整applyamt的值 + if (subcurbalance.compareTo(applyamt) < 0) { + applyamt = applyamt.subtract(subcurbalance); + entry.set("applyamt", applyamt);//重新赋值--申请下拨金额 + } + } + } + } + } + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + //数据采集校验&&重新赋值申请下拨金额 + String eok = e.getOperationKey(); +// if("save".equals(eok)){ +// DynamicObject[] dos = e.getDataEntities(); +// DynamicObject prinfo; +// for (DynamicObject aDo : dos) { +// boolean isdelete = false; +// DynamicObject currency = aDo.getDynamicObject("currency"); +// Long currencyId = currency.getLong("id"); +// DynamicObject org = aDo.getDynamicObject("company"); +// Long orgId = org.getLong("id"); +// String balanceType = TmcParameterHelper.getAppStringParameter(TmcAppEnum.FCS.getId(), orgId, "balancevalue"); +// BalanceModelService balanceModelService = new BalanceModelService(); +// +// prinfo = BusinessDataServiceHelper.loadSingle(aDo.getPkValue(), aDo.getDataEntityType().getName()); +// DynamicObjectCollection entrys = prinfo.getDynamicObjectCollection("entrys"); +// for (DynamicObject entry : entrys) { +// +// DynamicObject bankAcct = entry.getDynamicObject("subacct"); +// BizBalanceModelBean bizBalanceModelBean = balanceModelService.getRunningBalance(balanceType, bankAcct.getLong("id"), currencyId); +// BigDecimal subcurbalance = bizBalanceModelBean.getAmount();//子账户即时余额 +// +//// BigDecimal subcurbalance = entry.getBigDecimal("subcurbalance");//子账户即时余额 +// BigDecimal applyamt = entry.getBigDecimal("applyamt");//申请下拨金额 +// // 如果subcurbalance小于applyamt,则调整applyamt的值 +// if (subcurbalance.compareTo(applyamt) >= 0) { +// isdelete = true; +// } +// } +// if(isdelete){ +// DeleteServiceHelper.delete(aDo.getDataEntityType(),new Object[]{prinfo.getPkValue()}); +// } +// } +// } + } +} diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSubmitOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSubmitOperation.java index acede09..1ff9015 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSubmitOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSubmitOperation.java @@ -43,8 +43,12 @@ public class PayBillSubmitOperation extends AbstractOperationServicePlugIn imple ExtendedDataEntity[] entities = this.getDataEntities(); for (ExtendedDataEntity entity : entities) { DynamicObject bill = entity.getDataEntity(); - bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(),"cas_paybill"); - String sourcesystem = bill.getString("shjh_sourcesystem");//来源系统:SAP_A 费控_B + String sourcesystem = ""; + try { + sourcesystem = bill.getString("shjh_sourcesystem");//来源系统:SAP_A 费控_B + }catch (Exception e){ + bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(),"cas_paybill"); + } boolean shjhSapvalidate = bill.getBoolean("shjh_sapvalidate");//SAP校验是否通过 //付款单提交时,调用SAP应付凭证数据校验接口,校验不通过,弹框提示用户具体原因;如果校验通过,则标记;后续再提交时无需校验。 if ("A".equals(sourcesystem) && !shjhSapvalidate) { diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java index cf08e44..f5db13e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java @@ -315,12 +315,23 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl hsxminfo = QueryServiceHelper.queryOne("bos_costcenter", "id,name,number", new QFilter[]{new QFilter("id", QCP.equals, glassistbd.getLong("assval"))});//维度值 IT_ITEMS.put("KOSTL",hsxminfo.getString("number"));//成本中心_成本中心 - }else if("f000054".equals(asstype)){ - //原因码 f000054 - IT_ITEMS.put("RSTGR",glassistbd.getString("assval"));//成本中心_成本中心 } } + + gl_assist_bd = QueryServiceHelper.query("gl_assist_txt", "asstype,assval", + new QFilter[]{new QFilter("hg.id", QCP.equals, assgrpinfo.getPkValue())});//核算项目组合纵表-文本 + for (int j = 0; j < gl_assist_bd.size(); j++) { + glassistbd = gl_assist_bd.get(j); + asstype = glassistbd.getString("asstype");//核算项目类型-对应核算维度的字段名 + if("f000054".equals(asstype)){ + //原因码 f000054 + IT_ITEMS.put("RSTGR",glassistbd.getString("assval")); + }else if("f000056".equals(asstype)){ + //分配编号 f000056 + IT_ITEMS.put("ZUONR",glassistbd.getString("assval")); + } + } } // 获取借方金额