parent
478c78d798
commit
3a04faa569
|
@ -22,10 +22,17 @@ import kd.bos.entity.datamodel.ListSelectedRowCollection;
|
||||||
import kd.bos.entity.datamodel.events.ChangeData;
|
import kd.bos.entity.datamodel.events.ChangeData;
|
||||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||||
import kd.bos.entity.operate.result.OperationResult;
|
import kd.bos.entity.operate.result.OperationResult;
|
||||||
|
import kd.bos.form.FormShowParameter;
|
||||||
import kd.bos.form.IPageCache;
|
import kd.bos.form.IPageCache;
|
||||||
|
import kd.bos.form.control.Control;
|
||||||
import kd.bos.form.control.Toolbar;
|
import kd.bos.form.control.Toolbar;
|
||||||
|
import kd.bos.form.control.events.AfterShowTipsEvent;
|
||||||
|
import kd.bos.form.control.events.BeforeShowTipsEvent;
|
||||||
import kd.bos.form.control.events.ItemClickEvent;
|
import kd.bos.form.control.events.ItemClickEvent;
|
||||||
|
import kd.bos.form.control.events.TipsListener;
|
||||||
|
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||||
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||||
|
import kd.bos.form.field.FieldEdit;
|
||||||
import kd.bos.form.field.RefBillEdit;
|
import kd.bos.form.field.RefBillEdit;
|
||||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||||
import kd.bos.form.field.events.BeforeF7SelectListener;
|
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||||
|
@ -52,7 +59,7 @@ import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusie
|
||||||
/**
|
/**
|
||||||
* 单据界面插件
|
* 单据界面插件
|
||||||
*/
|
*/
|
||||||
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, TipsListener {
|
||||||
private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class);
|
private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class);
|
||||||
|
|
||||||
public static final List<String> update_sk = Arrays.asList("payeename","payeebanknum","recaccbankname","payeecurrency","payeebank","payeebankname","recbanknumber");//拉单需要更新的收款方
|
public static final List<String> update_sk = Arrays.asList("payeename","payeebanknum","recaccbankname","payeecurrency","payeebank","payeebankname","recbanknumber");//拉单需要更新的收款方
|
||||||
|
@ -67,6 +74,8 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
|
||||||
RefBillEdit shkd_ywcl = this.getView().getControl("shkd_ywcl");//业务处理
|
RefBillEdit shkd_ywcl = this.getView().getControl("shkd_ywcl");//业务处理
|
||||||
shkd_ywcl.addBeforeF7SelectListener(this);
|
shkd_ywcl.addBeforeF7SelectListener(this);
|
||||||
|
|
||||||
|
FieldEdit actpayamt = getControl("actpayamt");
|
||||||
|
actpayamt.addTipsListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -395,4 +404,28 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
|
||||||
|
|
||||||
return enableRules;
|
return enableRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
||||||
|
super.afterDoOperation(afterDoOperationEventArgs);
|
||||||
|
String operateKey = afterDoOperationEventArgs.getOperateKey();
|
||||||
|
logger.info("调用操作代码 → {}", operateKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeShowTips(BeforeShowTipsEvent beforeShowTipsEvent) {
|
||||||
|
Control source = (FieldEdit) beforeShowTipsEvent.getSource();
|
||||||
|
FormShowParameter formshowParameter = beforeShowTipsEvent.getFormshowParameter();
|
||||||
|
if(formshowParameter == null) {
|
||||||
|
formshowParameter = new FormShowParameter();
|
||||||
|
}
|
||||||
|
//将点击控件标识传递给子页面用于获取填报指引详情数据
|
||||||
|
formshowParameter.setCustomParam("amount", this.getModel().getValue(source.getKey()));
|
||||||
|
beforeShowTipsEvent.setFormshowParameter(formshowParameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterShowTips(AfterShowTipsEvent afterShowTipsEvent) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,152 @@
|
||||||
|
package shkd.sys.sys.plugin.form;
|
||||||
|
|
||||||
|
import kd.bos.form.FormShowParameter;
|
||||||
|
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.EventObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态表单插件
|
||||||
|
*/
|
||||||
|
public class PaymentProcessingFormPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
|
private static final String[] CN_NUMBERS = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
|
||||||
|
private static final String[] CN_UNITS = {"", "十", "百", "千"};
|
||||||
|
private static final String[] CN_BIG_UNITS = {"", "万", "亿", "万亿"};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterCreateNewData(EventObject e) {
|
||||||
|
super.afterCreateNewData(e);
|
||||||
|
FormShowParameter formShowParameter = getView().getFormShowParameter();
|
||||||
|
//FormShowParameter获取父页面被点击控件的标识
|
||||||
|
Object amountObj = formShowParameter.getCustomParam("amount");
|
||||||
|
if (amountObj != null) {
|
||||||
|
BigDecimal amount;
|
||||||
|
if (amountObj instanceof BigDecimal) {
|
||||||
|
amount = (BigDecimal) amountObj;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
amount = new BigDecimal(amountObj.toString());
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
// 处理非法数字格式
|
||||||
|
this.getModel().setValue("shkd_amount", "0.00");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.getModel().setValue("shkd_amount", numberToFormat(amount));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String numberToFormat(BigDecimal amount) {
|
||||||
|
BigDecimal integerPart = amount.setScale(0, BigDecimal.ROUND_DOWN);
|
||||||
|
BigDecimal decimalPart = amount.remainder(BigDecimal.ONE)
|
||||||
|
.setScale(2, BigDecimal.ROUND_DOWN);
|
||||||
|
|
||||||
|
String formattedInteger = formatInteger(integerPart.longValueExact());
|
||||||
|
String formattedDecimal = decimalPart.toPlainString().replace("0.", "");
|
||||||
|
|
||||||
|
return "00".equals(formattedDecimal) ? formattedInteger : formattedInteger + "." + formattedDecimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String formatInteger(long number) {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
|
||||||
|
if (number >= 1_0000_0000_0000L) {
|
||||||
|
long zhao = number / 1_0000_0000_0000L;
|
||||||
|
long yiPart = (number % 1_0000_0000_0000L) / 1_0000_0000L;
|
||||||
|
long wanPart = (number % 1_0000_0000L) / 10000;
|
||||||
|
long remain = number % 10000;
|
||||||
|
|
||||||
|
if (zhao > 0) result.append(zhao).append("兆");
|
||||||
|
|
||||||
|
// 如果后面还有非零部分才显示
|
||||||
|
if (yiPart > 0 || wanPart > 0 || remain > 0) {
|
||||||
|
if (yiPart > 0) result.append(String.format("%04d", yiPart)).append("亿");
|
||||||
|
else result.append("0000亿");
|
||||||
|
|
||||||
|
if (wanPart > 0) result.append(String.format("%04d", wanPart)).append("万");
|
||||||
|
else result.append("0000万");
|
||||||
|
|
||||||
|
if (remain > 0) result.append(String.format("%04d", remain));
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (number >= 100000000) {
|
||||||
|
long yi = number / 100000000;
|
||||||
|
long wanPart = (number % 100000000) / 10000;
|
||||||
|
long remain = number % 10000;
|
||||||
|
|
||||||
|
if (yi > 0) result.append(yi).append("亿");
|
||||||
|
|
||||||
|
if (wanPart > 0 || remain > 0) {
|
||||||
|
if (wanPart > 0) result.append(String.format("%04d", wanPart)).append("万");
|
||||||
|
else result.append("0000万");
|
||||||
|
|
||||||
|
if (remain > 0) result.append(String.format("%04d", remain));
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (number >= 10000) {
|
||||||
|
int wan = (int)(number / 10000);
|
||||||
|
int remain = (int)(number % 10000);
|
||||||
|
|
||||||
|
result.append(wan).append("万");
|
||||||
|
if (remain > 0) result.append(String.format("%04d", remain));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
result.append(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String numberToChinese(double number) {
|
||||||
|
// 分割整数部分和小数部分
|
||||||
|
String[] parts = new DecimalFormat("#.00").format(number).split("\\.");
|
||||||
|
long integerPart = Long.parseLong(parts[0]);
|
||||||
|
String decimalPart = parts[1];
|
||||||
|
|
||||||
|
// 处理整数部分
|
||||||
|
StringBuilder chineseInteger = new StringBuilder();
|
||||||
|
int unitIndex = 0;
|
||||||
|
int bigUnitIndex = 0;
|
||||||
|
|
||||||
|
while (integerPart > 0) {
|
||||||
|
int section = (int) (integerPart % 10000);
|
||||||
|
if (section != 0) {
|
||||||
|
chineseInteger.insert(0, convertSection(section) + CN_BIG_UNITS[bigUnitIndex]);
|
||||||
|
}
|
||||||
|
integerPart /= 10000;
|
||||||
|
bigUnitIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理小数部分
|
||||||
|
StringBuilder chineseDecimal = new StringBuilder();
|
||||||
|
for (char c : decimalPart.toCharArray()) {
|
||||||
|
chineseDecimal.append(CN_NUMBERS[c - '0']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return chineseInteger.toString() + "." + chineseDecimal.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String convertSection(int number) {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
int unitIndex = 0;
|
||||||
|
|
||||||
|
while (number > 0) {
|
||||||
|
int digit = number % 10;
|
||||||
|
if (digit != 0) {
|
||||||
|
result.insert(0, CN_NUMBERS[digit] + CN_UNITS[unitIndex]);
|
||||||
|
} else {
|
||||||
|
// 如果当前位是零,并且前一位不是零,则添加一个零
|
||||||
|
if (result.length() > 0 && result.charAt(0) != '零') {
|
||||||
|
result.insert(0, "零");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
number /= 10;
|
||||||
|
unitIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,11 +1,19 @@
|
||||||
package shkd.sys.sys.plugin.operation;
|
package shkd.sys.sys.plugin.operation;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.OperateOption;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.dataentity.metadata.dynamicobject.DynamicCollectionProperty;
|
||||||
|
import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
|
||||||
|
import kd.bos.entity.EntityMetadataCache;
|
||||||
|
import kd.bos.entity.MainEntityType;
|
||||||
|
import kd.bos.entity.operate.result.OperationResult;
|
||||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
import kd.bos.i18n.mservice.I18nServiceHelper;
|
import kd.bos.i18n.mservice.I18nServiceHelper;
|
||||||
import kd.bos.i18n.mservice.utils.AmountConvertResult;
|
import kd.bos.i18n.mservice.utils.AmountConvertResult;
|
||||||
|
import kd.bos.logging.Log;
|
||||||
|
import kd.bos.logging.LogFactory;
|
||||||
import kd.bos.orm.query.QCP;
|
import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
@ -13,73 +21,156 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import kd.fi.cas.helper.CasBotpHelper;
|
import kd.fi.cas.helper.CasBotpHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
|
import shkd.sys.sys.plugin.form.PaymentProcessingBillPlugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单据操作插件
|
* 单据操作插件
|
||||||
* 修复付款单和应收票据关联关系
|
* 修复付款单和应收票据关联关系
|
||||||
*/
|
*/
|
||||||
public class PaymentSlipAssociationFixed extends AbstractOperationServicePlugIn implements Plugin {
|
public class PaymentSlipAssociationFixed extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
private static final Log logger = LogFactory.getLog(PaymentSlipAssociationFixed.class);
|
||||||
@Override
|
@Override
|
||||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
super.afterExecuteOperationTransaction(e);
|
super.afterExecuteOperationTransaction(e);
|
||||||
|
|
||||||
|
logger.info("进入save操作代码方法");
|
||||||
|
|
||||||
DynamicObject[] dataEntities = e.getDataEntities();
|
DynamicObject[] dataEntities = e.getDataEntities();
|
||||||
DynamicObject dataEntity = dataEntities[0];
|
DynamicObject dataEntity = dataEntities[0];
|
||||||
// 付款单
|
|
||||||
DynamicObject fkDynamicObject = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), dataEntity.getDynamicObjectType());
|
|
||||||
|
|
||||||
// 付款金额
|
// 是否关联票据
|
||||||
BigDecimal actpayamt = fkDynamicObject.getBigDecimal("actpayamt");
|
boolean shkdIsrenotes = dataEntity.getBoolean("shkd_isrenotes");
|
||||||
String formattedValue = String.format("%.2f", Double.parseDouble(actpayamt.toString()));
|
if (shkdIsrenotes) {
|
||||||
|
|
||||||
// 大写金额
|
|
||||||
String shkdZwamount = fkDynamicObject.getString("shkd_zwamount");
|
|
||||||
|
|
||||||
AmountConvertResult amountConvertResult = I18nServiceHelper.amountConvertUppercase(
|
|
||||||
"ZH", "CNY", formattedValue, "false");
|
|
||||||
|
|
||||||
if (amountConvertResult.isSuccess() && !shkdZwamount.equals(amountConvertResult.getResult())) {
|
|
||||||
fkDynamicObject.set("shkd_zwamount", amountConvertResult.getResult());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 来源系统
|
|
||||||
Object businessnameObj = fkDynamicObject.get("shkd_businessname");
|
|
||||||
|
|
||||||
// 付款单关联票据分录
|
|
||||||
String blEntryKey = fkDynamicObject.getDataEntityType().getName() + "_bl";
|
|
||||||
DynamicObjectCollection dynamicObjectCollection = fkDynamicObject.getDynamicObjectCollection(blEntryKey);
|
|
||||||
|
|
||||||
// 票据关联付款单不为空,说明已经关联了
|
|
||||||
if (!dynamicObjectCollection.isEmpty()) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataEntity.get("settletnumber") != null) {
|
// 付款单
|
||||||
String settletnumber = dataEntity.getString("settletnumber");//结算号
|
DynamicObject fkDynamicObject = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), dataEntity.getDynamicObjectType());
|
||||||
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("cdm_payablebill", "id,draftbillno", new QFilter("draftbillno", QCP.equals, settletnumber).toArray());
|
|
||||||
|
// 结算方式为空,则不处理
|
||||||
|
DynamicObject settletype = fkDynamicObject.getDynamicObject("settletype");
|
||||||
|
if (settletype == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String settletype_number = settletype.getString("number");// 结算方式
|
||||||
|
|
||||||
|
|
||||||
|
// 结算号为空,则不处理
|
||||||
|
if (dataEntity.get("settletnumber") == null || "".equals(dataEntity.getString("settletnumber"))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String settletnumber = dataEntity.getString("settletnumber");//结算号
|
||||||
|
|
||||||
|
// 来源系统
|
||||||
|
Object businessnameObj = fkDynamicObject.get("shkd_businessname");
|
||||||
|
if (businessnameObj == null || !"XK".equals(businessnameObj.toString())){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("JSFS06、JSFS07、JSFS19、JSFS20".contains(settletype_number)) {
|
||||||
|
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("cdm_payablebill", "id," +
|
||||||
|
"draftbillno,releatedcasbillentrys,releatedcasbillentrys.rel_billtype,releatedcasbillentrys.rel_billno," +
|
||||||
|
"releatedcasbillentrys.rel_billid,releatedcasbillentrys.rel_bizdate,releatedcasbillentrys.rel_billamount," +
|
||||||
|
"releatedcasbillentrys.rel_createtime,releatedcasbillentrys.rel_modifytime", new QFilter("draftbillno", QCP.equals, settletnumber).toArray());
|
||||||
|
|
||||||
|
if (dynamicObjects.length > 0) {
|
||||||
|
|
||||||
|
DynamicObjectCollection releatedcasbillentrys = dynamicObjects[0].getDynamicObjectCollection("releatedcasbillentrys");
|
||||||
|
|
||||||
|
if (!releatedcasbillentrys.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (businessnameObj != null && "XK".equals(businessnameObj.toString()) && dynamicObjects.length > 0) {
|
|
||||||
// 写入付款单关联票据关联关系
|
// 写入付款单关联票据关联关系
|
||||||
DynamicObject linkRow = new DynamicObject(dynamicObjectCollection.getDynamicObjectType());
|
|
||||||
linkRow.set(blEntryKey + "_basedataid", dynamicObjects[0].getPkValue());
|
MainEntityType entityType = EntityMetadataCache.getDataEntityType(fkDynamicObject.getDataEntityType().getName());
|
||||||
dynamicObjectCollection.add(linkRow);
|
DynamicCollectionProperty currencyProp = (DynamicCollectionProperty) entityType.getProperty("draftbill");
|
||||||
SaveServiceHelper.save(new DynamicObject[]{fkDynamicObject});
|
DynamicObjectCollection collection = new DynamicObjectCollection(currencyProp.getDynamicCollectionItemPropertyType(), fkDynamicObject);
|
||||||
|
DynamicObject dynamicObject = new DynamicObject(currencyProp.getDynamicCollectionItemPropertyType());
|
||||||
|
dynamicObject.set("fbasedataid", dynamicObjects[0]);
|
||||||
|
dynamicObject.set("fbasedataid_id", dynamicObjects[0].getPkValue());
|
||||||
|
collection.add(dynamicObject);
|
||||||
|
|
||||||
|
fkDynamicObject.set("draftbill", collection);
|
||||||
|
fkDynamicObject.set("shkd_isrenotes", true);
|
||||||
|
|
||||||
// 写入票据关联付款单关联关系
|
// 写入票据关联付款单关联关系
|
||||||
DynamicObject kpdjDynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType());
|
|
||||||
DynamicObjectCollection releatedcasbillentrys = kpdjDynamicObject.getDynamicObjectCollection("releatedcasbillentrys");
|
|
||||||
DynamicObject kpLinkRow = new DynamicObject(releatedcasbillentrys.getDynamicObjectType());
|
DynamicObject kpLinkRow = new DynamicObject(releatedcasbillentrys.getDynamicObjectType());
|
||||||
kpLinkRow.set("rel_billtype", "cas_paybill");// 关联单据类型
|
|
||||||
|
kpLinkRow.set("rel_billtype", "cas_paybill");// 关联单据类型 → 付款处理
|
||||||
kpLinkRow.set("rel_billno", fkDynamicObject.getString("billno"));// 关联单据编号
|
kpLinkRow.set("rel_billno", fkDynamicObject.getString("billno"));// 关联单据编号
|
||||||
kpLinkRow.set("rel_billid", fkDynamicObject.getPkValue());// 关联单据ID
|
kpLinkRow.set("rel_billid", fkDynamicObject.getPkValue());// 关联单据ID
|
||||||
kpLinkRow.set("rel_bizdate", fkDynamicObject.get("bizdate"));// 出纳单据业务日期
|
kpLinkRow.set("rel_bizdate", fkDynamicObject.get("bizdate"));// 出纳单据业务日期
|
||||||
kpLinkRow.set("rel_billamount", fkDynamicObject.get("actpayamt"));// 关联单据金额
|
kpLinkRow.set("rel_billamount", fkDynamicObject.get("actpayamt"));// 关联单据金额
|
||||||
kpLinkRow.set("rel_createtime", new Date());// 关联信息创建时间
|
kpLinkRow.set("rel_createtime", new Date());// 关联信息创建时间
|
||||||
kpLinkRow.set("rel_modifytime", new Date());// 记录修改时间
|
kpLinkRow.set("rel_modifytime", new Date());// 记录修改时间
|
||||||
|
|
||||||
releatedcasbillentrys.add(kpLinkRow);
|
releatedcasbillentrys.add(kpLinkRow);
|
||||||
SaveServiceHelper.save(new DynamicObject[]{kpdjDynamicObject});
|
|
||||||
|
dynamicObjects[0].set("releatedcasbillentrys", releatedcasbillentrys);
|
||||||
|
SaveServiceHelper.save(dynamicObjects);
|
||||||
|
|
||||||
|
// 最后保存付款单
|
||||||
|
SaveServiceHelper.save(new DynamicObject[]{fkDynamicObject});
|
||||||
|
}
|
||||||
|
} else if ("JSFS09".equals(settletype_number)) {
|
||||||
|
|
||||||
|
// 收票登记:cdm_receivablebill
|
||||||
|
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("cdm_receivablebill", "id," +
|
||||||
|
"draftbillno,releatedcasbillentrys,releatedcasbillentrys.rel_billtype,releatedcasbillentrys.rel_billno," +
|
||||||
|
"releatedcasbillentrys.rel_billid,releatedcasbillentrys.rel_bizdate,releatedcasbillentrys.rel_billamount," +
|
||||||
|
"releatedcasbillentrys.rel_createtime,releatedcasbillentrys.rel_modifytime", new QFilter("draftbillno", QCP.equals, settletnumber).toArray());
|
||||||
|
|
||||||
|
if (dynamicObjects.length > 0) {
|
||||||
|
|
||||||
|
DynamicObjectCollection releatedcasbillentrys = dynamicObjects[0].getDynamicObjectCollection("releatedcasbillentrys");
|
||||||
|
|
||||||
|
if (!releatedcasbillentrys.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 写入付款单关联票据关联关系
|
||||||
|
|
||||||
|
MainEntityType entityType = EntityMetadataCache.getDataEntityType(fkDynamicObject.getDataEntityType().getName());
|
||||||
|
DynamicCollectionProperty currencyProp = (DynamicCollectionProperty) entityType.getProperty("draftbill");
|
||||||
|
DynamicObjectCollection collection = new DynamicObjectCollection(currencyProp.getDynamicCollectionItemPropertyType(), fkDynamicObject);
|
||||||
|
DynamicObject dynamicObject = new DynamicObject(currencyProp.getDynamicCollectionItemPropertyType());
|
||||||
|
dynamicObject.set("fbasedataid", dynamicObjects[0]);
|
||||||
|
dynamicObject.set("fbasedataid_id", dynamicObjects[0].getPkValue());
|
||||||
|
collection.add(dynamicObject);
|
||||||
|
|
||||||
|
fkDynamicObject.set("draftbill", collection);
|
||||||
|
fkDynamicObject.set("shkd_isrenotes", true);
|
||||||
|
|
||||||
|
// 写入票据关联付款单关联关系
|
||||||
|
DynamicObject kpLinkRow = new DynamicObject(releatedcasbillentrys.getDynamicObjectType());
|
||||||
|
|
||||||
|
kpLinkRow.set("rel_billtype", "cas_recbill");// 关联单据类型 → 收款处理
|
||||||
|
kpLinkRow.set("rel_billno", fkDynamicObject.getString("billno"));// 关联单据编号
|
||||||
|
kpLinkRow.set("rel_billid", fkDynamicObject.getPkValue());// 关联单据ID
|
||||||
|
kpLinkRow.set("rel_bizdate", fkDynamicObject.get("bizdate"));// 出纳单据业务日期
|
||||||
|
kpLinkRow.set("rel_billamount", fkDynamicObject.get("actpayamt"));// 关联单据金额
|
||||||
|
kpLinkRow.set("rel_createtime", new Date());// 关联信息创建时间
|
||||||
|
kpLinkRow.set("rel_modifytime", new Date());// 记录修改时间
|
||||||
|
|
||||||
|
releatedcasbillentrys.add(kpLinkRow);
|
||||||
|
|
||||||
|
dynamicObjects[0].set("releatedcasbillentrys", releatedcasbillentrys);
|
||||||
|
SaveServiceHelper.save(dynamicObjects);
|
||||||
|
|
||||||
|
// 最后保存付款单
|
||||||
|
SaveServiceHelper.save(new DynamicObject[]{fkDynamicObject});
|
||||||
|
|
||||||
|
OperationResult result = OperationServiceHelper.executeOperate("endorse", "cas_paybill", new DynamicObject[]{fkDynamicObject}, OperateOption.create());
|
||||||
|
if (result.isSuccess()) {
|
||||||
|
logger.info("背书成功");
|
||||||
|
} else {
|
||||||
|
logger.info("背书失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue