lc/lc123/cloud/app/plugin/form/pm/PurorderEntryIntroPaybillPl...

192 lines
8.8 KiB
Java

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(returnData==null){
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("tqq9_paybillid", dynamicObject.getString("id"));
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开始
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<String> 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();
String tqq9_paybillno = (String) this.getModel().getValue("tqq9_paybillno", rowIndex);
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_paybillno)});
Long id = paybill.getLong("id");
if (id != null) {
BillShowParameter formshowParameter = new BillShowParameter();
formshowParameter.setFormId("cas_paybill");
formshowParameter.getOpenStyle().setInlineStyleCss(new StyleCss());
formshowParameter.setPkId(id);
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);
}
}