package tqq9.lc123.cloud.app.plugin.form.pm; import kd.bos.algo.DataSet; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.bill.BillShowParameter; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.db.DB; import kd.bos.db.DBRoute; import kd.bos.entity.datamodel.IDataModel; 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.CloseCallBack; import kd.bos.form.ShowType; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.form.field.BasedataEdit; 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.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.ORM; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import tqq9.lc123.cloud.app.api.utils.Constants; import java.math.BigDecimal; import java.util.EventObject; import java.util.HashMap; /** * 采购退货界面插件 */ public class PurRefundApplyBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { private final static Log logger = LogFactory.getLog(PurorderEntryIntroPaybillPlugin.class); @Override public void registerListener(EventObject e) { super.registerListener(e); this.addItemClickListeners("tbmain"); BasedataEdit tqq9_ph = this.getControl("tqq9_ph"); // RefBillEdit tqq9_inwarebill = this.getControl("tqq9_inwarebill"); tqq9_ph.addBeforeF7SelectListener(this); // tqq9_inwarebill.addBeforeF7SelectListener(this); // this.addClickListeners("tqq9_ydthno"); } @Override public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { super.closedCallBack(closedCallBackEvent); String actionId = closedCallBackEvent.getActionId(); Object returnData = closedCallBackEvent.getReturnData(); if (StringUtils.equals("tqq9_otheroutapply", actionId) && returnData != null) { String billno = ((HashMap) returnData).get("billno").toString(); DynamicObject tqq9_otheroutapply = BusinessDataServiceHelper.loadSingle("tqq9_otheroutapply", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); this.getModel().setValue("tqq9_yythbillno", tqq9_otheroutapply); SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity(true)}); this.getView().updateView(); } // else if (StringUtils.equals("pm_purrefundapplybill", actionId) && returnData != null) { // int size = ((ListSelectedRowCollection) returnData).size(); // if(size>1){ // this.getView().showErrorNotification("只允许选择一行入库单"); // return; // } // // ListSelectedRow listSelectedRow = ((ListSelectedRowCollection) returnData).get(0); // //入库单数据查询 // DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(listSelectedRow.toString(), "im_purinbill"); // String billid = listSelectedRow.getPrimaryKeyValue().toString();//单据id // String entryid = listSelectedRow.getEntryPrimaryKeyValue().toString();//分录id // DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry"); // for (DynamicObject object : billentry) { // String id = object.getString("id"); // if (StringUtils.equals(id, entryid)) { // String wmsentryid = listSelectedRow.getEntryPrimaryKeyValue().toString();//WMS分录id // BigDecimal qty = object.getBigDecimal("qty");//入库数量 // DynamicObject warehouse = object.getDynamicObject("warehouse");//入库仓库 // Date producedate = object.getDate("producedate");//生产日期 // Date expirydate = object.getDate("expirydate");//到期日期 // String lotnumber = object.getString("lotnumber");//批号 // String tqq9_registration = object.getString("tqq9_registration");//注册证 // String tqq9_licenseno = object.getString("tqq9_licenseno");//许可证 // String mainbillentryid = object.getString("mainbillentryid"); // // //采购退货申请循环找分录 // DynamicObjectCollection billentry1 = this.getModel().getDataEntity(true).getDynamicObjectCollection("billentry"); // for (DynamicObject object1 : billentry1) { // String mainbillentryid1 = object1.getString("mainbillentryid"); // if (StringUtils.equals(mainbillentryid, mainbillentryid1)) { // int seq = object1.getInt("seq"); // this.getModel().setValue("tqq9_inwarebillid", billid, seq-1); // this.getModel().setValue("tqq9_inwarebillentryid", entryid, seq-1); // this.getModel().setValue("tqq9_wmsdetailid", wmsentryid, seq-1); // this.getModel().setValue("tqq9_maxqty", qty, seq-1); // this.getModel().setValue("tqq9_thck", warehouse, seq-1); // this.getModel().setValue("tqq9_productdate", producedate, seq-1); // this.getModel().setValue("tqq9_expiredate", expirydate, seq-1); // this.getModel().setValue("tqq9_ph", lotnumber, seq-1); // this.getModel().setValue("tqq9_registration", tqq9_registration, seq-1); // this.getModel().setValue("tqq9_licenseno", tqq9_licenseno, seq-1); // this.getView().updateView(); // } // // } // } // } //// if (billentry.size() > rowKey) { //// DynamicObject dynamicObject1 = billentry.get(rowKey); ////// String billid = listSelectedRow.getPrimaryKeyValue().toString();//单据id ////// String entryid = listSelectedRow.getEntryPrimaryKeyValue().toString();//分录id //// String wmsentryid = listSelectedRow.getEntryPrimaryKeyValue().toString();//WMS分录id //// BigDecimal qty = dynamicObject1.getBigDecimal("qty");//入库数量 //// DynamicObject warehouse = dynamicObject1.getDynamicObject("warehouse");//入库仓库 //// Date producedate = dynamicObject1.getDate("producedate");//生产日期 //// Date expirydate = dynamicObject1.getDate("expirydate");//到期日期 //// String lotnumber = dynamicObject1.getString("lotnumber");//批号 //// String tqq9_registration = dynamicObject1.getString("tqq9_registration");//注册证 //// String tqq9_licenseno = dynamicObject1.getString("tqq9_licenseno");//许可证 //// //// } // // } } /** * 异地退货返回事件 */ @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); FormOperate Operate = (FormOperate) args.getSource(); Boolean tqq9_isydth = (Boolean) this.getModel().getValue("tqq9_isydth");//是否异地退货 DynamicObject tqq9_yythbillno = (DynamicObject) this.getModel().getValue("tqq9_yythbillno");//异地退货单号 String tqq9_ydthno = null; if (tqq9_yythbillno != null) { tqq9_ydthno = tqq9_yythbillno.getString("billno"); } if (StringUtils.equals("save", Operate.getOperateKey()) && tqq9_isydth && StringUtils.isBlank(tqq9_ydthno)) { BillShowParameter param = new BillShowParameter(); param.setFormId("tqq9_otheroutapply"); param.setCustomParam("tqq9_otheroutapplybillno", this.getModel().getValue("billno"));//采购退货申请单号 param.setCloseCallBack(new CloseCallBack(this, "tqq9_otheroutapply")); param.getOpenStyle().setShowType(ShowType.Modal); this.getView().showForm(param); } else if (StringUtils.equals("submit", Operate.getOperateKey()) && tqq9_isydth && StringUtils.isNotBlank(tqq9_ydthno)) { DynamicObject tqq9_otheroutapply = BusinessDataServiceHelper.loadSingle("tqq9_otheroutapply", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_ydthno)}); if (StringUtils.equals(tqq9_otheroutapply.getString("billstatus"), "A")) { args.setCancel(true); String billno = this.getModel().getValue("billno").toString(); this.getView().showErrorNotification("采购退货单:" + billno + ",对应的异地退货单号:" + tqq9_ydthno + "未提交"); } } else if (StringUtils.equals("audit", Operate.getOperateKey()) && tqq9_isydth && StringUtils.isNotBlank(tqq9_ydthno)) { DynamicObject tqq9_otheroutapply = BusinessDataServiceHelper.loadSingle("tqq9_otheroutapply", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_ydthno)}); String billstatus = tqq9_otheroutapply.getString("billstatus"); if (StringUtils.equals("B", billstatus)) { OperateOption operateOption = OperateOption.create(); OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, "tqq9_otheroutapply", new DynamicObject[]{tqq9_otheroutapply}, operateOption); if (auditResult.isSuccess()) { this.getView().showMessage("异地退货审核成功"); } } } } /** * 出库批号根据了做筛选 */ @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { String name = beforeF7SelectEvent.getProperty().getName(); if (StringUtils.equals("tqq9_ph", name)) { int index = this.getModel().getEntryCurrentRowIndex("billentry"); DynamicObjectCollection entryentity = this.getModel().getDataEntity(true).getDynamicObjectCollection("billentry"); DynamicObject dynamicObject = entryentity.get(index); DynamicObject material = dynamicObject.getDynamicObject("material");//物料采购信息 if (material == null) { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("请先填物料信息"); } else { DynamicObject masterid = material.getDynamicObject("masterid");//物料 DynamicObject bd_materialinventoryinfo = BusinessDataServiceHelper.loadSingle("bd_materialinventoryinfo", new QFilter[]{new QFilter("masterid", QCP.equals, masterid.getLong("id"))}); Boolean enablelot = bd_materialinventoryinfo.getBoolean("enablelot");//是否启用批号管理 if (enablelot) { ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); QFilter qF1 = new QFilter("material.number", QCP.equals, masterid.getString("number")); param.getListFilterParameter().getQFilters().add(qF1); } else { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("该物料未启用批号管理"); } } } // else if (StringUtils.equals("tqq9_inwarebill", name)) { // int index = this.getModel().getEntryCurrentRowIndex("billentry"); // Object mainbillnumber = this.getModel().getValue("mainbillnumber", index); // if (mainbillnumber != null) { // ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); // QFilter qF1 = new QFilter("billentry.mainbillnumber", QCP.equals, mainbillnumber.toString()); // qF1.and("billstatus", QCP.equals, "C"); // param.getListFilterParameter().getQFilters().add(qF1); // param.setCustomParam("ismergerows", false); // CloseCallBack closeCallBack = new CloseCallBack(this.getPluginName(), "pm_purrefundapplybill"); // param.setCloseCallBack(closeCallBack); // // } // } } @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String name = e.getProperty().getName(); if (StringUtils.equals("tqq9_ph", name)) { ChangeData changeData = e.getChangeSet()[0]; int rowIndex = changeData.getRowIndex(); IDataModel model = this.getModel(); DynamicObject material = (DynamicObject) model.getValue("material", rowIndex);//物料采购信息 DynamicObject tqq9_ph = (DynamicObject) model.getValue("tqq9_ph", rowIndex);//批号 if (material != null && tqq9_ph != null) { DynamicObject masterid = material.getDynamicObject("masterid");//物料 if (masterid != null) { String id = masterid.getString("id"); String tqq9_phno = tqq9_ph.getString("number");//批号 String sql = "/*dialect*/ select sum(fbaseqty) useqty from t_im_inv_realbalance where fmaterialid ='" + id + "' and flotnum ='" + tqq9_phno + "'"; DataSet pzDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), sql); DataSet copy = pzDataSet.copy(); DynamicObjectCollection dynamicObjects = ORM.create().toPlainDynamicObjectCollection(copy); if (dynamicObjects.size() > 0) { BigDecimal useqty = dynamicObjects.get(0).getBigDecimal("useqty"); model.setValue("tqq9_pckyamount", useqty, rowIndex); this.getView().updateView(); } } } } // else if (StringUtils.equals("tqq9_inwarebill", name)) { // IDataModel model = this.getModel(); // // ChangeData changeData = e.getChangeSet()[0]; // int rowIndex = changeData.getRowIndex(); // DynamicObject tqq9_inwarebill = (DynamicObject) model.getValue("tqq9_inwarebill", rowIndex);//批号 // // } } }