From 10e74d393ba957a5a2d34041e2d77e3d2cefccf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=9A=E8=B1=86=E8=B1=86?= <13356128+sunandmoon60@user.noreply.gitee.com> Date: Fri, 18 Jul 2025 13:21:35 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E4=BB=98=E6=AC=BE=E5=8D=95=E6=8F=92=E4=BB=B6=20-20250?= =?UTF-8?q?718?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pm/PurorderEntryIntroPaybillPlugin.java | 189 ++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java diff --git a/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java b/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java new file mode 100644 index 0000000..9415637 --- /dev/null +++ b/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPlugin.java @@ -0,0 +1,189 @@ +package tqq9.lc123.cloud.app.plugin.form.pm; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.bill.BillShowParameter; +import kd.bos.bill.OperationStatus; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.dataentity.utils.ObjectUtils; +import kd.bos.dataentity.utils.StringUtils; +import kd.bos.entity.datamodel.IDataModel; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.*; +import kd.bos.form.control.Control; +import kd.bos.form.control.EntryGrid; +import kd.bos.form.control.events.BeforeClickEvent; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.form.events.HyperLinkClickEvent; +import kd.bos.form.events.HyperLinkClickListener; +import kd.bos.form.field.ItemClassEdit; +import kd.bos.form.field.RefBillEdit; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.list.ListFilterParameter; +import kd.bos.list.ListShowParameter; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.workflow.bpmn.model.basedata.BaseDataHelper; +import kd.sdk.plugin.Plugin; + + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.EventObject; +import java.util.List; + +/** + * 单据界面插件 + */ +public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implements HyperLinkClickListener { + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + this.addClickListeners(new String[]{"tqq9_paybillno"}); + EntryGrid preEntry = (EntryGrid) this.getView().getControl("purbillentry_pay"); + preEntry.addHyperClickListener(this); + } + + +// @Override +// public void beforeF7Select(BeforeF7SelectEvent event) { +// IDataModel model = this.getModel(); +// DynamicObject org =model.getDataEntity().getDynamicObject("org"); +// if (org!=null) { +// ListShowParameter param = (ListShowParameter) event.getFormShowParameter(); +// QFilter qF1 = new QFilter("org.number", QCP.in, org.getString("number")); +// QFilter qF2 = new QFilter("yem_iscontactpaybill", QCP.equals, false); +// param.getListFilterParameter().getQFilters().add(qF1.and(qF2)); +// } +// CloseCallBack closeCallBack = new CloseCallBack(this.getPluginName(), "zbBill"); +// +// +// } + + @Override + public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { + super.closedCallBack(closedCallBackEvent); + IDataModel model = this.getModel(); + IFormView view = this.getView(); + String actionId = closedCallBackEvent.getActionId(); + Object returnData = closedCallBackEvent.getReturnData(); + if ("paybill".equals(actionId)) { + DynamicObjectCollection purbillentry_pay = this.getModel().getDataEntity(true).getDynamicObjectCollection("purbillentry_pay"); + int seq=0; + for (DynamicObject dynamicObject : purbillentry_pay) { + boolean isprepay = dynamicObject.getBoolean("isprepay"); + if (isprepay){ + seq = dynamicObject.getInt("seq")-1; + } + } + ListSelectedRow listSelectedRow = ((ListSelectedRowCollection) returnData).get(0); + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(listSelectedRow.toString(), "cas_paybill"); + BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount"); + + model.setValue("tqq9_paybillno", dynamicObject.getString("billno")); + model.setValue("paidpreallamount", unsettleamount); + model.setValue("paidallamount", unsettleamount); + model.setValue("joinpayamount", unsettleamount,seq); + model.setValue("paidamount", unsettleamount,seq); + view.setVisible(true,"paidpreallamount,paidallamount,joinpayamount,paidamount"); + } + this.getView().updateView(); + } + + + @Override + public void beforeClick(BeforeClickEvent evt) { + super.beforeClick(evt); + IDataModel model = this.getModel(); + Control c = (Control) evt.getSource(); + String key = c.getKey().toLowerCase(); + if ("tqq9_paybillno".equals(key)) { + EntryGrid entryGrid = this.getControl("purbillentry_pay"); + int length = entryGrid.getSelectRows()[0];//获取点击分录序号从0开始 +// int length = selectRows[0];//获取点击分录序号从0开始 +//// int length = selectRows.length;//获取点击分录序号从0开始 + DynamicObject pm_purorderbill = model.getDataEntity(true);//采购订单 + DynamicObjectCollection entries = pm_purorderbill.getDynamicObjectCollection("purbillentry_pay");//付款计划分录 + DynamicObject supplier = pm_purorderbill.getDynamicObject("supplier");//订货供应商 + DynamicObject dynamicObject = entries.get(length); + Boolean isprepay = dynamicObject.getBoolean("isprepay"); + if (supplier == null) { + this.getView().showMessage("订货供应商不能为空"); + evt.setCancel(true); + } + if (isprepay.equals(false)) { + this.getView().showMessage("请勾选是否预付"); + evt.setCancel(true); + } + } + } + + @Override + public void click(EventObject evt) { + super.click(evt); + Control c = (Control) evt.getSource(); + String key = c.getKey().toLowerCase(); + IDataModel model = this.getModel(); + + if ("tqq9_paybillno".equals(key)) { + int entryRowCount = model.getEntryRowCount("purbillentry_pay"); + List selectedNos = new ArrayList(entryRowCount); + DynamicObject pm_purorderbill = model.getDataEntity(true);//采购订单 + DynamicObjectCollection entries = pm_purorderbill.getDynamicObjectCollection("purbillentry_pay");//付款计划分录 + DynamicObject supplier = pm_purorderbill.getDynamicObject("supplier");//订货供应商 + if (entries != null) { + for (DynamicObject entry : entries) { + String tqq9_paybillno = entry.getString("tqq9_paybillno"); + if (tqq9_paybillno != null) { + selectedNos.add(tqq9_paybillno); + } + } + } + QFilter filter = new QFilter("billstatus", "=", "D");//已付款 + if (ObjectUtils.isEmpty(selectedNos)) { + filter.and(new QFilter("billno", "not in", selectedNos)); + } + filter.and(new QFilter("itempayeetype", "=", "bd_supplier"));//收款人类型为供应商 + filter.and(new QFilter("itempayee", "=", supplier.getLong("id")));//收款人为采购订单供应商 + filter.and(new QFilter("paymenttype.number", "=", "202")); + filter.and("unsettleamount", QCP.large_than, BigDecimal.ZERO); +// //组织一致 +// DynamicObject org = (DynamicObject)model.getValue("org"); +// filter.and(new QFilter("entry.settleorg", "=", org.getLong("id"))); + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{filter}); + showZbBillF7(this.getView(), this.getPluginName(), filter); + } + } + + @Override + public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) { + int rowIndex = hyperLinkClickEvent.getRowIndex(); + Long billId = (Long) this.getModel().getValue("tqq9_paybillno", rowIndex); + if (billId != null) { + BillShowParameter formshowParameter = new BillShowParameter(); + formshowParameter.setFormId("cas_paybill"); + formshowParameter.getOpenStyle().setInlineStyleCss(new StyleCss()); + formshowParameter.setPkId(billId); + formshowParameter.getOpenStyle().setShowType(ShowType.Modal); + formshowParameter.setStatus(OperationStatus.VIEW); + this.getView().showForm(formshowParameter); + } + } + + public static void showZbBillF7(IFormView view, String pluginName, QFilter filter) { + ListShowParameter lsp = ShowFormHelper.createShowListForm("cas_paybill", true, 2); + ListFilterParameter lfp = new ListFilterParameter(); + lfp.setFilter(filter); + lsp.setCustomParam("ismergerows", Boolean.FALSE); + lsp.setListFilterParameter(lfp); + CloseCallBack closeCallBack = new CloseCallBack(pluginName, "paybill"); + lsp.setCloseCallBack(closeCallBack); + view.showForm(lsp); + } + + +} \ No newline at end of file