package yem.wm.bd.bulkbilltpl.form;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.form.control.Control;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import yem.base.common.utils.OrgUtil;
import yem.wm.bd.util.BothCardHelper;

import java.util.EventObject;

/**
 * @Description 抬头信息加载功能
 * 1、在新增单据时，抬头信息根据【公司】加载公司的默认信息
 * 2、点击客户、供应商、公司面板弹动态表单，在动态表单上填写信息，然后回填到单据上
 * 3、在打开单据时以及动态表单回传单据时，给抬头信息中的标签默认赋值
 * @Author: zhangh
 * @CreateTime: 2025-02-07  18:20
 */
public class BulkbilltplFiDBillPlugin extends AbstractBillPlugIn {

    /**
     * @param e
     * @return void
     * @Description: 在新增单据时，默认给{抬头明细(隐藏)}赋默认值
     * @function 根据【公司】默认赋值
     * @purposes
     */
    @Override
    public void afterCreateNewData(EventObject e) {
        DynamicObject org = (DynamicObject) this.getModel().getValue("org");//公司
        if (org != null) {
            QFilter[] qFilters = new QFilter[]{new QFilter("orgpattern", "in", OrgUtil.getOrgPattern()),
                    new QFilter("id", "=", org.getPkValue())};//添加公司的判断条件，在公司的条件下，判断公司《组织形态》中的【组织类型】是否是法人企业、法人分支机构
            if (QueryServiceHelper.exists("bos_org", qFilters)) {//判断业务单元的数据是否满足条件
                BothCardHelper.fillCoInfo(this.getModel(), org);//默认给{抬头明细(隐藏)}信息赋值
            }
        }
    }

    /**
     * @param e
     * @return void
     * @Description: 打开单据默认给标签赋值
     * @function 在打开单据时，根据{抬头明细(隐藏)}信息中的字段数据默认给客户、供应商、公司标签赋默认值
     * @purposes 用途
     */
    @Override
    public void afterBindData(EventObject e) {
        BothCardHelper.setCoLabel(this);//默认给公司的标签赋值
        BothCardHelper.setSupplierLabel(this);//默认给供应商的标签赋值
        BothCardHelper.setCustomerLabel(this);//默认给客户的标签赋值
    }

    /**
     * @param e
     * @return void
     * @Description: 注册标签，添加事件
     * @function 功能
     * @purposes 在click中可以触发
     */
    @Override
    public void registerListener(EventObject e) {
        this.addClickListeners("yem_card_addgys", "yem_addgys1", "yem_addgys2",
                "yem_card_addco", "yem_addco1", "yem_addco2",
                "yem_card_addkh", "yem_addpayer", "yem_addpayer1",
                "yem_changegys", "yem_changeco", "yem_changepayer");
    }

    @Override
    public void click(EventObject evt) {
        String key = ((Control) evt.getSource()).getKey();
        String name = this.getModel().getDataEntityType().getName();
        switch (key) {
            case "yem_card_addco"://添加公司的图标
            case "yem_addco1"://添加公司的标签【+】
            case "yem_addco2"://添加公司的标签【添加】
            case "yem_changeco"://切换公司的标签【切换】
                BothCardHelper.showChangePage(this, "yem_bd_addcompany");//跳转动态表单
                break;

            case "yem_card_addgys"://添加供应商的图标
            case "yem_addgys1"://添加供应商的标签【+】
            case "yem_addgys2"://添加供应商的标签【添加】
            case "yem_changegys"://切换供应商的标签【切换】
                BothCardHelper.showChangePage(this, "yem_bd_addsupplier");//跳转动态表单
                break;

            case "yem_card_addkh"://添加客户的图标
            case "yem_addpayer"://添加客户的标签【+】
            case "yem_addpayer1"://添加客户的标签【添加】
            case "yem_changepayer"://切换客户的标签【切换】
                BothCardHelper.showChangePage(this, "yem_bd_addcustomer");//跳转动态表单
                break;
            default:
                break;
        }
    }

    @Override
    public void closedCallBack(ClosedCallBackEvent e) {
        String id = e.getActionId();
        switch (id) {
            case "yem_bd_addcompany"://《添加公司抬头》动态表单标识
                BothCardHelper.setCoLabel(this);//默认给公司的标签赋值
                break;
            case "yem_bd_addsupplier"://《添加供应商》动态表单标识
                BothCardHelper.setSupplierLabel(this);//默认给供应商的标签赋值
                break;
            case "yem_bd_addcustomer"://《添加客户》动态表单标识
                BothCardHelper.setCustomerLabel(this);//默认给客户的标签赋值
                break;
        }
    }
}
