金蝶eas-审核时自动生成下游单据

164 阅读1分钟

前言

很多时候我们在操作业务单据时想要在审核后自动生成下游单据。在标准产品中提供了关联生成的功能,但需要手动去操作,那怎么样自动生成下游单据呢

解决方案

代码中调用botp完成单据下推

实现步骤

1- 获取botp规则的FID与BOS_TYPE。ctrl+shift+c复制后去查询分析器获取对应的FID以及BOS_TYPE。代码调用botp需要用到这两个值

1748419001638.png

1748419167758.png

示例

在editUi的审核方法中调用botp生成下游单据

    //审核
    public void actionAudit_actionPerformed(ActionEvent e) throws Exception
    {
       //省略其他业务代码
        try {
            //生成下游单据
            this.callBotpCreateBill(this.editData);
            } catch (Exception e2) {
                    e2.printStackTrace();
        }
        loadFields();
    }

callBotpCreateBill方法

    /**
     * 调用botp生成单据处理
     */
    private void callBotpCreateBill(CoreBillBaseInfo info) throws BOSException, EASBizException{
    	//botp规则的fid()
        String botpId = this.getBOTP_ID();
        //BOTP目标单的BOSTYPE
        String destBillBosType = this.getBOS_TYPE();
        //源单据转换为Collection
        CoreBillBaseCollection srcBills = new CoreBillBaseCollection();
        srcBills.add(info);
        //调用botp生成下游单据	
        this.callBotp(botpId, destBillBosType, srcBills);
    }

callBotp

/**
	 * 调用botp生成单据
	 * @param botpId BOTP规则fid
	 * @param destBillBosType BOTP目标单BOSTYPE
	 * @param srcBills 源单据集合
	 */
public void callBotp(String botpId,String destBillBosType, CoreBillBaseCollection srcBills) 
        throws BOSException, EASBizException{
       
            IObjectPK botpPK = new ObjectUuidPK(botpId);
            //获取botp管理器
            IBTPManager btpManager = BTPManagerFactory.getRemoteInstance();
            //进行BOTP转换,返回结果对象
            BTPTransformResult result = btpManager.transformForBotp(srcBills, destBillBosType, botpPK);
            //获取目标单据集合
            IObjectCollection bills = result.getBills();
            //获取关联关系对象
            BOTRelationCollection relationCollection = result.getBOTRelationCollection();
            //建立上下游关系
            for(int i = 0;i < bills.size(); i++){
                CoreBillBaseInfo destBillInfo = (CoreBillBaseInfo) bills.getObject(i);
                btpManager.saveRelations(destBillInfo, relationCollection);
                //这里可以自定义对下游单据处理
            }
    }