205 lines
9.4 KiB
Java
205 lines
9.4 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.entity.datamodel.events.ChangeData;
|
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
|
import kd.bos.entity.operate.result.OperationResult;
|
|
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.AfterDoOperationEventArgs;
|
|
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.logging.Log;
|
|
import kd.bos.logging.LogFactory;
|
|
import kd.bos.orm.query.QCP;
|
|
import kd.bos.orm.query.QFilter;
|
|
import kd.bos.plugin.sample.dynamicform.pcform.field.template.PropertyChanged;
|
|
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 {
|
|
private final static Log logger = LogFactory.getLog(PurorderEntryIntroPaybillPlugin.class);
|
|
|
|
@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 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("joinpayamount", unsettleamount, seq);//关联付款金额
|
|
model.setValue("paidamount", unsettleamount, seq);//已付金额
|
|
model.setValue("tqq9_settleamount", unsettleamount, seq);//本次结算金额
|
|
view.setVisible(true, "paidpreallamount,paidallamount,joinpayamount,paidamount,tqq9_settleamount");
|
|
}
|
|
}
|
|
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);//采购订单
|
|
BigDecimal totalallamount = pm_purorderbill.getBigDecimal("totalallamount");//价税合计
|
|
if (totalallamount.compareTo(BigDecimal.ZERO)<0) {
|
|
this.getView().showMessage("价税合计不能为空");
|
|
evt.setCancel(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();
|
|
|
|
if ("tqq9_paybillno".equals(key)) {
|
|
IDataModel model = this.getModel();
|
|
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);
|
|
}
|
|
|
|
@Override
|
|
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
|
super.afterDoOperation(afterDoOperationEventArgs);
|
|
OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
|
|
}
|
|
} |