票据管理分应用默认费用明细行
This commit is contained in:
parent
71521179de
commit
6a414ac7af
|
|
@ -2,6 +2,9 @@ package kdsz.zyf25.tmc.cfm.plugin.form.cdm;
|
|||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||
|
|
@ -13,7 +16,11 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|||
import kd.sdk.plugin.Plugin;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 票据管理:开票/收票登记、开票申请,票据类型根据单据发布应用决定票据类型过滤、默认票据类型
|
||||
|
|
@ -21,6 +28,9 @@ import java.util.EventObject;
|
|||
public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||
private static final String XZY_NUM = "CDMT-8D5DCE08";//票据类型:信用证编码
|
||||
private static final String GYL_NUM = "CDMT-25826125";//票据类型:供应链金融编码
|
||||
private static final String TYPE_XYZ = "kdsz_lcm";//应用编码_信用证
|
||||
private static final String TYPE_GYL = "kdsz_scmf";//应用编码_供应链金融
|
||||
private static final String TYPE_COMMON = "cdm";//应用编码_票据管理
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
super.afterCreateNewData(e);
|
||||
|
|
@ -30,11 +40,11 @@ public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin,
|
|||
String billTypeNum = "";
|
||||
switch (appId){
|
||||
//信用证
|
||||
case "kdsz_lcm":
|
||||
case TYPE_XYZ:
|
||||
billTypeNum = XZY_NUM;
|
||||
break;
|
||||
//供应链金融
|
||||
case "kdsz_scmf":
|
||||
case TYPE_GYL:
|
||||
billTypeNum = GYL_NUM;
|
||||
break;
|
||||
}
|
||||
|
|
@ -56,11 +66,11 @@ public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin,
|
|||
String propertyName = beforeF7SelectEvent.getProperty().getName();
|
||||
if ("draftbilltype".equals(propertyName)) {
|
||||
QFilter filter = null;
|
||||
if ("kdsz_lcm".equals(appId)){
|
||||
if (TYPE_XYZ.equals(appId)){
|
||||
filter = new QFilter("number", QCP.equals, XZY_NUM);
|
||||
} else if ("kdsz_scmf".equals(appId)) {
|
||||
} else if (TYPE_GYL.equals(appId)) {
|
||||
filter = new QFilter("number", QCP.equals, GYL_NUM);
|
||||
} else if ("cdm".equals(appId)) {
|
||||
} else if (TYPE_COMMON.equals(appId)) {
|
||||
filter = new QFilter("number", QCP.not_equals, GYL_NUM)
|
||||
.and("number", QCP.not_equals, XZY_NUM);
|
||||
}
|
||||
|
|
@ -77,4 +87,104 @@ public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin,
|
|||
BasedataEdit fieldEdit = this.getView().getControl("draftbilltype");
|
||||
fieldEdit.addBeforeF7SelectListener(this);
|
||||
}
|
||||
|
||||
//单据分类—费用类型对应关系
|
||||
private static HashMap<String, ArrayList<String>> billTypeMap = new HashMap<>();
|
||||
//费用类型对象map;key编码,value费用类型对象
|
||||
private HashMap<String, DynamicObject > feeTypeMap = new HashMap<>();
|
||||
static {
|
||||
ArrayList<String> types = new ArrayList<>();
|
||||
//票据管理-默认费用类型
|
||||
types.add("FY_016");//敞口费率
|
||||
types.add("FY_017");//其他费率
|
||||
types.add("FY_002");//手续费
|
||||
types.add("FY_001");//中收费
|
||||
types.add("FY_014");//减免费用
|
||||
billTypeMap.put(TYPE_COMMON, types);
|
||||
//信用证管理-默认费用类型
|
||||
types = new ArrayList<>();
|
||||
types.add("FY_011");//利率
|
||||
types.add("FY_017");//其他费率
|
||||
types.add("FY_002");//手续费
|
||||
types.add("FY_001");//中收费
|
||||
billTypeMap.put(TYPE_XYZ, types);
|
||||
//供应链金融管理-默认费用类型
|
||||
types = new ArrayList<>();
|
||||
types.add("FY_013");//平台费
|
||||
types.add("FY_011");//利率
|
||||
types.add("FY_012");//费率
|
||||
types.add("FY_001");//中收费
|
||||
types.add("FY_014");//减免费用
|
||||
types.add("FY_015");//综合利率
|
||||
billTypeMap.put(TYPE_GYL, types);
|
||||
}
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
super.propertyChanged(e);
|
||||
String propertyName = e.getProperty().getName();
|
||||
//费用明细默认分录
|
||||
if ("amount".equals(propertyName)){
|
||||
BigDecimal amount = (BigDecimal)this.getModel().getValue("amount");
|
||||
if (amount != null && BigDecimal.ZERO.compareTo( amount) != 0){
|
||||
FormShowParameter showParameter = this.getView().getFormShowParameter();
|
||||
String appId = showParameter.getAppId();
|
||||
defaultFeeType(appId);
|
||||
}
|
||||
}
|
||||
//费用明细-费用金额改变
|
||||
if ("feeamt".equals(propertyName)){
|
||||
ChangeData changeData = e.getChangeSet()[0];
|
||||
BigDecimal newValue = (BigDecimal)changeData.getNewValue();
|
||||
BigDecimal oldValue = (BigDecimal)changeData.getOldValue();
|
||||
int rowIndex = changeData.getRowIndex();
|
||||
DynamicObject changeRowFeeType = (DynamicObject)this.getModel().getValue("feetype", rowIndex);
|
||||
//综合利率行 费用金额改变不处理
|
||||
if (changeRowFeeType == null || changeRowFeeType.getString("number").equals("FY_015"))return;
|
||||
if (newValue != null && oldValue != null){
|
||||
BigDecimal diffValue = newValue.subtract(oldValue);//新旧差值
|
||||
DynamicObjectCollection feeDetail = this.getModel().getEntryEntity("feedetail");
|
||||
for (int i = 0; i < feeDetail.size(); i++) {
|
||||
DynamicObject feeType = feeDetail.get(i).getDynamicObject("feetype");
|
||||
if (feeType == null)continue;
|
||||
String feeTypeNum = feeType.getString("number");
|
||||
if (!"FY_015".equals(feeTypeNum))continue;
|
||||
BigDecimal feeAmt = (BigDecimal)this.getModel().getValue("feeamt", i);
|
||||
feeAmt = feeAmt.add(diffValue);
|
||||
this.getModel().setValue("feeamt", feeAmt, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void defaultFeeType(String appId){
|
||||
//费用明细分录为空则默认
|
||||
DynamicObjectCollection feeDetails = this.getModel().getEntryEntity("feedetail");
|
||||
if (feeDetails != null && feeDetails.size() == 0){
|
||||
if (TYPE_COMMON.equals(appId) || TYPE_XYZ.equals(appId) || TYPE_GYL.equals(appId)){
|
||||
for (String billType : billTypeMap.keySet()) {
|
||||
ArrayList<String> feeTypeNumList = billTypeMap.get(billType);
|
||||
for (String feeTypeNum : feeTypeNumList) {
|
||||
DynamicObject feeType = feeTypeMap.get(feeTypeNum);
|
||||
if (feeType != null)continue;
|
||||
feeType = BusinessDataServiceHelper.loadSingle("fbd_feetype", "id",
|
||||
new QFilter[]{new QFilter("number", QCP.equals, feeTypeNum)});
|
||||
feeTypeMap.put(feeTypeNum, feeType);
|
||||
}
|
||||
}
|
||||
ArrayList<String> types = billTypeMap.get(appId);
|
||||
StringBuilder message = new StringBuilder();
|
||||
for (String type : types) {
|
||||
DynamicObject feeType = feeTypeMap.get(type);
|
||||
if (feeType != null){
|
||||
int newIndex = this.getModel().createNewEntryRow("feedetail");//新增行index
|
||||
this.getModel().setValue("feetype",feeType,newIndex);
|
||||
}else {
|
||||
message.append("编码为:").append(type).append("的费用类型不存在!");
|
||||
}
|
||||
}
|
||||
if (message.length() > 0){
|
||||
this.getView().showMessage(message.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue