金蝶云星空插件开发-Excel批量导入销售订单

客户之前使用用友U8系统,开发了Excel模板导入批量生成销售订单的功能,现更换系统使用金蝶云星空,希望沿用以前的Excel模板,实现批量生成云星空的销售订单。设计开发方案,在销售订单列表里面增加按钮“批量导入”,弹出Excel文件选择及导入功能界面,效果图如下:

在云星空集成开发环境中,打开销售管理,在销售订单上增加列表菜单按钮“批量导入”;C#开发此按钮事件插件,并在销售订单列表插件中注册此插件。

增加动态表单“销售订单批量导入”,点击上面销售订单列表的按钮“批量导入”时,打开此动态表单。C#开发此动态表单插件,实现Excel文件选择和导入生成销售订单的功能,并在此表单插件中注册此插件。

注册好插件后,在销售订单列表,点击按钮“批量导入”,会弹出上面做的批量导入动态表单,选择相应的Excel模板文件(模板文件包含客户、产品、数量、单价等信息),即可进行销售订单的导入:

点击界面上的“导入销售订单”按钮,插件实现根据Excel文件中的客户、产品、数量和单价信息生成销售订单,根据生成单据的情况会进行相应的信息提示,有错误时进行错误信息提示:

点击“返回订单列表”按钮,关闭批量导入界面,同时自动刷新列表单据数据:

生成的销售订单详情:

插件使用C#开发,通过构建销售订单的IBillView并进行相应字段的赋值,从而生成销售订单,代码片段示例:

/// <summary>         
/// 根据业务对象类型         
/// </summary>         
/// <param name="ctx">星空上下文</param>         
/// <param name="objectTypeId">单据类型,该参数非必要,根据客户需求增加用作区分不同单据的处理</param>         
/// <param name="dtData">数据集,该参数非必要,结合单据类型在后面填充字段值时使用</param>         
/// <param name="PkValue">单据ID值,该参数非必要,外面读取单据是否已经存在</param>         
/// <param name="strErrorList">收集错误信息,该参数非必要,根据开发设计用作日志记录</param>         
/// <param name="FillBillPropertys">做了个填充字段值的方法指针</param>         
public void ImportBill(Context ctx, string objectTypeId, DataTable dtData, Object PkValue, ref List<string> strErrorList, ref string PkBillNo, Action<IBillView, string, DataTable, List<string>> FillBillPropertys)
{
    try
    {
        // 构建一个IBillView实例,通过此实例,可以方便的填写业务对象各属性                 
        IBillView billView = CreateBillView(ctx, objectTypeId, PkValue, ref strErrorList);
        if (billView == null)
        {
            strErrorList.Add("构建销售订单实例出现异常,请再次尝试!");
            PkBillNo = String.Empty;
            return;
        }

        // 新建一个空白实例                 
        ((IBillViewService)billView).LoadData();

        // 触发插件的OnLoad事件:                 
        // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。                 
        // 如果不触发OnLoad事件,会导致主业务组织赋值不成功                 
        DynamicFormViewPlugInProxy eventProxy = billView.GetService<DynamicFormViewPlugInProxy>();
        eventProxy.FireOnLoad();
        //eventProxy.FireAfterBindData(EventArgs.Empty);

        // 填写业务对象实例各属性                 
        FillBillPropertys(billView, objectTypeId, dtData, strErrorList);
        //同步赋值有问题,就直接退出                 
        if (strErrorList.Count > 0)
        {
            PkBillNo = String.Empty;
            return;
        }

        // 保存业务对象实例                 
        List<ValidationErrorInfo> errorList = new List<ValidationErrorInfo>();
        string strBillNo = String.Empty;
        SaveBill(ctx, billView, OperateOption.Create(), out errorList, out strBillNo);

        foreach (ValidationErrorInfo item in errorList)
        {
            strErrorList.Add(item.Message);
        }
        PkBillNo = strBillNo;
    }
    catch (Exception ex)
    {
        strErrorList.Add(ex.Message);
        PkBillNo = String.Empty;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值