开/收票登记期限计算(到期日-开票日)

This commit is contained in:
XiangLingFeng 2025-12-02 16:22:23 +08:00
parent 156aeea2e2
commit 71521179de
1 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,56 @@
package kdsz.zyf25.tmc.cfm.plugin.form.cdm;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.sdk.plugin.Plugin;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.EventObject;
/**
* 应收应付票据共用界面插件
*/
public class PayAndRecBillPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
Date issueDate = (Date)this.getModel().getValue("issuedate");//出票日期
Date expireDate = (Date)this.getModel().getValue("draftbillexpiredate");//票据到期日
calculateTerm(issueDate, expireDate);
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
//出票日期到期日变更时计算票据期限
if ("issuedate".equals(name) || "draftbillexpiredate".equals(name)){
Date issueDate = (Date)this.getModel().getValue("issuedate");//出票日期
Date expireDate = (Date)this.getModel().getValue("draftbillexpiredate");//票据到期日
calculateTerm(issueDate, expireDate);
}
}
private void calculateTerm(Date issueDate,Date expireDate){
// 如果出票日期或到期日为null则期限为0天
if (issueDate == null || expireDate == null){
this.getModel().setValue("kdsz_term", 0);
return;
}
// Date 转换为 LocalDate忽略时间部分
LocalDate localIssueDate = issueDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
LocalDate localExpireDate = expireDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
// 计算天数差
long term = Math.abs(ChronoUnit.DAYS.between(localIssueDate, localExpireDate));
this.getModel().setValue("kdsz_term", term);
}
}