无合同付款

This commit is contained in:
zhangzhiguo 2025-08-25 11:08:28 +08:00
parent e70d67383b
commit 07f9df507b
2 changed files with 120 additions and 2 deletions

View File

@ -5,25 +5,37 @@ import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.dataentity.resource.ResManager;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.FormShowParameter;
import kd.bos.form.control.AttachmentPanel;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.PreOpenFormEventArgs;
import kd.bos.form.events.SetFilterEvent;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.RefBillEdit;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
import kd.bos.form.operate.FormOperate;
import kd.bos.list.ListShowParameter;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import org.apache.commons.lang.StringUtils;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
/**
* 对公报销单无合同列表插件
*/
public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn {
public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener {
private static boolean editTitle = false;
@ -50,6 +62,21 @@ public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn {
if(isec){
this.getView().setFormTitle(new LocaleString("无合同付款申请单"));
}
BillShowParameter bsp=(BillShowParameter)this.getView().getFormShowParameter();
if(bsp.getStatus()!=OperationStatus.ADDNEW){
if(isec){
DynamicObject costcompany = (DynamicObject) this.getModel().getValue("costcompany");
if(costcompany!=null){
long id = costcompany.getLong("id");
QFilter numberFilter = new QFilter("fiaccountorg", QCP.equals,id);
DynamicObject[] project = BusinessDataServiceHelper.load("ec_project", "number,name", new QFilter[]{numberFilter});
if(project != null && project.length==1){
long projectId = project[0].getLong("id");
this.getModel().setValue("zcgj_ec_project", project[0]);
}
}
}
}
}
@Override
@ -77,4 +104,80 @@ public class PublicreimbursebillNoContractPlugin extends AbstractBillPlugIn {
billShowParameter.setCaption(ResManager.loadKDString("无合同付款申请单", "PublicReimAssetBillEdit_1", "fi-er-formplugin", new Object[0]));
}*/
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
boolean isec=(boolean)this.getModel().getValue("zcgj_isec");
if(isec){
if(name.equals("costcompany")){
ChangeData changeData = e.getChangeSet()[0];
DynamicObject costcompany = (DynamicObject)changeData.getNewValue();
if(costcompany!=null){
long id = costcompany.getLong("id");
QFilter numberFilter = new QFilter("fiaccountorg", QCP.equals,id);
DynamicObject[] project = BusinessDataServiceHelper.load("ec_project", "number,name", new QFilter[]{numberFilter});
if(project != null && project.length==1){
long projectId = project[0].getLong("id");
this.getModel().setValue("zcgj_ec_project", project[0]);
}
}
}
}
}
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
boolean isec=(boolean)this.getModel().getValue("zcgj_isec");
if(isec){
RefBillEdit zcgj_materialinbill = this.getView().getControl("zcgj_materialinbill");//入库单
zcgj_materialinbill.addBeforeF7SelectListener(this);
RefBillEdit zcgj_maintenanceack = this.getView().getControl("zcgj_maintenanceack");//设备维修确认单
zcgj_maintenanceack.addBeforeF7SelectListener(this);
}
}
@Override
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
IDataEntityProperty property = beforeF7SelectEvent.getProperty();//过滤字段信息
String propertyName = property.getName();//过滤字段标识
if("zcgj_materialinbill".equals(propertyName)){ //费用承担公司过滤
DynamicObject billpayerid = (DynamicObject)this.getModel().getValue("billpayerid");
DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany");
if(billpayerid!=null && costcompany!=null){
Long payerid = billpayerid.getLong("id");
Long companyId = costcompany.getLong("id");
List<QFilter> qFilter = new ArrayList<>();
qFilter.add(new QFilter("supplier", QCP.equals, payerid));
qFilter.add(new QFilter("fiaccountorg", QCP.equals, companyId));
qFilter.add(new QFilter("billstatus", QCP.equals, "C"));
formShowParameter.getListFilterParameter().setQFilters(qFilter);
}else{
this.getView().showTipNotification("费用承担公司或往来单位不能为空");
beforeF7SelectEvent.setCancel(true);
}
}else if("zcgj_maintenanceack".equals(propertyName)){
DynamicObject billpayerid = (DynamicObject)this.getModel().getValue("billpayerid");
DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany");
if(billpayerid!=null && costcompany!=null){
Long payerid = billpayerid.getLong("id");
Long companyId = costcompany.getLong("id");
List<QFilter> qFilter = new ArrayList<>();
qFilter.add(new QFilter("entryentity.zcgj_supplier", QCP.equals, payerid));
qFilter.add(new QFilter("zcgj_accountorg", QCP.equals, companyId));
qFilter.add(new QFilter("zcgj_maintype", QCP.equals, "10"));
qFilter.add(new QFilter("billstatus", QCP.equals, "C"));
formShowParameter.getListFilterParameter().setQFilters(qFilter);
}else{
this.getView().showTipNotification("费用承担公司或往来单位不能为空");
beforeF7SelectEvent.setCancel(true);
}
}
}
}

View File

@ -30,6 +30,7 @@ public class PublicBillContractCkOp extends AbstractOperationServicePlugIn {
e.getFieldKeys().add("zcgj_invoiceremark");//特殊说明
e.getFieldKeys().add("zcgj_nocontract");//合同付款类型 无合同付款 NOCONTRACT 合同付款 CONTRACT
e.getFieldKeys().add("contractentry");//关联合同
e.getFieldKeys().add("zcgj_bizype");//业务类型
}
@Override
@ -53,6 +54,21 @@ public class PublicBillContractCkOp extends AbstractOperationServicePlugIn {
if(OrgCheckUtils.isKS(costcompanyId)){
boolean isec = dataEntity.getBoolean("zcgj_isec");
if(isec){
String bisType = dataEntity.getString("zcgj_bizype");
//物资采购 WZCG
if("WZCG".equals(bisType)){
DynamicObjectCollection entry = dataEntity.getDynamicObjectCollection("zcgj_materialinbillentry"); //入库单
if((entry == null || entry.isEmpty())){
this.addFatalErrorMessage(extendedDataEntity, String.format("业务类型为物资采购时,入库单分录不能为空!"));
}
}else if("SBWX".equals(bisType)){//设备维修 SBWX
DynamicObjectCollection entry = dataEntity.getDynamicObjectCollection("zcgj_maintenanceackentry"); //入库单
if((entry == null || entry.isEmpty())){
this.addFatalErrorMessage(extendedDataEntity, String.format("业务类型为设备维修时,维修确认单分录不能为空!"));
}
}
//其他工程款 QTGCK 不交易
}else{
String nocontract = dataEntity.getString("zcgj_nocontract");
if("CONTRACT".equals(nocontract)){ //如果是合同付款
DynamicObjectCollection contractentry = dataEntity.getDynamicObjectCollection("contractentry");
@ -62,7 +78,6 @@ public class PublicBillContractCkOp extends AbstractOperationServicePlugIn {
}
}
}
}
}
}