219 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
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_lot",entry.getDynamicObject("lot"));//批号主档
 | 
						|
                dynamicObject.set("tqq9_producedate",entry.getDate("tqq9_createdate"));//生产日期
 | 
						|
                dynamicObject.set("tqq9_expirydate",entry.getDate("tqq9_deadline"));//到期日期
 | 
						|
                if(bd_materialinventoryinfo!=null){
 | 
						|
                    QFilter purinbillF=new QFilter("billentry.material.id", QCP.equals,bd_materialinventoryinfo.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 entries = purinbill.getDynamicObjectCollection("billentry");
 | 
						|
                        for (DynamicObject entry1 : entries) {
 | 
						|
                            String number = entry1.getString("material.masterid.number");
 | 
						|
                            if (StringUtils.equals(number, masterid.getString("number"))) {
 | 
						|
                                BigDecimal priceandtax = entry1.getBigDecimal("priceandtax");
 | 
						|
                                this.getModel().setValue("tqq9_price", priceandtax);
 | 
						|
                            }
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |