package com.yem.wm.bd.credittypeconfig.from;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
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.orm.query.QCP;
import kd.bos.orm.query.QFilter;

import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;

/**
 * @author zhouc
 * @date 2024/3/22 9:25
 * @className CreditTypeConfigFromEdit
 * @description 合同贷记单使用类型配置表表单插件
 */
public class CreditTypeConfigFromEdit extends AbstractBillPlugIn implements BeforeF7SelectListener {

    @Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        //给物品基础资料添加beforef7Select事件监听
        BasedataEdit supplies = this.getControl("yem_credittype");
        supplies.addBeforeF7SelectListener(this);
    }

    @Override
    public void beforeF7Select(BeforeF7SelectEvent e) {
        DynamicObject datas = this.getModel().getDataEntity(true);
        Control control = (Control) e.getSource();
        String key = control.getKey();
        if ("yem_credittype".equals(key)) {
            String yem_contracttype = datas.getString("yem_contracttype");//合同类型
            String yem_accamtusetype = datas.getString("yem_accamtusetype");//配件资金（贷记单）使用方式
            DynamicObject yem_billbusstype = datas.getDynamicObject("yem_billbusstype");//单据业务类型
            if (yem_contracttype != null && yem_accamtusetype != null && yem_billbusstype != null) {
                String number = yem_billbusstype.getString("number");
                List getdebcredtype = getdebcredtype(yem_contracttype, yem_accamtusetype, number);
                QFilter qFilter = new QFilter("number", QCP.in, getdebcredtype);
                e.addCustomQFilter(qFilter);
            } else {
                QFilter qFilter = new QFilter("number", QCP.in, new ArrayList<>());
                e.addCustomQFilter(qFilter);
            }
        }
    }

    /**
     * 根据条件获取贷记单类型编码
     *
     * @param yem_contracttype  合同类型
     *                          //            内贸配件合同 yem_es_salesorder_nmpj
     *                          //            内贸整机合同 yem_es_salesorder_nmzj
     *                          //            外贸配件合同 yem_es_salesorder_PJ
     *                          //            外贸整机合同 yem_es_salesorder_ZJ
     * @param yem_accamtusetype 配件资金（贷记单）使用方式
     * @param yem_billbusstype  单据业务类型
     * @return 返回贷记单类型编码
     */
    public List getdebcredtype(String yem_contracttype, String yem_accamtusetype, String yem_billbusstype) {
        List list = new ArrayList<>();
        if (yem_contracttype.equals("yem_es_salesorder_ZJ")||yem_contracttype.equals("yem_es_salesorder_nmzj")) {
            if (yem_billbusstype.equals("BBT-1")) {
                if (yem_accamtusetype.equals("A")) {
                    list.add("JDJLX-0008");//市场支持（整机）
                    list.add("JDJLX-0007");//整机海运费
                }
            }
        } else if (yem_contracttype.equals("yem_es_salesorder_PJ")||yem_contracttype.equals("yem_es_salesorder_nmpj")) {
            //配件正常订单
            if (yem_billbusstype.equals("BBT-2")) {
                if (yem_accamtusetype.equals("A") || yem_accamtusetype.equals("B")) {
                    list.add("JDJLX-0003");//服务维修
                    list.add("JDJLX-0004");//市场支持（配件）
                    list.add("JDJLX-0001");//奖项赠送
                    list.add("JDJLX-0002");//整机赠送
                    list.add("JDJLX-0007");//整机海运费
                }
            }
            //配件紧急订单
            else if (yem_billbusstype.equals("BBT-3")) {
                if (yem_accamtusetype.equals("C")) {
                    list.add("JDJLX-0003");//服务维修
                    list.add("JDJLX-0002");//整机赠送
                    list.add("JDJLX-0007");//整机海运费
                }
            }
            //配件服务维修三包订单
            else if (yem_billbusstype.equals("BBT-4")) {
                if (yem_accamtusetype.equals("C")) {
                    list.add("JDJLX-0003");//服务维修
                    list.add("JDJLX-0002");//整机赠送
                    list.add("JDJLX-0007");//整机海运费
                }
            }
            //BBT-5	整机赠送配件订单
            else if (yem_billbusstype.equals("BBT-5")) {
                if (yem_accamtusetype.equals("C")) {
                    list.add("JDJLX-0003");//服务维修
                    list.add("JDJLX-0002");//整机赠送
                    list.add("JDJLX-0007");//整机海运费
                }
            }
        }
        return list;
    }
}
