23、列表插件,单据列表值,FormatCellValue,列表,显示即时库存原创
金蝶云社区-林荫大道cc
林荫大道cc
28人赞赏了该文章 10145次浏览 未经作者许可,禁止转载编辑于2020年07月06日 15:41:11
封面

业务场景:采购申请单列表,带出,即时库存。




1、打开VS,新建一个类库,具体可以参考21.1 ,1-4步



1.1、添加引用 Kingdee.BOS.App


//本节新增使用
using System.Data;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;


image.png




2、打开BOS,扩展采购申请单,单据体增加小数字段 ,工具箱,拖动小数到单据体,修改标识成 F_YDIE_jskc


image.png


image.png


image.png




3、写一个sql视图


--即时库存表
select * from T_STK_INVENTORY

--物料内码,所在组织,数量
create view v_Kingdeee_INVENTORY
AS
select FMATERIALID,FSTOCKORGID,sum(FBASEQTY)FBASEQTY from T_STK_INVENTORY
where FBASEQTY <>0
group by FMATERIALID,FSTOCKORGID

select * from v_Kingdeee_INVENTORY


image.png




4、


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
using System.ComponentModel;
using Kingdee.BOS.Core.List;

//本节新增使用
using System.Data;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;

namespace Kingdee.Bos.Project.CellValue.List
{
    [Description("列表即时库存")]
    
    [Kingdee.BOS.Util.HotUpdate]
    
    
    public class ClassName:AbstractListPlugIn
    {
        //定义2个字段
        string sql;
        DataTable dt;
        
        public override void FormatCellValue(FormatCellValueArgs args)
        {
            base.FormatCellValue(args);
            
            //判断,加载到新增的即时库存这个字段,读到这里
            if(args.Header.FieldName.EqualsIgnoreCase("F_YDIE_jskc"))
            {
                //获取申请组织ID,如果申请组织和库存一致,说明没有问题
                string orgid = args.DataRow["FApplicationOrgId"].ToString();
                
                //获取物料ID
                string MaterialId = args.DataRow["FMaterialId_Id"].ToString();
                
                //视图里面物料ID等于传进来的物料ID
                //库存组织等于上面传过去的申请组织
                //获得基本库存数量
                sql = @"/*dialect*/select FBASEQTY from v_Kingdeee_INVENTORY where FMaterialId =" + MaterialId + " and FSTOCKORGID=" + orgid;
                //从数据库调用执行,存到临时表Tables里面
                
                dt = DBUtils.ExecuteDataSet(this.Context, sql).Tables[0];
                
                //大于0,说明找到数据
                if (dt.Rows.Count >0)
                {
                    //赋值
                    args.FormateValue = dt.Rows[0]["FBASEQTY"].ToString();
                }
                
            }
        }
    }
}


image.png



5、重新生成dll




6、最终效果,打开采购申请单列表,显示即时库存


image.png



总目录链接

https://vip.kingdee.com/article/64993872014591232




赞 28