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); } }