票据管理分应用默认费用明细行
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.bill.AbstractBillPlugIn;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
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.FormShowParameter;
|
||||||
import kd.bos.form.field.BasedataEdit;
|
import kd.bos.form.field.BasedataEdit;
|
||||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||||
|
|
@ -13,7 +16,11 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
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.EventObject;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 票据管理:开票/收票登记、开票申请,票据类型根据单据发布应用决定票据类型过滤、默认票据类型
|
* 票据管理:开票/收票登记、开票申请,票据类型根据单据发布应用决定票据类型过滤、默认票据类型
|
||||||
|
|
@ -21,6 +28,9 @@ import java.util.EventObject;
|
||||||
public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||||
private static final String XZY_NUM = "CDMT-8D5DCE08";//票据类型:信用证编码
|
private static final String XZY_NUM = "CDMT-8D5DCE08";//票据类型:信用证编码
|
||||||
private static final String GYL_NUM = "CDMT-25826125";//票据类型:供应链金融编码
|
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
|
@Override
|
||||||
public void afterCreateNewData(EventObject e) {
|
public void afterCreateNewData(EventObject e) {
|
||||||
super.afterCreateNewData(e);
|
super.afterCreateNewData(e);
|
||||||
|
|
@ -30,11 +40,11 @@ public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin,
|
||||||
String billTypeNum = "";
|
String billTypeNum = "";
|
||||||
switch (appId){
|
switch (appId){
|
||||||
//信用证
|
//信用证
|
||||||
case "kdsz_lcm":
|
case TYPE_XYZ:
|
||||||
billTypeNum = XZY_NUM;
|
billTypeNum = XZY_NUM;
|
||||||
break;
|
break;
|
||||||
//供应链金融
|
//供应链金融
|
||||||
case "kdsz_scmf":
|
case TYPE_GYL:
|
||||||
billTypeNum = GYL_NUM;
|
billTypeNum = GYL_NUM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -56,11 +66,11 @@ public class CdmBillTypeBillPlugin extends AbstractBillPlugIn implements Plugin,
|
||||||
String propertyName = beforeF7SelectEvent.getProperty().getName();
|
String propertyName = beforeF7SelectEvent.getProperty().getName();
|
||||||
if ("draftbilltype".equals(propertyName)) {
|
if ("draftbilltype".equals(propertyName)) {
|
||||||
QFilter filter = null;
|
QFilter filter = null;
|
||||||
if ("kdsz_lcm".equals(appId)){
|
if (TYPE_XYZ.equals(appId)){
|
||||||
filter = new QFilter("number", QCP.equals, XZY_NUM);
|
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);
|
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)
|
filter = new QFilter("number", QCP.not_equals, GYL_NUM)
|
||||||
.and("number", QCP.not_equals, XZY_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");
|
BasedataEdit fieldEdit = this.getView().getControl("draftbilltype");
|
||||||
fieldEdit.addBeforeF7SelectListener(this);
|
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