package tqq9.lc123.cloud.app.plugin.form.im; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; 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.utils.StringUtils; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.FormShowParameter; import kd.bos.form.ShowType; import kd.bos.form.StyleCss; import kd.bos.form.control.Control; import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; import kd.bos.list.ListShowParameter; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import java.math.BigDecimal; import java.util.Date; import java.util.EventObject; /** * 其他出库申请界面插件 */ public class OtherOutApplyBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { @Override public void registerListener(EventObject e) { super.registerListener(e); this.addItemClickListeners("tbmain"); BasedataEdit control = this.getControl("tqq9_lot"); control.addBeforeF7SelectListener(this); this.addClickListeners("tqq9_xsddh"); } /**出库批号根据了做筛选 * */ @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { int index = this.getModel().getEntryCurrentRowIndex("entryentity"); DynamicObjectCollection entryentity = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity"); DynamicObject dynamicObject = entryentity.get(index); DynamicObject tqq9_materiel = dynamicObject.getDynamicObject("tqq9_materiel"); if (tqq9_materiel == null) { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("请先填物料信息"); } else { DynamicObject materiel = tqq9_materiel.getDynamicObject("masterid");//物料 Boolean enablelot = tqq9_materiel.getBoolean("enablelot");//是否启用批号管理 if (enablelot) { ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); QFilter qF1 = new QFilter("material.number", QCP.equals, materiel.getString("number")); param.getListFilterParameter().getQFilters().add(qF1); } else { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("该物料未启用批号管理"); } } } /**售后单号带出售后信息 * */ @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String name = e.getProperty().getName(); IDataModel model = this.getModel(); if (StringUtils.equals("tqq9_returnapply", name)) { ChangeData[] changeSet = e.getChangeSet(); DynamicObject newValue = (DynamicObject) changeSet[0].getNewValue();//销售退货申请单 DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("sm_returnapply", new QFilter[]{new QFilter("billno", QCP.equals, newValue.getString("billno"))}); DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry"); if (billentry.size() > 0) { DynamicObject entry = billentry.get(0); String mainbillnumber = entry.getString("mainbillnumber");//核心单据编号 String tqq9_kddh = dynamicObject.getString("tqq9_kddh");//快递单号 DynamicObject tqq9_sskf = dynamicObject.getDynamicObject("tqq9_sskf");//所属客服 DynamicObject operator = dynamicObject.getDynamicObject("operator");//所属客服 DynamicObject customer = dynamicObject.getDynamicObject("customer");//订货客户 model.setValue("tqq9_xsddh", mainbillnumber);//对应销售订单号 model.setValue("tqq9_dpdh", tqq9_kddh);//DP单号 model.setValue("tqq9_sskf", tqq9_sskf);//所属客服 model.setValue("tqq9_ssxs", operator);//所属销售 model.setValue("tqq9_kufptt", customer);//客户发票抬头 } } //物料带出最近价格 if (StringUtils.equals("tqq9_materiel", name)) { ChangeData[] changeSet = e.getChangeSet(); DynamicObject newValue = (DynamicObject) changeSet[0].getNewValue();//物料库存信息 DynamicObject masterid = newValue.getDynamicObject("masterid");//物料 QFilter purinbillF=new QFilter("billentry.material.id", QCP.equals,newValue.getLong("id")); purinbillF=purinbillF.and("billstatus", QCP.equals,"C"); //采购入库单 DynamicObject[] purinbills = BusinessDataServiceHelper.load("im_purinbill", "id,billno,billentry.material,billentry.priceandtax", purinbillF.toArray(),"auditdate desc"); DynamicObject purinbill = purinbills[0]; if(purinbill!=null) { DynamicObjectCollection billentry = purinbill.getDynamicObjectCollection("billentry"); for (DynamicObject dynamicObject : billentry) { String number = dynamicObject.getString("material.masterid.number"); if (StringUtils.equals(number, masterid.getString("number"))) { BigDecimal priceandtax = dynamicObject.getBigDecimal("priceandtax"); this.getModel().setValue("tqq9_price", priceandtax); } break; } } } } /**点击对应销售订单号跳转 * */ @Override public void click(EventObject evt) { super.click(evt); Control source = (Control) evt.getSource(); if (StringUtils.equals("tqq9_xsddh", source.getKey())) { String tqq9_xsddh = (String) this.getModel().getValue("tqq9_xsddh"); DynamicObject sm_salorder = BusinessDataServiceHelper.loadSingle("sm_salorder", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_xsddh)}); Long id = sm_salorder.getLong("id"); if (id != null) { BillShowParameter formshowParameter = new BillShowParameter(); formshowParameter.setFormId("sm_salorder"); formshowParameter.getOpenStyle().setInlineStyleCss(new StyleCss()); formshowParameter.setPkId(id); formshowParameter.getOpenStyle().setShowType(ShowType.Modal); formshowParameter.setStatus(OperationStatus.VIEW); this.getView().showForm(formshowParameter); } } } @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); FormShowParameter formShowParameter = this.getView().getFormShowParameter(); String billno = formShowParameter.getCustomParam("tqq9_otheroutapplybillno"); if(StringUtils.isNotBlank(billno)){ DynamicObject pm_purrefundapplybill = BusinessDataServiceHelper.loadSingle("pm_purrefundapplybill", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); DynamicObject org = pm_purrefundapplybill.getDynamicObject("org");//采购组织 DynamicObjectCollection billentry = pm_purrefundapplybill.getDynamicObjectCollection("billentry");//采购退货分录 DynamicObject dataEntity = this.getModel().getDataEntity(true); //业务类型 DynamicObject bd_biztype = BusinessDataServiceHelper.loadSingle("bd_biztype", new QFilter[]{new QFilter("number", QCP.equals, "612")}); dataEntity.set("tqq9_biztype",bd_biztype); //库存事务 DynamicObject im_invscheme = BusinessDataServiceHelper.loadSingle("im_invscheme", new QFilter[]{new QFilter("number", QCP.equals, "612.1")}); dataEntity.set("tqq9_kcsw",im_invscheme); //业务日期 Date date=new Date(); dataEntity.set("tqq9_bizdate",date); dataEntity.set("tqq9_dblx","A");//调拨类型 dataEntity.set("tqq9_dbckfl","C");//调拨出库分类 dataEntity.set("org",org);//组织 dataEntity.set("tqq9_dczz1",org);//调出组织 dataEntity.set("tqq9_drck2",org);//调入组织 DynamicObjectCollection entryentity = dataEntity.getDynamicObjectCollection("entryentity"); entryentity.clear(); for (DynamicObject entry : billentry) { DynamicObject dynamicObject = entryentity.addNew(); dynamicObject.set("tqq9_linetype",entry.getDynamicObject("linetype"));//行类型 DynamicObject material = entry.getDynamicObject("material");//物料采购信息 DynamicObject masterid = material.getDynamicObject("masterid");//物料信息 //物料库存信息 DynamicObject bd_materialinventoryinfo = BusinessDataServiceHelper.loadSingle("bd_materialinventoryinfo", new QFilter[]{new QFilter("masterid", QCP.equals, masterid.getLong("id"))}); //商城商品 DynamicObject tqq9_goodspackage = BusinessDataServiceHelper.loadSingle("tqq9_goodspackage", new QFilter[]{new QFilter("tqq9_mater.id", QCP.equals, masterid.getLong("id"))}); dynamicObject.set("tqq9_materiel",bd_materialinventoryinfo);//物料库存信息 dynamicObject.set("tqq9_goods",tqq9_goodspackage);//商城商品 dynamicObject.set("tqq9_materialname",masterid.getString("name"));//物料名称 dynamicObject.set("tqq9_unit",masterid.getDynamicObject("baseunit"));//计量单位 dynamicObject.set("tqq9_baseunit",masterid.getDynamicObject("baseunit"));//计量单位 dynamicObject.set("tqq9_dczz",org);//调出组织 dynamicObject.set("tqq9_drzz",org);//调入组织 dynamicObject.set("tqq9_zczh",entry.getDynamicObject("tqq9_registration"));//注册证号 dynamicObject.set("tqq9_licensenoxkzh",entry.getString("tqq9_ykzno"));//许可证号 dynamicObject.set("tqq9_producedate",entry.getDate("tqq9_createdate"));//生产日期 dynamicObject.set("tqq9_expirydate",entry.getDate("tqq9_deadline"));//到期日期 dynamicObject.set("tqq9_dcck",entry.getDynamicObject("tqq9_thck"));//退货仓库 dynamicObject.set("tqq9_lot",entry.getDynamicObject("tqq9_ph"));//批号 } } } }